Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Shelly-Geräte mit MQTT-Adapter steuern

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Shelly-Geräte mit MQTT-Adapter steuern

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

      @klausstoertebeker Also erst musst Du Dir mal grundsätzliches einnprägen.

      Du hast mehrer RPC Channels - NUR einen (direkt unter Deinem Device) für Kommandos. Der RPC Channel unter Events meldet Ereignisse.
      Alles nachzulesen unter: https://shelly-api-docs.shelly.cloud/gen2/General/RPCChannels#mqtt

      Du wirst also Deinen Output nicht beschreiben können, sondern Du schreibst dein Kommando ganz normal unter den RPC Channel und Dein Status mit der Output Eigenschaft ändert sich automatisch.

      Das heißt den Ein/Aus Zustand liest Du über den switch:0 topic und der output Eigenschaft, Du steuerst es aber den RPC Channel .

      Aliase erstellst Du einfach unter alias.0 - Du kannst auch eine hierarschische Struktur mit Ordner aufbauen.

      f160e0ed-6d10-4115-82b6-49e669682758-image.png

      Die Quelldatenpunkte sind für dich nicht geeignet, da es hier um Shellies der 1. Generation handelt.

      Aber hier habe ich das Ganze schon mal für einen Shelly der 2. Generation gemacht.
      Das war halt ein Dimmer, Du machst es halt mit dem switch:
      https://forum.iobroker.net/post/1245801

      Zu Schalten des Switchs nimmst Du also unterschiedliche Datenpunkte im den Du in den rpc direkt unter Deinem Shelly Plug S schreibst und den switch:0 liest.

      Zum Ein- und Ausschalten nimmst Du also folgende Konvertierungen:

      Lesen:

      JSON.parse(val).output
      

      Schreiben:

      JSON.stringify({method: "Switch.Set", params: { id: 0, on: val}})
      

      siehst Du ja hier:
      https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Switch#switchset

      Den Aliasdatenpunkt musst Du vom Typ her als Logikwert definieren. Generell musst du den Datentyp anhand der zu erwartenden Werte definieren.

      ============================================

      Also bei den weiteren Aliasdatenpunkten dann als Zahl.

      Für die Aliase die Du nur zum Lesen brauchst - brauchst Du ja dann immer nur als Quelle den switch:0 Datenpunkt.

      Lesen möchte ich "voltage", "current", "apower" und "aenegy.total".

      Als Quelle nimmst Du den switch:0 Datenpunkt und dann halt für jeden Alias eine andere Konvertierungsfunktion zum Lesen:

      Für voltage:

      JSON.parse(val).voltage
      

      Für current:

      JSON.parse(val).current
      

      Für apower:

      JSON.parse(val).output
      

      Für aenergy.total

      JSON.parse(val).aenergy.total
      

      History kannst Du dann einfach über das Zahnrad im Alias einrichten.

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

        @mickym
        Mann, was für eine tolle Hilfe!!! - Deine Vorschläge funktionieren super. Und ich gehe davon aus, dass das auch ähnlich mit meinem Wanddisplay funktioniert 🙂

        KlausStoertebeker 1 Reply Last reply Reply Quote 0
        • KlausStoertebeker
          KlausStoertebeker @KlausStoertebeker last edited by

          @mickym
          Ich brauche wieder Deine Hilfe, denn ich habe das Vorgehen auch mit meinem Wanddisplay versuch, bin aber noch nicht weitergekommen.
          Im Datenpunkt "status/thermostat:0" werden folgende Daten im JSON-Format abgelegt:

          {
            "id": 0,
            "enable": true,
            "target_C": 14.5,
            "current_C": 25.3,
            "output": false,
            "schedules": {
              "enable": true,
              "profile_id": 0,
              "profile_name": "Test"
            }
          }
          

          Ich möchte gerne den Wert "target_C" lesen und schreiben und habe dafür im Alias einen Datenpunkt mit unterschiedlichen Datenpunkten angelegt:
          Lesen: mqtt.0.ShellyWallDisplay-0008224A613B.status.thermostat:0
          Schreiben: mqtt.0.ShellyWallDisplay-0008224A613B.rpc
          Das Lesen mit der Funktion JSON.parse(val).target_C funktioniert auch, aber das Schreiben nicht. Ich habe mich an Deinem Vorschlag vom 20.02.2025 19:03 orientiert und versucht, einen Wert mit der Funktion JSON.stringify({method: "Thermostat.SetConfig", params: {id: 0, config: {target_C: val }}}) in "target_C" zu schreiben.
          In den "rpc"-Datenpunkt wird der JSON-String

          {
            "method": "Thermostat.SetConfig",
            "params": {
              "id": 0,
              "config": {
                "target_C": 12
              }
            }
          }
          

          geschrieben, aber es passiert leider nicht und der Wert wird nicht geändert...

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

            @klausstoertebeker Da unten haben wir aber mehr eingetragen. Machs doch mal so wie da unten:

            https://forum.iobroker.net/post/1251735

            {"id":123, "src":"user_1", "method": "Thermostat.SetConfig","params": {"id": 0, "config": {"enable":true, "target_C": 23.0}}}
            

            Probiers erst mal nur mit "enable":true und wenn das nicht langt, dann nimm halt noch zu Beginn die id oder src mit. Wie gesagt da unten hat es ja schon mal funktioniert.

            Das mit dem stringify war alles richtig. Einfach in dem Datenpunkt ausprobieren, wie es funktioniert und dann die Konvertierungsfunktion identisch basteln mit stringify und val für den Wert.

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

              @mickym
              Ich versuche mich noch am Thermostaten, aber bisher ohne Erfolg. Aber ich bleibe dran...
              Mittlerweile habe ich aber ein weiteres Problem bei der Steuerung eines Shelly RGBW-Controllers. Ich möchte den Farbwert über ein Triple r,g,b steuern und muss dieses Triple in folgenden JSON-String packen:

              {
                "id": 0,
                "rgb": [
                  255,
                  0,
                  0
                ]
              }
              

              Dazu nutze ich in der Schreibfunktion folgende Funktion:

              JSON.stringify({method: "RGBW.Set", params: { id: 0, rgb: [val]}}) (val = r,g,b)

              Allerdings wird daraus folgender JSON-String:

              {
                "method": "RGBW.Set",
                "params": {
                  "id": 0,
                  "rgb": [
                    "r,g,b"
                  ]
                }
              }
              

              Da das Triple r,g,b in Anführungszeichen "stringifiziert" wird, wird das kommando aber nicht ausgeführt. Wie kann ich das Triple ohne Anführungszeichen und in der Form [r,g,b] in den JSON-String einfügen, so dass er so aussieht:

              {
                "method": "RGBW.Set",
                "params": {
                  "id": 0,
                  "rgb": [r,g,b]
                }
              }
              
              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @KlausStoertebeker last edited by mickym

                @klausstoertebeker In dem Fall darfst Du nicht r,g,b verwenden, sondern schreibst ein Array, das heißt Du parsed den String.

                Als Wert musst Du aber Zahlenwerte eingeben und da es ein String ist diesen in ein Array wandeln.

                Also also Wert gibst Du ein [255,0,0]. Als Datentyp musst Du JSON oder String nehmen

                JSON.stringify({method: "RGBW.Set", params: { id: 0, rgb: JSON.parse(val) }})
                

                Jedenfalls sieht das bei mir gut aus:

                a4cb7509-eeaf-466e-904d-7ec8374b8472-image.png
                880986ff-cb52-4d6e-8dbd-dd5b65ceafc1-image.png

                rgb - repäsentieren Zahlenwerte zwischen 0 und 255.

                Wie gesagt im alias steht als Wert ein JSON-String als Array:
                23dde1c6-3044-4387-ac2e-0de4b1d8761e-image.png

                Und bei dem Thermostat - da hast Du doch gesagt, dass das funktioniert hat, als Du direkt den rpc Datenpunkt beschrieben hast?

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

                  @mickym
                  Hallo mickym,
                  ich habe den Ausdruck r,g,b nur als Platzhalter gewählt. Dass ich für das Setzen der Wert Zahlen verwenden muss, war mir klar - ich wusste nurnicht, wie ich die eckigen Klammern ohne Anführungszeichen hinbekomme...
                  Und Dein Tipp war wieder klasse - hat auf Anhieb funktioniert 🙂
                  Ja, und was den Themostaten angeht, weiß ich auch noch nicht so richtig, wass ich falsch mache. Aber ich habe heute Abend Zeit 😉 wenn ich eine andere kleine Herausforderung mit einem "Shelly Plus i4" überwunden habe...

                  KlausStoertebeker 1 Reply Last reply Reply Quote 0
                  • KlausStoertebeker
                    KlausStoertebeker @KlausStoertebeker last edited by KlausStoertebeker

                    @mickym

                    Das mit dem Thermomastaten habe ich hinbekommen. Mein Fehler war, dass ich kein Attribut "src" angegeben hatte. Die "id" war ohne Belang, aber "src" war zwingend notwendig...
                    Allerdings kann ich den Thermostaten nich aktivieren/deaktivieren, denn dazu muss ich unter dem Datenpunkt "status/sys", der den Inhalt

                    {
                      "id": "ShellyWallDisplay-0008224A613B",
                      "mac": "0008224A613B",
                      "model": "SAWD-0A1XX10EU1",
                      "gen": 2,
                      "fw_id": "20250110-152848/2.3.0-1f63b311",
                      "ver": "2.3.0",
                      "app": "WallDisplay",
                      "auth_en": true,
                      "uptime": 171028,
                      "app_uptime": 2381,
                      "ram_size": 134217728,
                      "ram_free": 25041040,
                      "fs_size": 5009186816,
                      "fs_free": 4895637504,
                      "discoverable": true,
                      "cfg_rev": 75,
                      "schedule_rev": 0,
                      "webhook_rev": 8,
                      "platform": "vXD10000M2",
                      "serial": "SAWD89D007B2V",
                      "batch_id": "3872b",
                      "batch_date": 231211,
                      "available_updates": {
                        "stable": {
                          "version": "2.3.0",
                          "build_id": "20250110-152848/2.3.0-1f63b311"
                        }
                      },
                      "restart_required": false,
                      "unixtime": 1740517805,
                      "relay_in_thermostat": true,
                      "sensor_in_thermostat": true,
                      "awaiting_auth_code": true
                    }
                    

                    hat, die Attribute
                    relay_in_thermostat und sensor_in_thermostat auf false setzen. Diese Werte ändern sich, wenn ich in den Einstellungen -> Input/Output -> Thermostat aktivieren am Display selbst manuell den Thermostaten aktiviere oder deaktiviere. Und ich habe kein anderes Attribut hierfür gefunden...

                    In der Doku habe ich gelesen, dass man mit Sys.SetConfig die Konfiguration setzen kann, und ich habe es mit

                    {
                      "src": "iobroker",
                      "method": "Sys.GetConfig",
                      "params": {
                        "config": {
                           "id": 0,
                           "relay_in_thermostat": false,
                           "sensor_in_thermostat": false
                        }
                      }
                    }
                    

                    versucht, aber das hat nicht funktioniert. Hast Du da eine Idee?

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

                      @klausstoertebeker Nein - da bin ich leider überfragt.

                      Ich bin zwar im Shelly Forum registriert und habe diesen Thread gefunden: https://shelly-forum.com/thread/23609-shelly-wall-display-firmware-1-2-5-mit-thermostatfunktion-released/

                      Aber schlau werde ich daraus nicht. Das ist mir im Moment zu speziell - da ist es besser, wenn Du direkt dort weiter fragst.

                      Du kannst ja die Kommandos direkt in den Datenpunkten ausprobieren und wenn das funktioniert, dann kann ich ggf. bei der Konvertierungsfunktion helfen, aber zu diesen speziellen Parametern kann ich nichts sagen.

                      Es ist ja auch nicht gesagt, dass Du alle Einstellungen über mqtt einstellen kannst, sondern vielleicht gehen bestimmte Einstellungen nur über die Weboberfläche.

                      In dem Thread habe ich zu den Parametern nur folgendes gefunden:

                      1aa9ad53-ded9-4b5a-9edb-319232fff4b5-image.png

                      Sorry - aber ich denke, da musst Du Shelly Support bemühen und wie gesagt Du weißt ja nun dass Du Kommandos immer direkt in das rpc topic unter dem Gerät schreiben musst.

                      KlausStoertebeker Master67 2 Replies Last reply Reply Quote 0
                      • KlausStoertebeker
                        KlausStoertebeker @mickym last edited by

                        @mickym
                        Moin moin mickym,
                        Du hast erwähnt, dass Du auch Gen 1-Geräte im Einsatz hast. Ich habe fünf Shelly TRV-Thermostatventile und drei Shelly Motion 2-Bewegungsmelder im Einsatz und möchte die auch über MQTT steuern, werde aber aus der Dokumentation nicht richtig schlau.
                        Wenn ich das richtig verstanden habe, muss ich die Befehle in den Datenpunkt "command" schreiben. Aber über das Format lässt sich die Dokumentation von Shelly nicht aus.
                        Kannst Du mir da weiterhelfen?
                        Und noch eine Frage zu "Node-Red":
                        Hat "Node-Red" eine eigene Ereignis- und Zeitsteuerung? Hintergrund der Frage ist, dass ich aktuell keine zeit- und ereignisgesteuerten Funktionen aufgerufen bekomme, weil keine Trigger mehr ausgelöst werden
                        warum das so ist, weiß ich nicht. Ich habe schon alle Adapter auf die Versionen aus dem stable-Repository umgestellt und nicht benötigte Adapter gelöscht, aber das hat nichts geholfen.
                        Hätte ich beim Einsatz von "Node-Red" das gleiche Problem?

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

                          @klausstoertebeker Also die Shelly-Gen1 Geräte sind noch viel einfacher zu bedienen. Ja Du musst das in den command topic schreiben - wobei Du bei den Bewegungsmeldern ja nichts zum steuern hast. Einstellungen kannst Du ggf. über das HTTP Interface bzw. die HTTP API machen (s. settings).

                          Hier erst mal die gesamte Doku: https://shelly-api-docs.shelly.cloud/gen1/#common-mqtt-commands

                          Bei den Shelly TRV hast Du mehrere Möglichkeiten: https://shelly-api-docs.shelly.cloud/gen1/#shelly-trv-mqtt

                          Du kannst entweder alle Thermostate auf einmal ansprechen (shellies/thermostat/0/command/ to address all TRVs) oder diese einzeln ansprechen ( or shellies/shellytrv-<id>/thermostat/0/command/ to address an individual device) .
                          Die command-topics sind auf der Seite eigentlich im Einzelnen alle aufgelistet, was Du machen kannst.

                          a3865a57-c799-4612-82fd-64f1d9bd021c-image.png

                          Also einfach
                          auch als topic unter dem command topic
                          shellies/shellytrv-<id>/thermostat/0/command/target_t und dort dann 22.

                          Also kein JSON - wie ich vorher geschrieben hatte!!!

                          Die command topic sind als generell immer direkt unter der zu steuernden Einheit:
                          7a610410-c8cf-464e-9dcc-307caa78eedb-image.png

                          Node-Red hat zwar eine eigene Steuerung, aber die basiert natürlich auch darauf, dass das Betriebssystem entsprechend meldet. Insofern ja und nein. Außerdem (s. unten) wird der NodeRed Adapter als Tochterprozess gestartet. Wenn der Iob mit allen Adaptern ein Problem macht, dann auch mit dem NodeRed Adapter.
                          Ansonsten wenn Du Hardware ansprichst, werden oft die gleichen NodeJS Bibliotheken verwendet, aber man kann beim Ansprechen der Hardware das als Ersatz zu einem Adapter sehen. Auch wenn ein Adapter nicht funktioniert, kann man es mit einer Node versuchen.
                          Quasi onBoard ist ja die Inject Node - die zeitereignisse verarbeiten kann, ansonsten kann ich Dir die cronplus Node empfehlen oder die chronos Nodes (sehr vielfältig) oder auch wenn man grafisch arbeiten möchte die light scheduler NOdes.

                          Hätte ich beim Einsatz von "Node-Red" das gleiche Problem?

                          Wenn Dein iobroker alle Adapter irgendwie tot gestellt hat, dann hättest Du auch mit dem NodeRed Adapter das gleiche Problem, da Du ja NodeRed nicht als Standalone Version betreibst. Was auch nicht sinnvoll ist, da Du dann nicht auf die iobroker Datenpunkte aus NodeRed zugreifen kannst. Sprich jeder Adapter im iobroker ist ja ein Tochterprozess des iobrokers.

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

                            @mickym
                            danke für die Info 🙂

                            Ich habe nur noch eine Frage zur command-Syntax. Wenn ich beispielsweise den target_C auf 22 Grad stellen will, was schreibe ich dann in den command-Datenpunkt:

                            target_C: 22
                            target_C = 22
                            target_C?value=22
                            
                            mickym 1 Reply Last reply Reply Quote 0
                            • mickym
                              mickym Most Active @KlausStoertebeker last edited by mickym

                              @klausstoertebeker Nein es heißt

                              1. target_t und nicht target_c und
                              2. zweitens ist das ein eigenter topic unter command - in dem Du nur die Zahl publishst.

                              Also unter

                              shellies/shellytrv-<id>/thermostat/0/command/target_t, also unter thermostat/0 machst Du ein Folder command und darunter ein Datenpunkt target_t und in den schreibst Du eine Zahl als Zieltemperatur.

                              In diesem Thread siehst Du dass target_t ein eigenes topic unter command ist:

                              eeda97b7-5104-4ec3-80c3-f6ba5f0d3a39-image.png

                              Das gilt aber wie gesagt nur für Gen1 Geräte, nicht für Gen3 Geräte

                              19ea2fdc-8e84-485f-a8bc-834183a221b1-image.png

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

                                @mickym
                                Moin moin mickym,
                                ich brauche nochmal Deine Hilfe. Ich möchte aus folgender JSON-formatierter Zeichenkette folgende Information extrahieren

                                {
                                  "src": "shellyplusi4-c4d8d554856c",
                                  "dst": "shellyplusi4-c4d8d554856c/events",
                                  "method": "NotifyEvent",
                                  "params": {
                                    "ts": 1742530641.42,
                                    "events": [
                                      {
                                        "component": "input:2",
                                        "id": 2,
                                        "event": "single_push",
                                        "ts": 1742530641.42
                                      }
                                    ]
                                  }
                                }
                                

                                folgende Information extrahieren:
                                wenn "events" vorhanden dann wenn "component" = "input:2" enthalten gib den Wert von "event" zurück.
                                Wie kann ich das mit dem JSON.parse() und/oder anderen JSON.xxxx machen? Ich möchte das in einen Datenpunkt von einem Alias packen, um den RPC-Event-Datenpunkt eines Shelly auszuwerten.

                                Hintergrund ist, dass ich nicht nur feststellen will, ob eine Taste gedrückt wurde (hier Taste an "input:2"), sondern auch, um was für einen Tastendruck es sich gehandelt hat (zum Beispiel "einfach", "zweifach", "dreifach", "lang"...)

                                Wäre das dann vielleicht sowas wie

                                if(JSON.parse(JSON.parse(val).params.events).component == "input:2") JSON.parse(JSON.parse(val).params.events).event; "";
                                
                                mickym 1 Reply Last reply Reply Quote 0
                                • mickym
                                  mickym Most Active @KlausStoertebeker last edited by mickym

                                  Ob das mit den events so gut ist, bezweifle ich mal - da das ein Array ist und wenn das event an anderer Stelle steht, dann schaust Du in die Röhre. Ich würde lieber bei Status schauen. "If" funktioniert in meinen Augen auch nicht.

                                  So wie es momentan funktioniert wäre so:

                                  JSON.parse(val).params.events[0].component === "input:2" ? JSON.parse(val).params.events[0].event  : ""
                                  

                                  Aber wie gesagt, dass geht nur wenn das event an 1. Stelle steht. Wenn das komplexer wird, würde ich doch lieber eine Logikamschine nehmen. So funktioniert es halt wenn das an erster Stelle im Array steht.

                                  Die Frage ist halt - gibt es dennn unter status kein "input:2"
                                  8beb3228-c48c-43be-9589-719308450eed-image.png

                                  Wie gesagt, so funktioniert es zwar - aber ich würde immer den status erst abfragen, bevor ich auf events reagiere. Dann kannst Dir auch die Bedingung sparen, da unter status "input:2" auch nur dann aktualisiert wird, wenn getriggert.

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

                                    @mickym

                                    Hallo mickym,
                                    ich kann den Status eines "input:x" offenbar nur auswerten, wenn dieser als "Switch" konfiguriert ist. Dann bekomme ich über "JSON.parse(val).state" den aktuellen Schalterstatus ("true" oder "false").
                                    Ich habe aber meine "input:x" als "Button" konfiguriert und wollte auch hier über die "JSON.parse(val).state" Funktion die Art des Tastendrucks auswerten. Aber offenbar ändert sich der "state" nicht, wenn der "input:x" als Button konfiguriert ist - der ist immer "null". Zumindest habe ich mir mal ein Skript geschieben, dass auf eine Statusänderung getriggert war. Aber das hat nie ausgelöst"...

                                    JSON.parse(val).params.events[0].component === "input:0" ? JSON.parse(val).params.events[0].event  : ""
                                    

                                    funktioniert prima, allerdings bekomme ich nun vom Javascript-Adapter ständig folgende Fehlermeldungen:

                                    javascript.0   2025-03-23 18:32:00.161  error  Invalid read function for "alias.0.Kueche_Deckenbeleuchtung_Hw-Schalter.Schalter": "JSON.parse(val).params.events[0].component === "input:1" ? JSON.parse(val).params.events[0].event : (null)" => Cannot read properties of undefined (reading '0')
                                    

                                    Ich schätze aber mal, dass das damit zusammenhängt, dass nicht bei jedem Event auch die Attribute "component" und "event" enthalten sind, oder? Kann man diese Fehler irgendwie abfangen, indem man die read-Funktion anpasst?

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

                                      @klausstoertebeker sagte in Shelly-Geräte mit MQTT-Adapter steuern:

                                      Ich schätze aber mal, dass das damit zusammenhängt, dass nicht bei jedem Event auch die Attribute "component" und "event" enthalten sind, oder?

                                      Ja - deswegen ist events auch ungeeignet. Du sollst unter status den Datenpunkt auswerten. Ein Button hat KEINEN Zustand - deswegen ist er in der Regel true. Das heißt hier prüft man nur auf Aktualisierung.

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

                                        @mickym

                                        Bei mir sind die Buttons "null" - siehe hier:

                                        Bildschirmfoto vom 2025-03-23 18-45-26.png

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

                                          @klausstoertebeker und bei denn switches?

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

                                            @mickym

                                            Ob die Switches an oder aus sind, siehst Du am Attribut "output": "true" = an...
                                            Und ich muss Dir recht geben: Der Status der "input:x" wechselt von "null" auf "true", wenn er gedrückt wird - mea culpa! Vermutlich hat mein damaliges Skript nicht reagirt, weil ich nicht auf einen String sondern auf einen Boolean verglichen habe.

                                            Kann man diese Abfrage auch irgendwie in die Alias-read-Funktion packen? Vielleicht in der folgenden Art:

                                            JSON.parse(mqtt.0.shellyplus2pm-d48afc7dbd1c.status.input:0).state === "true" ? JSON.parse(val).params.events[0].event  : "null"
                                            
                                            mickym 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

                                            777
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            52
                                            3129
                                            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