Ankündigung

Einklappen
Keine Ankündigung bisher.

Smartmeter Plugin - Tester gesucht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • freetzmaster
    antwortet
    ich denke dir fehlt das pyserial.
    Kannst du dir hier besorgen pyserial.

    Einen Kommentar schreiben:


  • duennsch
    antwortet
    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

    Code:
    python /usr/local/smarthome/plugins/dlms/__init__.py /dev/ttyUSB0 auto
    eingebe. Erhalte ich diese Meldung.

    Code:
    Traceback (most recent call last):
      File "/usr/smarthome/plugins/dlms/__init__.py", line 24, in <module>
        import serial
    ImportError: No module named serial
    Kann mir jemand erkären, was es mit diesem serial Modul auf sich hat?

    Danke und Grüße

    Sven

    EDIT:

    hab versucht die Schnittstelle mit

    Code:
    cat /dev/ttyUSB0 | od -tx1
    auszulesen. Dies hat am Anfang auch mal funktioniert. Darauf hin habe ich die plugin.conf angepasst. Danach kam nur noch

    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
    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
    (bei volkszähler gefunden und keine Ahnung was er macht) ein, dann funktioniert das Auslesen mit cat... ohne Probleme.

    Füge ich nun in die plugin.conf

    Code:
    [dlms]
        class_name = DLMS
        class_path = plugins.dlms
        serialport = /dev/ttyUSB0
        update_cycle = 20
    #    baudrate = 300
    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:
    [Iskra]
        [[stand]]
            type = num
            dlms_obis_code = 1.8.0*255
    Code:
    > ls Iskra
    Items:
    ======
    Iskra
    Iskra.stand = 0
    Grüße Sven

    Einen Kommentar schreiben:


  • Bonze
    antwortet
    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 ausgabe
    Data: 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
    also scheint ja die verbindung zum Zaehler zu funktionieren
    (mit dem SML Plugin funktioniert die auswertung auch nicht, obwohl diesen mitmeinem Zaehler funktionieren sollte)

    Einen Kommentar schreiben:


  • fanta2k
    antwortet
    hm ok. timeout auf 5 sekunden und jetz kommt alles an im smarthome.py

    2014-07-28 08:00:01,342 DEBUG DLMS dlms: Reading took: 179.91s -- __init__.py:_update_values:122
    kann das irgendwo zu problemen führen wenn das ding da solange rödelt ?

    Einen Kommentar schreiben:


  • fanta2k
    antwortet
    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.

    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
    jemand ne idee ?

    Einen Kommentar schreiben:


  • greentux
    antwortet
    latest stable:

    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'
    no_waiting hat die gleichen Probleme.

    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:


  • Robert
    antwortet
    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:


  • JuMi2006
    antwortet
    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:


  • Robert
    antwortet
    Zitat von JuMi2006 Beitrag anzeigen
    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
    Bist du so nett und testest mal, ob ein .drainOutput() bei dir anstelle des sleep(0.25) auch funktioniert?

    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:


  • JuMi2006
    antwortet
    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:


  • Robert
    antwortet
    Zitat von JuMi2006 Beitrag anzeigen
    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.
    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.

    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?

    Zitat von JuMi2006 Beitrag anzeigen
    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.
    Habe bei der letzten Bestellung leider den hier erwischt: :-(
    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:


  • JuMi2006
    antwortet
    Zitat von Robert Beitrag anzeigen
    Oder meinst du ein "Ack"/(im Code "request"? - nur damit wir vom gleichen reden!?) kann zu früh gesendet werden?
    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.

    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


    Zitat von Robert Beitrag anzeigen
    Start: Erst warten bis die Senderichtung mit 300 Baud rausgetröpfelt ist, dann Input flushen und damit jedes Echo und anderes Gemüse entsorgen.
    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 anzeigen
    Verstehe. 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)
    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.

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Zitat von mknx Beitrag anzeigen
    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.
    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.

    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. ;-)


    Zitat von mknx Beitrag anzeigen
    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.
    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.

    Grüße
    Robert

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    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:


  • Robert
    antwortet
    Zitat von JuMi2006 Beitrag anzeigen
    Hallo 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.
    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 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.
    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
    Ein anderes Phänomen, [...] Kann ein ähnliches Phänomen hier vorliegen?
    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.

    Grüße
    Robert

    Einen Kommentar schreiben:

Lädt...
X