Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Shelly addon über Node Red auf einer NAS mit iobroker

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Shelly addon über Node Red auf einer NAS mit iobroker

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

      @mickym Meistens funktioniert das mit den "Konvertierungsfunktionen" auch. Aber relativ häufig stürzt IOBroker dabei ab. (Beim "Speichern").
      Habe einen Tasmota ESP8266 am E-Zaehler installiert. Über einen Alias wollte ich nun die beiden Werte, die er ausgibt, auf 2 Datenpunkte verteilen.
      eb78d544-c318-49bf-b16d-0c7400201d80-image.png
      Und diese Datenpunkte mit der Funktion: JSON.parse(val).SN175.E_in
      und den anderen Datenpunkt: JSON.parse(val).Sn15.E_out
      konvertieren. Hat 1x geklappt. Mit E_out. Der richtige Wert wurde angezeigt. Wenn ich die 2. Funktion in den 2. Datenpunkt eintrage, kommt es zum Absturz. Es hilft nur "iobroker restart" und schnell die Funktion austragen.

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

        @laser nun eigentlich sollte es meines Erachtens gehen. Hier hast du nur einmal sn175 und einmal sn15 geschrieben. Wenn alle Stricke reißen, dann dröselst Du alles mit Deiner Logikmaschine auf. In node-red habe ich auch einen fertigen Flow, der Dir alles in einzelne Datenpunkte schreibt.

        Ich probiere das nachher trotzdem mal aus, ob man nicht 2 alias mit einer Quelle nutzen kann.

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

          @mickym Das nach dem (val).xxx war ein Schreibfehler. Aus dem schlechten Gedächtnis- war ja abgestürzt. Mir ging es mehr darum, ob man überhaupt 2x den gleichen Datenpunkt nehmen kann.

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

            @laser Ja eigentlich müsste es gehen - ich probier das bei mir gleich aus auch mit einem tele Wert.

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

              @laser sagte in Shelly addon über Node Red auf einer NAS mit iobroker:

              @mickym Das nach dem (val).xxx war ein Schreibfehler. Aus dem schlechten Gedächtnis- war ja abgestürzt. Mir ging es mehr darum, ob man überhaupt 2x den gleichen Datenpunkt nehmen kann.

              Ja also ich sehe kein Problem - bei mir funktioniert das einwandfrei.

              776686a0-4f3f-4cf2-b599-ff360fbaa0a1-image.png

              Du musst halt nur den richtigen Datentyp nehmen - also wenn das eine Zahl ist, dann musst Du auch den Alias Datenpunkt als Zahl definieren.

              L 1 Reply Last reply Reply Quote 1
              • L
                Laser @mickym last edited by Laser

                @mickym Bei mir klemmt es wo ganz anders. Ich lese den Datenpunkt über Alias ein. Aus dem Alias kommt aber nur ein Wert raus. Über "Experte" ausgelesen:
                cb379ea4-eafd-42c2-a2ee-2bff51c3dbf6-image.png
                Aus dem MQTT tele-Pfad kommt auch schon nur ein wert (P) raus. Wie aus dem Alias.
                In dem Pfad "discovery" des MQTT- Datenpunktes steht aber:
                2634e993-ec8e-4ee4-b506-d667aece28e8-image.png
                Die Datenpunkte habe ich schon mehrfach gelöscht und neu anlegen lassen.

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

                  @laser Nun das sind aber Tasmota Probleme - wie gesagt ich bin mir nicht sicher, ob das mit discovery richtig ist - aber da dieser Discovery-Wert nicht aktualisiert wird, ist er ja nutzlos. Warum im tele Ast nur der P-Wert rauskommt, das kann ich Dir nicht beantworten. Das ist aber ein Tasmota Problem. Ggf. muss man ein Kommando abschicken, um die vollständigen Werte im tele Ast zu bekommen.

                  Die Datenpunkte habe ich schon mehrfach gelöscht und neu anlegen lassen.

                  wie gesagt - ich würde auf der Tasmota suchen und nicht auf der iobroker Seite. Hast Du im stat Ast auch keine Datenpunkte?

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

                    @mickym im Stat- Ast nur POWER und RESULT
                    Bei einem anderen Tasmota ESP8266 mit 2 Sensoren funktioniert es.
                    Mal in Tasmota Foren suchen, was da sein könnte...

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

                      @laser Ja wie gesagt - da bin ich überfragt. Die erstellen da immer irgendwelche Skripts - vielleicht hilft Dir das ja:

                      https://www.mikrocontroller.net/topic/555811

                      Wenn ich mir diese Seite anschaue - dann ist das glaube normal, dass nur geänderte oder bestimmte Werte kommen:
                      https://forum.creationx.de/forum/index.php?thread/3640-smart-meter-mt175-braucht-kleinere-mqtt-reportfrequenz/

                      16:25:11.061 MQT: tele/Stromzaehler/STATE = {"Time":"2022-03-20T16:25:11","Uptime":"13T20:34:39","UptimeSec":1197279,"Heap":21,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":67,"POWER":"OFF","Wifi":{"AP":1,"SSId":"WLS1924","BSSId":"DC:15:C8:5C:92:CC","Channel":11,"Mode":"11n","RSSI":48,"Signal":-76,"LinkCount":1,"Downtime":"0T00:00:03"}}
                      16:25:11.070 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:11","MT175":{"E_in":5194.0,"E_out":7854.3,"P":-2424.00,"L1":-877.00,"L2":-484.00,"L3":-1038.00,"Server_ID":"090149534b000485d342"}}
                      16:25:11.395 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:11","MT175":{"P":-2404.00}}
                      16:25:11.417 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:11","MT175":{"L1":-863.00}}
                      16:25:11.436 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:11","MT175":{"L2":-484.00}}
                      16:25:11.457 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:11","MT175":{"L3":-1038.00}}
                      16:25:12.495 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:12","MT175":{"P":-2201.00}}
                      16:25:12.516 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:12","MT175":{"L1":-805.00}}
                      16:25:12.536 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:12","MT175":{"L2":-390.00}}
                      16:25:12.558 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:12","MT175":{"L3":-989.00}}
                      16:25:13.676 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:13","MT175":{"P":-2022.00}}
                      16:25:13.698 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:13","MT175":{"L1":-739.00}}
                      16:25:13.718 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:13","MT175":{"L2":-364.00}}
                      16:25:13.738 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:13","MT175":{"L3":-920.00}}
                      16:25:14.710 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:14","MT175":{"P":-1885.00}}
                      16:25:14.731 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:14","MT175":{"L1":-686.00}}
                      16:25:14.751 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:14","MT175":{"L2":-327.00}}
                      16:25:14.771 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:14","MT175":{"L3":-869.00}}
                      16:25:15.777 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:15","MT175":{"P":-1761.00}}
                      16:25:15.799 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:15","MT175":{"L1":-656.00}}
                      16:25:15.819 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:15","MT175":{"L2":-272.00}}
                      16:25:15.840 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:15","MT175":{"L3":-832.00}}
                      16:25:16.882 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:16","MT175":{"P":-1701.00}}
                      16:25:16.893 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:16","MT175":{"L1":-633.00}}
                      16:25:16.902 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:16","MT175":{"L2":-259.00}}
                      16:25:16.920 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:16","MT175":{"L3":-811.00}}
                      16:25:17.998 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:17","MT175":{"P":-1699.00}}
                      16:25:18.017 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:18","MT175":{"L1":-632.00}}
                      16:25:18.037 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:18","MT175":{"L2":-256.00}}
                      16:25:18.060 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:18","MT175":{"L3":-808.00}}
                      16:25:19.032 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:19","MT175":{"P":-1635.00}}
                      16:25:19.053 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:19","MT175":{"L1":-616.00}}
                      16:25:19.074 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:19","MT175":{"L2":-240.00}}
                      16:25:19.095 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:19","MT175":{"L3":-787.00}}
                      16:25:56.698 MQT: tele/Stromzaehler/SENSOR = {"Time":"2022-03-20T16:25:56","MT175":{"P":-749.00}}
                      

                      Vielleicht musst Du in dem letzten Link was am Script machen.

                      >D
                      >B
                      ->sensor53 r
                      >M 1
                      +1,3,s,16,9600,MT175
                      1,77070100010800ff@1000,E-gekauft,kWh,E_in,1
                      1,77070100020800ff@1000,E-geliefert,kWh,E_out,1
                      1,77070100100700ff@1,P,W,P,18
                      1,77070100240700ff@1,L1,W,L1,18
                      1,77070100380700ff@1,L2,W,L2,18
                      1,770701004C0700ff@1,L3,W,L3,18
                      1,77070100000009ff@#,Zaehlernummer,,Server_ID,0
                      #
                      

                      Das sieht so aus, als ob Du hier speziell diese Parameter in ein Script übernehmen musst, dass es via Sensor ausgegeben wird.

                      Aber das hat alles nichts mehr mit dem iobroker zu tun. 😉 - Sorry dass ich da nicht weiter helfen kann.

                      L 1 Reply Last reply Reply Quote 1
                      • L
                        Laser @mickym last edited by

                        @mickym Danke. Ich forsche weiter. Mein Script sieht ebenso aus, etwas andere Bezeichnungen.

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

                          @laser Ja aber Du siehst - dass dieses E_in und E_out auch bei dem nur einmal ausgegeben wird und dann nur noch P,L1,L2,L3

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

                            @mickym Ja, die haben das gleiche Problem. Hoffentlich eine Lösung gefunden!
                            Wenn natürlich irgendwann der String von dem "JSON.parse" nicht gefunden wird und sich IOBroker jedes Mal aufhängt, ist das suboptimal.

                            L 1 Reply Last reply Reply Quote 0
                            • L
                              Laser @Laser last edited by

                              @mickym Dort wurde das so gelöst, daß zyklisch gesendet wird. Das erste gesendete Datenpaket enthält alle Werte.
                              Das in einen Alias zu packen hat bei mir nicht geklappt, ich nehme 3 Einzelne.

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

                                @laser Ja aber wird ja nicht aktualisiert oder?

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

                                  @mickym eben doch! Dort wurde dieses Script in den Tasmota geladen:

                                  >D
                                  
                                  ;BOOT
                                  >B
                                  ;disable mqtt at boot prevents sending 0
                                  smlj=0
                                  ->sensor53 r
                                  
                                  ;SML
                                  >M 1
                                  +1,3,s,16,9600,MT175
                                  1,77070100100700ff@1,Leistung,W,Power_curr,0
                                  1,77070100010800ff@1000,Verbrauch,KWh,Total_in,0
                                  ;Die nächste 1 Zeile benötigt ihr nur, wenn ihr eine PV-Anlage habt. Sonst einfach löschen!
                                  1,77070100020800ff@1000,Netzeinspeisung,KWh,Total_out,0
                                  #
                                  
                                  ;EVERY SECOND
                                  >S
                                  ;start mqtt if smartmeter is sending
                                  if (sml[2]>0)
                                  {
                                    smlj=1
                                  }
                                  
                                  mickym 1 Reply Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @Laser last edited by

                                    @laser Na dann wird es doch jede Sekunde gesendet - aber wie gesagt da bin ich nicht fit genug in Tasmota.

                                    1 Reply Last reply Reply Quote 1
                                    • HF_SPSler
                                      HF_SPSler last edited by HF_SPSler

                                      Hallo zusammen,

                                      das Thema ist zwar schon etwas älter, aber aus aktuellem Anlass hole ich den Faden noch mal hoch und hoffe das mein Anliegen hier richtig ist ohne ein neues Thema dazu zu eröffnen.

                                      Ich möchte einen Shelly Mini1PMG3 über den Iobroker bzw. Iqontrol ein- und ausschalten. Mit einem Nous A1 über Tasmota funktioniert das auch soweit, aber am Shelly beiße ich mir gerade die Zähne aus. Das Thema hier hab ich aufmerksam und mehrfach gelesen aber irgendwo hakt es bei mir immer noch.

                                      Es wird der mqtt Adapter verwendet und ich habe die Einstellungen für Topic usw. aus der Empfehlung hier aus dem Faden übernommen:

                                      02f6ad32-01af-4489-a0e5-54927d855967-grafik.png

                                      In Iqontrol habe ich (wie für den Tasmota Nous A1 auch) einen Knopf angelegt der auf einen DP alias.0.SmartHome.Esszimer.Licht.Haupt zugreift. Unter SET_VALUE ist als Konstante "on" und OFF_SET_VALUE "off" (ohne Anführungszeichen) eingetragen.

                                      Der Alias sieht so aus:

                                      {
                                        "type": "state",
                                        "common": {
                                          "name": "Haupt",
                                          "role": "state",
                                          "type": "string",
                                          "read": true,
                                          "write": true,
                                          "alias": {
                                            "id": {
                                              "read": "mqtt.0.shellys.Esszimmer_Licht_Haupt.status.switch:0",
                                              "write": "mqtt.0.shellys.Esszimmer_Licht_Haupt.command.switch:0"
                                            },
                                            "read": "JSON.parse(val).output"
                                          }
                                        },
                                        "_id": "alias.0.SmartHome.Esszimer.Licht.Haupt",
                                        "native": {},
                                        "acl": {
                                          "object": 1636,
                                          "state": 1636,
                                          "owner": "system.user.admin",
                                          "ownerGroup": "system.group.administrator"
                                        },
                                        "from": "system.adapter.admin.0",
                                        "user": "system.user.admin",
                                        "ts": 1733998910262
                                      }
                                      

                                      Der Baum unter Alias ist wie folgt aufgebaut:

                                      42de7a99-1fd5-4d5d-8947-4f1236e84e9b-grafik.png

                                      Unter dem mqtt Adapter sieht es so aus:

                                      {
                                        "_id": "mqtt.0.shellys.Esszimmer_Licht_Haupt.command.switch:0",
                                        "common": {
                                          "name": "shellys/Esszimmer_Licht_Haupt/command/switch:0",
                                          "write": true,
                                          "read": true,
                                          "role": "variable",
                                          "desc": "mqtt server variable",
                                          "type": "string"
                                        },
                                        "native": {
                                          "topic": "shellys/Esszimmer_Licht_Haupt/command/switch:0"
                                        },
                                        "type": "state",
                                        "acl": {
                                          "object": 1636,
                                          "state": 1636,
                                          "owner": "system.user.admin",
                                          "ownerGroup": "system.group.administrator"
                                        },
                                        "from": "system.adapter.admin.0",
                                        "user": "system.user.admin",
                                        "ts": 1733948893920
                                      }
                                      

                                      Mit setzen von "on" oder "off" direkt im mqtt Adapter kann ich den Shelly ein- und ausschalten.

                                      Das Verhalten des Shellys treibt mich noch in den Wahnsinn. Wenn ich in Iqontrol in den Einstellungen des Knopfes unter "Gerätespezifische Optionen" die Rückstellzeit auf z.B. 1000ms stelle und dann in der Weboberfläche den Knopf drücke schaltet sich der Shelly ein und wie erwartet nach 1s wieder aus. Da er aber nicht als Impulsgeber fungieren soll sondern als Schalter, soll ja statt den 1000ms dort eine 0 stehen (0=nie, umschalten). Steht dort jedoch eine 0, dann kann ich genau einmal einschalten und danach wird jegliches bedienen des Knopfes ignoriert.

                                      Trage ich nichts ein, also weder 1000ms noch eine 0 dann fungiert der Knopf als Taster und sein "Ausgangssignal" toggelt sofort mit Betätigen und wieder loslassen. Der Shelly reagiert auch hier richtig. Knopf betätigt >> Shelly = true, Knopf losgelassen >> Shelly = false.

                                      Was kann ich hier bloß übersehen haben?

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

                                        @hf_spsler Keine Ahnung was für Verrenkungen Du machst - nichts mit Rückstellen usw.

                                        Du hast einen Alias der auf true und false reagiert. Den Zustand dieses Alias holst Du Dir über den Status und das command setzt Du darüber ab. Im iqontrol nimmst Du einen normalen Schalter der den Alias mit true und false schaltet.

                                        08e7c8b5-410e-4899-a9f5-09c85166439f-image.png

                                        Dann solltest Du den Shelly ganz normal im Alias mit true und false schalten können und damit auch über iqontrol .Den Pfad zum status (lesen) und command (schreiben) musst Du halt anpassen. Also angelegt schaut Dein Alias ja richtig aus, nur die Konvertierungsfunktion fehlt bzw. steht da Unsinn drin, wenn man mit "on" oder "off" schaltet.

                                        Wenn in den mqtt Datenpunkten on oder off steht, dann hat das doch nichts mit einem JSON zu tun.

                                        Was soll das denn? JSON.parse(val).output - und wie gesagt im iqontrol schaltest Du mit true und false den Alias - und der übersetzt das dann für mqtt.

                                        1 Reply Last reply Reply Quote 0
                                        • HF_SPSler
                                          HF_SPSler last edited by

                                          @mickym Danke für deine schnelle Antwort. Ich habe anscheinend noch so gar nicht geblickt wie das Ganze von Statten geht, würde es aber gern blicken.

                                          Der Wert der mqtt Variablen mqtt.0.shellys.Esszimmer_Licht_Haupt.status.switch:0 ist doch ein JSON oder nicht? Um an den Wert von "output", also den Status des Relais, zu kommen muss der Wert von mqtt.0.shellys.Esszimmer_Licht_Haupt.status.switch:0 doch geparst werden oder? Deswegen das JSON.parse(val).output - was in Iqontrol ja auch zuverlässig den aktuellen Status des Relais angezeigt hat.

                                          Inhalt von mqtt.0.shellys.Esszimmer_Licht_Haupt.status.switch:0:

                                          {"id":0, "source":"WS_in", "output":false, "apower":0.0, "voltage":234.8, "freq":49.9, "current":0.000, "aenergy":{"total":0.000,"by_minute":[0.000,0.000,0.000],"minute_ts":1734013740}, "ret_aenergy":{"total":0.000,"by_minute":[0.000,0.000,0.000],"minute_ts":1734013740},"temperature":{"tC":56.0, "tF":132.7}}
                                          

                                          "output" muss hier doch extrahiert werden und kann nicht einfach als "on" oder "off" ausgelesen werden.... ich blick das nicht.

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

                                            @hf_spsler Ok - wenn das so drin steht, dann hast Du Recht und dann ist es aber nicht on, off.

                                            Sprich bei Lesen nimmst Du

                                            JSON.parse(val).output
                                            

                                            aber bei dem command schreibst Du doch on, off so wie ich das verstanden habe. Dieses Ermitteln von Zuständen machst DU nur in Deinem Alias. Das iqontrol kann nicht mit unterschiedlichen Datenpunkten zum Lesen und Schreiben umgehen.

                                            Für das iqontrol hast Du nur einen Datenpunkt - den Alias mit true und false.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            547
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            74
                                            6746
                                            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