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.
    • Berges01
      Berges01 last edited by

      Hallo

      Wahrscheinlich ist meine Frage ein Alter Hut aber ich habe nichts brauchbares dazu gefunden.

      Ich habe in der Hauptverteilung einen Shelly EM3 hängen (Neuste Firmware).
      Wenn ich den mit der Shelly Instanz auslese bekomme ich die Drehstromleistung als Datenpunkt.
      Ich möchte aber alles mit Shelly auf MQTT umstellen und da fehlt der Datenpunkt.
      Gibt es da einen Trick um das zu aktivieren ?

      Grüße aus dem Sauerland

      mickym da_Woody 2 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @Berges01 last edited by

        @berges01 Es müsste bei den neuen Versionen - evtl. alles in einem JSON im topic events/rpc enthalten sein.

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

          @berges01 sagte in Shelly EM3 MQTT Drehstromleistung:

          Ich möchte aber alles mit Shelly auf MQTT umstellen und da fehlt der Datenpunkt.

          welcher DP? wenn, dann musst du deine shelly auf MQTT umstellen und den adapter auch.

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

            @da_woody

            Ja das hatte ich auch schau einmal bei MQTT

            b51f1410-ae90-4197-91da-03d92284061a-image.png

            Das sind die Datenpunkte beim Shelly-Adapter
            5be85fb1-ff64-4cc9-bafa-96f4ced0758d-image.png
            Ist nur ein Auszug, ab beim Shelly gibt den Topic Total und beim MQTT fehlt er.

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

              @mickym

              Den finde ich beim MQTT nicht, schau bei dem Anderen Post da kannst du das sehen.

              Wenn der da währe könnte man das mit Blockly ja erzeugen (Wenn auch mühsam).

              mickym 1 Reply Last reply Reply Quote 0
              • 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

                                    623
                                    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