Hallo Bastler, hat jemand von euch schonmal einen PolluCom zerlegt ? Leider habe ich keinen Zähler mit Erweiterung und wollte mal schauen ob man nicht "selbst" erweitern kann. Leider bekomme ich das Gehäuse nicht zerstörungsfrei auf wie es scheint, gibt es dort einen Trick ? Mich würde auch interessieren wie die "optische" Schnittstelle funktioniert und wie lange die Batterien halten wenn die dauerhaft benutzt wird. Grüße.
Hallo Otto, ich habe auch einige Pollucom E Wäremzähler, welche ca. 7-8 Jahre alt sind. Nun würde ich auch gerne die Batterien wechseln und stehe vor dem gleichen Problem wie du. Wie soll ich das Gehäuse öffnen? Hast du noch was rausgefunden? Hast du das Gehäuse aufgebrochen und gesehen wie die Ober und unterteile ineinander verrasten? Wäre super, wenn du (oder auch andere) diesbezüglich weiterhelfen könntest. Gruß, Christian
Ist zwar schon alt, aber dennoch. Einfach unten Rechts in das Loch wo die Kabel reingehen mit einem dünnen Schraubenzieher reinfahren und das Gehäuse öffnen. Braucht etwas Druck. Sollte aber ohne große Schäden zu Öffnen gehen. Wichtig beim Batterietausch, den Zähler auf Spannung halten!! Dazu ein geregeltes einstellbares Netzteil anhängen, sonst ist der Zähler Schrott! Hat einer von Euch die Infrarot-Schnittstelle schon mal Benutzt? Ich bekomme die nämlich nicht zum laufen! danke Michael
Hallo Michael, an der IR Schnittstelle habe ich mich auch schon versucht, bin aber nicht weit gekommen. Im Netzt finde ich einfach nichts dazu. Hast Du schon irgenwelche Details ? Grüße, Markus
Beschreibungen der Zerlegung inkl. eingebaute Manipulationshürden gibt es hier: http://www.kriwanek.de/c-control-pro/solarmessung/103-waermemengenmessgeraet-sensus-pollucom-zerlegen.html Ich habe einen falsch eingebauten (gebrauchten) Zähler und möchte die Kosten für das USB Modul zur Konfigurierung sparen und die PT500 Sensoren vertauschen. Wie könnte da ein Manupulationsschutz aussehen? Wenn ich die Fühlerleitungen abisoliere und beide parallel verbinde und dann tausche bevor ich die Verbindung wieder trenne kann das Messwerk nichts merken, falls wirklich nur der Widerstand gemessen wird und nicht wie bei den DS1820 eine Adresse im Sensor hinterlegt wird. danke im Voraus für Tipps, ggf. auch wie man zu einer kostengünstigen USB-Lösung für den IEC870-5 kommt. danke
Efried schrieb: > Beschreibungen der Zerlegung inkl. eingebaute Manipulationshürden gibt > es hier: > http://www.kriwanek.de/c-control-pro/solarmessung/... Wie ist denn die Belegung der nicht benutzten Schnittstellen, hast du die schon gemessen? Der Impulsgeber oder MBus wären ja mal was. > Ich habe einen falsch eingebauten (gebrauchten) Zähler und möchte die > Kosten für das USB Modul zur Konfigurierung sparen und die PT500 > Sensoren vertauschen. Wie könnte da ein Manupulationsschutz aussehen? Wenn du einen Widerstand an die Platine friemelst, löten würde ja einen Schluss nach GND verursachen, sollte es funktionieren. > Wenn ich die Fühlerleitungen abisoliere und beide parallel verbinde und > dann tausche bevor ich die Verbindung wieder trenne kann das Messwerk > nichts merken, falls wirklich nur der Widerstand gemessen wird und nicht > wie bei den DS1820 eine Adresse im Sensor hinterlegt wird. Wieviel Leitungen kommen denn vom PT500? Ich sehe da 4 Leitungen pro Fühler oder ist das etwas anderes? ---
es braucht immer noch den Optokoppler - der mir um schlanke 400€ abgeboten wurde...
Efried schrieb: > es braucht immer noch den Optokoppler - der mir um schlanke 400€ > abgeboten wurde... Huch, welchen Optokoppler meinst du? Der fehlende Chip auf der Platine? ---
Efried schrieb: > Ich habe einen falsch eingebauten (gebrauchten) Zähler und möchte die > Kosten für das USB Modul zur Konfigurierung sparen und die PT500 > Sensoren vertauschen. Falls es noch von intresse ist, steck einfach die Fuehler ab un passend wieder an, es interessiert das Geraet nicht. Ich habe die fuehler und Pulsgeber ueber ein Jahr abgesteckt gehabt und er geht immer noch. Efried schrieb: > es braucht immer noch den Optokoppler - der mir um schlanke 400€ > abgeboten wurde... Denn Koppler kannst du dir fuer ca 15,- EUR selber bauen, einfach FTDI mit IR Sende und Empfangsdiode. Geht einwandfrei, lese mit dem Gleichen auch meine Stromzaehler aus. Desweiteren habe ich mir einen Schaltplan der IR Dioden und der Steckerbelegung herausgezeichnet und mir dafuer einen Adapter auf RS485 inkl. Stromversorgung gebaut, damit kann man den Zaehler staendig auslesen ohne in immer wieder in den Kommunikationsmodus zu versetzen muessen. Bisher lese ich nur über Minicom aus, möchte aber jetzt das ganze mit Java angehen, allerdings bin ich da blutiger Anfaenger. Sollte ein Programmierer interesse am gleichen haben wuerde ich unter umstaenden die Anbindung an USB stellen gegen den Code stellen. Gruss Matthias
Hallo Matthias, auch ich möchte den Zähler dauerhaft auslesen.Könntest Du mir freundlicherweise mit deinem Bausatz helfen.Welche Teile benötige ich genau und wo bekomme ich diese?Wie sieht dein Layout dafür aus? Gruß Carsten
Hallo zusammen, ich nutze den USB IR Schreib/lesekopf von volkszaehler mit dem sensus pollucom E (http://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-usb-ausgang) - geht aber bestimmt auch mit http://www.huitsing.nl/irftdi/, da beide sich unterhalten können. Protokoll habe ich mir mittels "MiniCom 3" nachgebaut und frage alle 20 Minuten den Zählerstand ab. Gruß Frank
Hallo, wie sieht denn dein Protokoll aus ? Könnte ich es auch bekommen ? Gruß Carsten
Hallo zusammen, da ich einige Fragen bekommen habe, hier meine Implementierung. Das Protokoll an sich kann z.B. unter http://www.m-bus.com/files/CBDIPW6.PDF angeschaut werden. Ich kann leider nur für eine Implementierung unter Linux sprechen! Unter Windwos funktioniert der "MiniCom 3" ohne weitere Einstellungen bei mir. Fehlerhandling habe ich der Übersicht halber gelöscht! Geht zwar alles flexibler, habe ich aber aufgrund von zeitmangel nicht gemacht. Unter Linux den Port richtig setzen: stty -F /dev/ttyUSB0 1:0:9bb:0:3:1c:7f:15:4:5:0:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0 :0:0:0:0:0 Programm: char *buf; char in[256] = ""; ssize_t ret_out; .... Init serielle Schnittstelle int fd = open ("/dev/ttyUSB0", O_RDWR | O_NOCTTY ); set_interface_attribs (fd, B2400, 0); // set speed to 2,400 bps, 8n1 (no parity) set_blocking (fd, 0 ); // set no blocking strcpy( in, "UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU" ); ret_out = write (fd, in, strlen(in)); // sent wakeup usleep ((1000 + 25) * 100); // sleep enough to transmit plus buf = read_data( fd); // Initialisiere MBus -> ACK mit 'E5' in[0] = 0x10; in[1] = 0x40; // Init MBus in[2] = 0x00; in[3] = 0x40; // Checksumme = in[1] + in [2] in[4] = 0x16; ret_out = write (fd, in, 5); // sent usleep ((1000 + 25) * 100); // sleep enough to transmit plus buf = read_data( fd); if( buf[5] == 0xE5 ) { // Get Data from MBus in[0] = 0x10; in[1] = 0x5B; // GetData in[2] = 0x00; in[3] = 0x5B; // Checksumme = in[1] + in [2] in[4] = 0x16; ret_out = write (fd, in, 5); usleep ((1000 + 25) * 100); // sleep enough to transmit plus buf = read_data( fd); // Zaehlerstand double waerme = ((double) toInt(&buf[26])) + (100.0 * (double) toInt(&buf[27])) + (1000.0 * (double) toInt(&buf[28])) + (10000.0 * (double) toInt(&buf[29])); //aktuelle Leistung double leistung = ((double) toInt(&buf[44])) + (100.0 * (double) toInt(&buf[45])) + (1000.0 * (double) toInt(&buf[46])) + (10000.0 * (double) toInt(&buf[47])); } int toInt( char *in ) { char out[2]; int iOut = 0; sprintf( out, "%02x", in[0] ); iOut = atoi( out ); return iOut; } Gruß Frank
Hallo Frank, vielen Dank, dass Du Deinen Code zur Verfügung stellst. Wenn ich es richtig verstehe, dann wertest Du die Zähler in einer eigenen Umgebung aus und nicht über das Volkszähler-image mit VZLOGGER? Gruß Marco
Hallo Marco, ja, richtig. Hatte mir am Anfang den mbus controller angeschaut. Leider habe ich dort zu viele Fehler bekommen. War mir zu aufwändig diesen ans laufen zu bekommen. Kann ja mal schauen ob das jetzt klappt. Gruß Frank
Hallo Frank, ich habe jetzt mal versucht Dein Script ans Laufen zu bekommen, bekomme leider folgende Fehlermeldungen: test.sh: 3: test.sh: char: not found test.sh: 4: test.sh: char: not found test.sh: 5: test.sh: ssize_t: not found test.sh: 6: test.sh: Syntax error: "(" unexpected müssen die Variablen am Anfang des scitpes noch definiert werden?
Hallo, ich lese seit Kurzem meinen PolluCom E ebenfalls über die optische Schnittstelle aus. Der WMZ ist jetzt ca. 1 Jahr alt. Hat jemand schon Erfahrungen wie sich das Auslesen auf die Lebensdauer bzw. auf die Batterie auswirkt? Ich lese derzeit den WMZ zwischen Sonnenaufgang und Sonnenuntergang alle 5min aus. Ist das zu häufig? Grüße, Hannes
Hallo, ich habe besagten WMZ mit der Mini-Bus Option, womit kabelgebunden z.B. ein Funk- oder induktives Fernauslesemodul ("MiniPad") angeschlossen werden kann. Auf dem Mini-Bus kommt ebenfalls das M-Bus Protokoll zum Einsatz, jedoch arbeitet dieser offensichtlich mit etwas anderen elektrischen Parametern. Hat jemand entsprechend Erfahrung, wie ich den Zähler über diese Schnittstelle auslesen kann? Konkret welche Art von "Adapter" ich hier für den Raspberry brauche? Besten Dank, Andreas
Hallo Frank, ich habe versucht Deinen Code zu kompilieren (mit GCC) - bekomme aber ne Menge Compilerfehler (was teilweise an den zerschossenen Zeilenumbrüchen liegt). Ich hänge es mal als Textdatei an - vielleicht kannst Du Deinen funktionierenden Code auch als Textdatei anhängen. hier die Fehler: script.c:8:1: error: initializer element is not constant script.c:9:35: error: expected ‘)’ before numeric constant script.c:10:19: error: expected ‘)’ before numeric constant script.c:11:13: error: expected ‘)’ before string constant script.c:12:1: warning: data definition has no type or storage class [enabled by default] script.c:12:26: warning: incompatible implicit declaration of built-in function ‘strlen’ [enabled by default] script.c:12:1: error: initializer element is not constant script.c:13:9: error: expected declaration specifiers or ‘...’ before ‘(’ token script.c:14:1: warning: data definition has no type or storage class [enabled by default] script.c:14:1: error: conflicting types for ‘buf’ script.c:5:7: note: previous declaration of ‘buf’ was here script.c:14:1: error: initializer element is not constant script.c:16:1: warning: data definition has no type or storage class [enabled by default] script.c:16:1: error: conflicting types for ‘in’ script.c:6:6: note: previous definition of ‘in’ was here script.c:16:1: error: invalid initializer script.c:17:1: warning: data definition has no type or storage class [enabled by default] script.c:17:1: error: conflicting types for ‘in’ script.c:6:6: note: previous definition of ‘in’ was here script.c:17:1: error: invalid initializer script.c:18:1: warning: data definition has no type or storage class [enabled by default] script.c:18:1: error: conflicting types for ‘in’ script.c:6:6: note: previous definition of ‘in’ was here script.c:18:1: error: invalid initializer script.c:19:1: warning: data definition has no type or storage class [enabled by default] script.c:19:1: error: conflicting types for ‘in’ script.c:6:6: note: previous definition of ‘in’ was here script.c:19:1: error: invalid initializer script.c:20:1: warning: data definition has no type or storage class [enabled by default] script.c:20:1: error: conflicting types for ‘in’ script.c:6:6: note: previous definition of ‘in’ was here script.c:20:1: error: invalid initializer script.c:21:1: warning: data definition has no type or storage class [enabled by default] script.c:21:1: error: redefinition of ‘ret_out’ script.c:12:1: note: previous definition of ‘ret_out’ was here script.c:21:1: error: initializer element is not constant script.c:22:7: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘...’ token script.c:23:1: warning: data definition has no type or storage class [enabled by default] script.c:23:1: error: conflicting types for ‘buf’ script.c:5:7: note: previous declaration of ‘buf’ was here script.c:23:1: error: initializer element is not constant script.c:24:1: error: expected identifier or ‘(’ before ‘if’ Gruß Marco
:
Bearbeitet durch User
Ich habe auch einen Wärmemengenzähler vom gleichen typ zu Hause. Ich habe mich drangesetzt und probiert den Code über Python für den Raspberry zu schreiben. Allerdings, antwortet der Zähler nicht richtig. Irgendwie bin ich am verzweifeln woran es liegen kann. Kann mir jemand seinen Code zur Verfügung stellen. Das wäre super lieb. ( Der verwendete IR ist in Ordnung, da ich hier mit Minicom kommuniziere.
Hiermit kann ich den WMZ auslesen. Code verwendet pyMeterBus https://github.com/ganehag/pyMeterBus
1 | #!/usr/bin/python
|
2 | # -*- coding: utf-8 -*-
|
3 | |
4 | import serial, time |
5 | import meterbus |
6 | |
7 | address = 0 |
8 | port = '/dev/ttyUSB0' |
9 | wakeup = "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55" |
10 | |
11 | # start communication with 8N1, DTR enabled
|
12 | ser = serial.Serial(port, 2400, 8, 'N', 1, 0.5) |
13 | ser.dsrdtr=True |
14 | |
15 | # send wake up sequence
|
16 | ser.write(wakeup) |
17 | time.sleep(0.130) |
18 | ser.read() |
19 | response = ser.readline() |
20 | |
21 | # switch to 8E1
|
22 | ser.parity = serial.PARITY_EVEN |
23 | |
24 | # SND_NKE to reset the communication
|
25 | meterbus.send_ping_frame(ser, address) |
26 | frame = meterbus.load(meterbus.recv_frame(ser, 1)) |
27 | assert isinstance(frame, meterbus.TelegramACK) |
28 | |
29 | # request data from meter
|
30 | meterbus.send_request_frame(ser, address) |
31 | frame = meterbus.load(meterbus.recv_frame(ser, meterbus.FRAME_DATA_LENGTH)) |
32 | assert isinstance(frame, meterbus.TelegramLong) |
33 | |
34 | # print data, todo: save it to file
|
35 | print(frame.to_JSON()) |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.