Ankündigung

Einklappen
Keine Ankündigung bisher.

Smartmeter Plugin - Tester gesucht

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

  • Robert
    antwortet
    Zitat von freetzmaster Beitrag anzeigen
    Vielen Dank schonmal für deinen Support. Echt klasse. Hab auch schon ne kleine Spende da gelassen.
    Ich glaube du verwechselst mich mit Marcus!? Marcus = Hauptentwickler sh.py, Mirko und ich = dieses (und andere) Plugins. Marcus bei Laune zu halten ist trotzdem eine gute Idee. ;-)

    Weiter.

    Ok, also braucht es eine Option, die Baudratenumstellung und/oder die Checksummeüberprüfung zu deaktivieren. Wobei: Klar dass die Checksumme fehlschlägt wenn nicht das ganze Paket kommt...

    Ansonsten fehlt dir die korrekte Zerlegung der Obis-Codes wegen dieser doofen *19 *20 *21 ... bei dir. Da bau ich eben was. Dann evtl. mit längerer Wartezeit doch noch mal mit Checksumme versuchen.

    Grüße
    Robert

    Einen Kommentar schreiben:


  • freetzmaster
    antwortet
    wenn ich den cycle erhöhe z.B. 100 kommt nur noch

    2013-11-03 19:01:52,911 DEBUG DLMS dlms: Reading took: 3.71s -- __init__.py:_update_values:87

    den EMH ITZ hab ich ja auch

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Ja Du bist mit deinem cycle zu schnell.

    Der braucht ca. 100 Sekunden (ist wie meine lahme Krücke) bei den ganzen Daten. EMH ITZ

    Einen Kommentar schreiben:


  • freetzmaster
    antwortet
    Hab ich mal gemacht.
    So wie ich das sehe ist das Zeile 92 bis 97, die hab ich auskommentiert.
    Er verhaspelt sich aber immer noch, aber jetzt sieht man eventuell schon wo es hapert.
    Angehängte Dateien

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Baut doch erstmal die Checksumme aus ... ich bin mir grad nicht sicher ob jeder Zähler die macht.

    Einen Kommentar schreiben:


  • freetzmaster
    antwortet
    Lesekopf
    volkszaehler.org - wiki - USB-IR-Schreib-Lesekopf

    Chip ist ein CP2104-GM

    Anbei nochmal das Debug-Log mit 300 Baud

    er liest ausjedenfall schon was, trotzdem bricht er das Lesen scheinbar an unterschiedlichen Punkten ab. Kenn mich leider mit Python noch nicht so gut aus das ich das selber lösen kann, bin aber am lernen.

    Vielen Dank schonmal für deinen Support. Echt klasse. Hab auch schon ne kleine Spende da gelassen.
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Code:
    2013-11-03 16:49:50,745 DEBUG    DLMS         dlms: meter returned capability for higher baudrate 4800 -- __init__.py:_update_values:51
    2013-11-03 16:49:50,750 DEBUG    DLMS         dlms: trying to switch baudrate -- __init__.py:_update_values:54
    2013-11-03 16:49:50,757 DEBUG    DLMS         dlms: socket closed - creating new one -- __init__.py:_update_values:66
    2013-11-03 16:49:50,769 DEBUG    DLMS         dlms: Switching took: 0.01s -- __init__.py:_update_values:68
    2013-11-03 16:49:50,774 DEBUG    DLMS         dlms: switch done -- __init__.py:_update_values:69
    2013-11-03 16:49:52,782 DEBUG    DLMS         dlms: Reading took: 3.55s -- __init__.py:_update_values:86
    2013-11-03 16:49:52,788 WARNING  DLMS         dlms: checksum/protocol error: response=0x6 checksum=0 -- __init__.py:_update_values:95
    Verrät, dass der Wechsel auf 4800 Baud erkannt wird und umgeschaltet wird. Der Checksummen-Fehler - mal schaun.

    Code:
    2013-11-03 16:50:09,348 DEBUG    DLMS         dlms: update -- __init__.py:_update_values:28
    
    [...]
    
    2013-11-03 16:50:29,033 DEBUG    DLMS         dlms: update -- __init__.py:_update_values:28
    2013-11-03 16:50:29,460 WARNING  DLMS         dlms: device reports readiness to read but returned no data (device disconnected?) -- __init__.py:_update_values:43
    2013-11-03 16:50:29,539 WARNING  DLMS         dlms: device reports readiness to read but returned no data (device disconnected?) -- __init__.py:_update_values:43
    2013-11-03 16:50:29,547 DEBUG    Scheduler    DLMS next time: 2013-11-03 16:50:49+01:00 -- scheduler.py:_next_time:289
    2013-11-03 16:50:29,570 WARNING  DLMS         dlms: device reports readiness to read but returned no data (device disconnected?) -- __init__.py:_update_values:85
    2013-11-03 16:50:29,581 DEBUG    DLMS         dlms: Reading took: 20.23s -- __init__.py:_update_values:86
    2013-11-03 16:50:29,595 WARNING  DLMS         dlms: checksum/protocol error: response=0x0 0x0 0x0 0x0 0x0 0x0 checksum=0 -- __init__.py:_update_values:95
    Ab der Umschaltung ist also erst mal was kaputt. An was für einer Schnittstelle hängt der Leser? USB-Seriell-Wandler? Chipsatz bekannt?

    Vorschlag:

    Füge unter Zeile 48:
    Code:
                baud_capable = 300 * (1 << (response[4] - 0x30))
    noch
    Code:
                baud_capable = 300
    ein. Dann bleibt es trotz der (korrekt erkannten - in deiner Auslesung die "4" in der zweiten Zeile!) höheren Datenrate auf 300 Baud.

    Grüße
    Robert

    Einen Kommentar schreiben:


  • freetzmaster
    antwortet
    Ambei das Debug Log
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Fehlerbeschreibung?

    Ausgabe vom Debug-Modus?

    Zeile 97 mal einkommentieren.

    Einen Kommentar schreiben:


  • freetzmaster
    antwortet
    Ich vermute mein Protokoll ist anderes, hab es mal ausgelesen. In dem Datenblatt vom Zähler steht aber drin das er nach IEC 62053-21 arbeitet.
    Ich erkenne bei mir zum Beispiel keine Prüfsumme. Aber der Anforderungsbefehl (/?! CR LF) ist der gleiche. Wie kann ich testen ob die Baudratenumstellung funktioniert. Teste aktuell mit TeraTerm am Laptop aber hab keine Idee wie ich das so schnell machen soll.

    Hier mein Protokoll:
    Code:
    /?!
    
    /EMH4\@--ITZ-G003VE
    
    F.F(00000000)
    
    0.0.0(90015239)
    
    0.1.0(30)
    
    0.1.2*30(0131101000000)
    
    0.1.2*29(1131001000000)
    
    0.1.2*28(1130901000000)
    
    0.1.2*27(1130801000000)
    
    0.1.2*26(1130701000000)
    
    0.1.2*25(1130601000000)
    
    0.1.2*24(1130501000000)
    
    0.1.2*23(1130401000000)
    
    0.1.2*22(0130301000000)
    
    0.1.2*21(0130201000000)
    
    0.1.2*20(0130101000000)
    
    0.1.2*19(0121201000000)
    
    0.1.2*18(0121101000000)
    
    0.1.2*17(1121001000000)
    
    0.1.2*16(1120901000000)
    
    0.9.1(0162700)
    
    0.9.2(0131103)
    
    1.8.1(00007375*kWh)
    
    1.8.1*30(00007354*kWh)
    
    1.8.1*29(00007055*kWh)
    
    1.8.1*28(00006848*kWh)
    
    1.8.1*27(00006654*kWh)
    
    1.8.1*26(00006524*kWh)
    
    1.8.1*25(00006375*kWh)
    
    1.8.1*24(00006185*kWh)
    
    1.8.1*23(00005970*kWh)
    
    1.8.1*22(00005708*kWh)
    
    1.8.1*21(00005351*kWh)
    
    1.8.1*20(00004949*kWh)
    
    1.8.1*19(00004434*kWh)
    
    1.8.1*18(00004112*kWh)
    
    1.8.1*17(00003803*kWh)
    
    1.8.1*16(00003611*kWh)
    
    2.8.1(00020129*kWh)
    
    2.8.1*30(00020113*kWh)
    
    2.8.1*29(00019532*kWh)
    
    2.8.1*28(00018791*kWh)
    
    2.8.1*27(00017699*kWh)
    
    2.8.1*26(00016359*kWh)
    
    2.8.1*25(00015235*kWh)
    
    2.8.1*24(00014226*kWh)
    
    2.8.1*23(00013212*kWh)
    
    2.8.1*22(00012291*kWh)
    
    2.8.1*21(00012155*kWh)
    
    2.8.1*20(00012019*kWh)
    
    2.8.1*19(00011978*kWh)
    
    2.8.1*18(00011775*kWh)
    
    2.8.1*17(00011161*kWh)
    
    2.8.1*16(00010379*kWh)
    
    1.25(00.86*kW)
    
    31.25(002.93*A)
    
    51.25(000.16*A)
    
    71.25(000.48*A)
    
    32.25(233.2*V)
    
    52.25(233.7*V)
    
    72.25(235.2*V)
    
    !

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    @Robert: Check den ruhig mal ein. Mein Code war ja nix weiter als nen erster Wurf.

    Einen Kommentar schreiben:


  • freetzmaster
    antwortet
    OK, das sieht schonmal sehr viel besser aus jetzt geh ich nochmal überprüfen ob der Leser richtig sitzt, weil folgendes kommt.

    Code:
    2013-11-02 22:57:28,135 DEBUG    DLMS         dlms: Reading took: 4.02s -- __init__.py:_update_values:86
    2013-11-02 22:57:28,141 WARNING  DLMS         dlms: checksum/protocol error: response= checksum=0 -- __init__.py:_update_values:95

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Hm, benutz einfach mal:

    plugin.conf
    Code:
    [dlms]
        class_name = DLMS
        class_path = plugins.dlms
        serialport = <deine-schnittstelle>
    item.conf
    Code:
    [Stromzaehler]
      [[Bezug]]
        [[[Energie]]]
          type = num
          dlms_obis_code = 1.8.1
      [[Lieferung]]
        [[[Energie]]]
          type = num
          dlms_obis_code = 2.8.1

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Zitat von freetzmaster Beitrag anzeigen
    dein Code hab ich auch verwendet.
    als nächstes: in den items muss es nicht "dlms_code" sondern "dlms_obis_code" heißen...

    Hm, leider haben Mirko und ich geringfügige Abweichungen. Mirko, bist du einverstanden wenn ich den Code einchecke? Copyright Userforum oder so?

    Grüße
    Robert

    Einen Kommentar schreiben:


  • freetzmaster
    antwortet
    dein Code hab ich auch verwendet.

    Also bei Mirkos Plugin kommt der Fehler

    Code:
    2013-11-02 22:48:45,547 ERROR    Main         Plugin smartmeter exception: invalid syntax (__init__.py, line 44) -- plugin.py:__init__:57
    Traceback (most recent call last):
      File "/usr/smarthome/lib/plugin.py", line 53, in __init__
        plugin_thread = Plugin(smarthome, plugin, classname, classpath, args)
      File "/usr/smarthome/lib/plugin.py", line 79, in __init__
        exec("import {0}".format(classpath))
      File "<string>", line 1, in <module>
      File "/usr/smarthome/plugins/dlms/__init__.py", line 44
        print self.id.strip()
                 ^
    SyntaxError: invalid syntax

    Einen Kommentar schreiben:

Lädt...
X