Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Shelly per MQTT schalten geht nicht

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Shelly per MQTT schalten geht nicht

    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      WolfgangFB last edited by

      Sowohl über den MQTT Adapter als auch über den Shelly Adapter wird mir ein Shelly 1 richtig angezeigt. Ich sehe die Änderung wenn ich den Schalter per App oder Schalter änder, umgekehr aber kann ich von IO-Broker den Zustand des Shelly nicht ändern. Sprich das ganze geht momentan nur in einer Richtung.
      Woran könnte das liegen bzw. was kann ich da falsch eingestellt haben?

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

        @wolfgangfb Du musst den Wert unbestätigt schreiben und zwar in command unter dem relay/0

        2ec58ada-42a6-4ead-bc48-d3499a0c3e24-image.png

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

          @mickym
          Wenn der Wert darüber (also neben der "0") off ist kann ich tatsächlich mit "on" den Shelly einschalten (sowohl der Wert neben "0" als auch der Wert bei "command" ändern sich zu "on". Schalte ich aber über die Weboberflöche des Shellys (oder über einen an SW1 angschlossenen Schalter) den Shelly wieder aus wird nur der Wert neben "0" auf "off" geändert, der Wert neben "command" bleibt auf "on". Dann kann ich den Shelly nicht mehr einschalten, ich muss zuvor einmal command auf off und dann wieder auf on setzen.

          shelly_mqtt.jpg
          Unschön ist aauch, dass die Relais über die Shelly Cloud eingebunden den Datenpunkt "Switch" mit true/false haben, das ist viel einfacher in einem Skript zu verarbeiten als die Strings "on" und "off".
          Der Shelly, der nicht in der Cloud ist, wird ja auch im Shelly Adapter (scheinbar über mqtt) eingebunden, auch dort kann ich den Shelly nicht per Adapter schalten.

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

            @wolfgangfb Das command ist nur ein Befehlstopic, die 0 also der Ordner drüber enthält den Status. Wenn Du mit der App oder am Schalter schaltest - ändert sich der command Datenpunkt nicht. Der ist nur für Deine Befehle aus dem iobroker da.
            Den Status des Shellies entnimmtst Du NUR aus dem 0 Datenpunkt. Der command Datenpunkt hat für Dich ausser zum Schalten keine Bedeutung.

            Dann kann ich den Shelly nicht mehr einschalten, ich muss zuvor einmal command auf off und dann wieder auf on setzen.

            Doch das geht - Du darfst halt nichts mit irgendwie nur Änderungen oder so Zeug machen. Du kannst 10 mal das gleiche Kommando schicken. Wenn Du lieber mit true/false schaltest musst halt Alias oder Deine Logikmaschine machen. Der Shelly Adapter schickt intern auch on/off - weil das ist die Vorgabe des Herstellers. Lies halt wie es funktioniert:

            https://shelly-api-docs.shelly.cloud/gen1/#shelly1-1pm-mqtt

            Du kannst Dich entweder nach dem Hersteller richten - oder Du nimmst den Adapter - der interpretiert und übersetzt für Dich. Du musst Dich halt entscheiden.
            Es zwingt Dich niemand mqtt zu verwenden, wenn Du lieber mit dem Adapter arbeitest. Du bist halt beim Adapter immer darauf angewiesen, dass ein Gerät unterstützt wird. Und Du wirst Dich bei mqtt auch JSONs oder Objekten auseinandersetzen. Wenn Du das alles nicht willst, dann nimm den Adapter und gut ist.

            Alternativ kannst Du auch ein Alias erstellen:

            256d145c-f62e-4134-b259-7c083d5dec73-image.png

            ffd3e278-c649-4122-8da0-fa62bc256127-image.png

            und damit die gleiche Funktionalität wie mit dem Adapter erstellen. Du siehst hiermit kann ich auch mit true und false schalten. Zum Schreiben wird der command Datenpunkt genommen zum Lesen der 0 Datenpunkt.

            Du siehst Du hast also viele Möglichkeiten:

            • mqtt - wie vom Hersteller beschrieben
            • alias und mqtt - Beispiel gerade gepostet
            • shelly Adapter.
            W G 3 Replies Last reply Reply Quote 1
            • W
              WolfgangFB @mickym last edited by

              @mickym

              Und wie schalte ich dann z.B. aus VIS heraus ein Licht ein oder aus?

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

                @wolfgangfb Dann nimmst Du den Alias, da Du wahrscheinlich keine unterschiedlichen Punkte zu schreiben und lesen hast, den Shelly Adapter oder eine selbst erstellten Datenpunkt und Deine Logikmaschine.

                Also wenn Du mqtt nehmen willst, wohl am Besten einen Alias. Die Konvertierungsfunktionen habe ich Dir ja unten gepostet. Schreiben tust Du in dem command Datenpunkt - Lesen den 0 Datenpunkt. Ggf. musst Du den Expertenmodus einschalten, um die alias Datenpunkte unter alias.0 zu erstellen.

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

                  @mickym

                  Super, danke, funktioniert. Und wieder etwas gelernt, ich wusste weder, dass man zum lesen und schreiben unterschiedliche Datenpunkte verwenden kann noch das mit der Konvertierungsfunktion (das kann ich auch super für die Fensterzustände gebrauchen, Tiltwinkel in auf/zu umrechnen).

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

                    Moin,

                    ich stehe vor einem ähnlichen Problem. Ich habe einen bockigen Shelly, der per MQTT angebunden ist. Ich steuere das Ding in einem Script an, um alle Lampen abzuschalten.

                    Arbeite ich auf dem Shelly oder direkt in den Objekten und setze das Command auf "off", funktioniert die Kiste.
                    Arbeite ich per Script, nimmt der Shelly das Kommando oft nicht an. Es ändert sich nicht im Objektbrowser.

                    Nun habe ich es über den Alias versucht und sehe dort, dass "on_actual" den korrekten Status anzeigt, SET aber auf "false" steht, wenn die Lampe am Schalter geschaltet worden ist - und dann die Lampe natürlich nicht abschaltet, wenn ich erneut ein false sende. Und so richtig sinnvoll ist es dann ja auch nicht, vor jedem Absenden eines Kommandos an den Alias zu schauen wie er steht und dann "wenn false, dann erst true und dann false" zu setzen.

                    Wende ich SET falsch an?

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

                      @gutgut30 ich weiß zwar gerade nicht von was du gerade redest, den shelly schaltet man in der Gen1 über command und in der Gen2 über Switch: soweit ich das weiß. Der Status in der Gen1 direkt auf 0 als relay/0 über dem command angezeigt. Du brauchst 2 verschiedene Punkte wie unten zu schreiben und lesen. Dass der Status im set oder Setzen nichts mit dem aktuellen Zustand zu tun hast ist klar. Diese topic enthält immer nur den letzten Befehl, der abgesetzt wurde. Außerdem muss man halt aufpassen dass nicht mehrere Adapter schalten. Du solltest den überall rausnehmen, geschrieben was für ein Shelly das ist Gen1 oder Gen2 und dann implementieren. Jedenfalls macht es keinen Sinn die Shellie’s per mqtt nativ und per Adapter zu schalten.

                      a2f9f123-6448-4aec-82a2-6bf1e8eeb9ec-image.png

                      Grün: ist der Status
                      Gelb: das letzte Kommando

                      Kann natürlich unterschiedlich sein, wenn man den Schalter physisch oder mit der App schaltet.

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

                        @mickym
                        Dann ist das wohl ein Problem, wenn man ihn physisch schaltet. Denn dann hat man dieses Bild und schon war es das mit dem Schalten über die Objekte:
                        48f49bf7-590c-441f-8b3b-a63eb89d312e-image.png

                        Ich werde dann wohl doch auf den Shelly Adapter umziehen müssen, sofern der nicht in das gleiche Dilemma läuft. Ärgerlich 😞

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

                          @gutgut30 Quatsch - ich habe gezeigt wie man das mit dem Alias macht, mit unterschiedlichen Datenpunkten zu Lesen und Schreiben.

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

                          Zum Lesen den Relay0 Datenpunkt, zum Schreiben den Command Datenpunkt und auch die unterschiedlichen Konvertierungsfunktionen sind in dem Screenshot - mehr kann man glaub ich nicht zeigen. Wenn Du Fragen hast, dann frag - wenn Du lieber den Shelly Adapter nutzen willst, kannst Du das gerne tun, wenn nicht habe ich es in dem Beitrag gezeigt, wie es geht.

                          Wie gesagt, dass ist kein Grund deswegen den Shelly Adapter zu nutzen. In dem Beitrag unten zeigt der Alias dann nur nicht on/off sondern true/false zum Schalten und als Status an.

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

                            @mickym
                            Dein Posting habe ich gesehen und so habe ich es auch konfiguriert:

                            c5de9b80-7dbf-4fe3-b077-e4bc57057698-image.png

                            ON_Actual:
                            5a77bb92-c865-47bd-bc2f-11ab0ce92783-image.png

                            *SET
                            e4358672-f962-4704-bee2-f5ebad94627b-image.png

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

                              @gutgut30 Das ist doch verkehrt rum.

                              Du liest doch den Status aus relay.0
                              und schreibst den Status in relay.0.command

                              6ff04114-1be2-4502-bf41-043e04fb8950-image.png

                              und die Konvertierung hast Du auch nicht richtig abgeschrieben:

                              7470e582-fbd6-48e4-bf62-f0c06bbc2f29-image.png

                              Ausserdem mach das nicht mit dem "BLÖDEN" Geräteadapter sondern trage das in den Alias direkt in den Objekten ein.
                              Dieser Adapter macht Dir alles kaputt.

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

                                @mickym OMG - du hast Recht, ich hab lesen und schreiben vertauscht. Ich Idiot! Danke.

                                Die Konvertierung habe ich tatsächlich nicht aus diesem Thread, die Syntax sollte aber passen. Checke ich noch mal.

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

                                  @gutgut30 Na und schmeiß diesen Geräteadapter raus - der macht nur UNSINN. Mach das direkt im Alias Datenpunkt in den Objekten. Dieser Geräteadapter macht mehr kaputt, als er ganz macht. Das habe ich schon mehrfach ausprobiert - ICH kann nur abraten.

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

                                    @gutgut30 sagte in Shelly per MQTT schalten geht nicht:

                                    Die Konvertierung habe ich tatsächlich nicht aus diesem Thread, die Syntax sollte aber passen. Checke ich noch mal.

                                    ist nur umständlich, weil val == true ? - entspricht val ?

                                    Aber ich habe keine Ahnung warum ich alles da rein schreibe, wenn man es sich dann irgendwoher sucht. Aber am Schlimmsten ist der Geräteadapter - das ist wahrscheinlich auch wieder ein Video aus dem vorigen Jahrhundert.

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

                                      @mickym
                                      Bin das Spielchen gerade noch mal durch. Auch das klappt nicht. Liegt aber auch wieder am command, das auf off bleibt. Denn auch der Alias macht am Ende ja auch nichts anderes, als aus dem false ein off zu schreiben. Daher aber der command auf off bleibt wenn ich extern schalte, gewinne ich hier nichts.

                                      Also doch ein Adapter-Versuch 😞

                                      Edit: Alternativ setze ich den Shelly von Edge Switch auf Detached Switch und steure nur im iobroker. Nicht die eleganteste Lösung, aber dann würde immerhin alles über den command laufen und dieser immer korrekt sein.

                                      mickym 1 Reply Last reply Reply Quote -1
                                      • mickym
                                        mickym Most Active @gutgut30 last edited by mickym

                                        @gutgut30 Ich kann Dir nur sagen es geht. Vergiss den Device Adapter und mach es so wie ich beschrieben habe. Wenn Du den Schalter physisch betätigst, dann springt der relay.0 auf den Zustand um. Der command Datenpunkt wird im Alias nie angezeigt, in den wird nur geschrieben. Ich kann Dir nur sagen es funktioniert - ich habe es selbst ausprobiert.

                                        Und zwar gerade nochmal:

                                        WICHTIG ist, dass Du den Alias als Logikwert definierst. Wir können es gerne Schritt für Schritt durchgehen:

                                        61bf8da5-f47c-45f4-859e-e10a6678b482-image.png
                                        1b006486-400d-4885-818e-fceee2460e10-image.png

                                        30126282-ccc4-4837-836b-331cf57da9e7-image.png

                                        Ich hab da zwar toggle switch, aber das spielt keine Rolle.

                                        Also Fragen;

                                        1. Neuen Alias selbst unter 0.alias - ohne irgendwelche Adapter als Logikwert erstellt?
                                        2. relay/0 Datenpunkt zum Lesen im Alias Tab definiert?
                                        3. relay/0/command Datenpunkt zum Schreiben im Alias Tab definiert
                                        4. Konvertierungsfunktion beim Lesen:
                                        val == "on" ? true : false
                                        
                                        1. Konvertierungsfunktion beim Schreiben
                                        val ? "on" : "off"
                                        

                                        Wichtig ist, dass der Aliasdatenpunkt als Logikwert angelegt wurde.

                                        Wenn der Aliasdatenpunkt als Alias angelegt wurde, dann kannst Du keinen Text mehr eingeben:
                                        413f611f-0e33-4606-9dac-966e383e1972-image.png

                                        Und wie immer beim Schalten - darf man das ganz nur "unbestätigt" schalten - das heißt der Haken Bestätigt darf NIE gesetzt sein.

                                        Und egal welchen Schaltertyp (ausser detached) Du verwendest - relay/0 gibt immer den aktuellen Status des Relais aus (egal welcher Schaltertyp - und egal ob Du am Schalter, in einer App oder über VIS geschaltet hast).

                                        G E 2 Replies Last reply Reply Quote 0
                                        • G
                                          gutgut30 @mickym last edited by

                                          @mickym
                                          Ich hab es letztendlich genau so aufgebaut. Aber wie gesagt, wenn das Command bei einer externen Aktionen nicht umschaltet, dann kann auch der Alias da nichts machen.

                                          Ich hab das ganze mal mit einem anderen Shelly 2.5 verglichen. Der andere setzt den Command bei externer Aktion korrekt identisch auf den Wert aus 0. Und dann klappt das auch. Die Settings beider Shellys sind absolut gleich. Auch nach einem Factory Reset tanzt dieser eine leider aus der Reihe.

                                          Hab es jetzt mit einem Script gelöst, dass das Command identisch zum relay hält. Vielleicht hat der Shelly einfach einen weg, so gehts jetzt aber.

                                          64d0dcce-954f-4a03-afd8-d158c861634d-image.png

                                          Danke & frohe Tanne

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

                                            @mickym hallo könnte mir auch jemand helfen.
                                            Ich möchte auch shelly über mqtt adapter schalten.
                                            das Read funktion geht wenn ich den relai über den Web von shelly schalte, dann Aktualisiert sich das Datenpunkt , möchte ich aber über iobroker schalten geht es nicht habe den datenpunkt command nicht unter reali nur 0 befehl on oder off geht nicht.Muss ich den datenpunkt comman selber erstellen wenn ja wie???

                                            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

                                            323
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            25
                                            2981
                                            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