Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Smartmeter mit Landis+Gyr E650

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.0k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Smartmeter mit Landis+Gyr E650

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
56 Beiträge 8 Kommentatoren 9.4k Aufrufe 5 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Michael UrayM Michael Uray

    @homoran said in Smartmeter mit Landis+Gyr E650:

    da hast du aber nicht

    @homoran sagte in Smartmeter mit Landis+Gyr E650:

    alles Standardeinstellungen

    oder?

    Stimmt, ich hatte hier inzwischen schon die Daten eingestellt welche bei mir am Terminal ursprünglich funktioniert hatten.

    Was hattest du denn im Terminal an Parametern mitgegeben?

    300,E,7,1

    @apollon77 said in Smartmeter mit Landis+Gyr E650:

    Die Daten die reinkommen sind müll und deswegen erkennt er auch nichts. Settings bitte nochmal Zeigen

    Danke, ich habe schon die ganze Zeit gerätselt wie diese Daten im Log dargestellt werden, da ich keinen Zusammenhang mit den Daten welche ich über das Terminal empfangen hatte sehen konnte.

    Dass hier Müll ankommt lies mich jetzt ein Problem mit der Baudrate vermuten und daher habe ich das jetzt einmal mit fix (D0: Überschreiben der Baudrate-Änderung) 300 Baud getestet und siehe da, es funktioniert!
    Danach habe ich noch fix 9600 und 4800 getestet, doch leider wieder ohne brauchbare Daten.
    Erst bei 2400 hat die Kommunikation dann wieder funktioniert.

    Danke euch allen, das ist schon einmal ein großer Erfolg!

    Woran könnte das denn jetzt noch liegen, dass höhere Baudraten als 2400 nicht funktionieren?
    Der Zähler schickt am Anfang ja eigentlich "5" (/LGZ5\2ZMD4104407.B31), was 9600 bedeuten sollte soweit ich gesehen habe.

    Könnte es ein Hardware Problem sein?
    Der IR Kopf ist mit einem recht kurzen Kabel (~1m) and einen RS232 FTDI USB Adapter mit einem ebenso kurzen USB Kabel angebunden.

    Oder ist es möglich, dass der Zähler 9600 meldet, es aber eigentlich nicht unterstützt?

    HomoranH Nicht stören
    HomoranH Nicht stören
    Homoran
    Global Moderator Administrators
    schrieb am zuletzt editiert von Homoran
    #27

    @michael-uray sagte in Smartmeter mit Landis+Gyr E650:

    Dass hier Müll ankommt lies mich jetzt ein Problem mit der Baudrate vermuten und daher habe ich das jetzt einmal mit fix ( D0: Überschreiben der Baudrate-Änderung) 300 Baud getestet und siehe da, es funktioniert!

    ich habe inzwischen noch für dich gegoogelt und bei Volkszähler für einen anderen (320) L+G Zähler gefunden, dass die Antwort

    @michael-uray sagte in Smartmeter mit Landis+Gyr E650:

    /LGZ5\2ZMD4104407.B31
    /LGZ52ZMD4104407.B31

    wohl bedeutet, dass maximal 2Mbaud passen würden

    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

    1 Antwort Letzte Antwort
    0
    • Michael UrayM Michael Uray

      @apollon77

      Das hier sind meine Einstellungen:

      2022-04-02_17-41-11_instances_-stocking-_Mozilla_Firefox.png

      Ralla66R Offline
      Ralla66R Offline
      Ralla66
      Most Active
      schrieb am zuletzt editiert von
      #28

      @michael-uray
      "/?!\r\n/LGZ5\2ZMD4104407.B31\r\n"
      nach Bedienungsanleitung Serie 3 bedeutet die 5 hinter LGZ Baudrate.
      In der Norm IEC 62056-21 ist 5 9600 Baud

      HomoranH 1 Antwort Letzte Antwort
      1
      • Ralla66R Ralla66

        @michael-uray
        "/?!\r\n/LGZ5\2ZMD4104407.B31\r\n"
        nach Bedienungsanleitung Serie 3 bedeutet die 5 hinter LGZ Baudrate.
        In der Norm IEC 62056-21 ist 5 9600 Baud

        HomoranH Nicht stören
        HomoranH Nicht stören
        Homoran
        Global Moderator Administrators
        schrieb am zuletzt editiert von
        #29

        @ralla66 Ooops, dann hab ich wohl schief geguckt

        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

        Ralla66R 1 Antwort Letzte Antwort
        0
        • HomoranH Homoran

          @ralla66 Ooops, dann hab ich wohl schief geguckt

          Ralla66R Offline
          Ralla66R Offline
          Ralla66
          Most Active
          schrieb am zuletzt editiert von
          #30

          @homoran
          hast die 2 erwischt ist Extended communication possibility 2 = dlms-compatible meter

          HomoranH 1 Antwort Letzte Antwort
          1
          • Ralla66R Ralla66

            @homoran
            hast die 2 erwischt ist Extended communication possibility 2 = dlms-compatible meter

            HomoranH Nicht stören
            HomoranH Nicht stören
            Homoran
            Global Moderator Administrators
            schrieb am zuletzt editiert von
            #31

            @ralla66 sagte in Smartmeter mit Landis+Gyr E650:

            @homoran
            hast die 2 erwischt ist Extended communication possibility 2 = dlms-compatible meter

            Jepp :shame:

            Allerdings muss die Aushandlung bei 300Baud erfolgen.
            IMHO muss dann die Baudrate in der Instanz leer bleiben. Der Adapter "regelt" dann nach (wenn ich mich nicht täusche.
            Deswegen sollte ja alles auf Standard bleiben

            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            Michael UrayM 1 Antwort Letzte Antwort
            0
            • HomoranH Homoran

              @ralla66 sagte in Smartmeter mit Landis+Gyr E650:

              @homoran
              hast die 2 erwischt ist Extended communication possibility 2 = dlms-compatible meter

              Jepp :shame:

              Allerdings muss die Aushandlung bei 300Baud erfolgen.
              IMHO muss dann die Baudrate in der Instanz leer bleiben. Der Adapter "regelt" dann nach (wenn ich mich nicht täusche.
              Deswegen sollte ja alles auf Standard bleiben

              Michael UrayM Offline
              Michael UrayM Offline
              Michael Uray
              schrieb am zuletzt editiert von
              #32

              @homoran said in Smartmeter mit Landis+Gyr E650:

              Der Adapter "regelt" dann nach (wenn ich mich nicht täusche.

              Ja, das seint so zu sein, denn er schaltet dann auf 9600 hoch, was ja auch korrekt wäre, doch kommen dann mit 9600 aus irgend einem Grund keine brauchbaren Daten mehr an.
              Ich frage mich nur warum, wo der Zähler doch eigentlich meldet dies zu unterstützen?

              Hier habe ich noch ein PDF mit der Norm gefunden:
              https://www.ungelesen.net/protagWork/media/downloads/solar-steuerung/iec62056-21{ed1.0}en_.pdf

              Protocol mode C and protocol mode E (with baud rate changeover, with
              acknowledgement / option select message or other protocols)
              0 - 300 Bd
              1 - 600 Bd
              2 - 1 200 Bd
              3 - 2 400 Bd
              4 - 4 800 Bd
              5 - 9 600 Bd
              6 - 19 200 Bd
              7, 8, 9 - reserved for later extensions.

              d) Protocol mode D (data transmission at 2 400 Bd)
              Baud rate character is always 3.

              "Protocol mode D (data transmission at 2 400 Bd)"
              Eventuell ist das hier der Auslöser?

              1 Antwort Letzte Antwort
              0
              • Michael UrayM Michael Uray

                @homoran said in Smartmeter Adapter Probleme:

                und warum nicht auch hier in code-tags und ggf. Spoiler

                Das Logfile mit nur einer Auslesung hat 17 MB, ich versuche einmal die relevanten Dinge daraus zu posten:

                2022-04-02 15:21:42.630  - info: host.stocking "system.adapter.smartmeter.0" enabled
                2022-04-02 15:21:42.652  - info: host.stocking instance system.adapter.smartmeter.0 started with pid 7520
                2022-04-02 15:21:43.425  - debug: smartmeter.0 (7520) Redis Objects: Use Redis connection: 127.0.0.1:9001
                2022-04-02 15:21:43.446  - debug: smartmeter.0 (7520) Objects client ready ... initialize now
                2022-04-02 15:21:43.447  - debug: smartmeter.0 (7520) Objects create System PubSub Client
                2022-04-02 15:21:43.448  - debug: smartmeter.0 (7520) Objects create User PubSub Client
                2022-04-02 15:21:43.458  - debug: smartmeter.0 (7520) Objects client initialize lua scripts
                2022-04-02 15:21:43.461  - debug: smartmeter.0 (7520) Objects connected to redis: 127.0.0.1:9001
                2022-04-02 15:21:43.472  - debug: smartmeter.0 (7520) Redis States: Use Redis connection: 127.0.0.1:9000
                2022-04-02 15:21:43.476  - debug: smartmeter.0 (7520) States create System PubSub Client
                2022-04-02 15:21:43.477  - debug: smartmeter.0 (7520) States create User PubSub Client
                2022-04-02 15:21:43.482  - debug: smartmeter.0 (7520) States connected to redis: 127.0.0.1:9000
                2022-04-02 15:21:43.496  - debug: smartmeter.0 (7520) Plugin sentry Initialize Plugin (enabled=true)
                2022-04-02 15:21:43.645  - info: smartmeter.0 (7520) starting. Version 3.3.4 in /opt/iobroker/node_modules/iobroker.smartmeter, node: v14.19.1, js-controller: 4.0.21
                2022-04-02 15:21:43.665  - debug: smartmeter.0 (7520) SmartmeterObis options: {"debug":2,"protocol":"D0Protocol","transport":"SerialRequestResponseTransport","requestInterval":"300","anotherQueryDelay":"2000","transportSerialPort":"/dev/serial/by-id/usb-FTDI_USB_Serial_Converter_FTBYZZT3-if00-port0","transportSerialBaudrate":300,"transportSerialDataBits":7,"transportSerialStopBits":1,"transportSerialParity":"even","transportSerialMessageTimeout":null,"protocolD0WakeupCharacters":null,"obisFallbackMedium":1}
                2022-04-02 15:21:43.667  - debug: smartmeter.0 (7520) CREATE SERIALPORT: 300 7 1 even
                2022-04-02 15:21:43.672  - debug: smartmeter.0 (7520) SERIALPORT OPEN
                2022-04-02 15:21:43.680  - debug: smartmeter.0 (7520) SERIALPORT RESET BAUDRATE TO 300
                2022-04-02 15:21:43.684  - debug: smartmeter.0 (7520) INITIAL MESSAGES TO SEND: 2
                2022-04-02 15:21:43.685  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 0 IN GETNEXTMESSAGE
                2022-04-02 15:21:43.685  - debug: smartmeter.0 (7520) TO SEND 2: 
                2022-04-02 15:21:43.685  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 1 IN GETNEXTMESSAGE
                2022-04-02 15:21:43.686  - debug: smartmeter.0 (7520) TO SEND 1: /?!
                
                2022-04-02 15:21:43.693  - debug: smartmeter.0 (7520) connected set to false
                2022-04-02 15:21:43.697  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:43.698  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 2 IN CHECKMESSAGE
                2022-04-02 15:21:43.699  - debug: smartmeter.0 (7520) MATCH-RESULT SIGNON: "" -> null
                2022-04-02 15:21:43.744  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:43.744  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 2 IN CHECKMESSAGE
                2022-04-02 15:21:43.745  - debug: smartmeter.0 (7520) MATCH-RESULT SIGNON: "/" -> null
                2022-04-02 15:21:43.761  - debug: smartmeter.0 (7520) DONE SEND 1
                2022-04-02 15:21:43.776  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:43.776  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 2 IN CHECKMESSAGE
                2022-04-02 15:21:43.776  - debug: smartmeter.0 (7520) MATCH-RESULT SIGNON: "/?" -> null
                2022-04-02 15:21:43.808  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:43.809  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 2 IN CHECKMESSAGE
                2022-04-02 15:21:43.809  - debug: smartmeter.0 (7520) MATCH-RESULT SIGNON: "/?!" -> null
                2022-04-02 15:21:43.840  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:43.841  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 2 IN CHECKMESSAGE
                2022-04-02 15:21:43.841  - debug: smartmeter.0 (7520) MATCH-RESULT SIGNON: "/?!\r" -> null
                2022-04-02 15:21:43.872  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:43.873  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 2 IN CHECKMESSAGE
                2022-04-02 15:21:43.873  - debug: smartmeter.0 (7520) MATCH-RESULT SIGNON: "/?!\r\n" -> null
                2022-04-02 15:21:44.012  - debug: smartmeter.0 (7520) DONE SEND 0
                2022-04-02 15:21:44.013  - debug: smartmeter.0 (7520) SET MESSAGE TIMEOUT TIMER2: 120000
                2022-04-02 15:21:44.096  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:44.097  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 2 IN CHECKMESSAGE
                2022-04-02 15:21:44.097  - debug: smartmeter.0 (7520) MATCH-RESULT SIGNON: "/?!\r\n/" -> null
                2022-04-02 15:21:44.128  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:44.129  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 2 IN CHECKMESSAGE
                2022-04-02 15:21:44.129  - debug: smartmeter.0 (7520) MATCH-RESULT SIGNON: "/?!\r\n/L" -> null
                2022-04-02 15:21:44.176  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:44.177  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 2 IN CHECKMESSAGE
                2022-04-02 15:21:44.177  - debug: smartmeter.0 (7520) MATCH-RESULT SIGNON: "/?!\r\n/LG" -> null
                2022-04-02 15:21:44.208  - debug: smartmeter.0 (7520) NEW DATA
                
                2022-04-02 15:21:44.799  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:44.800  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 2 IN CHECKMESSAGE
                2022-04-02 15:21:44.801  - debug: smartmeter.0 (7520) MATCH-RESULT SIGNON: "/?!\r\n/LGZ5\\2ZMD4104407.B31\r" -> null
                2022-04-02 15:21:44.831  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:44.832  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 2 IN CHECKMESSAGE
                2022-04-02 15:21:44.833  - debug: smartmeter.0 (7520) MATCH-RESULT SIGNON: "/?!\r\n/LGZ5\\2ZMD4104407.B31\r\n" -> ["/LGZ5\\2ZMD4104407.B31\r\n","/LGZ5\\2ZMD4104407.B31"]
                2022-04-02 15:21:44.833  - debug: smartmeter.0 (7520) PAUSE READING SERIALPORT TO HANDLE MESSAGE
                2022-04-02 15:21:44.834  - debug: smartmeter.0 (7520) CLEAR MESSAGE TIMEOUT TIMER
                2022-04-02 15:21:44.835  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 2 IN HANDLEMESSAGE
                2022-04-02 15:21:44.836  - debug: smartmeter.0 (7520) D0 Protocol E (2) not fully supported! Let us try it :-) Please contact the developer if you have problems
                2022-04-02 15:21:44.836  - debug: smartmeter.0 (7520) LEFT AFTER HANDLE-MESSAGE 0
                2022-04-02 15:21:44.837  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 3 IN ISPROCESSCOMPLETE: false
                2022-04-02 15:21:44.838  - debug: smartmeter.0 (7520) ALL MESSAGES TO SEND: 2
                2022-04-02 15:21:45.089  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 3 IN GETNEXTMESSAGE
                2022-04-02 15:21:45.090  - debug: smartmeter.0 (7520) TO SEND 2: 050
                
                2022-04-02 15:21:45.233  - debug: smartmeter.0 (7520) DONE SEND 2
                2022-04-02 15:21:45.485  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 4 IN GETNEXTMESSAGE
                2022-04-02 15:21:45.486  - debug: smartmeter.0 (7520) BAUD CHANGEOVER TO 9600 baud
                2022-04-02 15:21:45.487  - debug: smartmeter.0 (7520) BAUD CHANGEOVER DONE
                2022-04-02 15:21:45.488  - debug: smartmeter.0 (7520) TO SEND 1: 
                2022-04-02 15:21:45.488  - debug: smartmeter.0 (7520) DONE SEND 0
                2022-04-02 15:21:45.489  - debug: smartmeter.0 (7520) RESUME READING SERIALPORT IN FINALIZE
                2022-04-02 15:21:45.489  - debug: smartmeter.0 (7520) SET MESSAGE TIMEOUT TIMER: 120000
                2022-04-02 15:21:45.490  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 4 IN ISPROCESSCOMPLETE: false
                2022-04-02 15:21:45.490  - debug: smartmeter.0 (7520) REMAINING DATA AFTER MESSAGE HANDLING: 
                2022-04-02 15:21:45.490  - debug: smartmeter.0 (7520) END FINALIZE
                2022-04-02 15:21:45.491  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:45.492  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 4 IN CHECKMESSAGE
                2022-04-02 15:21:45.492  - debug: smartmeter.0 (7520) MATCH-RESULT DATA: "\u0006" -> null
                2022-04-02 15:21:45.493  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:45.493  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 4 IN CHECKMESSAGE
                2022-04-02 15:21:45.494  - debug: smartmeter.0 (7520) MATCH-RESULT DATA: "\u00060" -> null
                2022-04-02 15:21:45.494  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:45.495  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 4 IN CHECKMESSAGE
                2022-04-02 15:21:45.495  - debug: smartmeter.0 (7520) MATCH-RESULT DATA: "\u000605" -> null
                2022-04-02 15:21:45.496  - debug: smartmeter.0 (7520) NEW DATA
                
                2022-04-02 15:21:52.275  - debug: smartmeter.0 (7520) NEW DATA
                2022-04-02 15:21:52.275  - debug: smartmeter.0 (7520) CURRENT PROCESS STEP 4 IN CHECKMESSAGE
                2022-04-02 15:21:52.279  - debug: smartmeter.0 (7520) MATCH-RESULT DATA: "\u0006050\r\n\u0000\u0004\f\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\b\u0000\u0003`\u0000`\u0000\u0000\u0000\u0010\u0000\u0000\u0002\u0000\u0002\u0000D\u0004x\u0010\u000e \f@\u0000\u0002\u0002D\u0004x \u0018@\f`\u0000  \u0000\u0002B\u0000\u0000B\u0004\u0000\u0002\u0004\u0000\u0000\u0000\u0000\u0000\b\u0000\u0010\f \f@\u0000@ \u0000\u0002B\u0000\u0010@\u0000\u0000\u0002\u0004\u0000\u0000\u0000\u0000\u0000\b\u0000 \u001c@\f`\u0000 p\u0000\u0002B\u0000\u0000B\u0000\u0000\u0002\u0002\u0000\u0000\u0000\u0000\u0000\b\u0000\u0010\f \f`\u0000\u0001@\u0002\u0000\u0002B\u0000\u0000B\u0000\u0000\u0002\u0004\u0000\u0000\u0000\u0000\u0000B\u0004x \f@\f@\u0000 n\u0000@ \b@ \b`@\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0004\u0004p \u001c@1\u0000@\u0002 \u0000$\u0002B\u0000\u0002B\u0000\u0000\u0002\u0006\u0000\u0000\u0000\u0000\u0000D\u0004p \fB\f@\u0000\u0001\u0000\u0000  \b@ \u0010@\u0000\u0001\u0002\u0000\u0000\u0000\u0000\u0000D\u0004p \u001c@\f \u0014 @\u0000@ \b`` \u0000\n\u0002\u0004\u0000\u0000\u0000\u0000\u0000\b\u0000\u0010\u000e \f@\u0000\u0001\b\u0000\u0002B\u0000\u0000B\u0000\u0000\u0002\u0002\u0000\u0000\u0000\u0000\u0000\b\u0000 \u0018@\f@\u0000\u0001\u0000\u0003\u0000\u0002B\u00000B\u0000\u0000\u0002\u0006\u0000\u0000\u0000\u0000\u0000\u0004\u0004x \f@\f@\u0000@@\u0001\u0000\u0002B\u0000 @\u0000\u0000\u0002\u0006\u0000\u0000\u0000\u0000\u0000\b\u0000 \u001c@\f`\u0000@@\u0000\u0000\u0001B\u0000\u0000@\u0000\u0000\u0002\u0004\u0000\u0000\u0000\u0000\u0000\b\u0000 \u001c@\f@\u0000b`\u0000\u0002B\u0000\u0000B\u0004\u0000\u0002\u0004\u0000\u0000\u0000\u0000\u0000\b\u0000 \u0018@\f@\u0000p`\u0001\u0000\u0003B\u0000\u0010@\u0000\u0000\u0002\u0004\u0000\u0000\u0000\u0000\u0000D\u0004p \u0018@9\u0000\u0000\u00020\u0002\u0000\u0002B\u0000\u0000B\u0000\u0000\u0002\u0002\u0000\u0000\u0000\u0000\u0000D\u0004p \f \f \u0000\u0000\"` \u0000\u0000\u0000B\u0006\u0000\b\u0000 \f$\u0018@\u0000`\u0004\u0000\u0000\u0000B\u0006\u0000\u0000@@0\u0000\u0000@\u0000\u0000\u0000 @`@\u0000\u0000\b\u0000 \f$\\@\u0001\u0001\u0002\u0002\u0000`\u0000\u0000\"\u0000\u0000\u0002B\u0000\u0010@\u0000\u0012\u0000\u0002\u0002\u0002\u0010\u0000\u0000\b\u0000 \fL\u0018@\u0000  \u0000 \f@L\u0001\u0001\u0002\u0000\u0002B\u0000\u0000B\u00002\u0002\u0004\u0002\u0002\u0010\u0000\u0000\u0004\u0004p \fh\u0018\u0000\u0000 p\u0000`\u0000\u0000\u0002\u0002\u0004\u0000\r\t\u0000\u0003\u0012\u0005$\u0012 $H\fP\u0010\u0000\b\u0000 \fl\u0018\u0000\u0000 p\u0000`\u00002\u0002\u0002\u0004\u0000\u0016B\u0000\u0002B4\u0000\u0002\u0004\u0002\u0002\u0000\u0002\u0000\b\u0000 \fh\u0018@\u0000 n\u0000`\u0000\u0002\u0002\u0002\u0006\u0000\u0006B\u0010\u0002B\u0004\u0000\u0000 00B \u0010\b\u0000 \fl\u0018\u0000\u0000 H\u0000`\u0000  \u0000\u0000\u0002B\u0000\u0002@\u0000\u0002\u0002\u0002\u0002\u0002\u0010\u0000\u0000\u0004\u0004p \fH\u0018\u0001\u0000\u0002\u0000\u0000\u0000`\u0000\u0000\u0000\u0002\u0004\u0000\u0004B\u0000\u0000@\u0000\u0002\u0002\u0004\u0002\u0002\u0000\u0000\u0000\b\u0000H\u0006\u0012\f \u0000 @\u0000`\u0000\u0000\u0000\u0002\u0002 \u0002B\u0000\u0000B\u0000\u0002\u0000 &0B \u0000\b\u0000 \fL\u0018\u0000\u0000 f\u0000`\u0000\u0002\u0000\u0002\u0002 \u0002B\u00000B\u0000\u0000\u0002\u0004\u0002\u0000\u0000\u0002\u0000D\u0004x \f$\u0018@\u0000@\u0000\u0001\u0000`\u0000\u0002\u0002\u0002\u0006\u0000\t\t\u0000\u0003\u0002\u0000R\u0003 $\u0004\fH\u0010\u0000\t\u0000 \f$\u0018@\b\u0001\u0000\u0002\u0000`\u0000\u0000\u0002\u0000\u0004\u0000\u0002B\u0000\u0000@\u0000\u0002\u0002\u0006\u0002\u0000\u0010\u0000\u0000\b\u0000 \fH\u0018\u0000\u0000 `\u0000`\u0000\u0000\u0000\u0002\u0004\u0000\u0006B\u0000\u0000B\u0000\u0000\u0002\u0004\u0002\u0002\u0000\u0000\u0000\b\u0000 \f$\\@\bA\u0000\u0000\u0000`\u0000\u0002 \u0000\u0004\u0000\u0004B\u0004\u0010@\u0000\u0002\u0002\u0002\u0002\u0002\u0000\u0000\u0000\u0004\u0004x \fh\u0018A\u00000p\u0000`\u0000\u0000\u0010\u0000\u0000\u0002B\u0000\u0000B\u0000\u0002\u0000\u0002\u0002\u0002\u0000\u0002\u0000\u0004\u0004p \f$\f@\u0000`L\u0001\u0000`\u0000\u00002\u0002\u0002\u0000\u0002B\u0000\u0000B\u0004\u0000\u0000\u0002\u0002\u0002\u0000\u0002\u0000\b\u0000H\u0006\u0018, \u0010@\u0000\u0000\u0002\u0000`\u0000\u0002\u0002\u00024g\f\u000e\b\bp \f`\f`\u0000@ \u0000\u0000\u0000\u0002\u0000`\u0000\u0002\u0002\u0002\u0016\u0004p \f0\f@\u0000` \u0000\u0000\u0000\u0002\u0000b\u0000\u0002\u0000\u0000\b\u0000\u0010,0\f \u0000 `\u0000\u0000\u0000\u0002\u0000b0\u0000\u0002\u0000\b\u0000\u0010\f0\f`\u0000 p\u0000 @@\u0001@b\u0010\u0010\u0000\u0000\b\u0000 \f`\f@\u0000 L\u0000\u0000\u0000\u0002\u0000b`2\"\u0000\u0004\u0004p \f`\f \u0010 H\u0000\u0000\u0000\u0002\u0000b\u0000\u0012\u0000\u0002F\u0004p \f0\f`\u0000 `\u0000\u0000\u0000\u0002\u0010`\u0000\u0002\u0002\u0002\u0004\u0004p \f`\f`\u0000 @\u0000@@\u0000\u0001\u0010`\u0000\u0002\u0000\u0002\u0004\u0004x \fp\f@\u0000@D\u0001\u0000\u0002\u0000\u0002\u0010`\u00000\u0002\u0000B\u0004x \f0\f@\u0000\u0001\u0000\u0002\u0000\u0000\u0000\u0002\u0000b 2\u0002\u0002D\u0004p \f`\f@\u0000`@\u0000@@\u0000\u0001\u0000bd\u0002\u0000\u0002\u0014\u0004p \f`\f@\u0000\u0001\u0000\u0000\u0000\u0000\u0002\u0000b0\u0002\u0002\u0002B\u0004x \fp\f@\u00000`\u0000  ` B\f$L \u0000\b\u0000 \fp\f@\u00000p\u0000\u0000\u0000\u0002\u0000`\u0000\u0002\u0000\u0002D\u0004x \fp\f@\u0000`L\u0001\u0000\u0000\u0000\u0002\u0000`\u0000\u00000\u0002B\u0004x \f0\f`\u0000\u0000\u0000\u0000\u0012`\u0000\u0000\u0000\u0002$g\u000e\u000e\u0010\bp \f0\f \u0000  \u0000\u0000\u0000\u0000\u0012`\u0000\u0000\u0000\u0002\u0014\u0004p \f`\f \u0000  \u0000\u0000\u0000\u0000\u0012`\u0000\"\u0000\u0000\b\u0000\u0010\f0\f`\u0000 0\u0000\u0000\u0000\u0000\u0012`\u0014\u0002\u0002\u0000B\u0004x \f0\f \u0000 `\u0000 @@`\t`\u0000\u0000 \u0000\u0004\u0004p \f`\f \u0000 N\u0000\u0000\u0000\u0000\u0002`@\u0000\u0002\u0002F\u0004p \fp\f`\u0000 (\u0000\u0000\u0000\u0000\u0002`\u0000 \u0000\u0000\b\u0000_\u0012\u0000\u0013\u0000\u0002\u0004\u0000\u0000\u0000\u00000\u0002`p\"\u0000\u0002\u0014\u0004p \f0\f`\u0000 h\u0000\u0000\u00000\u0002` \"0\u0002\u0006\u0004p \f`\f`\u0000 f\u0000\u0000\u00000\u0002`\u0000\u0000\u0002\u0002B\u0004x \f`\f`\u0000 `\u0000`@@\u0018\u0003b\u0000\u0002\u0002\u0002\u0014\u0004p \fp\f`\u0000 @\u0000\u0000\u00000\u0002b\u0000\u0000\u0002\u0002\u0004\u0004p \fp\fB\u0000 @\u0000\u0000\u000002b\u0000\u0000\u0002\u0002\u0006\u0004p \fp\f`\u00000p\u0000@\u0000\u000002b\u0000\u0000\u0000\u0000\u0014\u0004p \fp\f@\u00000`\u0000 @@\u0018\u0011`0\u00022\u0002F\u0004p \fp\f \u00000L\u0000\u0000\u00000\"`@ \u0000\u0000\u0004\u0004p \fp\f \u0000@@\u0000\u0000\u0002`\u0010\u0010\u0000\u0002$g\f\u000e\u0010\b` \f0\f \u0000  \u0000@@\u0000\u0000\u0002`0\u0010\u0000\u0002B\u0004x \f`\f@\u0000  \u0000 @@\u0000\u0001p\u0010\u0010\u0000\u0002B\u0004x \f`\f`\u0000 `\u0000\u0000\u0000\u0002\u0000\u0002`\u00002\u0002\u0002F\u0004p \f0\f \u0000 p\u0000`@\u0000\u0000\u0002`\u00002\u0002\u0002D\u0004x \f`\f@\u0000 &\u0000\u0000\u0000\u0000\u0002b\u0000\u00022\u0002\u0004\u0004x \fp\f`\u0000 L\u0000\u0000\u0000\u0000\u0002b\u00000\u0002\u0002T\u0004p \f0\fd\u0000 @\u0000 @@\u0000\u0001b\u0000\u0000\u0012\u0000\u0004\u0004p \f`\f`\u0000  \u0000\u0000\u0000\u0000\u0012`\u0000\u0000\"\u0000\u0004\u0004p \f`\f`\u0000 D\u0000\u0000\u0000\u0000\u0012`\u0000\u0000\"\u0000\b\u0000\u0010\u000e0\f \u0000  \u0000`@\u0000\u0000\u001b`\u0000\u0002\u0000\u0002D\u0004p \fp\fD\u0000 B\u0000\u0000\u0000\u0000\u0012`d2\u0002\u0000B\u0004p \fp\f \u0000 @\u0000\u0000\u0000\u0000\u0012`02\u0002\u0000\b\u0000 \f0\f`\u000000\u0000\u0000\u0000\u0000\u0012``\"0\u0002B\u0004x \f0\fd\u00000`\u0000\u0000\u0000\u0000\u0012`\u0000\u0012 \u0000\b\u0000 \fp\f@\u00000L\u0000\u0000\u0000\u0000\u0012`\u0000\u0012 \u0000\b\u0000\"\u0018`\f`\u0000\u0000\t\u0010\u0000\u0002b`\u0002\u0000\u0000Bd@`\u0000\u0000\b\u0000\"\u001c`\f@\u0000\u0001\u0001\u0002\u0000\u0012\u0010\u0000\u0002bp\u0002\u0000\u0000D\u0004x\"\u0018`\f@\u0000\u0005\u0001\u0000\u0000\u0012\u0010\u0000\u0002`\u0000\u00020\u0002\u0006\u0004p\"\u001c`\f \u0000 p\u0000\u0000\t\u001a\u0000\"` \u0010\u0000\u0000\b\u0000\u0011\u000e0\f`\u0000``\u0000\u0012\u0010\u0000\"`$\u0002\u0002\u0000\u0014\u0004p\"\\`1\u0000\u0000 l\u0000\u0012\u0010\u0000\u0012`\u0004\u0002\u0002\u0000B\u0004x\"\u001c`1\u0000\u0000 L\u0000\u0001\t\u0010\u0000\u0002bD\u0000\u0002\u0002B\u0004x\"\u001c`1\u0000\u0000 `\u0000\u0012\u0010\u0000\u0002b\u0000\"\u0000\u0002\u0004\u0004p\"\u0018`\f@\u0000\u0001\u0000\u0002\u0000\u0012\u0010\u0000\u0002b\u0000\u0002\u0002\u0000\u0004\u0004p\"\u001c`1\u0000@\u0002\u0010\u0000 \u0012\u0010\u0000\u0002b`\u0012\u0010\u0000\b\u0000\"\u0018`\f`\u0000 @\u0000$\u0004\u0004HH\u0006\u00106 \u0000\b\u0000\"\u0018`9\u0000@\u0002\u0000\u0002\u0000\u0012\u0010\u0000\u0002`\u0010\u0000\u0000\u0002\u0006\u0004x\"\u0018`1\u0000\u0000\u0002\u0000\u0000\u0000\u0012\u0010\u0000\u0002`\u0000\u00022\u0002F\u0004x\"\u001c`1\u0000\u0010\u0002\u0000\u0000 \"D@\u00010\u0000\u0002\u0012\u0000\b\u0000?\u0004\u000bL\u0006\u0010\u00000`\u0000@\"\" p\u0018\u0011@\u0002\u0002D\u0004p\"\u0018`9\u0000\u00000n\u0000\u0012\u0010\u0000\u0000`@\u0000\u0000\u0000\b\u0000\"\f0\f \u0000  H@A1 \u0000\"\u0000$G/\u000e\u0006\u001c !\u0000\"\u0018`\f`\u0000  \u0000  $@`1\u0010\u0000\"\u0000\b\u0000\u0011\f0\f`\u0000  \u0000H\u0010\u0012 &\f``X\u0001b\u0002|\"\u0018`1\u0000\u0002\u0002\u0000\u0000\u0002 \u0000 `\u0000\u0000\"\u0000\b\u0000\u0011\f0\f`\u0000 `\u0000\u0002 \u0000\u0000`\u0000\u0000\u0002\u0002\u0014\u0004p\"\u0018`\f`\u0000 L\u0000@ H@\f0@\u0002\"\u0000\b\u0000\"\f`\f@\u0000 l\u0000\u0002 \u0000\u0010`4\u0000\u0000\u0000\u0004\u0004p\"\\`9\u0000\u0002\u0002\u0000\u0000\u0002 \u0000\u0000b\u0000\u0010\u0000\u0002V\u0004x\"X`1\u0000\u0002\u0002\u0000\u0002\u0000\u0002 \u0000\u0000b@\u0010\u0010\u0000\b\u0000\"\u001c`\f@\u0000 F\u0000\u0002 \u0000\u0000b\u0000\u0000\u0002\u0000\b\u0000\u0011\f0\f`\u0000 `\u0000\u0002 \u0000\u0000b\u0000\u0000\"\u0000\u0004\u0004p\"\f`9\u0000\u0002\u0002\u0000\u0002\u0000\u0002 \u0000\u0000b\u0000\u0012\u0000\u0000B\u0004x\"\u0018`\f@\u0000 @\u0000\u0002 \u0000\u0000b`2\u0012\u0000\b\u0000\"\u0018`\f@\u000000\u0000` h@\u000010\u0002\u0000\u0002F\u0004x\"\u0018`1\u0000\u0003\u0002\u0000\u0002\u0000\u0002 \u0000\u0000`\u0000\u0002\u0010\u0000B\u0004x\"\u0018`1\u0000R\u00020\u0002\u0000\u0002 \u0000\u0000`\u0000\u0002\u0002\u0000D\u0004p\"\u001c`\f@\u00000\" \u0000b\u0000\u0002\u0002\u0000Bd@`\u0000\u0000\b\u0000\"\f`\f`\u0000  \u0000`L\u0011\u0010\u0000b\u0000\u0002\u0002\u0000F\u0004p\"\u001c`1\u0000\u0003\u0002\u0002\u00000\" \u0000b\u0000\u0000\u0002\u0000\u0014\u0004p\"\f`\f \u0000 p\u00000\" \u0000`\u0010\u0000\u0012\u0000\u0004\u0004x\"\u001c`\f`\u0000 p\u00000\" \u0000`\u0000\u0002\"\u0000\b\u0000\u0011\f0\f@\u0000 L\u0000@L$``8\b\u0000\u0002\u0000\b\u0000\u0011\f0\f`\u0000 H\u00000\"\u0000\u0000`\u0000\u0002\u0010\u0000\b\u0000\"\u001c`1\u0000\u0002\u0002\u0000\u00000\"\u0000\u0000`\u0000\u0012\u0000\u0002D\u0004p\"\u0018`\f@\u0000 `\u00000\"\u0000\u0000`\u0000\u00022\u0002\u0004\u0004p\"\u0018`1\u0000\u0002\u0002\u0010\u0000\u00000\"\u0000\u0000`\u0000\u00022\u0002\u0006\u0004x\"\\`9\u0000B\u0002\u0000\u0002\u00000\"\u0000\u0000`\u0000\u0002\u0012\u0000\b\u0000\"\f`\f@\u0000 @\u0000 L$B`0\u00008\u0012\u0000\b\u0000\"\u001c`9\u0000\u0002\u0002\u0000\u0000 L$``0\u00008\u0012\u0000\u0004\u0004p\"\u001c`\f \u00000`\u0000\u0000\u0018\"\u0000\u0000`\u0000 \u0000\u0002\u0002\u0004x\"\u001c`1\u0000\u0002\u0002\u0000\u0002\u00040\"\u0000\u0000b\u0004\u0012\u0000\u0000B\u0004x\"\u001c`\u0019\u0000\u0000\u00020\u0002\u00000\"\u0000\u0000b\u0000\u0012\u0000\u0000B\u0004x \f@\f`\u0000$\t\b\u0006\u00100 \u0000B\u0006\u0000\b\u0000 \fL\u0018@\u0000\u0000b\u0000\u0002\u0010\u0000B\u0006\u0000\u0000\u0002B\u0000\u0000B\u0000\u0000\u0002\u0004\u0000\u0002\u0010\u0000\u0000\u0004\u0004p \fH\u0018\u0000\u0000  \u0000b\u00040\u0002\u0002\u0004\u0000\u0004B\u0000\u0010@ \u0000\u0000 ``@\u0001\u0000\b\u0000 \fl\u0018\u0000\u0000\u0003\u0002\u0000 \f@ $\u0000\u0000\u0002B\u0000\u0000B\u0000\u0002\u0002\u0002\u0002\u0000\u0000\u0002\u0000\b\u0000 \fh\u0018\u0001\u0000\u0002\u0000\u0000 b\u0000\u0000\u0002\u0002\u0002\u0000\u0002B\u0000\u0000B\u0000\u0000\u0000  `@\u0000\u0000\b\u0000 \f$\f@\u0000@`\u0001\u0000b\u00000\u0002\u0002\u0002\u0000\u0002B\u0000\u0002B \u0002\u0002\u0014\u0002\u0002\u0000\u0002\u0000\b\u0000 \f$\u001c@\u0000@\u0018\u0001\u0000b\u00000\u0012\u0000\u0002\u0000\u0002B\u0000\u0002B\u0010\u0002\u0000\u00020\u0002\u0000\u0002\u0000\b\u0000 \fL\u0018\u0000\u0000 L\u0000\u00001\u000002\u0002\u0004\u0000\u0006B\u0004\u0002@\u0000\u0002\u0002\u0002\u0000\u0000\u0000\u0000\u0000\b\u0000H\u0006\u0012\f P `\u0000$\u0003\b\u0012\u0012\u0000\u0000  \b`` \u0000\u0012\u0000 H`\u0000\u0000\u0002B\u0004x \fL\u0018\u0000\u0000 `\u0000@\f@HA\u0001\u0002\u0000\u0002B\u0000\u0000B\u0000\"\u0000 h`@\u0001\u0000\b\u0000 \f$\f`\u0000@D\u0000b\u0000\u0000\u0000\u0002\u0006\u0000\u0002B\u00040B\u0000\u0000\u0002\u0004\u0000\u0002\u0010\u0000\u0000F\u0004x \fL\u0018\u0000\u0000\u0002\u0000\u0002$b\u0000 \u0000\u0000\u0000  \b@H0\u0000\u0002\u0002\u0004\u0000\u0000\u0000\u0002\u0000\b\u0000 \f$\u0018@\u0000@\u0000\u0001\u0000b\u00000\u0002\u0002\u0002\u0000\u0002B\u0000\u0000@\u0000\u0012\u0000\u0004\u0000\u0000\u0000\u0000\u0000B\u0004x \fH\u0018\u0000\u0000  \u0010@1\u0000\u0000\u0000\u0000\u0000$H\u0002\u0010\u0010\b @\u0000\u0001\u0000\u0000\u0010\u0000\u0000\b\u0000 \fH\u0018\u0000\u00000`\u0000b\u0000\u0000\u0000\u0002\u0006\u0000\u0006B\u0000\u0010@\u0000\u0002\u0000 ``\b\u0000@B\u0004x \fL\u0018\u0000\u000000\u0000b\u0004\u0000\u0002\u0000\u0000\u0002B\u0000\u0000B\u0004\u0002\u0002\u0004\u0000\u0000\u0010\u0000\u0000\b\u0000 \fH\u0018\u0000\u00000L\u0000$C\b\u0018\u0010\u0000\u0000\u0002B\u0000\u0000B \u0002\u0000\u0002\u0002\u0000\u0010\u0000\u0000\b\u0000 \fp\f@\u0000\u0002\u0007$\u0012\u0006\u0000\u0002\u0010\u0000\u0012g\u0006\u000e\b\b` \f0\f@\u0000@ \u0000\u0002\u0006\u0004LL\u0006\u0010  \u0000\b\u0000\u0010,0\f@\u0000\u0001\u0001\u0000\u0002\u0012\u0004\u0012&\u0000\"0\u0002D\u0004p \f0\f@\u0000@`\u0000\u0002\u0004\u0006\u00026\u0000\u0002\u0012\u0006 B\u0000 \f0\f@\u0000@`!\u0010\u0000\u00022\"`\u0000\u0002\u0002\u0002D\u0004p \f0\f \u0000 L\u0000H@\u0019\t\u0000b\u0000\u0002\u0002\u0000\b\u0000 \f`\f`\u0000\u0001\u0010@ \u0000\u00020\u0002b$\u0000\u0000\u0002F\u0004p \f0\f \u0000 @\u0000\u0000@\u00022\u0012`\u0000\u0000\u0002\u0002D\u0004p \f`\f`\u0000 `\u00000\u0002 \u0000`\u0000\u0000\u0002\u0000\b\u0000\u0010\f0\f@\u0000 d\u0000\b\u0010\u0018 0\f`@\u0001\u0001B\u0002x \fp\f@\u0000 `\u0000\u0000\u0002\u0000\"`\u0000\u0002\u0002\u0002\u0014\u0004p \fp\f@\u0000\u0001\u0000\u0002\u0000\u0000\u0012\u0000\u0002b\u0004\u0002\u0000\u0002\u0006\u0004p \fp\f \u0000 `\u0000\u0000\u00000\u0002b@\u0010\u0010\u0000\b\u0000\u0010\u000e0\f \u00000p\u0000\u0002\u0002\u0002\u0002b \u0000\u0000\u0000\b\u0000 \fp\f@\u00000`\u0000@& @H0\u0000\u00032\u0002\u0006\u0004x \f`\f`\u0000A\u0018\u0003\u0000\u0002\u0010 \u0000b\u0000 0\u0002D\u0004p \fp\f@\u0000\u0002\u0002\u00022b \u0000\u0002\u00024g\u000e\u000eX\b` \f0\f@\u0000  \u0000H\u0019\u0011 0\f@H\u0000\u0001B\u0002x \f0\f@\u0000  \u0000\u0002\u0002\u00022b\u0000\u0012\u0000\u0000\u0004\u0004p \f`\fB\u0000 b\u0000\u0000\u0001\u0000\u0002\u0000b\u0000\u0002\u0002\u0002\u0006\u0004p \f`\f@\u0000 p\u0000\u0000\u0000\"\u0000`p\"\u0000\u0000\b\u0000\u0010\f0\f@\u0000 n\u0000\u0000\u0002\u0012\u0000`@\u0000\u0002\u0002F\u0004p \f`\f \u0000 L\u00000\u0002\u0000\u0002b\u00002\u0002\u0002\u0004\u0004p \f0\f`\u0000 @\u0000 ``\" \f@  \u0000\b\u0000 \f \fB\u0000 @\u0000 @& p\u0018@@\u0000\u0002\u0004\u0004p \fp\f@\u0000 \"\u0000 D@\u0000\u0010`\u0000\u00022\u0002\u0004\u0004p \fp\f`\u0000 `\u0000@@\"p@\f`@&\u0000\b\u0000 \f`\fb\u0000 @\u0000\u0000\u0002\"\u0010`\u0004\u0000\u0002\u0000D\u0004x \f`\f@\u0000 `\u0000\u0000\u0000 \u0000`t\u0002\u0000\u0002\u0006\u0004x \f0\fb\u00000`\u0000\u0000\u0002\u0002\u0000`\u0000\u0002\u0002\u0002F\u0004x \f`\f@\u00000p\u0000`L\u0019\t\u0010b`0\u0002\u0002\u0004\u0004p \f`\f \u00000n\u0000  \u0000\u0002`\u00002\u0002\u0000\b\u0000 \fp\f@\u0000 0\"\u0000b\u0000\u0002\u0000\u00024g\f\u000e\u0010\b` \fp\f`\u0000  \u0000 0\u0002\u0002`\u0000\u0000\u0002\u0000\b\u0000 \f`\f@\u0000  \u0000 L@\u0001\u0019b\u0000\u0012 \u0000\b\u0000 \fp\f \u0000 `\u0000\u0000 0\u0002b\u0000\u0012\u0000\u0000B\u0004x \fp\f`\u0000 `\u0000\u0000\u0000\u0002 `\u0000\u0002\u0002\u0000\b\u0000 \f`\f@\u0000 N\u0000\u0000\"\u0000\u0010`\u0000\u0000\u0000\u0002\u0014\u0004p \f0\f@\u0000 H\u0000 @ ` \f`0 \u0000\b\u0000 \fp\f \u0000 @\u0000\u0010\u0000\u0012\u0000b\u00000\u0012\u0000\b\u0000 \fp\f@\u0000 `\u0000\u0000\u0002\u0002\u0000`\u0000\u00002\u0002\u0004\u0004p \f0\f@\u0000 D\u0000\u0000\u0000\u00032\u0002b\u0000\u0000 \u0000\b\u0000 \f`\f@\u0000 @\u0000\u0000\"\u0000\u0000b \u0000\u0000\u0002\u0006\u0004x \fp\f@\u0000 @\u0000\u0000\u0002\u0002\u0002`\u0004\"\u0000\u0002\u0004\u0004x \f0\fd\u0000 @\u0000\u0000\u0000\u0000\u0002b\u0000\u0010\u0000\u0002\u0004\u0004p \f`\f \u00000p\u0000\u0002\u0000\u0000\u0002b\u0010\u0000\u0002\u0002\u0004\u0004x \f0\f@\u00000p\u0000\u0002\u0010\u0000\u0012``\u0002 \u0000\b\u0000\u000f\t\u0000\u0013\u0000\u0002\u00020\u0002\u0000\u00022\u00020b\u0000\u0002\u0002\u0002F\u0004x \f`\f@\u0000\u0002\u0002\u0000\u0012`\u0000\u0002\u0002\u0002&G@`\u0000\u0000\b\u0000 \f`\f \u0000  \u0000\u0002\u0002\u0000\u0002`\u0000\u0000 \u0000\b\u0000 \fp\f`\u0000@ \u0000 \"H 0\u0018`\t\b\u0000\b\u0000\u0010\f0\f \u0000 p\u0000\u0002\u0002\u0000\u0002`\u000022\u0002F\u0004x \fp\f`\u0000 `\u0000\u0002\u0012\u00100b`\u0012\u0000\u0000\b\u0000 \f`\f@\u0000 l\u0000\u00022\u00022b\u0000\u0000\u0002\u0000\b\u0000 \f`\f`\u0000`H\u0000\u0002\u0002\u0002 ``\u0000\u0000\u0000\u0004\u0004p \f`\f@\u0000\u0001\u0000\u0000\u0002\u0000\u0000\u0000b\u0000\u0002\u0000\u0000B\u0006x \f`\f@\u0000 @\u0000\u0004\u000e\fP\u0010\f 0f\u0000!\u0001| \fp\f`\u0000@D\u0000\u0004\f\u0004LH\u0006\u0010#\"\u0002\b\u0000\u0010\f0\f \u0010 @\u0000\u0004L\t\u001c\u0010\u000e  \"\u0012\b\u0000\u0010\f0\f \u0000 `\u0000\u0004l\b\f\u0018\u00061$D\u0000\u0010\u0000\u0010\f0\f@\u0000  @D\u0018\u0001\u00020b\u0000\u0000\u0002\u0002D\u0004x \f`\f@\u0000``\u0000\u0004\u0002'$\u0012\u0000\u0002\u00126 b\u0000 \fp\f@\u0000A@\u0002\u0010 \u0000\u0002\u0012`\u0000\u0000 \u0000\b\u0000\u001f\u0012\u0000b\u0004\u00000L\u0000d@P\u0018\u0012` \u0000 \u0000D\u0004p \fp\f \u0000\u0002\u0002\u0002 `\u0000\u0000\u0000\u0000Bd@`@\u0000\b\u0000 \f`\f@\u0000  \u0000 00\"`\u0018I\u0000B\u0002\u0006\u0004p \fp\f`\u0000  \u0000\u0002\u0002\u0002\u0000`\u0000 \u0000\u0002D\u0004p \fp\f`\u0000 p\u0000\u0002\u0002\u0002\u0002b0\u0000\u0002\u0002\u0006\u0004x \fp\f@\u0000 p\u000022\u0002\u0002b\u0000\u0000 \u0000\u0004\u0004p \f0\f@\u0000 L\u0000 &\"@H0\u0000\u0013\"\u0000\b\u0000 \f`\f \u0000 l\u0000`$pH@0\u00000\"\u0000\b\u0000\u001f\u0012\u0000\u0013\u0000\u0002\u0002\u0000\u0000\"\u0000\u0000\u0002b 0\u0002\u0002B\u0004p \f`\f \u0000 `\u0000$\tH\u0010\u0010\f& 0\u0000\b\u0000 \fp\f`\u0000 d\u0000\u0000\u00012\u0012\u0000b\u0004\u0000 \u0000\b\u0000\u0010\f0\f@\u0000 `\u0000\u0002\u0010\u0000\"`\u0000\"\u0010\u0000\b\u0000\u0010\u000e0\fB\u0000  \u0000d 0@&\f `\"\u0000\b\u0000\u0010\u000e0\f \u0000  \u0000   `@0\u0000B\u0000\u0000\u0004\u0004p \f0\f@\u00000b\u0000   &&\f@ &\u0000\b\u0000 \f`\f@\u00000`\u0000 \"HH\u00001\u0000\u0002\u0000\u0000B\u0004x \f`\f@\u00000L\u0000@\"` &\fp@0\u0000\b\u0000 \fp\f \u0000\u0002\u0000\u00022b\u0000\u0002\u0002\u00024G\u000f\u000e\u0006\u001c !\u0000 \f`\f@\u0000  \u0000\u0002\u00002\u0002`\u0000\u0000\u0002\u0002D\u0004p \f0\f \u0000  \u0000\u0002\u00020\u0002` \"\u0000\u0000\u0016\u0004p \f0\f \u0000 `\u0000H\u0018\u00180$\u0018@\u0010\u0000\u0002B\u0004x \fp\f@\u0000 `\u0000  $@ \f\u000e& \u0000\b\u0000 \fp\f`\u0000 L\u0000   \"@\f@ `\u00001\u0001| \f`\f`\u0000 l\u0000\u0002\u0002\u0012\u0000b\u0000\u0002\u0012\u0000\b\u0000\u001f\u0012\u0000b\u0000\u0002\u0004\u0000\u0000\u0004\u0002\u0002\u0000\u0002b0\u0012\u0000\u0002\u0014\u0004p \f`\fD\u0000 h\u0000\u0012\u0000\u0002\u0000b\u0000\"\u0000\u0002F\u0004p \f`\f`\u0000 \"\u0000\u0012\u0000\u0000\u0002`\u0000\u0010 \u0000B\u0006x \f0\f@\u0000 `\u0000\u0012\u00100\u0002b\u0000\u0002\u0002\u0000\b\u0000 \f0\f`\u0000  \u0000\u0012\u00002\u0012`@\u0002\u0002\u0000\u0004\u0004p \f0\f \u0000 @\u0000\u0000\u0001\u0003\u00000b\u0000\u0002\u0010\u0000\b\u0000 \fp\f`\u00000`\u0000@\u00019\u0002\u0002`\u0000\u0000\u0002\u0002\u0006\u0004x \fp\f@\u00000p\u0000\u0002\u0002\u0000\u0002b`\u0002 \u0000\b\u0000\u001f\u0012\u0000\r\u0000\u0013\u0010\u0007\u0012\u0001$H\u0004H\b\u0006\u0010$&\u0000\b\u0000 \f`0\u0000\u0003\u0000\u0002\u0000\u0000\u0002\u0002\u0000\u0000\u0002D\u0004\u0000@\u0000`\u0000\u0002\u0000\u0002B\u0000\u0000B\u0000\u0000\u0002\u0014\u0004x \u0018@\f@\u0000\b\b\u0000\u0002\u0004\u0004p \u001c@\f`\u0000\u0000\u0002& B\u0000 \u001c@1\u0000\u0002\u0000\u0002\u0000\u0000 \u0000\u0000\b\u0000 \u0018@1\u0000\u0002 \u0000\u0000\u0000\b\u0000\u0002\f \f`\u0000\u0012@\u0004 @\u0000\u0002\u0002\u00040\u0002\u0000\u0000\u0002\u0004\u0004x\u0002\fL\f \u0000\u0000\u0000\u0000\u0000\u0000\u0010\u0000\u0000\b\u0000\u0002\fl\f@\u0000@@\u0000\u0000\u0000\u0000\u00100\u0002\u0016\u0004p\u0002\fn\fD\u0000 `@\u0000\u0000\u0000\u0000\u0002\u0002\u0006\u0004p\u0002\fL\fd\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0002\u0002D\u0004x\"`\f&\u0000\u0002\u0002b\u0000\u0002d\u0000\b\u0000 `\fL\u0000@  \fJ\u0000\u0011\u0000B\u0002x& \fL\u0000\u0002\u0002b \u0000\u0004\u0000\b\u0000\"@\ff\u0000\u0010`\u0000\u0002\u0002\u0006\u0000D\u0004x @\fl\u0000\u0010`\u0000\u0012\u0000\u0000\b\u0000& \fL\u0000@D0\u0000\u0002\u0002\u0006\u0000\b\u00000`\fN\u0000@@8\u0000 \u0000\u0000\b\u0000  \fN\u0000\u0002`\u0004\u0000\u0000\u0000p\u0000\b\u00000 \f&\f@\u0000\u0000\u0000 \u0000\u0000\u0018\u0000\b\u00000 \fL\f \u0000\u0000   \u0000\u0000\u0018\u0000\b\u00000 \fn\f@\u0000\u0000   \u0000\u0000\u0018\u0000\b\u00000 \fL\f \u0000\u0000 0`\u0000\u0000@\f\u0000\b\u00000 \fn\f`\u0000\"@ \u0000\u0000\u0018\u0000\b\u00000 \fl\f$\u0000\u0000\u0000&0\u0000\u0000@\f\u0000\b\u0000\u0000B\u0005\u0001\u0010" -> null
                2022-04-02 15:22:54.705  - debug: smartmeter.0 (7520) Message received = {"command":"listUart","message":null,"from":"system.adapter.admin.0","callback":{"message":null,"id":26,"ack":false,"time":1648905774703},"_id":45542497}
                2022-04-02 15:22:54.839  - info: smartmeter.0 (7520) List of port: [{"path":"/dev/ttyUSB0","manufacturer":"FTDI","serialNumber":"FTBYZZT3","pnpId":"usb-FTDI_USB_Serial_Converter_FTBYZZT3-if00-port0","vendorId":"0403","productId":"6001"},{"path":"/dev/ttyS0"},{"path":"/dev/ttyS1"},{"path":"/dev/ttyS2"},{"path":"/dev/ttyS3"}]
                2022-04-02 15:23:45.490  - debug: smartmeter.0 (7520) MESSAGE TIMEOUT TRIGGERED
                2022-04-02 15:23:45.492  - debug: smartmeter.0 (7520) Error: No or too long answer from Serial Device after last request.
                2022-04-02 15:23:45.493  - warn: smartmeter.0 (7520) No or too long answer from Serial Device after last request.
                2022-04-02 15:23:45.494  - debug: smartmeter.0 (7520) Error: No or too long answer from Serial Device after last request.
                2022-04-02 15:23:45.494  - debug: smartmeter.0 (7520) Transport Reset!! Restart = true
                2022-04-02 15:23:45.495  - debug: smartmeter.0 (7520) STOP
                2022-04-02 15:23:45.495  - debug: smartmeter.0 (7520) CLEAR MESSAGE TIMEOUT TIMER
                2022-04-02 15:23:45.499  - debug: smartmeter.0 (7520) SERIALPORT CLOSE
                2022-04-02 15:23:45.499  - debug: smartmeter.0 (7520) SERIALPORT REMOVE LISTENERS
                2022-04-02 15:23:45.501  - debug: smartmeter.0 (7520) CURRENT SIGNON MESSAGE COUNTER 1 OF 1
                2022-04-02 15:23:45.502  - debug: smartmeter.0 (7520) DELETE rest of data (0) because new Message start with a new Request Message
                2022-04-02 15:23:45.502  - debug: smartmeter.0 (7520) SCHEDULE NEXT RUN IN 300000s
                
                
                HomoranH Nicht stören
                HomoranH Nicht stören
                Homoran
                Global Moderator Administrators
                schrieb am zuletzt editiert von Homoran
                #33

                @michael-uray sagte in Smartmeter mit Landis+Gyr E650:

                "Protocol mode D (data transmission at 2 400 Bd)"
                Eventuell ist das hier der Auslöser?

                Wo hast du die Info über mode D gefunden?

                in deinem Log stand:
                @michael-uray sagte in Smartmeter mit Landis+Gyr E650:

                D0 Protocol E (2) not fully supported! Let us try it :-) Please contact the developer if you have problems

                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                apollon77A 1 Antwort Letzte Antwort
                0
                • apollon77A Online
                  apollon77A Online
                  apollon77
                  schrieb am zuletzt editiert von
                  #34

                  Also ich sehe im log das der Adapter die Logon Nachricht korrekt empfängt und auch parst das es 9600 Baud sind und dem Zähler mit "050" dann das Kommando zum Baudrate-CHangeover sendet ... und dann "hört" er auf 9600 baud ... ALso wenn Es mit nem Baudrate override tut schau nochmal nach dem Sitz des Kopfes bzw das die Senderichtung korrekt funktioniert

                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                  1 Antwort Letzte Antwort
                  0
                  • HomoranH Homoran

                    @michael-uray sagte in Smartmeter mit Landis+Gyr E650:

                    "Protocol mode D (data transmission at 2 400 Bd)"
                    Eventuell ist das hier der Auslöser?

                    Wo hast du die Info über mode D gefunden?

                    in deinem Log stand:
                    @michael-uray sagte in Smartmeter mit Landis+Gyr E650:

                    D0 Protocol E (2) not fully supported! Let us try it :-) Please contact the developer if you have problems

                    apollon77A Online
                    apollon77A Online
                    apollon77
                    schrieb am zuletzt editiert von
                    #35

                    @homoran sagte in Smartmeter mit Landis+Gyr E650:

                    D0 Protocol E (2) not fully supported! Let us try it Please contact the developer if you have problems

                    Ja Protokoll E heisst quasi "die Daten könnten anders aussehen als normalerweise) ... hat aber an sich mit dem Baudrates und so nichts zu tun

                    Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                    • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                    • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                    1 Antwort Letzte Antwort
                    0
                    • Michael UrayM Offline
                      Michael UrayM Offline
                      Michael Uray
                      schrieb am zuletzt editiert von Michael Uray
                      #36

                      Ich hatte damals auch noch ein Script für mich geschrieben, welches diverse Werte ausrechnet die in den ausgelesenen Daten nicht vorhanden sind. Bzw. bildet es auch die Werte in leichter verständlichen Objektnamen ab, denn die OBIS Codes sind ja nicht besonders gut zu merken.

                      Vielleicht kann es ja jemand brauchen.

                      Edit 1:
                      DrwPower wird aktuell noch nicht berechnet und DlvPower müsste nur bei negativen Werten übernommen werden.

                      const CtFactor = 200    // factor for current transformers
                      const VtFactor = 1      // factor for voltage transformers
                      const path = '0_userdata.0.EMTR1'
                      
                      
                      // create required objects on startup
                      createState(path + '.info.MeterOwnerNumber')
                      createState(path + '.info.Firmware')
                      createState(path + '.info.Error')
                      
                      createState(path + '.Voltage', {type: "number", unit: 'V'})
                      createState(path + '.VoltageL1', {type: "number", unit: 'V'})
                      createState(path + '.VoltageL2', {type: "number", unit: 'V'})
                      createState(path + '.VoltageL3', {type: "number", unit: 'V'})
                      
                      createState(path + '.Current', {type: "number", unit: 'A'})
                      createState(path + '.CurrentL1', {type: "number", unit: 'A'})
                      createState(path + '.CurrentL2', {type: "number", unit: 'A'})
                      createState(path + '.CurrentL3', {type: "number", unit: 'A'})
                      
                      createState(path + '.Frequency', {type: "number", unit: 'Hz'})
                      createState(path + '.cosPhi', {type: "number"})
                      createState(path + '.sinPhi', {type: "number"})
                      
                      // DLV = delivery to grid
                      createState(path + '.DLV1.Power', {type: "number", unit: 'kW'})
                      createState(path + '.DLV1.Energy', {type: "number", unit: 'kWh'})
                      createState(path + '.DLV1.ReactiveEnergy', {type: "number", unit: 'kVarh'})
                      createState(path + '.DLV1.ReactivePower', {type: "number", unit: 'kVar'})
                      
                      // DRW = draw from grid
                      createState(path + '.DRW1.Power', {type: "number", unit: 'kW'})
                      createState(path + '.DRW1.Energy', {type: "number", unit: 'kWh'})
                      createState(path + '.DRW1.ReactiveEnergy', {type: "number", unit: 'kVarh'})
                      createState(path + '.DRW1.ReactivePower', {type: "number", unit: 'kVar'})
                      
                      var MeterOwnerNumber
                      var Firmware
                      var Error 
                      
                      var CurrentTime
                      var CurrentDate
                      var Frequency
                      
                      var CurrentL1 // = 3.43 A
                      var CurrentL2 // = 3.35 A
                      var CurrentL3 // = 3.36 A
                      var CurrentN  // = 0.04 A
                      var Current // = calulated
                      
                      var VoltageL1 // = 241.1 V
                      var VoltageL2 // = 241.1 V
                      var VoltageL3 // = 241.1 V
                      var Voltage // = calulated
                      
                      var Angle_U_L1_to_U_L1 // = 0*Deg
                      var Angle_U_L2_to_U_L1 // = 120*Deg
                      var Angle_U_L3_to_U_L1 // = 240*Deg
                      var Angle_I_L1_to_U_L1 // = 200*Deg
                      var Angle_I_L2_to_U_L1 // = 321*Deg
                      var Angle_I_L2_to_U_L2 // = calulated
                      var Angle_I_L3_to_U_L1 // = 80*Deg
                      var Angle_I_L3_to_U_L3 // = calulated
                      var Angle
                      var CosPhi // = calulated
                      var SinPhi // = calulated
                      
                      var DlvEnergy = 0.0
                      var DlvReactiveEnergy = 0.0
                      var DlvPower = 0.0
                      var DlvReactivePower = 0.0
                      
                      var DrwEnergy = 0.0
                      var DrwReactiveEnergy = 0.0
                      var DrwPower = 0.0
                      var DrwReactivePower = 0.0
                      
                      on({ id: 'smartmeter.0.1-0:2_8_0.value', change: 'any' }, function (data) {
                          // wait 1000 ms when this datapoint changed to make sure all datapoints got updated
                          setTimeout(() => {
                      
                              MeterOwnerNumber = getState('smartmeter.0.1-0:0_0_0.value').val;
                              Firmware = getState('smartmeter.0.1-0:0_2_0.value').val;
                              Error = getState('smartmeter.0.1-0:97_97.value').val;
                      
                              DrwEnergy = getState('smartmeter.0.1-0:1_8_0.value').val;
                              DrwReactiveEnergy = getState('smartmeter.0.1-0:3_8_0.value').val;
                      
                              DlvEnergy = getState('smartmeter.0.1-0:2_8_0.value').val;
                              DlvReactiveEnergy = getState('smartmeter.0.1-0:4_8_0.value').val;
                      
                              CurrentL1 = getState('smartmeter.0.1-0:31_7.value').val * CtFactor;
                              CurrentL2 = getState('smartmeter.0.1-0:51_7.value').val * CtFactor;
                              CurrentL3 = getState('smartmeter.0.1-0:71_7.value').val * CtFactor;
                              CurrentN = getState('smartmeter.0.1-0:91_7.value').val * CtFactor;
                      
                              VoltageL1 = getState('smartmeter.0.1-0:32_7.value').val * VtFactor;
                              VoltageL2 = getState('smartmeter.0.1-0:52_7.value').val * VtFactor;
                              VoltageL3 = getState('smartmeter.0.1-0:72_7.value').val * VtFactor;
                      
                              Frequency = getState('smartmeter.0.1-0:14_7.value').val * VtFactor;
                      
                              Angle_U_L1_to_U_L1 = getState('smartmeter.0.1-0:81_7_0.value').val;
                              Angle_U_L2_to_U_L1 = getState('smartmeter.0.1-0:81_7_1.value').val;
                              Angle_U_L3_to_U_L1 = getState('smartmeter.0.1-0:81_7_2.value').val;
                              Angle_I_L1_to_U_L1 = getState('smartmeter.0.1-0:81_7_4.value').val;
                              Angle_I_L2_to_U_L1 = getState('smartmeter.0.1-0:81_7_5.value').val;
                              Angle_I_L3_to_U_L1 = getState('smartmeter.0.1-0:81_7_6.value').val;
                      
                              Current = (CurrentL1 + CurrentL2 + CurrentL3) / 3;
                              Voltage = ((VoltageL1 + VoltageL2 + VoltageL3) / 3) * Math.sqrt(3);
                      
                              Angle_I_L2_to_U_L2 = Angle_I_L2_to_U_L1 - 120;
                              Angle_I_L3_to_U_L3 = Angle_I_L3_to_U_L1 + 120;
                              Angle = (((Angle_I_L1_to_U_L1 + Angle_I_L2_to_U_L2 + Angle_I_L3_to_U_L3) / 3) - 180);
                      
                              CosPhi = Math.cos(Angle * (Math.PI / 180));
                              SinPhi = Math.sin(Angle * (Math.PI / 180));
                      
                              DlvPower = Voltage * Current * CosPhi * Math.sqrt(3) / 1000;
                              DlvReactivePower = Voltage * Current * SinPhi * Math.sqrt(3) / 1000;
                      
                              setState(path + '.info.MeterOwnerNumber', MeterOwnerNumber)
                              setState(path + '.info.Firmware', Firmware)
                              setState(path + '.info.Error', Error)
                      
                              setState(path + '.Current', Math.round(Current*10)/10);
                              setState(path + '.CurrentL1', CurrentL1);
                              setState(path + '.CurrentL2', CurrentL2);
                              setState(path + '.CurrentL3', CurrentL3);
                      
                              setState(path + '.Voltage', Math.round(Voltage*100)/100);
                              setState(path + '.VoltageL1', VoltageL1);
                              setState(path + '.VoltageL2', VoltageL2);
                              setState(path + '.VoltageL3', VoltageL3);
                      
                              setState(path + '.Frequency', Frequency);
                              setState(path + '.cosPhi', CosPhi);
                              setState(path + '.sinPhi', SinPhi);
                      
                              setState(path + '.DRW1.Energy', DrwEnergy);
                              setState(path + '.DRW1.Power', Math.round(DrwPower*10)/10);
                              setState(path + '.DRW1.ReactiveEnergy', DrwReactiveEnergy);
                              setState(path + '.DRW1.ReactivePower', Math.round(DrwReactivePower*10)/10);
                      
                              setState(path + '.DLV1.Energy', DlvEnergy);
                              setState(path + '.DLV1.Power', Math.round (DlvPower * 10)/10);
                              setState(path + '.DLV1.ReactiveEnergy', DlvReactiveEnergy);
                              setState(path + '.DLV1.ReactivePower', Math.round(DlvReactivePower*10)/10);
                      
                          }, 1000);
                      });
                      

                      Das sieht dann im Ergebnis so aus:
                      2022-12-11_11-27-40_objects_-stocking–_Mozilla_Firefox.png

                      Das hier waren meine finalen Einstellungen mit welchen es dann schlussendlich funktioniert hat.
                      2022-12-11_11-45-37_instances_-stocking–_Mozilla_Firefox.png

                      robert.keR 1 Antwort Letzte Antwort
                      2
                      • Michael UrayM Michael Uray

                        Ich hatte damals auch noch ein Script für mich geschrieben, welches diverse Werte ausrechnet die in den ausgelesenen Daten nicht vorhanden sind. Bzw. bildet es auch die Werte in leichter verständlichen Objektnamen ab, denn die OBIS Codes sind ja nicht besonders gut zu merken.

                        Vielleicht kann es ja jemand brauchen.

                        Edit 1:
                        DrwPower wird aktuell noch nicht berechnet und DlvPower müsste nur bei negativen Werten übernommen werden.

                        const CtFactor = 200    // factor for current transformers
                        const VtFactor = 1      // factor for voltage transformers
                        const path = '0_userdata.0.EMTR1'
                        
                        
                        // create required objects on startup
                        createState(path + '.info.MeterOwnerNumber')
                        createState(path + '.info.Firmware')
                        createState(path + '.info.Error')
                        
                        createState(path + '.Voltage', {type: "number", unit: 'V'})
                        createState(path + '.VoltageL1', {type: "number", unit: 'V'})
                        createState(path + '.VoltageL2', {type: "number", unit: 'V'})
                        createState(path + '.VoltageL3', {type: "number", unit: 'V'})
                        
                        createState(path + '.Current', {type: "number", unit: 'A'})
                        createState(path + '.CurrentL1', {type: "number", unit: 'A'})
                        createState(path + '.CurrentL2', {type: "number", unit: 'A'})
                        createState(path + '.CurrentL3', {type: "number", unit: 'A'})
                        
                        createState(path + '.Frequency', {type: "number", unit: 'Hz'})
                        createState(path + '.cosPhi', {type: "number"})
                        createState(path + '.sinPhi', {type: "number"})
                        
                        // DLV = delivery to grid
                        createState(path + '.DLV1.Power', {type: "number", unit: 'kW'})
                        createState(path + '.DLV1.Energy', {type: "number", unit: 'kWh'})
                        createState(path + '.DLV1.ReactiveEnergy', {type: "number", unit: 'kVarh'})
                        createState(path + '.DLV1.ReactivePower', {type: "number", unit: 'kVar'})
                        
                        // DRW = draw from grid
                        createState(path + '.DRW1.Power', {type: "number", unit: 'kW'})
                        createState(path + '.DRW1.Energy', {type: "number", unit: 'kWh'})
                        createState(path + '.DRW1.ReactiveEnergy', {type: "number", unit: 'kVarh'})
                        createState(path + '.DRW1.ReactivePower', {type: "number", unit: 'kVar'})
                        
                        var MeterOwnerNumber
                        var Firmware
                        var Error 
                        
                        var CurrentTime
                        var CurrentDate
                        var Frequency
                        
                        var CurrentL1 // = 3.43 A
                        var CurrentL2 // = 3.35 A
                        var CurrentL3 // = 3.36 A
                        var CurrentN  // = 0.04 A
                        var Current // = calulated
                        
                        var VoltageL1 // = 241.1 V
                        var VoltageL2 // = 241.1 V
                        var VoltageL3 // = 241.1 V
                        var Voltage // = calulated
                        
                        var Angle_U_L1_to_U_L1 // = 0*Deg
                        var Angle_U_L2_to_U_L1 // = 120*Deg
                        var Angle_U_L3_to_U_L1 // = 240*Deg
                        var Angle_I_L1_to_U_L1 // = 200*Deg
                        var Angle_I_L2_to_U_L1 // = 321*Deg
                        var Angle_I_L2_to_U_L2 // = calulated
                        var Angle_I_L3_to_U_L1 // = 80*Deg
                        var Angle_I_L3_to_U_L3 // = calulated
                        var Angle
                        var CosPhi // = calulated
                        var SinPhi // = calulated
                        
                        var DlvEnergy = 0.0
                        var DlvReactiveEnergy = 0.0
                        var DlvPower = 0.0
                        var DlvReactivePower = 0.0
                        
                        var DrwEnergy = 0.0
                        var DrwReactiveEnergy = 0.0
                        var DrwPower = 0.0
                        var DrwReactivePower = 0.0
                        
                        on({ id: 'smartmeter.0.1-0:2_8_0.value', change: 'any' }, function (data) {
                            // wait 1000 ms when this datapoint changed to make sure all datapoints got updated
                            setTimeout(() => {
                        
                                MeterOwnerNumber = getState('smartmeter.0.1-0:0_0_0.value').val;
                                Firmware = getState('smartmeter.0.1-0:0_2_0.value').val;
                                Error = getState('smartmeter.0.1-0:97_97.value').val;
                        
                                DrwEnergy = getState('smartmeter.0.1-0:1_8_0.value').val;
                                DrwReactiveEnergy = getState('smartmeter.0.1-0:3_8_0.value').val;
                        
                                DlvEnergy = getState('smartmeter.0.1-0:2_8_0.value').val;
                                DlvReactiveEnergy = getState('smartmeter.0.1-0:4_8_0.value').val;
                        
                                CurrentL1 = getState('smartmeter.0.1-0:31_7.value').val * CtFactor;
                                CurrentL2 = getState('smartmeter.0.1-0:51_7.value').val * CtFactor;
                                CurrentL3 = getState('smartmeter.0.1-0:71_7.value').val * CtFactor;
                                CurrentN = getState('smartmeter.0.1-0:91_7.value').val * CtFactor;
                        
                                VoltageL1 = getState('smartmeter.0.1-0:32_7.value').val * VtFactor;
                                VoltageL2 = getState('smartmeter.0.1-0:52_7.value').val * VtFactor;
                                VoltageL3 = getState('smartmeter.0.1-0:72_7.value').val * VtFactor;
                        
                                Frequency = getState('smartmeter.0.1-0:14_7.value').val * VtFactor;
                        
                                Angle_U_L1_to_U_L1 = getState('smartmeter.0.1-0:81_7_0.value').val;
                                Angle_U_L2_to_U_L1 = getState('smartmeter.0.1-0:81_7_1.value').val;
                                Angle_U_L3_to_U_L1 = getState('smartmeter.0.1-0:81_7_2.value').val;
                                Angle_I_L1_to_U_L1 = getState('smartmeter.0.1-0:81_7_4.value').val;
                                Angle_I_L2_to_U_L1 = getState('smartmeter.0.1-0:81_7_5.value').val;
                                Angle_I_L3_to_U_L1 = getState('smartmeter.0.1-0:81_7_6.value').val;
                        
                                Current = (CurrentL1 + CurrentL2 + CurrentL3) / 3;
                                Voltage = ((VoltageL1 + VoltageL2 + VoltageL3) / 3) * Math.sqrt(3);
                        
                                Angle_I_L2_to_U_L2 = Angle_I_L2_to_U_L1 - 120;
                                Angle_I_L3_to_U_L3 = Angle_I_L3_to_U_L1 + 120;
                                Angle = (((Angle_I_L1_to_U_L1 + Angle_I_L2_to_U_L2 + Angle_I_L3_to_U_L3) / 3) - 180);
                        
                                CosPhi = Math.cos(Angle * (Math.PI / 180));
                                SinPhi = Math.sin(Angle * (Math.PI / 180));
                        
                                DlvPower = Voltage * Current * CosPhi * Math.sqrt(3) / 1000;
                                DlvReactivePower = Voltage * Current * SinPhi * Math.sqrt(3) / 1000;
                        
                                setState(path + '.info.MeterOwnerNumber', MeterOwnerNumber)
                                setState(path + '.info.Firmware', Firmware)
                                setState(path + '.info.Error', Error)
                        
                                setState(path + '.Current', Math.round(Current*10)/10);
                                setState(path + '.CurrentL1', CurrentL1);
                                setState(path + '.CurrentL2', CurrentL2);
                                setState(path + '.CurrentL3', CurrentL3);
                        
                                setState(path + '.Voltage', Math.round(Voltage*100)/100);
                                setState(path + '.VoltageL1', VoltageL1);
                                setState(path + '.VoltageL2', VoltageL2);
                                setState(path + '.VoltageL3', VoltageL3);
                        
                                setState(path + '.Frequency', Frequency);
                                setState(path + '.cosPhi', CosPhi);
                                setState(path + '.sinPhi', SinPhi);
                        
                                setState(path + '.DRW1.Energy', DrwEnergy);
                                setState(path + '.DRW1.Power', Math.round(DrwPower*10)/10);
                                setState(path + '.DRW1.ReactiveEnergy', DrwReactiveEnergy);
                                setState(path + '.DRW1.ReactivePower', Math.round(DrwReactivePower*10)/10);
                        
                                setState(path + '.DLV1.Energy', DlvEnergy);
                                setState(path + '.DLV1.Power', Math.round (DlvPower * 10)/10);
                                setState(path + '.DLV1.ReactiveEnergy', DlvReactiveEnergy);
                                setState(path + '.DLV1.ReactivePower', Math.round(DlvReactivePower*10)/10);
                        
                            }, 1000);
                        });
                        

                        Das sieht dann im Ergebnis so aus:
                        2022-12-11_11-27-40_objects_-stocking–_Mozilla_Firefox.png

                        Das hier waren meine finalen Einstellungen mit welchen es dann schlussendlich funktioniert hat.
                        2022-12-11_11-45-37_instances_-stocking–_Mozilla_Firefox.png

                        robert.keR Offline
                        robert.keR Offline
                        robert.ke
                        schrieb am zuletzt editiert von robert.ke
                        #37

                        Hallo zusammen,

                        ich habe auch einen Landis+Gyr E650 Zähler und habe auch den Adapter mit den Settings von euch auf "grün". Seitdem erhalte ich eine ganze Menge an Objekten:

                        Objekte.png
                        ... die Liste ist noch länger.

                        Adapter bleibt grün - leider fehlt oder finde ich die relevanten Objekte bzgl. der Momentanleistung in Watt/kWh nicht.
                        Auch das Script von @Michael-Uray hat keine wirkliche Hilfe gebracht:

                        Objekte_Script.png

                        ein paar Werte sind also da, aber auch hier die relevanten nicht.

                        Hat jemand eine Idee, was ich beim Zähler-Auslesen übersehen habe?

                        Michael UrayM 1 Antwort Letzte Antwort
                        0
                        • robert.keR robert.ke

                          Hallo zusammen,

                          ich habe auch einen Landis+Gyr E650 Zähler und habe auch den Adapter mit den Settings von euch auf "grün". Seitdem erhalte ich eine ganze Menge an Objekten:

                          Objekte.png
                          ... die Liste ist noch länger.

                          Adapter bleibt grün - leider fehlt oder finde ich die relevanten Objekte bzgl. der Momentanleistung in Watt/kWh nicht.
                          Auch das Script von @Michael-Uray hat keine wirkliche Hilfe gebracht:

                          Objekte_Script.png

                          ein paar Werte sind also da, aber auch hier die relevanten nicht.

                          Hat jemand eine Idee, was ich beim Zähler-Auslesen übersehen habe?

                          Michael UrayM Offline
                          Michael UrayM Offline
                          Michael Uray
                          schrieb am zuletzt editiert von Michael Uray
                          #38

                          @robert-ke

                          Ich sehe gerade, dass es hier in dem Script noch einen Fehler gibt, denn DlvPower wird zwar berechnet, DrwPower aber nicht. Dennoch müsste in DlvPower ein Wert stehen, welchen ich bei dir aber nicht sehe.

                          Die Leistung selbst wird vom Zähler nicht geliefert, deswegen hatte ich sie damals aus Spannung, Strom und Leistungsfaktor berechnet.

                          Was liefert dir denn der Zähler bei folgenden Werten?

                              CurrentL1 = getState('smartmeter.0.1-0:31_7.value').val * CtFactor;
                              CurrentL2 = getState('smartmeter.0.1-0:51_7.value').val * CtFactor;
                              CurrentL3 = getState('smartmeter.0.1-0:71_7.value').val * CtFactor;
                          
                              VoltageL1 = getState('smartmeter.0.1-0:32_7.value').val * VtFactor;
                              VoltageL2 = getState('smartmeter.0.1-0:52_7.value').val * VtFactor;
                              VoltageL3 = getState('smartmeter.0.1-0:72_7.value').val * VtFactor;
                          
                              Angle_I_L1_to_U_L1 = getState('smartmeter.0.1-0:81_7_4.value').val;
                              Angle_I_L2_to_U_L1 = getState('smartmeter.0.1-0:81_7_5.value').val;
                              Angle_I_L3_to_U_L1 = getState('smartmeter.0.1-0:81_7_6.value').val;
                          

                          CtFactor und VtFactor ist bei dir auf 1 zu setzen, falls du keine Strom- oder Spannungswandler haben solltest, was nur bei sehr großen Leistungen üblich ist.

                          robert.keR 1 Antwort Letzte Antwort
                          0
                          • Michael UrayM Michael Uray

                            @robert-ke

                            Ich sehe gerade, dass es hier in dem Script noch einen Fehler gibt, denn DlvPower wird zwar berechnet, DrwPower aber nicht. Dennoch müsste in DlvPower ein Wert stehen, welchen ich bei dir aber nicht sehe.

                            Die Leistung selbst wird vom Zähler nicht geliefert, deswegen hatte ich sie damals aus Spannung, Strom und Leistungsfaktor berechnet.

                            Was liefert dir denn der Zähler bei folgenden Werten?

                                CurrentL1 = getState('smartmeter.0.1-0:31_7.value').val * CtFactor;
                                CurrentL2 = getState('smartmeter.0.1-0:51_7.value').val * CtFactor;
                                CurrentL3 = getState('smartmeter.0.1-0:71_7.value').val * CtFactor;
                            
                                VoltageL1 = getState('smartmeter.0.1-0:32_7.value').val * VtFactor;
                                VoltageL2 = getState('smartmeter.0.1-0:52_7.value').val * VtFactor;
                                VoltageL3 = getState('smartmeter.0.1-0:72_7.value').val * VtFactor;
                            
                                Angle_I_L1_to_U_L1 = getState('smartmeter.0.1-0:81_7_4.value').val;
                                Angle_I_L2_to_U_L1 = getState('smartmeter.0.1-0:81_7_5.value').val;
                                Angle_I_L3_to_U_L1 = getState('smartmeter.0.1-0:81_7_6.value').val;
                            

                            CtFactor und VtFactor ist bei dir auf 1 zu setzen, falls du keine Strom- oder Spannungswandler haben solltest, was nur bei sehr großen Leistungen üblich ist.

                            robert.keR Offline
                            robert.keR Offline
                            robert.ke
                            schrieb am zuletzt editiert von
                            #39

                            @michael-uray

                            das ist wohl mein Problem: Alle von dir genannten 9 Objekte sind nicht vorhanden, sagt auch die Objekt-Suche:
                            bbd8190c-111c-4fd8-a987-f4c35c52b9b1-image.png

                            Deswegen kann die Berechnung deines Skripts auch nicht stattfinden.

                            Ich vermute, da passt beim auslesen des Zählers was nicht.
                            Den Faktor für die Stromwandler brauche ich, wir haben Wandler mit Verhältnis 50 im Einsatz ;-)

                            1 Antwort Letzte Antwort
                            0
                            • Michael UrayM Offline
                              Michael UrayM Offline
                              Michael Uray
                              schrieb am zuletzt editiert von
                              #40

                              @robert-ke

                              Was bringt denn eine Suche nach "_7" für Objekte?

                              Kannst du vielleicht andere Objekte ausmachen, welche Strom, Spannung und Phasenwinkel vom Zähler beinhalten?

                              robert.keR Michael UrayM 2 Antworten Letzte Antwort
                              0
                              • Michael UrayM Michael Uray

                                @robert-ke

                                Was bringt denn eine Suche nach "_7" für Objekte?

                                Kannst du vielleicht andere Objekte ausmachen, welche Strom, Spannung und Phasenwinkel vom Zähler beinhalten?

                                robert.keR Offline
                                robert.keR Offline
                                robert.ke
                                schrieb am zuletzt editiert von
                                #41

                                @michael-uray

                                genau ein Objekt:
                                77091eec-9cb2-4f41-8357-d0e175b15bb3-image.png

                                Hier eine komplette Übersicht der Objekte:
                                6d4098cc-d830-495d-848d-88318091c058-image.png
                                9b599b9e-62aa-4864-9974-b46189998951-image.png
                                02f27d3e-28ca-47a8-9cf3-a10bc8ec49da-image.png
                                b04d9e0d-6efc-4c00-8cc7-1c7e2bf58312-image.png
                                b3b8b559-ea0e-4ada-a965-519bdd374cc2-image.png
                                ac2da9a2-531e-47d1-84e3-e7441f562000-image.png
                                0964e761-c4bf-49a6-87c1-4dca49e0a7a4-image.png

                                Ganz viel Zählerstände, Maximus aber irgendwie nichts brauchbares. Vielen Dank für die Mithilfe!

                                1 Antwort Letzte Antwort
                                0
                                • Michael UrayM Michael Uray

                                  @robert-ke

                                  Was bringt denn eine Suche nach "_7" für Objekte?

                                  Kannst du vielleicht andere Objekte ausmachen, welche Strom, Spannung und Phasenwinkel vom Zähler beinhalten?

                                  Michael UrayM Offline
                                  Michael UrayM Offline
                                  Michael Uray
                                  schrieb am zuletzt editiert von
                                  #42

                                  @robert-ke
                                  Was liefert dein Zähler denn eigentlich an Daten zurück, wenn du dich mit einem seriellen Terminal (Baudrate 300, 7 Daten-Bits, 1 Stop-Bit, Parität: gerade/even) auf ihn verbindest und "/?!" an ihn schickst?

                                  robert.keR 1 Antwort Letzte Antwort
                                  0
                                  • Michael UrayM Michael Uray

                                    @robert-ke
                                    Was liefert dein Zähler denn eigentlich an Daten zurück, wenn du dich mit einem seriellen Terminal (Baudrate 300, 7 Daten-Bits, 1 Stop-Bit, Parität: gerade/even) auf ihn verbindest und "/?!" an ihn schickst?

                                    robert.keR Offline
                                    robert.keR Offline
                                    robert.ke
                                    schrieb am zuletzt editiert von
                                    #43

                                    @michael-uray

                                    Da bin ich jetzt nicht so fit - aber ich habs auf die schnelle probiert:
                                    bf6a02fd-c84f-4b8a-9e0f-590e4605e5ab-image.png
                                    ca6991ae-2aba-46b1-aae8-3fc816ab0f0d-image.png

                                    Der Lesekopf steckt aktuell noch an einem Raspberry PI dran - um zu prüfen ob wir mit dem Zähler überhaupt zum Ziel kommen.

                                    Die Verbindung müsste schon stimmen, aber er zeigt nach dem Connected nichts weiter an und eingaben sind auch keine Möglich.

                                    Michael UrayM 2 Antworten Letzte Antwort
                                    0
                                    • robert.keR robert.ke

                                      @michael-uray

                                      Da bin ich jetzt nicht so fit - aber ich habs auf die schnelle probiert:
                                      bf6a02fd-c84f-4b8a-9e0f-590e4605e5ab-image.png
                                      ca6991ae-2aba-46b1-aae8-3fc816ab0f0d-image.png

                                      Der Lesekopf steckt aktuell noch an einem Raspberry PI dran - um zu prüfen ob wir mit dem Zähler überhaupt zum Ziel kommen.

                                      Die Verbindung müsste schon stimmen, aber er zeigt nach dem Connected nichts weiter an und eingaben sind auch keine Möglich.

                                      Michael UrayM Offline
                                      Michael UrayM Offline
                                      Michael Uray
                                      schrieb am zuletzt editiert von Michael Uray
                                      #44

                                      @robert-ke

                                      Gib dann einmal "/?!" (ohne ") ein und drücke die Eingabetaste. Es wird dir nicht angezeigt was du eingibst, das ist normal, aber es sollte danach eine Antwort vom Zähler kommen.

                                      (der SmartMeter Adapter muss gestoppt sein, da sonst die serielle Schnittstelle blockiert wird)

                                      1 Antwort Letzte Antwort
                                      0
                                      • robert.keR robert.ke

                                        @michael-uray

                                        Da bin ich jetzt nicht so fit - aber ich habs auf die schnelle probiert:
                                        bf6a02fd-c84f-4b8a-9e0f-590e4605e5ab-image.png
                                        ca6991ae-2aba-46b1-aae8-3fc816ab0f0d-image.png

                                        Der Lesekopf steckt aktuell noch an einem Raspberry PI dran - um zu prüfen ob wir mit dem Zähler überhaupt zum Ziel kommen.

                                        Die Verbindung müsste schon stimmen, aber er zeigt nach dem Connected nichts weiter an und eingaben sind auch keine Möglich.

                                        Michael UrayM Offline
                                        Michael UrayM Offline
                                        Michael Uray
                                        schrieb am zuletzt editiert von Michael Uray
                                        #45

                                        @robert-ke sagte in Smartmeter mit Landis+Gyr E650:

                                        um zu prüfen ob wir mit dem Zähler überhaupt zum Ziel kommen

                                        Was ist denn eigentlich das Ziel? Was willst du denn mit dem aktuellen Leistungswert machen?
                                        Benötigst du diesen nur für eine Aufzeichnung und kann er auch langsamer übermittelt werden, oder benötigst du ihn für eine Netzleistungsregelung und er muss recht schnell aktualisiert werden?

                                        robert.keR 1 Antwort Letzte Antwort
                                        0
                                        • Michael UrayM Michael Uray

                                          @robert-ke sagte in Smartmeter mit Landis+Gyr E650:

                                          um zu prüfen ob wir mit dem Zähler überhaupt zum Ziel kommen

                                          Was ist denn eigentlich das Ziel? Was willst du denn mit dem aktuellen Leistungswert machen?
                                          Benötigst du diesen nur für eine Aufzeichnung und kann er auch langsamer übermittelt werden, oder benötigst du ihn für eine Netzleistungsregelung und er muss recht schnell aktualisiert werden?

                                          robert.keR Offline
                                          robert.keR Offline
                                          robert.ke
                                          schrieb am zuletzt editiert von
                                          #46

                                          @michael-uray

                                          Die Eingaben hab ich schon versucht - kommt leider nichts. Der Smartmeter Adapter ist natürlich aus, sonst krieg ich keinen Connect. Alternativ kann ich den Adapter laufen lassen und via Screen zuschauen - aber das ist auch nicht zielführend.

                                          Das Ziel: Ja, Netzleistungsregelung. Somit wäre schon gut, wenn die Daten halbwegs rasch ankommen würden - wobei ich mit 1-3 Minuten leben kann. Wir schalten Final BHKW's ein oder aus und div. Verbraucher (E-Heizstäbe und div. andere Verbraucher)

                                          Die S0 Ausgänge würde der Energieversorger per Optokoppler rauslegen. Einen für Bezug und einen für Einspeisung. Aber Impulse zählen ist irgendwie oldschool.... daher der bis dato vergebliche Versuch direkt vom Zähler Werte zu bekommen mit denen man arbeiten kann.

                                          Michael UrayM 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          687

                                          Online

                                          32.5k

                                          Benutzer

                                          81.6k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe