Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Script um shellyplus und das addon dazu auszulesen (mqtt)

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Script um shellyplus und das addon dazu auszulesen (mqtt)

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      ticaki Developer last edited by ticaki

      nur: Shellyplus

      Weil sich Daten die der mqtt adapter zu shellyplus ausgibt, nicht mit meiner allgemeinen Datenverarbeitung harmonieren, hab ich mir ein Script geschrieben, das die Daten und auch einzelne Kommandos über rpc over mqtt abruft/sendet. Und diese als einzelne Datenpunkte unter "0_userdata" erstellt.

      Aktuell hab ich nur den shellyplus1pm + addon im Einsatz. Damit funktioniert es.

      Das Skript kann:

      • schreibt alle Werte in einen eigenen Datenpunkt in einer Baumstruktur
      • Relais 0 (switch) ist schaltbar, alle weiteren sollten schaltbar sein

      Mit dem auslesen Intervall der Energy Daten bin ich noch nicht zufrieden. Dieses ist aktuell dem Shelly überlassen.
      Das Script fordert beim Start und zur Uhrzeit Minute: 0,20,40 ein Statusupdate zu allem an.
      Für mich ist dieser Intervall nötig, da ich den online Status überwachen lasse.

      Wenn was nicht funktioniert, melden ich behebe das dann. Falls es überhaupt jemand braucht, 🙂

      https://github.com/ticaki/iobroker-skript-sammlung/blob/main/mqtt-shellyplus.js

      Wie man ein Skript von github kopiert:

      Bildschirmfoto 2023-07-30 um 22.07.27.png

      Und dann im iobroker Javascript editor einfügen

      Einstellungen:

      const prefix = '0_userdata.0.MQTT' // darunter wird gespeichert
      const suchPrefix = 'mqtt.0.shellies2' // hier kommen die Daten her und begrenzen das ganze auf einen subtopic... Einfach das was im Topic bei allen Shellies gleich ist, muß hier stehen und davor die mqtt instanz
      const topicPrefix = 'shellies2' // hier muss der Teil von suchPrefix stehen der im Topic der shellys enthalten ist. Ohne die mqtt instanz
      

      Das erste ist wo es hinsoll, bei mir ist das unter 0_userdata.0.MQTT

      Bildschirmfoto 2023-07-30 um 22.11.27.png

      Das 2. ist wo es her kommt:

      Bildschirmfoto 2023-07-30 um 22.14.53.png
      Das ist der Mqtt Adapter und ein Teil von dem was unter MQTT Prefix im Shelly steht:
      Bildschirmfoto 2023-07-30 um 22.16.14.png

      Bei mir ist shellies2 immer gleich, wenn das Neuland ist schreibt einfach shellies2/ und kopiert dahinter die Client id. Und last 2 und 3 einfach so wie es ist.

      Bildschirmfoto 2023-07-30 um 22.18.23.png

      RPC over MQTT muß im Shelly aktiviert sein

      H 1 Reply Last reply Reply Quote 0
      • H
        Hasejs @ticaki last edited by

        @ticaki
        Hallo danke für deine Info`s aber ich bekomme dein Skript nicht in den Editor vom Iobroker.
        Rechte Maustaste oder Ctrl + P geht im Editor nicht. Muß ich etwas umstellen?

        Gruß Joachim

        T 1 Reply Last reply Reply Quote 0
        • T
          ticaki Developer @Hasejs last edited by ticaki

          @Hasejs

          P ist das nicht ctrl - v ?

          sitze hier vor einem Mac, aber dabei unterscheiden sich doch nur die Kommandotasten und nicht die Buchstaben

          H 1 Reply Last reply Reply Quote 0
          • H
            Hasejs @ticaki last edited by

            @ticaki
            Sorry, klar .... Ich Idiot

            H 1 Reply Last reply Reply Quote 0
            • H
              Hasejs @Hasejs last edited by

              @hasejs

              Ok !! Hab jetzt Zeile 1-3 nach meinen Bedürfnissen angepasst.

              Bekomme jetzt 2 Fehler (rote Wellenlinien)

              Zeile 122 " if (DEBUG) log(msg)" (unter "msg" rote Wellenlinie)
              Zeile 154 " topic = topic.replaceAll('.','/') " (ReplaceAll rote Wellenlinie)

              Skript wurde nur gespeichert, noch nicht gestartet.

              H 1 Reply Last reply Reply Quote 0
              • H
                Hasejs @Hasejs last edited by

                @hasejs

                Kann ich hier auch einen Snip einfügen ? Bei mir kommt immer ein Error

                H 1 Reply Last reply Reply Quote 0
                • H
                  Hasejs @Hasejs last edited by

                  @hasejs
                  32e85811-bd78-46b8-9ffc-6a328464d2b7-grafik.png

                  9bdfb41d-1d46-4edb-b702-77fbea11f116-grafik.png

                  Jetzt geht es.... Forumseite aktualisiert.

                  T 1 Reply Last reply Reply Quote 0
                  • T
                    ticaki Developer @Hasejs last edited by ticaki

                    @hasejs
                    Die kannst du ignorieren. Der Scripteditor markiert alles rot was er nicht erkennt oder als nicht geeignet einstuft

                    msg -> ist ein Objekt also nicht vom Typ string, wird aber korrekt umgewandelt und ins log geschrieben
                    replaceAll() ist ein Javascript string Funktion die ebenfalls ausgeführt wird.

                    Das Skript läuft bei mir so wie du es kopiert hast und sollte wenn richtig eingestellt auch bei dir funktionieren.
                    Bei mir sieht das so aus. 🙂
                    Bildschirmfoto 2023-07-31 um 22.16.58.png

                    H 1 Reply Last reply Reply Quote 0
                    • H
                      Hasejs @ticaki last edited by

                      @ticaki

                      Danke hat funktioniert.
                      Die ObjektID`s sind angelegt und werden aktualisiert.

                      Wie kann ich die Gesamtleistung abfragen?

                      2c7994ff-0c93-4bab-968c-65869826d476-grafik.png

                      T 1 Reply Last reply Reply Quote 0
                      • T
                        ticaki Developer @Hasejs last edited by ticaki

                        @hasejs
                        Ich hab keinen EM3 Pro daher kann ich das nicht bei mir nachschauen. Ich muss mal in der API Doku nachsehen wie man da den Gesamtwert bekommt. Du scheinst ja jetzt die werte für die 3 Phasen zu haben oder?

                        H 1 Reply Last reply Reply Quote 0
                        • H
                          Hasejs @ticaki last edited by

                          @ticaki

                          Ja, die 3 Werte habe ich.
                          Momentan addiere ich sie in einem Blockly Skript.

                          T 1 Reply Last reply Reply Quote 0
                          • T
                            ticaki Developer @Hasejs last edited by

                            @hasejs
                            Ich glaube ich weiß wie, aber bin zu müde und traue mir nicht. Machen wir morgen 🙂

                            H 1 Reply Last reply Reply Quote 0
                            • H
                              Hasejs @ticaki last edited by

                              @ticaki
                              Alles Gut... mir reichts auch.

                              Bin Dir ehedem sehr Dankbar für deine Super Unterstützung.

                              T 1 Reply Last reply Reply Quote 0
                              • T
                                ticaki Developer @Hasejs last edited by

                                @hasejs
                                Schau mal morgen nach ob die Daten nicht erschienen sind oder in einem anderen Ordner liegen. Eigentlich sollte die da sein.

                                A 1 Reply Last reply Reply Quote 0
                                • A
                                  arminrey @ticaki last edited by

                                  @ticaki

                                  Hallo
                                  Ich hab mich schon tot-gegoogelt und bin dann hier im Forum auf Deinen Betrag gestoßen. Respekt, nach ein paar Anläufen funktioniert das bei mir auch.

                                  Was ich nicht verstehe, dass ich im Netz keinen Aufschrei höre, dass die geloggten Daten von Shelly 2 Generation nicht mehr über ECharts darstellbar sind. Wer Shellys hat möchte doch auch sehen was passiert?

                                  Ich war schon fast dabei aufzugeben…. Aber jetzt klappt es …. Vielen Dank👍 👍

                                  Armin

                                  1 Reply Last reply Reply Quote 0
                                  • T
                                    ticaki Developer last edited by ticaki

                                    v0.11

                                    • .ts Datenpunkte löschen vor dem ausführen oder ihr bekommt Warnungen die euch daran erinnern
                                    • .ts und sys.unixtime mit einander verlinkt so das in ts immer die zu letztgemeldete Onlinezeit drin steht (brauche ich fürs überwachen)
                                    • .ts wird jetzt in millisekunden angezeigt, ebenso wie unixtime denke das ist die Zeit seit dem letzten reset oder reboot

                                    steht aber auch im Skript und da werden ich in Zukunft auch jede Änderung erwähnen... wenn sie erwähnenswert ist.

                                    A 1 Reply Last reply Reply Quote 0
                                    • A
                                      arminrey @ticaki last edited by

                                      @ticaki

                                      Hallo, am Anfang ist alles super gelaufen. Seit einer Woche gibt es keine Werte mehr. Komisch ist, wenn der MQTT Broker/Client läuft komme ich nicht mehr auf den Shelly der geloggt wird. Schalte ich MQTT Broker/Client aus, dann ist der Shelly wieder online. (Öfters probiert = leider so)

                                      Jetzt vermute ich, dass was nicht an den Einstellungen stimmt. Kannst Du da mal drüber schauen, bin da im Thema leider nicht so fit.

                                      mqtt01.PNG
                                      mqtt02.PNG mqtt03.PNG

                                      Wäre Super wenn ich Hilfe bekomme 🙂

                                      Gruß
                                      Armin

                                      T 1 Reply Last reply Reply Quote 0
                                      • T
                                        ticaki Developer @arminrey last edited by ticaki

                                        @arminrey
                                        Ich bin jetzt echt nicht der MQTT Kenner, kann nur sagen was bei mir funktioniert.

                                        Bildschirmfoto 2023-08-28 um 15.00.11.png

                                        Ich denke das "sende auch ack" dein mqtt lahm legt. EDIT: Könnte aber auch daran liegen das du ganz oben bei prefix nix drin stehen hast.

                                        Mein Problem bevor ich diese Einstellungen hatte, war das meine Lampen (zufällig eine oder mehrere) angingen wenn iobroker neugestartet wurde. Das lag an "sende bei verbinden"

                                        Bei mir läufts, hab mir extra fürs "nicht laufen" das Skript geschrieben das jetzt meine Installation überwacht: https://github.com/ticaki/iobroker-skript-sammlung/blob/main/Sensorüberwachung.js

                                        Dafür gibts aber afaik auch nen Adapter

                                        EDIT: ich benutze aber mosquitto als broker. Daher ist mein mqtt adapter als client eingestellt

                                        A 1 Reply Last reply Reply Quote 0
                                        • A
                                          arminrey @ticaki last edited by

                                          @ticaki

                                          Werte wieder da 🙂 .... Vielen Dank .... die Antwort war min. 1 Kasten Bier🍺 wert 👍

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          578
                                          Online

                                          31.8k
                                          Users

                                          79.9k
                                          Topics

                                          1.3m
                                          Posts

                                          3
                                          19
                                          1285
                                          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