ich denke dir fehlt das pyserial.
Kannst du dir hier besorgen pyserial.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Smartmeter Plugin - Tester gesucht
Einklappen
X
-
Hallo zusammen,
hab mir den Lesekopf von Udo zugelegt und möchte damit meinen Iskra MT681 ablesen. Leider scheitere ich kläglich.
Wenn ich, wie auf Seite 1 beschrieben
eingebe. Erhalte ich diese Meldung.Code:python /usr/local/smarthome/plugins/dlms/__init__.py /dev/ttyUSB0 auto
Kann mir jemand erkären, was es mit diesem serial Modul auf sich hat?Code:Traceback (most recent call last): File "/usr/smarthome/plugins/dlms/__init__.py", line 24, in <module> import serial ImportError: No module named serial
Danke und Grüße
Sven
EDIT:
hab versucht die Schnittstelle mit
auszulesen. Dies hat am Anfang auch mal funktioniert. Darauf hin habe ich die plugin.conf angepasst. Danach kam nur nochCode:cat /dev/ttyUSB0 | od -tx1
0000000000
Nach Ab- und Anstecken hab ich die Schnittstelle unter USB1 anstatt und USB0 gefunden. Das auslesen mit cat.... hat wieder funktioniert. Im Anschluss die plugin.conf auf USB1 geändert und smarthome neu gestartet. Nun haben sich wieder nur eine Menge an Nullen gezeigt.
Ich hoffe das hilft weiter.
Danke
EDIT2:
Nach weiteren 2h zwar noch kein Erfolg, aber neue Erkenntnisse. Gebe ich diesen Befehl
(bei volkszähler gefunden und keine Ahnung was er macht) ein, dann funktioniert das Auslesen mit cat... ohne Probleme.Code:stty -F /dev/ttyUSB0 1:0:8bd:0:3:1c:7f:15:4:5:1: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
Füge ich nun in die plugin.conf
ein und starte smarthome neu, bricht das Auslesen hab und funktioniert nicht mehr. Nun muss ich wieder dieses stty... eingeben und er läuft wieder. Meine Items werden trotzdem nicht befüllt.Code:[dlms] class_name = DLMS class_path = plugins.dlms serialport = /dev/ttyUSB0 update_cycle = 20 # baudrate = 300
Code:[Iskra] [[stand]] type = num dlms_obis_code = 1.8.0*255Grüße SvenCode:> ls Iskra Items: ====== Iskra Iskra.stand = 0
Einen Kommentar schreiben:
-
wollte heut auch das dlms plugin nutzen,
Benutze einen Hager 363w5, mit der Rückseitigen Schnittstelle.
Auslesen tu ich mit einem einfachen RS232->Usb wandler
beim lesen bekomme ich diesen Fehler
2014-07-31 11:56:47,486 WARNING DLMS dlms: index out of range -- __init__.py:_update_values:83
2014-07-31 11:56:47,495 WARNING DLMS dlms: malformed response to init seq=b'' -- __init__.py:_update_values:86
mit dem sml plugin bekomme ich folgende ausgabealso scheint ja die verbindung zum Zaehler zu funktionierenData: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fb f7 fd fd 7a bb 5b fe 7a fd fd
77 e7 fd fe 7f ba fe f3 fd fd 7a ed 5a ff 5b e6 fd
77 e7 fd ff 7e ba fe f6 fd fd 7a ed 5a fe 5a 9f fd
77 e7 fd fe 7e 3a fe f5 fd fd 7a ed 5a fe 5a d6 fd fd fd 73 b5 de fe 76 ed fe fe fe fe fd 7e 9f ad 7a fd 7a
fe 7a 73 fa fd 7d fd 7b ce 7a fe fe fe 9b 9b db 9b 9a fa d6 ae db db db db fd fd fd fd 77 ed ff ff ff ff fd 7f df af 7b fd 7b ff 7b 7b fd fd 77 fd fd
ed ff ff ff ff ff 7f eb ef eb f7 6f 7d 77 fd f7 57 df fb d7 fd fd 7b af b7 ff 77 ed ff ff ff ff fd 7f df ad 7b fd 7b ff 7b 7b f7 fd 77 fd eb f6 6f 7d
77 fd e7 57 de fa d7 f7 fd fe 7b ea ff ff 7a 7b fd 76 f5 67 ef fd 76 77 f7 fd fd e7 fa fb ff fd fd fd fd f6 6f 7d 77 fd 77 f7 fd ff fe ff ed ff fd fd
fd fd eb f6 6f 7d 67 fd e7 56 de fb d7 fd
77 e7 fd fe fd ee fe ff 7a fa fd 7a 9e 5a ff 55 fe ae ad 7b fd
77 e7 fd fe fd ee fd ff fd fd 7a 9e 5a ff 55 fe ae e6 53 fd
77 e7 fd fe fd ee fa ff fd fd 7a 9e 5a ff 53 a7 de fd |
77 e7 fd fe de e7 fe ff fd fd 7a 9b 5a fe 53 fe 5e fd
77 e7 fd fe b6 e7 fe ff fd fd 7a 9b 5a ff 53 fe fe fd
77 e7 fd fe 9f e7 fe ff fd fd 7a bd 5a fe 53 fe f3 fd
77 e7 fd fe be e7 fe ff fd fd 7a b3 5a fe 53 5b 3d fd
77 e7 fd fe 3e e7 fe ff fd fd 7a 9b 5a ff 53 fa 9a fd
77 e7 fd fe 33 e7 fe ff fd fd 7a bd 5a fe 53 fe b6 fd
77 e7 fd fe 36 e7 fe ff fd fd 7a b3 5a fe 53 5b fd fd
77 e7 fd fe 4e e7 fe ff fd fd 7a 9b 5a ff 53 fd e7 fd
77 e7 fd fe 67 e7 fe ff fd fd 7a bd 5a fe 53 fe 9e fd
77 e7 fd fe 6e e7 fe ff fd fd 7a b3 5a fe 53 5b af fd
77 e7 fd fe 7e 3a fe fa fd fd 7a ed 5a ff 53 fd de fd
77 e7 fd fd e7 fa f5 ff fd fd fd fd f3 fa 56 5e 35 e7 f5 3d f5 9e de d5 d3 f7 f6 cd 5b bd f6 67 fd 9d cd 9d fa a7 e7 9d bd 9d de f6 f3 ed 3e 6f 7a d5 56 ea 9d ad 7d da 7d 7d 3a 7e fe bd fd
77 e7 fd fe 7e 3a f3 f3 fd fd 7a b3 5a fe 7a ee fd 77 e7 fd fe 7e 3a f3 f6 fd fd 7a b3 5a fe 7a fd fd
77 e7 fd fe 7e ba fe f3 fd fd 7a ed 5a fe 5a e6 fd 77 e7 fd fe 7e 3a fe f6 fd fd 7a ed 5a fe 5a 9f fd
77 e7 fd fe 7e 3a fe f5 fd fd 7a ed 5a fe 5a d6 fd fd fd 73 ae ab fe 76 ed fe fe fe fe fd 7e 9f af 7a fd 7a fe 7a 73 fa fd 7d fd 73 fb d7 fe fe fe 9b 9b 9b 9b 9a fa 5e f6 db db db db
fd fd fd fd 77 ed ff ff ff ff fd 7f df bb 7b fd 7b ff 7b 7b fd fd 77 fd fd ed ff ff ff ff ff 7f eb dd eb f7 6f 7d 77 fd f7 57 df fb d7 fd fd 7b f7 d7 ff 77
ed ff ff ff ff fd 7f 9f bb 7a fd 7b fe 7b 7b f7 fd 77 fd eb f7 6e 7d 77 fd e7 57 df fb d7 f7 fd ff 7b eb ff ff 7b 7b fd 76 f5 77 db fd 76
77 e7 fd fd f7 fa fb ff fd fd fd fd f6 6e 7d 67 fd 77 f7 fd fe ff fe ed ff fd fd fd fd eb f6 6e 7d 67 fd e7 56 de fa d7 fd
77 e7 fd fe fd ee fe ff 7a fa fd 7a 9e 5a ff 55 fe ae ad 76 fd
77 e7 fd fe fd ee fd ff fd fd 7a 9e 5a ff 55 fe ae f6 56 fd
77 e7 fd fe fd ee fa ff fd fd 7a 9e 5a ff 53 a7 de fd
77 e7 fd fe de e7 fe ff fd fd 7a db 5a fe 53 fe 5e fd
77 e7 fd fe b6 e7 fe ff fd fd 7a 9b 5a ff 53 fe fe fd
77 e7 fd fe 9f e7 fe ff fd fd 7a bd 5a fe 53 fe f3 fd
77 e7 fd fe be e7 fe ff fd fd 7a b3 5a fe 53 5b f3 fd
77 e7 fd fe 3e e7 fe ff fd fd 7a 9b 5a ff 53 fa 9a fd
77 e7 fd fe 33 e7 fe ff fd fd 7a bd 5a fe 53 fe b6 fd
77 e7 fd fe 36 e7 fe ff fd fd 7a b3 5a fe 53 5b ea fd
77 e7 fd fe 4e e7 fe ff fd fd 7a 9b 5a ff 53 fd e7 fd
77 e7 fd fe 67 e7 fe ff fd fd 7a bd 5a fe 53 fe 9e fd
77 e7 fd fe 6e e7 fe ff fd fd 7a b3 5a fe 53 5b da fd
77 e7 fd fe 7e ba fe fa fd fd 7a ed 5a ff 53 fd de fd
77 e7 fd fd e7 fa f5 ff fd fd fd fd f3 fa 56 5e 35 e7 f5 3d f5 9e de d5 d3 f7 f6 cd 5b bd f6 67 fd 9d cd 9d fa a7 e7 9d bd 9d de f6 f3 ed 3e 6f 7a d5 56 ea 9d ad 7d da 7d 7d 3a 7e fe bd fd 77 e7 fd fe 7e 3a f3 f3 fd
fd 7a b3 5a fe 7a ee fd 77 e7 fd fe 7e 3a f3 f6 fd fd 7a b3 5a fe 7a fd fd
77 e7 fd fe 7e 3a fe f3 fd fd 7a ed 5a fe 5a e6 fd
77 e7 fd fe 7e 3a fe f6 fd fd 7a ed 5a fe 5a 9f fd
77 e7 fd fe 7e ba fe f5 fd fd 7a ed 5a fe 5a d6 fd fd fd 73 ed f3 fe 76 ed fe fe fe fe fd 7e 9f b5 7a fd 7a fe 7a 73 fa fd 7d fd 73 36
fd fe fe fe 9b 9b 9b 9b 9a fa d6 f3 db db db db fd fd fd fd 77 ed ff ff ff ff fd 7f df bf 7b fd 7b ff 7b 7b fd fd 77 fd fd ed ff ff ff ff ff 7f eb db eb f7
6f 7d 77 fd f7 57 df fb d7 fd fd 7b 7b d7 ff 77 ed ff ff ff ff fd 7f df bd 7b fd 7a ff 7b 7b e7 fd 77 fd eb f7 6f 7d 77 fd f7 56 df fa d7 f7 fd ff 7b ea ff
ff 7b 7a fd 76 f5 77 d6 fd 76 77 f7 fd fd f7 fa f3 ff fd fd fd fd f6 6e 7d 67 fd 77 e7 fd fe fe fe ed ff fd fd fd fd eb f6 6e 7d 67 fd e7 56 de fb d7 fd 77
e7 fd fe fd ee fe ff 7a fa fd 7a 9e 5a ff 55 fe ae ad 75 fd 77 e7 fd fe fd ee fd ff fd fd 7a 9e 5a ff 55 fe ae f6 55 fd 77 e7 fd fe fd ee fa ff fd fd 7a 9e
5a ff 53 a7 de fd 77 e7 fd fe de e7 fe ff fd fd 7a 9b 5a fe 53 fe 5e fd 77 e7 fd fe b6 e7 fe ff fd fd 7a 9b 5a ff 53 fe fe fd 77 e7 fd fe 9f e7 fe ff fd fd
7a bd 5a fe 53 fe f3 fd 77 e7 fd fe be e7 fe ff fd fd 7a b3 5a fe 53 5b d6 fd 77 e7 fd fe 3e e7 fe ff fd
fd 7a 9b 5a ff 53
(mit dem SML Plugin funktioniert die auswertung auch nicht, obwohl diesen mitmeinem Zaehler funktionieren sollte)
Einen Kommentar schreiben:
-
hm ok. timeout auf 5 sekunden und jetz kommt alles an im smarthome.py
kann das irgendwo zu problemen führen wenn das ding da solange rödelt ?2014-07-28 08:00:01,342 DEBUG DLMS dlms: Reading took: 179.91s -- __init__.py:_update_values:122
Einen Kommentar schreiben:
-
hat schon jemand das script zufällig für einen Landis+Gyr E650 angepasst ?
Das dingt spuckt einiges aus über die commandozeile, was so ca 190 sekunden läuft für einen auslesevorgang.
admin@smarthome:/usr/smarthome/plugins/dlms$ cat /dev/lesekopf0
/?!
/LGZ5\XXXXXX.B32
F.F(00000000)
0.0.0(XXXX)
0.0.1(XXXXX)
0.1.0(04)
0.1.0&04(14-07-07 16:12)
0.1.0*03(14-07-01 14:35)
0.1.0&02(13-10-21 10:48)
0.1.0&01(13-10-21 09:53)
0.1.0*00(00-00-00 00:00)
0.1.0*00(00-00-00 00:00)
0.1.0*00(00-00-00 00:00)
0.1.0*00(00-00-00 00:00)
0.1.0*00(00-00-00 00:00)
0.1.0*00(00-00-00 00:00)
0.1.0*00(00-00-00 00:00)
0.1.0*00(00-00-00 00:00)
0.1.0*00(00-00-00 00:00)
0.1.0*00(00-00-00 00:00)
0.1.0*00(00-00-00 00:00)
0.9.1(06:40:40)
0.9.2(14-07-28)
1.4.0(10)(00.49*kW)
2.4.0(10)(00.00*kW)
9.4.0(10)(00.79*kVA)
10.4.0(10)(00.00*kVA)
1.6.0(03.47*kW)(14-07-26 15:15)
1.6.0&04(00.00)(00-00-00 00:00)
1.6.0*03(00.61)(13-10-21 11:30)
1.6.0&02(00.62)(13-10-21 10:15)
1.6.0&01(13.81)(13-10-21 09:00)
1.6.0*00(00.00)(00-00-00 00:00)
1.6.0*00(00.00)(00-00-00 00:00)
1.6.0*00(00.00)(00-00-00 00:00)
1.6.0*00(00.00)(00-00-00 00:00)
1.6.0*00(00.00)(00-00-00 00:00)
1.6.0*00(00.00)(00-00-00 00:00)
1.6.0*00(00.00)(00-00-00 00:00)
1.6.0*00(00.00)(00-00-00 00:00)
1.6.0*00(00.00)(00-00-00 00:00)
1.6.0*00(00.00)(00-00-00 00:00)
1.6.0*00(00.00)(00-00-00 00:00)
2.6.0(03.85*kW)(14-07-15 14:15)
2.6.0&04(00.00)(00-00-00 00:00)
2.6.0*03(00.62)(13-10-21 11:15)
2.6.0&02(00.61)(13-10-21 10:30)
2.6.0&01(13.81)(13-10-21 09:30)
2.6.0*00(00.00)(00-00-00 00:00)
2.6.0*00(00.00)(00-00-00 00:00)
2.6.0*00(00.00)(00-00-00 00:00)
2.6.0*00(00.00)(00-00-00 00:00)
2.6.0*00(00.00)(00-00-00 00:00)
2.6.0*00(00.00)(00-00-00 00:00)
2.6.0*00(00.00)(00-00-00 00:00)
2.6.0*00(00.00)(00-00-00 00:00)
2.6.0*00(00.00)(00-00-00 00:00)
2.6.0*00(00.00)(00-00-00 00:00)
2.6.0*00(00.00)(00-00-00 00:00)
9.6.0(03.72*kVA)(14-07-23 10:45)
9.6.0&04(00.00)(00-00-00 00:00)
9.6.0*03(13.82)(13-10-21 11:30)
9.6.0&02(13.81)(13-10-21 10:15)
9.6.0&01(13.82)(13-10-21 09:00)
9.6.0*00(00.00)(00-00-00 00:00)
9.6.0*00(00.00)(00-00-00 00:00)
9.6.0*00(00.00)(00-00-00 00:00)
9.6.0*00(00.00)(00-00-00 00:00)
9.6.0*00(00.00)(00-00-00 00:00)
9.6.0*00(00.00)(00-00-00 00:00)
9.6.0*00(00.00)(00-00-00 00:00)
9.6.0*00(00.00)(00-00-00 00:00)
9.6.0*00(00.00)(00-00-00 00:00)
9.6.0*00(00.00)(00-00-00 00:00)
9.6.0*00(00.00)(00-00-00 00:00)
10.6.0(03.92*kVA)(14-07-15 14:15)
10.6.0&04(00.00)(00-00-00 00:00)
10.6.0*03(13.82)(13-10-21 11:15)
10.6.0&02(13.81)(13-10-21 10:30)
10.6.0&01(13.81)(13-10-21 09:30)
10.6.0*00(00.00)(00-00-00 00:00)
10.6.0*00(00.00)(00-00-00 00:00)
10.6.0*00(00.00)(00-00-00 00:00)
10.6.0*00(00.00)(00-00-00 00:00)
10.6.0*00(00.00)(00-00-00 00:00)
10.6.0*00(00.00)(00-00-00 00:00)
10.6.0*00(00.00)(00-00-00 00:00)
10.6.0*00(00.00)(00-00-00 00:00)
10.6.0*00(00.00)(00-00-00 00:00)
10.6.0*00(00.00)(00-00-00 00:00)
10.6.0*00(00.00)(00-00-00 00:00)
1.8.1(000137.1*kWh)
1.8.1&04(000004.5)
1.8.1*03(000004.5)
1.8.1&02(000004.3)
1.8.1&01(000004.2)
1.8.1*00(000000.0)
1.8.1*00(000000.0)
1.8.1*00(000000.0)
1.8.1*00(000000.0)
1.8.1*00(000000.0)
1.8.1*00(000000.0)
1.8.1*00(000000.0)
1.8.1*00(000000.0)
1.8.1*00(000000.0)
1.8.1*00(000000.0)
1.8.1*00(000000.0)
1.8.2(000098.2*kWh)
1.8.2&04(000000.0)
1.8.2*03(000000.0)
1.8.2&02(000000.0)
1.8.2&01(000000.0)
1.8.2*00(000000.0)
1.8.2*00(000000.0)
1.8.2*00(000000.0)
1.8.2*00(000000.0)
1.8.2*00(000000.0)
1.8.2*00(000000.0)
1.8.2*00(000000.0)
1.8.2*00(000000.0)
1.8.2*00(000000.0)
1.8.2*00(000000.0)
1.8.2*00(000000.0)
2.8.1(000246.2*kWh)
2.8.1&04(000004.1)
2.8.1*03(000004.1)
2.8.1&02(000003.9)
2.8.1&01(000003.7)
2.8.1*00(000000.0)
2.8.1*00(000000.0)
2.8.1*00(000000.0)
2.8.1*00(000000.0)
2.8.1*00(000000.0)
2.8.1*00(000000.0)
2.8.1*00(000000.0)
2.8.1*00(000000.0)
2.8.1*00(000000.0)
2.8.1*00(000000.0)
2.8.1*00(000000.0)
2.8.2(000000.0*kWh)
2.8.2&04(000000.0)
2.8.2*03(000000.0)
2.8.2&02(000000.0)
2.8.2&01(000000.0)
2.8.2*00(000000.0)
2.8.2*00(000000.0)
2.8.2*00(000000.0)
2.8.2*00(000000.0)
2.8.2*00(000000.0)
2.8.2*00(000000.0)
2.8.2*00(000000.0)
2.8.2*00(000000.0)
2.8.2*00(000000.0)
2.8.2*00(000000.0)
2.8.2*00(000000.0)
5.8.0(000004.7*kvarh)
5.8.0&04(000004.6)
5.8.0*03(000004.6)
5.8.0&02(000004.6)
5.8.0&01(000001.0)
5.8.0*00(000000.0)
5.8.0*00(000000.0)
5.8.0*00(000000.0)
5.8.0*00(000000.0)
5.8.0*00(000000.0)
5.8.0*00(000000.0)
5.8.0*00(000000.0)
5.8.0*00(000000.0)
5.8.0*00(000000.0)
5.8.0*00(000000.0)
5.8.0*00(000000.0)
6.8.0(000003.8*kvarh)
6.8.0&04(000003.8)
6.8.0*03(000003.8)
6.8.0&02(000003.8)
6.8.0&01(000000.2)
6.8.0*00(000000.0)
6.8.0*00(000000.0)
6.8.0*00(000000.0)
6.8.0*00(000000.0)
6.8.0*00(000000.0)
6.8.0*00(000000.0)
6.8.0*00(000000.0)
6.8.0*00(000000.0)
6.8.0*00(000000.0)
6.8.0*00(000000.0)
6.8.0*00(000000.0)
7.8.0(000065.3*kvarh)
7.8.0&04(000004.0)
7.8.0*03(000004.0)
7.8.0&02(000000.5)
7.8.0&01(000000.5)
7.8.0*00(000000.0)
7.8.0*00(000000.0)
7.8.0*00(000000.0)
7.8.0*00(000000.0)
7.8.0*00(000000.0)
7.8.0*00(000000.0)
7.8.0*00(000000.0)
7.8.0*00(000000.0)
7.8.0*00(000000.0)
7.8.0*00(000000.0)
7.8.0*00(000000.0)
8.8.0(000157.2*kvarh)
8.8.0&04(000003.6)
8.8.0*03(000003.6)
8.8.0&02(000000.1)
8.8.0&01(000000.1)
8.8.0*00(000000.0)
8.8.0*00(000000.0)
8.8.0*00(000000.0)
8.8.0*00(000000.0)
8.8.0*00(000000.0)
8.8.0*00(000000.0)
8.8.0*00(000000.0)
8.8.0*00(000000.0)
8.8.0*00(000000.0)
8.8.0*00(000000.0)
8.8.0*00(000000.0)
C.7.0(00000025)
C.7.1(00000025)
C.7.2(00000007)
C.7.3(00000007)
32.32.0(0000)(00-00-00 00:00)
52.32.0(0001)(00-01-01 00:01)
72.32.0(0001)(00-01-01 00:01)
32.36.0(0001)(13-10-21 08:25)
52.36.0(0001)(13-10-21 08:25)
72.36.0(0001)(13-10-21 08:25)
32.7(233.5*V)
52.7(233.3*V)
72.7(233.3*V)
0.2.0(B32)
0.2.1(0DF01)
0.2.2(405)
0.2.8(F84F)
C.2.1(13-10-02 16:16)
C.8.1(00000000*min)
C.8.2(00058063*min)
C.90.1(00684309)
!
&
das plugin aber bricht nach nen bruchteil der werte ab. habe schon versucht das timeout von 2 auf 5 sec zu setzen im script, aber bringt keine änderung.
jemand ne idee ?2014-07-23 14:38:12,689 DEBUG DLMS dlms: 0.0.0 = XXXXXX-- __init__.py:_update_values:144
2014-07-23 14:38:12,712 DEBUG DLMS dlms: 0.0.1 = XXXXXX-- __init__.py:_update_values:144
2014-07-23 14:38:12,717 DEBUG DLMS dlms: 0.1.0 = 04 -- __init__.py:_update_values:144
2014-07-23 14:38:12,724 DEBUG DLMS dlms: 0.1.0&04 = 14-07-07 16:12 -- __init__.py:_update_values:144
2014-07-23 14:38:12,729 DEBUG DLMS dlms: 0.1.0*03 = 14-07-01 14:35 -- __init__.py:_update_values:144
2014-07-23 14:38:12,735 DEBUG DLMS dlms: 0.1.0&02 = 13-10-21 10:48 -- __init__.py:_update_values:144
2014-07-23 14:38:12,741 DEBUG DLMS dlms: 0.1.0&01 = 13-10-21 09:53 -- __init__.py:_update_values:144
2014-07-23 14:38:12,747 DEBUG DLMS dlms: 0.1.0*00 = 00-00-00 00:00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,753 DEBUG DLMS dlms: 0.1.0*00 = 00-00-00 00:00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,758 DEBUG DLMS dlms: 0.1.0*00 = 00-00-00 00:00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,764 DEBUG DLMS dlms: 0.1.0*00 = 00-00-00 00:00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,770 DEBUG DLMS dlms: 0.1.0*00 = 00-00-00 00:00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,776 DEBUG DLMS dlms: 0.1.0*00 = 00-00-00 00:00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,781 DEBUG DLMS dlms: 0.1.0*00 = 00-00-00 00:00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,787 DEBUG DLMS dlms: 0.1.0*00 = 00-00-00 00:00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,793 DEBUG DLMS dlms: 0.1.0*00 = 00-00-00 00:00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,799 DEBUG DLMS dlms: 0.1.0*00 = 00-00-00 00:00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,805 DEBUG DLMS dlms: 0.1.0*00 = 00-00-00 00:00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,810 DEBUG DLMS dlms: 0.9.1 = 14:37:41 -- __init__.py:_update_values:144
2014-07-23 14:38:12,816 DEBUG DLMS dlms: 0.9.2 = 14-07-23 -- __init__.py:_update_values:144
2014-07-23 14:38:12,822 DEBUG DLMS dlms: 1.4.0 = 07 -- __init__.py:_update_values:144
2014-07-23 14:38:12,827 DEBUG DLMS dlms: 2.4.0 = 07 -- __init__.py:_update_values:144
2014-07-23 14:38:12,833 DEBUG DLMS dlms: 9.4.0 = 07 -- __init__.py:_update_values:144
2014-07-23 14:38:12,839 DEBUG DLMS dlms: 10.4.0 = 07 -- __init__.py:_update_values:144
2014-07-23 14:38:12,845 DEBUG DLMS dlms: 1.6.0 = 03.26 kW -- __init__.py:_update_values:147
2014-07-23 14:38:12,851 DEBUG DLMS dlms: 1.6.0&04 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,863 DEBUG DLMS dlms: 1.6.0*03 = 00.61 -- __init__.py:_update_values:144
2014-07-23 14:38:12,876 DEBUG DLMS dlms: 1.6.0&02 = 00.62 -- __init__.py:_update_values:144
2014-07-23 14:38:12,883 DEBUG DLMS dlms: 1.6.0&01 = 13.81 -- __init__.py:_update_values:144
2014-07-23 14:38:12,889 DEBUG DLMS dlms: 1.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,895 DEBUG DLMS dlms: 1.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,901 DEBUG DLMS dlms: 1.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,906 DEBUG DLMS dlms: 1.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,912 DEBUG DLMS dlms: 1.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,918 DEBUG DLMS dlms: 1.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,924 DEBUG DLMS dlms: 1.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,929 DEBUG DLMS dlms: 1.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,935 DEBUG DLMS dlms: 1.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,941 DEBUG DLMS dlms: 1.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,947 DEBUG DLMS dlms: 1.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,953 DEBUG DLMS dlms: 2.6.0 = 03.85 kW -- __init__.py:_update_values:147
2014-07-23 14:38:12,958 DEBUG DLMS dlms: 2.6.0&04 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,964 DEBUG DLMS dlms: 2.6.0*03 = 00.62 -- __init__.py:_update_values:144
2014-07-23 14:38:12,970 DEBUG DLMS dlms: 2.6.0&02 = 00.61 -- __init__.py:_update_values:144
2014-07-23 14:38:12,976 DEBUG DLMS dlms: 2.6.0&01 = 13.81 -- __init__.py:_update_values:144
2014-07-23 14:38:12,981 DEBUG DLMS dlms: 2.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,987 DEBUG DLMS dlms: 2.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,993 DEBUG DLMS dlms: 2.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:12,999 DEBUG DLMS dlms: 2.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:13,005 DEBUG DLMS dlms: 2.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:13,010 DEBUG DLMS dlms: 2.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:13,016 DEBUG DLMS dlms: 2.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:13,022 DEBUG DLMS dlms: 2.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:13,028 DEBUG DLMS dlms: 2.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:13,033 DEBUG DLMS dlms: 2.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:13,039 DEBUG DLMS dlms: 2.6.0*00 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:13,045 DEBUG DLMS dlms: 9.6.0 = 03.72 kVA -- __init__.py:_update_values:147
2014-07-23 14:38:13,051 DEBUG DLMS dlms: 9.6.0&04 = 00.00 -- __init__.py:_update_values:144
2014-07-23 14:38:13,056 DEBUG DLMS dlms: 9.6.0*03 = 13.82 -- __init__.py:_update_values:144
Einen Kommentar schreiben:
-
latest stable:
no_waiting hat die gleichen Probleme.Code:2014-01-15 09:08:07,909 ERROR Main Plugin dlms exception: __init__() got an unexpected keyword argument 'use_checksum' -- plugin.py:__init__:57 Traceback (most recent call last): File "/usr/local/smarthome/lib/plugin.py", line 53, in __init__ plugin_thread = Plugin(smarthome, plugin, classname, classpath, args) File "/usr/local/smarthome/lib/plugin.py", line 80, in __init__ exec("self.plugin = {0}.{1}(smarthome{2})".format(classpath, classname, args)) File "<string>", line 1, in <module> TypeError: __init__() got an unexpected keyword argument 'use_checksum'
wenn ich das rauswerfe sehe ich im Log:
Code:2014-01-15 09:12:04,402 DEBUG DLMS dlms: Reading took: 4.33s -- __init__.py:_update_values:122 2014-01-15 09:12:04,403 WARNING DLMS dlms: checksum/protocol error: response=0x2 0x46 0x2e 0x46 0x28 0x30 0x30 0x29 0xd 0xa 0x43 0x2e 0x31 0x28 0x39 0x37 0x33 0x39 0x 34 0x37 0x32 0x33 0x24 0x20 0x30 0x20 0x20 0x20 0x20 0x20 0x29 0xd 0xa 0x43 0x2e 0x35 0x2e 0x30 0x28 0x30 0x30 0x29 0xd 0xa 0x31 0x2e 0x38 0x2e 0x30 0x28 0x30 0x31 0x33 0x31 0 x35 0x38 0x2e 0x34 0x2a 0x6b 0x57 0x68 0x29 0xd 0xa 0x21 0xd 0xa 0x3 0x44 checksum=20 -- __init__.py:_update_values:132
Einen Kommentar schreiben:
-
Hi Mirko,
ich habe jetzt die von dir ermittelten Wartezeiten eingebaut. Da es mit Wartezeiten auch bei mir funktioniert (aber eben 0,75s langsamer) habe ich ein optionales Atttribut "no_waiting" eingebaut, was auch den Verzicht auf die Wartezeiten erlaubt. Standardmäßig wird also gewartet.
Ansonsten habe ich im Readme eine kurze Setup-Anleitung verfasst, die Neueinsteigern hoffentlich hilft das Plugin in Betrieb zu nehmen.
Grüße
Robert
Einen Kommentar schreiben:
-
Ich brauche drainOutput und sleep(0.25), hatte das direkt ohne Schleife in deinem letzten Entwurf getestet. Auch das erste sleep(0.5) brauche ich da der nächste Zähler dort sonst das ACK nicht mitbekommt.
Also erstmal könnte es so ohne Schleife gehen (dafür eben sleep(0.5)) - zumindest tut es das hier. Wofür ich nicht die Hand ins Feuer legen möchte ist was der übernächste Zähler wieder für Besonderheiten hat. Daher würde ich die Schleife nicht ganz entsorgen bzw. wenigstens einen zweiten Versuch zulassen. Das ist ja nichts weiteres als ein zusätzliches if-statement und 5 Zeilen Code. Dazu müsstest Du aber so umbauen dass auf das STX gewartet wird, das entsorgt das Echo auch gleich mit. Wenn kein STX kommt dann nochmal mit init_seq senden ... sonst break.
Einen Kommentar schreiben:
-
Bist du so nett und testest mal, ob ein .drainOutput() bei dir anstelle des sleep(0.25) auch funktioniert?Zitat von JuMi2006 Beitrag anzeigenVersuch mal das:
Code:time.sleep (0.5) #Warte auf Zähler self._serial.write(self._request) time.sleep(0.25) #Pause zw. write und baudwechsel
Wie oben geschrieben dauert das Senden des Acks bei 300 Baud eben ca. (8 [Byte]*9 [Symbole/Byte])/300 [Symbole/s])=0,24s - das passt sehr gut zu deinem sleep(0.25) und wäre eine Konsequenz daraus, dass eben alles raus sein muss bevor die Baudrate geändert wird, weil es sonst Gemüse gibt. Genau dafür ist das .drainOutput() unabhängig von der Baudrate gedacht und deswegen kann man so auch das Echo recht gut ausblenden: termios.tcdrain - Nullege Python Samples
Wenn das ok wäre, bliebe aber doch noch wie vor die Schleife? Oder kann es sein, dass das sleep(0.25) manchmal wegen der Timer-Granularität doch zu knapp ist und du deswegen teilweise mehrere Anläufe brauchst?
Viele Grüße
Robert
Einen Kommentar schreiben:
-
Es klemmt an der Stelle wo die Baudrate umgestellt wird. Ich benötige davor ein sleep von 0.25, dann kann ich auch sofort nachdem ich die ID habe das ACK senden.
Das sollte generell kein Problem sein da lt. specs da für das senden des ACKs bis zu 2 Sekunden passen sollten.
Also eigentlich ganz simpel, nen time.sleep(0.25) nachself._serial.write(self._request) und das Problem sollte gelöst sein. Zumindest konnte ich das so bei einem eingrenzen. Der andere mag da noch nciht so recht, da ist das timing wieder kritischer und das versuche ich noch, ich tippe für den kommt das ACK noch zu früh.
Versuch mal das:
Code:time.sleep (0.5) #Warte auf Zähler self._serial.write(self._request) time.sleep(0.25) #Pause zw. write und baudwechsel
Einen Kommentar schreiben:
-
Ok, dann bauen wir entweder die Schleife wieder ein oder evtl. könnte man ein Testprogramm machen, was versucht Verzögerungswert, Checksumme etc zu ermitteln? Weil mit EINER Verzögerung muss es ja gehen - dein Zähler wird ja nicht auf die 5 vorher gesendeten Acks bestehen... Muss doch irgendwie gehen!? Bei 300 Baud und 7E1 dauern die 8 Zeichen des Acks ca. 0,25s. Bei deinem Code sind das zzgl. der sleep (2x 0,5) und dem read-timeout beim Warten auf das STX (1s) also ca. 2,25s Granularität.Zitat von JuMi2006 Beitrag anzeigenGenau da liegt das Problem. Das ACK+Baudrate welches von uns gesendet wird darf weder zu früh noch zu spät kommen. Hier glaube ich aber dass sich nicht alle Zähler einig sind wann das ist. Deshalb ist dort auch die Schleife eingebaut. Mein L&G Zähler macht garnichts sofern er nicht zum richtigen Zeitpunkt ein ACK+Baudrate bekommt, da helfen auch keine 10 Sekunden warten.
Ich sehe gerade, dass du in dem für deine Zähler funktionierenden Code schon eine Zeitmessung hast - könntest du nicht bitte dort die Zeit messen von "vollständige Antwort auf Init"/Schleifenstart bis "sende Ack", und das IMMER ausgeben, so dass man sieht welches Ack schlussendlich Erfolg (=STX bewirkt) hat?
Habe bei der letzten Bestellung leider den hier erwischt: :-(Zitat von JuMi2006 Beitrag anzeigenSorry fürs kurze OT, können wir später gerne nochmal aufgreifen. Welcher Dongle? Ich hab mir leider meinen rs232-wifi Adapter gegrillt und würde daher vorerst auch bei Bluetooth bleiben aber: Reichweite mies. Es bleibt sowohl ein socket als auch ein serial offen, damit könnte ich aber im Notfall leben.
https://weblogs.java.net/blog/alegom...tion_when.html
Wenn du nen Tipp hättest für Bluetooth mit externer Antenne und am besten PA/LNA wäre ich auch interessiert...
Einen Kommentar schreiben:
-
Genau da liegt das Problem. Das ACK+Baudrate welches von uns gesendet wird darf weder zu früh noch zu spät kommen. Hier glaube ich aber dass sich nicht alle Zähler einig sind wann das ist. Deshalb ist dort auch die Schleife eingebaut. Mein L&G Zähler macht garnichts sofern er nicht zum richtigen Zeitpunkt ein ACK+Baudrate bekommt, da helfen auch keine 10 Sekunden warten.Zitat von Robert Beitrag anzeigenOder meinst du ein "Ack"/(im Code "request"? - nur damit wir vom gleichen reden!?) kann zu früh gesendet werden?
Grundsätzlich stelle ich mir das so vor:
> /?!\r\n
< echo & id
#ggf. echo unterdrücken
#id auswerten
> init_seq
#kurz warten, baudrate umschalten, auf STX checken, ggf baudrate zurück und init_seq neu senden, nach x-Versuchen abbrechen
< STX...Data...ETX
Deswegen wollte ich die Schleife auf STX matchen, das ist das erste Zeichen ohne Echo. Wenn ich ein STX im response habe und die Antwort länger als 1 ist dann hab ich nen echo drin. Daher gibts bei mir das response2 was sich auf die Daten nach der ID bezieht, war erstmal leserlicher im Code.Zitat von Robert Beitrag anzeigenStart: Erst warten bis die Senderichtung mit 300 Baud rausgetröpfelt ist, dann Input flushen und damit jedes Echo und anderes Gemüse entsorgen.
Sorry fürs kurze OT, können wir später gerne nochmal aufgreifen. Welcher Dongle? Ich hab mir leider meinen rs232-wifi Adapter gegrillt und würde daher vorerst auch bei Bluetooth bleiben aber: Reichweite mies. Es bleibt sowohl ein socket als auch ein serial offen, damit könnte ich aber im Notfall leben.Zitat von Robert Beitrag anzeigenVerstehe. Der Socket ist sicher durchgängig auf. Warum der nicht geschlossen wird weiß ich auch nicht...(da ich den BT-Dongle umgesteckt habe und ich derzeit auf eine Verison mit Antenne warte)
Einen Kommentar schreiben:
-
Das mit dem develop ist halt eine "komplizierte Sache" die wir wohl etwas unterschiedlich sehen. Wie schon mal in einem anderen Thread dargelegt ist es für Plugin-Entwickler kaum möglich, mit dem stable ihre Grundfunktionalität sicherzustellen. Ich habe nur eine Wärmepumpe, einen VR100, (ok, 3 aber produktive) Squeezeboxen, einen eHZ etc - ich habe ja nicht nebenbei noch einen Testhaushalt.Zitat von mknx Beitrag anzeigendevelop != stable. Develop sollte zwar stabil sein, ist es aber nicht immer.
Allgemeine Warnung:
Wer develop auf seinem Produktivsystem einsetzt, sollte in der Lage sein zu einem Zeitpunkt zurück zu gehen bei dem es für ihn stabil läuft.
Nur zum Vergleich: Beim dlms-Plugin hatte ich eine (für mich) funktionsfähige Version eingecheckt- bei einer für mich nun nicht mehr funktionierenden Änderung MUSS ich ja irgendwas ändern, wenn ich weiterentwickeln oder einfach um nicht bei jedem Pull dann die Version rückgängig zu machen. Wenn dagegen beim KNX-Plugin die ganze Sause kurzzeitig nicht funktioniert bekommst du hingegen von genug Leuten Bugreports dass du das "freiwillig" behebst. ;-)
Alles richtig. Das Plugin ist halt eine Koproduktion - deswegen war Mirkos Gedanke ja auch nicht abwegig es direkt zu ändern - was eben mit meiner "Betriebsweise des develop" (s.o.) in Konflikt stand. Irgendwie kriegen wir das schon geregelt.Zitat von mknx Beitrag anzeigenWer ist denn der "Owner" des Plugins? Der Thread und der ?initiale? Code stammt von Mirko, der Code auf github wurde von Robert eingepflegt.
Der Owner ist dann für den Code verantwortlich und Änderungen von Dritten sollten über einen Pull-Request realisiert werden.
Grüße
Robert
Einen Kommentar schreiben:
-
Hallo,
develop != stable. Develop sollte zwar stabil sein, ist es aber nicht immer.
Allgemeine Warnung:
Wer develop auf seinem Produktivsystem einsetzt, sollte in der Lage sein zu einem Zeitpunkt zurück zu gehen bei dem es für ihn stabil läuft. (Ich denke das kann Robert)
Wer ist denn der "Owner" des Plugins? Der Thread und der ?initiale? Code stammt von Mirko, der Code auf github wurde von Robert eingepflegt.
Der Owner ist dann für den Code verantwortlich und Änderungen von Dritten sollten über einen Pull-Request realisiert werden.
Bis bald
Marcus
Einen Kommentar schreiben:
-
Ok, da muss ich noch mal Überlegen. Deine Antwort auf das Init kommt ja innerhalb von 0,5-0,6s - das ist ok, oder? Und dann kommt einfach gar nix mehr? Wenn man jetzt .timeout oder einen sleep mit 5-10s einfügt immer noch nicht? Denn deine Schleife war ja geduldiger und hatte keinen Timeout. Vielleicht da mal richtig hoch rangehen? Oder meinst du ein "Ack"/(im Code "request"? - nur damit wir vom gleichen reden!?) kann zu früh gesendet werden?Zitat von JuMi2006 Beitrag anzeigenHallo Robert, hier will es nicht. Ich habe mir jeweils mal ein "print(response)" eingebaut. Du siehst es kommt nix, auch ein paar feste sleeps habe ich kurz getestet, für mehr reicht die Zeit heute nicht ich muss noch zur Spätschicht.
Zwei Sachen:
- Der Knackpunkt liegt (in meiner Version) in der Schleife die STX prüft. Der kritische Zeitraum liegt zwischen dem Empfang der ID und dem senden des ACKs. Hatte ja schon erwähnt dass ein Zähler ohne ACK z.B. gar nichts macht - da bringt auch eine feste Baudrate nichts ... das muss 100% passen.
Durch deinen Commit habe ich mich noch mal mit Echounterdrückung etc auseinander gesetzt: Ich denke .drainOutput() und .flushInput() sorgen da jetzt einfach für einen sauberen Start: Erst warten bis die Senderichtung mit 300 Baud rausgetröpfelt ist, dann Input flushen und damit jedes Echo und anderes Gemüse entsorgen.Zitat von JuMi2006 Beitrag anzeigen- Die Initialisierung des Ports in der self._update_values [...] Komischerweise taucht das hier jetzt nicht auf, aber wer kann das erklären? Grundsätzlich machen wir doch das gleiche.
Verstehe. Der Socket ist sicher durchgängig auf. Warum der nicht geschlossen wird weiß ich auch nicht. Im Fall des eHZ würde ich dass so auch beabsichtigen, beim Roomba kann ich deine Intention auch nachvollziehen und würde dass ggfl. auch so "nachrüsten" wollen. Leider quälen meinen VR100 derzeit Empfangsprobleme (da ich den BT-Dongle umgesteckt habe und ich derzeit auf eine Verison mit Antenne warte) - so dass ich das nicht sofort testen kann.Zitat von JuMi2006 Beitrag anzeigenEin anderes Phänomen, [...] Kann ein ähnliches Phänomen hier vorliegen?
Grüße
Robert
Einen Kommentar schreiben:


Einen Kommentar schreiben: