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. Skripten / Logik
  4. JavaScript
  5. Script um shellyplus und das addon dazu auszulesen (mqtt)

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

Script um shellyplus und das addon dazu auszulesen (mqtt)

Geplant Angeheftet Gesperrt Verschoben JavaScript
19 Beiträge 3 Kommentatoren 1.9k 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.
  • T Nicht stören
    T Nicht stören
    ticaki
    schrieb am zuletzt editiert von ticaki
    #1

    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

    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

    Spenden

    H 1 Antwort Letzte Antwort
    0
    • T 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 Offline
      H Offline
      Hasejs
      schrieb am zuletzt editiert von
      #2

      @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 Antwort Letzte Antwort
      0
      • H Hasejs

        @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 Nicht stören
        T Nicht stören
        ticaki
        schrieb am zuletzt editiert von ticaki
        #3

        @Hasejs

        P ist das nicht ctrl - v ?

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

        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

        Spenden

        H 1 Antwort Letzte Antwort
        0
        • T 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 Offline
          H Offline
          Hasejs
          schrieb am zuletzt editiert von
          #4

          @ticaki
          Sorry, klar .... Ich Idiot

          H 1 Antwort Letzte Antwort
          0
          • H Hasejs

            @ticaki
            Sorry, klar .... Ich Idiot

            H Offline
            H Offline
            Hasejs
            schrieb am zuletzt editiert von
            #5

            @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 Antwort Letzte Antwort
            0
            • H Hasejs

              @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 Offline
              H Offline
              Hasejs
              schrieb am zuletzt editiert von
              #6

              @hasejs

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

              H 1 Antwort Letzte Antwort
              0
              • H Hasejs

                @hasejs

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

                H Offline
                H Offline
                Hasejs
                schrieb am zuletzt editiert von
                #7

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

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

                Jetzt geht es.... Forumseite aktualisiert.

                T 1 Antwort Letzte Antwort
                0
                • H Hasejs

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

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

                  Jetzt geht es.... Forumseite aktualisiert.

                  T Nicht stören
                  T Nicht stören
                  ticaki
                  schrieb am zuletzt editiert von ticaki
                  #8

                  @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

                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                  Spenden

                  H 1 Antwort Letzte Antwort
                  0
                  • T 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 Offline
                    H Offline
                    Hasejs
                    schrieb am zuletzt editiert von
                    #9

                    @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 Antwort Letzte Antwort
                    0
                    • H Hasejs

                      @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 Nicht stören
                      T Nicht stören
                      ticaki
                      schrieb am zuletzt editiert von ticaki
                      #10

                      @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?

                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                      Spenden

                      H 1 Antwort Letzte Antwort
                      0
                      • T 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 Offline
                        H Offline
                        Hasejs
                        schrieb am zuletzt editiert von
                        #11

                        @ticaki

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

                        T 1 Antwort Letzte Antwort
                        0
                        • H Hasejs

                          @ticaki

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

                          T Nicht stören
                          T Nicht stören
                          ticaki
                          schrieb am zuletzt editiert von
                          #12

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

                          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                          Spenden

                          H 1 Antwort Letzte Antwort
                          0
                          • T ticaki

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

                            H Offline
                            H Offline
                            Hasejs
                            schrieb am zuletzt editiert von
                            #13

                            @ticaki
                            Alles Gut... mir reichts auch.

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

                            T 1 Antwort Letzte Antwort
                            0
                            • H Hasejs

                              @ticaki
                              Alles Gut... mir reichts auch.

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

                              T Nicht stören
                              T Nicht stören
                              ticaki
                              schrieb am zuletzt editiert von
                              #14

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

                              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                              Spenden

                              A 1 Antwort Letzte Antwort
                              0
                              • T ticaki

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

                                A Offline
                                A Offline
                                arminrey
                                schrieb am zuletzt editiert von
                                #15

                                @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:+1: :+1:

                                Armin

                                1 Antwort Letzte Antwort
                                0
                                • T Nicht stören
                                  T Nicht stören
                                  ticaki
                                  schrieb am zuletzt editiert von ticaki
                                  #16

                                  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.

                                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                  Spenden

                                  A 1 Antwort Letzte Antwort
                                  0
                                  • T 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 Offline
                                    A Offline
                                    arminrey
                                    schrieb am zuletzt editiert von
                                    #17

                                    @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 Antwort Letzte Antwort
                                    0
                                    • A arminrey

                                      @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 Nicht stören
                                      T Nicht stören
                                      ticaki
                                      schrieb am zuletzt editiert von ticaki
                                      #18

                                      @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

                                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                      Spenden

                                      A 1 Antwort Letzte Antwort
                                      0
                                      • T 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 Offline
                                        A Offline
                                        arminrey
                                        schrieb am zuletzt editiert von
                                        #19

                                        @ticaki

                                        Werte wieder da :-) .... Vielen Dank .... die Antwort war min. 1 Kasten Bier:beer: wert :+1:

                                        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

                                        961

                                        Online

                                        32.4k

                                        Benutzer

                                        81.5k

                                        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