Ankündigung

Einklappen
Keine Ankündigung bisher.

Support Thread für DLMS Plugin

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

    #16
    Habe mir DLMS aus dem aktuellen Develop für meinen Landis&Gyr E350 und optischen Lesekopf aktiviert.

    Zu Beginn gab ich einen falschen "serialport" an, der nicht existiert hat. Das Plugin stürzte ab. Nachdem ich den richtigen "serialport" gefunden hatte, klappte das Auslesen der Daten.

    Im Debug-Modus erhalte ich folgende Angaben:

    Code:
    2017-03-06  17:23:25 DEBUG    DLMS         dlms: switching to 4800 Baud
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: reading took: 3.71s
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 0.0 =             7552
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 1.8.1 = 012600.556 kWh
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 1.8.2 = 037195.028 kWh
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 2.8.1 = 016638.326 kWh
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 2.8.2 = 004022.791 kWh
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 1.8.0 = 049795.584 kWh
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 2.8.0 = 020661.117 kWh
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 15.8.0 = 070456.702 kWh
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 32.7 = 233 V
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 52.7 = 233 V
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 72.7 = 234 V
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 31.7 = 001.65 A
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 51.7 = 002.43 A
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 71.7 = 001.04 A
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 82.8.1 = 0000
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 82.8.2 = 0000
    2017-03-06  17:23:27 DEBUG    DLMS         dlms: 0.2.0 = M25
    Ich möchte für diverse Funktionen nun die aktuelle Leistungen (Bezug und Einspeisen) haben. Da der E350 diese leider nicht direkt ausgibt, möchte ich mit einer Abtastzeit von 60s die Differenzen von 1.8.0 und 2.8.0 benutzen, um die Leistungen zu berechnen.

    Ist das ein brauchbarer Ansatz ?

    Kommentar


      #17
      Hi,
      kann man das nicht aus strom und spannung zusammen rechnen? Das scheint dein Zähler doch zu liefern.
      1,65A*233V+ 233V*2,43A+ 234V*1,04A = 1194 Watt

      Der anasatz mit der Differenz kannst du auch machen da hast du aber wegen der auflösung so 60w stufen drin.

      Vg
      Jürgen
      Zuletzt geändert von heckmannju; 06.03.2017, 21:43.

      Kommentar


        #18
        Ich weiss leider nicht, ob der Strom bei Netzlieferung dann ein negatives Vorzeichen bekommt.

        Gemäss Dokumenten im Internet sind:

        Code:
        1.8.0 : Total active energy import kWh
        2.8.0 : Total active energy export kWh
        Diese beiden Werte beschreiben also die Wirkleistung. Möchte ich nun die Wirkleistung aus Strom und Spannung berechnen, müsste ich auf das Cos Phi kennen. Das konnte ich aber bei den Werten meines E350 nicht entdecken.

        Kommentar


          #19
          Hi,
          war nur eine idee... :-)

          du bekommst in einer Minute einen unterschied von 0.001 kWh raus. Das sind stufen von 60W (0.001 * 60 * 1000) wenn dir das als auflösung reicht, kannst du das meiner meinung nach machen.

          Ich würde sagen das ist viel besser als nix.

          VG
          Jürgen

          Kommentar


            #20
            Hallo Jürgen,

            ich habe es gestern in einem eigenen Plugin mal so implementiert und es sieht aus meiner Sicht ab 20:00 brauchbar aus:

            energie24h.png
            Wir haben eine Wärmepumpe, die den Takt erzeugt.

            Ich beobachte mal, ob die Sache sich bewährt. Ich kann sogar nun Hoch- und Niedertarif auswerten, was ich bisher mit dem PowerDog nicht konnte.

            Gruss

            Matthias

            Kommentar


              #21
              Hi,
              schaut doch gut aus. Hast du eine dicken Akku? Wie kommt der Eingenverbrauch zwichen 20 und 8 uhr her?
              VG
              Jürgen

              Kommentar


                #22
                Hallo Jürgen,

                es sind inzwischen doch einige Geräte in unserem Haus in Betrieb, die eine Grundlast von ca. 500W erzeugen (Tiefkühler, Kühlschrank, NAS, Webcams, KNX, ...). Das Brauchwasser wird durch die Wärmepumpe erzeugt und ist als Spitze um 00:00 zu sehen. Einen Akku habe ich (noch) nicht in Betrieb.

                Gruss

                Matthias

                Kommentar


                  #23
                  Hi,

                  ja aber bei mir ist Eigenverbrauch der Strom der durch die PV, Akku gedeckt wird...deswegen meine frage.
                  VG
                  Jürge

                  Kommentar


                    #24
                    Aha. Mein Eigenverbrauch ist die wirklich im Haus verbrauchte Energie unabhängig woher sie kommt (PV oder Netz). Mit Netzbezug und Lieferung sehe ich zusätzlich gut den Energiefluss, um zu entscheiden, wann Verbraucher im Haus via smarthome.py/KNX freigegeben werden können.

                    Kommentar


                      #25
                      bmx
                      Hallo,
                      ich hänge mich hier mal an.
                      Ich möchte auch meinen eHZ auslesen. Lt Anleitung arbeitet der Zähler mit "Die Kommunikation erfolgt über die optische Schnittstelle nach dem IEC-62056-21-Protokoll mit einer max.Baudrate von 9.600 Baud."

                      Interessant für mich sind die beiden Werte
                      • 1.7.1 (0000.00*kW) CR LF Momentane Wirkleistung Bezug
                      • 1.8.0 (000000.000*kWh) CR LF Gesamtwirkenergie Bezug (ohne Tarif)

                      Ebenfalls lt Anleitung "Der Informationsdatensatz des Zählers wird nach der Anmeldung und der Bestätigungs- bzw. Optionsauswahl- Nachrichtensequenz übertragen"

                      Die sollen dann so aussehen:
                      Anmeldung: /?! CR LF
                      Antwort vom Zähler: / ITF 5 \ FRP-SM VXYZ JJMMTT CR LF
                      Bestätigung: ACK 0 5 0 CR LF

                      Dann kommt die eigenltiche Nachricht u.a. mit
                      1.7.1 (0000.000*kW) CR LF
                      1.8.0 (000000.000*kWh) CR LF

                      Ist die auch über das Plugin abgedeckt?
                      Danke für die Rückmeldung.

                      Kommentar


                        #26
                        bmx

                        Ich habe das Plugin einfach mal probiert.
                        Zuerst musste ich die initiale Baudrate anpassen.
                        Code:
                        InitialBaudrate = 9600
                        Dann geht es weiter bis:
                        Code:
                        (#)/usr/local/smarthome/plugins_dev/dlms:$ python3 __init__.py /dev/ttyUSB2                                                              22:29:21
                        This is DLMS Plugin running in standalone mode
                        ==============================================
                        init dlms
                        Instance 0 of DLMS configured to use serialport '/dev/ttyUSB2' with update cycle 60 seconds
                        Time to open serial port /dev/ttyUSB2: 3.21 ms
                        Sending request message b'/?!\r\n' to smartmeter
                        Time to send first request to smartmeter: 574.35 \xb5s
                        Time to receive an answer: 73.95 ms
                        Request Message was echoed, need to read the identification message
                        Time to get first identification message from smartmeter: 253.92 \xb5s
                        Identification Message is b'\x0f\x7f\x0f/ITF5FRP-SMV320090704\r\n'
                        identification message 15 does not start with '/',aborting
                        Traceback (most recent call last):
                          File "__init__.py", line 746, in <module>
                            if len(result) > 0:
                        TypeError: object of type 'NoneType' has no len()
                        \x0f\x7f\x0f sind doch "nur" Steuerzeichen. Warum kommen die hier bzw. Wie kann ich diese rausfiltern?
                        An welcher Stelle baue ich am besten die Bestätigung ein?
                        DANKE

                        Kommentar


                          #27
                          Hm. Zum einen hast Du vermutlich nicht die neueste Version, zum Zweiten ist laut Spec für IEC-62056-21 die initiale Baurate immer 300 Baud (mit Ausnahme vom Protokoll Mode D), zum Dritten sehen bei Dir die Steuerzeichen z.B. für µ nicht so aus sonder da bleibt ein \xb5 in der Meldung.
                          Woher die der Teil '\x0f\x7f\x0f' kommt? Evtl. liest der Murks rein durch eine falsche Baudrate?
                          Anbei meine aktuell letzte Version die seit Mitte März vor sich hinwerkelt, probier das mal und berichte ...
                          Angehängte Dateien

                          Kommentar


                            #28
                            bmx

                            Vielen Dank. Ich teste und melde zurück.

                            Mein Zähler ist ein ITF

                            Sagen wir so. Ich habe zu meinem Zähler (FROETEC SIMPLEX ITF FRB-SM-R1B) keine Beschreibung finden können (Herstelleranfrage läuft noch), sondern bislang nur von einem Zähler, in dem zwar meine Produktnummer aufgeführt wird, aber der anders aussieht.

                            Kommentar


                              #29
                              Hi,
                              du kannst ja auch einfach mal den Lesekopf an einem PC steckern und mit hterm rumspielen.

                              Folgendes von Volkszähler geklaut....

                              Test mittels HTerm

                              Zum Testen unter Windows kann hterm verwendet werden.
                              Einzustellen sind:
                              Port: bei Windows:verwendeter COM-Anschluss des USB-Adapters, bei Linux z.B. /dev/ttyUSB0
                              Baud: 300
                              Data: 7
                              Stop: 1
                              Parity: Even
                              Bei „input control“: Send on Enter auf „CR-LF“
                              Auf „Connect“ klicken, dann im Eingabefeld „/?!“ (ohne Anführungszeichen) eingeben und Enter drücken. Wenn im Feld „received data“ was erscheint, funktioniert die Kommunikation prinzipiell.

                              Kommentar


                                #30
                                bmx
                                So ich habe die neuest Version des Plugins (Post27) getestet und zwar im Standalone-Betrieb zum Testen.
                                Hier das Ergebnis:
                                Code:
                                (#)/usr/local/smarthome/plugins_dev/dlms:$  python3 __init__.py /dev/ttyUSB2
                                This is DLMS Plugin running in standalone mode
                                ==============================================
                                2017-04-04 22:13:00,442 - __main__ - DEBUG - init dlms  @ 82
                                2017-04-04 22:13:00,443 - __main__ - DEBUG - Instance 0 of DLMS configured to use serialport '/dev/ttyUSB2' with update cycle 60 seconds  @ 100
                                2017-04-04 22:13:00,446 - __main__ - DEBUG - Time to open serial port /dev/ttyUSB2: 3.17 ms  @ 271
                                2017-04-04 22:13:00,447 - __main__ - DEBUG - Reset input buffer from serial port '/dev/ttyUSB2'  @ 275
                                2017-04-04 22:13:00,447 - __main__ - DEBUG - Writing request message b'/?!\r\n' to serial port '/dev/ttyUSB2'  @ 277
                                2017-04-04 22:13:00,448 - __main__ - DEBUG - Flushing buffer from serial port '/dev/ttyUSB2'  @ 279
                                2017-04-04 22:13:00,448 - __main__ - DEBUG - Reset input buffer from serial port '/dev/ttyUSB2'  @ 281
                                2017-04-04 22:13:00,449 - __main__ - DEBUG - Time to send first request to smartmeter: 1.85 ms  @ 287
                                2017-04-04 22:13:00,612 - __main__ - DEBUG - Time to receive an answer: 165.24 ms  @ 294
                                2017-04-04 22:13:00,613 - __main__ - DEBUG - Request Message was echoed, need to read the identification message  @ 300
                                2017-04-04 22:13:02,615 - __main__ - DEBUG - Time to get first identification message from smartmeter: 2.00 s  @ 309
                                2017-04-04 22:13:02,616 - __main__ - DEBUG - Identification Message is b''  @ 313
                                2017-04-04 22:13:02,616 - __main__ - WARNING - malformed identification message b''  @ 316
                                
                                No results from query, maybe a problem with the serial port '/dev/ttyUSB2' given
                                ==============================================
                                Ändere ich im Plugin die Zeile 225 direkt auf 9600baud kommt:

                                Code:
                                (#)/usr/local/smarthome/plugins_dev/dlms:$  python3 __init__.py /dev/ttyUSB2                                                                              22:13:02
                                This is DLMS Plugin running in standalone mode
                                ==============================================
                                2017-04-04 22:13:39,807 - __main__ - DEBUG - init dlms  @ 82
                                2017-04-04 22:13:39,808 - __main__ - DEBUG - Instance 0 of DLMS configured to use serialport '/dev/ttyUSB2' with update cycle 60 seconds  @ 100
                                2017-04-04 22:13:39,812 - __main__ - DEBUG - Time to open serial port /dev/ttyUSB2: 3.43 ms  @ 271
                                2017-04-04 22:13:39,812 - __main__ - DEBUG - Reset input buffer from serial port '/dev/ttyUSB2'  @ 275
                                2017-04-04 22:13:39,813 - __main__ - DEBUG - Writing request message b'/?!\r\n' to serial port '/dev/ttyUSB2'  @ 277
                                2017-04-04 22:13:39,813 - __main__ - DEBUG - Flushing buffer from serial port '/dev/ttyUSB2'  @ 279
                                2017-04-04 22:13:39,814 - __main__ - DEBUG - Reset input buffer from serial port '/dev/ttyUSB2'  @ 281
                                2017-04-04 22:13:39,814 - __main__ - DEBUG - Time to send first request to smartmeter: 1.91 ms  @ 287
                                2017-04-04 22:13:39,848 - __main__ - DEBUG - Time to receive an answer: 35.93 ms  @ 294
                                2017-04-04 22:13:39,849 - __main__ - DEBUG - Request Message was echoed, need to read the identification message  @ 306
                                2017-04-04 22:13:39,850 - __main__ - DEBUG - Time to get first identification message from smartmeter: 447.51 \xb5s  @ 309
                                2017-04-04 22:13:39,850 - __main__ - DEBUG - Identification Message is b'\x0f\x7f\x0f/ITF5FRP-SMV320090704\r\n'  @ 313
                                2017-04-04 22:13:39,850 - __main__ - WARNING - identification message 15 does not start with '/',aborting  @ 321
                                
                                No results from query, maybe a problem with the serial port '/dev/ttyUSB2' given
                                ==============================================
                                Wenn ich direkt mit Python teste: Initialisierung:
                                Code:
                                ser.write(b"\x2F\x3F\x21\x0D\x0A")
                                lautet die Antwort mit
                                Code:
                                print(ser.read(24).decode('utf-8'))
                                Code:
                                /ITF5FRP-SMV320090704
                                Kann die Antwort mit dem Plugin auch an der Formatierung UTF8 liegen?

                                Kommentar

                                Lädt...
                                X