Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Shelly EM3 MQTT Drehstromleistung

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Shelly EM3 MQTT Drehstromleistung

    This topic has been deleted. Only users with topic management privileges can see it.
    • mickym
      mickym Most Active @Berges01 last edited by

      @berges01 Ok dann haben wir uns glaube ich missverstanden, Du arbeitest mit dem Shelly Adapter und nicht mit MQTT. Du stellst also nur das Protokoll um. DAnn hast Du wie bei allen Adaptern das Problem, was sie nicht kennen, können sie auch nicht anzeigen. Deshalb bin ich ein Verfechter mqtt Geräte über den MQTT Adapter zu managen und nicht x Adapter die einen MQTT-Broker emulieren. Das Auslesen von JSON Werten ist keine Hexerei und sehr effizient.

      Berges01 1 Reply Last reply Reply Quote 0
      • Berges01
        Berges01 @mickym last edited by

        @mickym

        Ich möchte ja alles auf MQTT umstellen nur fehlt mir dieser Wert.
        Auch einen Datenpunkt in dem der JSON zu finden ist habe ich nicht gefunden.
        Das mit dem JSOn ist kein Problem und habe ich schon mit C++ öfter gemacht nur noch nicht mit dem Blockly, damit muss ich mich noch beschäftigen.

        mickym 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @Berges01 last edited by

          @berges01 OK ich sehe gerade es ist noch die alte MQTT Version - das ist eigentlich gut.

          Die Punkte sollten vorhanden sein:

          a8d30632-d2e3-4c44-80eb-e47366fdb5fc-image.png

          Falls der nicht auftaucht, kannst Du in dem command Datenpunkt noch das Kommando "announce" eingeben. Vielleicht ist der Datenpunkt im Shelly Adapter aber auch aus den anderen Parametern errechnet,

          Berges01 1 Reply Last reply Reply Quote 0
          • Berges01
            Berges01 @mickym last edited by

            @mickym

            An den JSON komme ich mit
            192.168.xxx.yyy/Status
            Ja im Brouser ran, nur wie hole ich den String im Blockly und bearbeite den ?
            Dann den Wert aus dem JSON rausfiltern und einen Datenpunkt erzeugen.

            mickym 1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active @Berges01 last edited by mickym

              @berges01

              EDIT: Sorry letzter Post war Schwachsinn, weil es die HTTP Schnittstelle war.

              Mit Blockly musst halt dann den Wert via Attribut vom Objekt rausselektieren und dann abspeichern. Da kann Dir paul sicher helfen

              Ja entweder nutzt Du den herausgefilterten Wert direkt oder erzeugst einen Datenpunkt. Wenn Du NodeRed nutzt habe ich einen fertigen Flow für Dich, der den JSON automatisch analysiert und in Datenpunkte anlegt. Unter Beispiel 6 siehst Du, wie so etwas dann aussieht.

              Berges01 1 Reply Last reply Reply Quote 0
              • Berges01
                Berges01 @mickym last edited by Berges01

                @mickym

                Ja der Wert kommt.

                {"wifi_sta":{"connected":true,"ssid":"Strommix","ip":"192.168.2.128","rssi":-50},"cloud":{"enabled":false,"connected":false},"mqtt":{"connected":true},"time":"21:37","unixtime":1649705842,"serial":731,"has_update":false,"mac":"C45BBE6B4EC9","cfg_changed_cnt":0,"actions_stats":{"skipped":0},"relays":[{"ison":false,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"overpower":false,"is_valid":true,"source":"input"}],"emeters":[{"power":143.25,"pf":0.68,"current":0.90,"voltage":234.53,"is_valid":true,"total":743399.3,"total_returned":0.0},{"power":321.23,"pf":0.83,"current":1.64,"voltage":234.66,"is_valid":true,"total":875913.2,"total_returned":0.0},{"power":398.90,"pf":0.57,"current":3.01,"voltage":234.78,"is_valid":true,"total":1080125.1,"total_returned":1151.4}],"total_power":863.38,"fs_mounted":true,"update":{"status":"idle","has_update":false,"new_version":"20220324-123835/v1.11.8-3EM-fix-g0014dcb","old_version":"20220324-123835/v1.11.8-3EM-fix-g0014dcb"},"ram_total":49440,"ram_free":28356,"fs_size":233681,"fs_free":155620,"uptime":12192}
                

                Das ist er
                "total_power":863.38

                Nur wie in den Blockly bekommen und dann rausfinden wie ich den Filtere.
                Ich brauche nur den Start den Rest finde ich schon raus.
                Beispiel würde reichen da ich mit den Blocklys noch nicht so sicher bin.
                NodeRed währe für mich Neuland.

                mickym 1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @Berges01 last edited by mickym

                  @berges01 OK . ich versuche es mal ist ned schwer. Ein Moment.

                  Ich empfehle Dir mal diese Webseite in Deine Favoriten zu speichern: https://jsonformatter.org/

                  3442b4c7-99bf-458f-8b9c-fd7290c9c96c-image.png

                  So ich habs - obwohl ich Blockly hasse. 😉

                  35413432-f148-41ac-87a9-011a1465798c-image.png

                  Also einfach den Wert des Datenpunktes (also den JSON String) in Objekt einfügen und dann über Attribut den Wert auslesen.

                  Im Endeffekt mit dem Datenpunkt triggern müsste Dein Blockly so ähnlich aussehen:

                  7453d658-d524-4e2e-8ef1-a3e443a95150-image.png

                  Ob Du den Wert dann direkt verarbeitest oder in einen Datenpunkt schreibst, um das zu visualisieren, das bleibt dann Dir überlassen.

                  Berges01 1 Reply Last reply Reply Quote 0
                  • Berges01
                    Berges01 @mickym last edited by Berges01

                    @mickym

                    Guten Morgen

                    Ja die Webseite hatte ich schon und das ist auch nicht das Problem.
                    Den Befehl in Blockly "setze JSONString auf" habe ich noch nicht verinnerlicht wie lautet den genau der Befehl ?
                    Das in den Gänsefüsschen ist abgeschnitten.
                    Gebe ich damit den Befehl an den Selly mir den JSON zu senden und lese den in die Variabel "JSONString" ?
                    Wenn ich das mal habe und mich damit auseinandergesetzt habe ist die Birne geschält.
                    So einiges bei Blockly ist noch unklar für mich da ich von der Zeilenorientierung komme und das mit den Klötzchen noch ungewohnt ist.
                    Der Syntax ist noch etwas Krüptisch.
                    Ich komme von Fortrann77, Assembler, Cobol, Pascal und C++ da ist das alles etwas Einfacher/Komplizierter und teilweise verwirrender 😏
                    Du hast dir ja viel Mühe mit mir gemacht !!! Danke dafür !!!

                    Grüße aus dem Sauerland !

                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @Berges01 last edited by mickym

                      @berges01 Deswegen empfehle ich ja NodeRed, da muss man nicht soviel puzzeln egal.

                      Den Befehl in Blockly "setze JSONString auf" habe ich noch nicht verinnerlicht wie lautet den genau der Befehl ?

                      Das in den Gänsefüsschen ist abgeschnitten.

                      Nein damit habe ich nur Deinen kompletten JSON String, den Du mir hier in den Thread kopiert hast einer Variablen JSON String zugewiesen.
                      Um Dir dann bei der Debug Ausgabe zu zeigen, wie einfach man auf Teile des JSON Strings zugreifen kann, indem ich das als Objekt (implizit) umwandel und dann via Attribut auf den Wert zugreife. Ich wollte Dir ja mit der Debug Ausgabe nur zeigen, dass man so einfach den Wert raus bekommt.

                      Der zweite Teil kommt der Lösung schon näher, weil Du da den Datenpunkt richtig einliest. Damit gibst Du den Datenpunkt im mqtt Adapter an - sprich wenn sich dort der Datenpunkt geändert hat wird das Blockly getriggert und dann weist Du diesem Debug Baustein den Wert zu und daraus das Attribut "total_power".

                      So einiges bei Blockly ist noch unklar für mich da ich von der Zeilenorientierung komme und das mit den Klötzchen noch ungewohnt ist.
                      Der Syntax ist noch etwas Krüptisch.
                      Ich komme von Fortrann77, Assembler, Cobol, Pascal und C++ da ist das alles etwas Einfacher/Komplizierter und teilweise verwirrender 😏#

                      Wenn Du so am Anfang bist - dann solltest Du vielleicht entweder doch lieber mit Javascript programmieren oder probiere es doch mit Node Red, in dem Du Dir den Adapter installierst. Ich kann es nur immer wieder empfehlen, ich bin ein richtiger Fan davon. Du kannst dich mehr auf die Logik konzentrieren. Und keine Angst bin auch schon etwas älteres Semesteer - musste zwar kein Assembler und Fortran lernen, aber Cobol und C++ habe ich auch noch gemacht und viel in VBA. Wenn Du Node Red nicht nutzen willst, warum nutzt Du dann nicht einfach Javascript, wenn Du herkömmlich programmieren willst.

                      Ich nutze gerne diese Seite zum Nachschlagen: https://www.w3schools.com/js/default.asp

                      Aber wie gesagt meine Empfehlung bleibt Node Red (wurde ursprünglich von der IBM entwickelt, für grafische Programmierung), damit hast Du 99% der Möglichkeiten, die Dir Blockly bietet und noch ein paar Prozente mehr, da hier eine sehr breite Community dahinter steckt. In Zusammenhang mit dem iobroker unschlagbar. Instalier Dir mal den Adapter und ziehe Dir ein Videos rein.

                      4ff712ce-03a9-4963-ae40-1b32ae244256-image.png

                      👍 👍 👍

                      Und auch wenn die NodeRed Fans hier im iobroker Forum in der Unterzahl sind - die sind auch alle sehr hilfsbereit .

                      Berges01 1 Reply Last reply Reply Quote 0
                      • Berges01
                        Berges01 @mickym last edited by

                        @mickym
                        Oh man ging eigentlich einfach.

                        0b30bebd-182d-46ca-9eb8-d263660b8a79-image.png

                        Deine Ausführungen haben mich indirekt auf den Weg gebracht.
                        Die Ausgabe funktioniert und der Rest ist Formsache.

                        Zur Erklärung für Andere die danach suchen,

                        Variabel "result" genau so anlegen.
                        mit dem Häkchen bei "mit Ergebnissen" wird die durch den request angeforderte Antwort in "result" abgespeichert.
                        Bei der Zeile Attribut "total_power" von Objekt "result" wird im JSON nach diesem Attribut gesucht und dieser Wert des Attributes über debug output ausgegeben.

                        Damit lässt sich natürlich noch so einiges aufbauen aber das ist der Endscheidende Anfang (zumindest für mich).

                        DANKE für die Hilfe beim Nachdenken !!! 👍

                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Berges01 last edited by mickym

                          @berges01 ich dachte Du hast unter MQTT bereits einen Datenpunkt mit dem JSON String? Es würde Dir das Pollen ersparen. Ansonsten Glückwunsch..

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

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

                          786
                          Online

                          32.0k
                          Users

                          80.5k
                          Topics

                          1.3m
                          Posts

                          3
                          16
                          2815
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo