MQTT für rules / jobs

  • Servus,

    ich brauch eine Lösung um mittels MQTT die Regeln zum Ein- und Ausschalten der shellys zu steuern. Ich weiß, wie man es mittels HTTP macht, aber ich brauch das für MQTT.

    Hat jemand eine Idee?

    Danke Peter

  • Hallo Peter,

    ein paar weitere Infos wären da nicht so schlecht um zu verstehen, wo es bei deiner Sache noch klemmt.

    Hast du denn, wenn du es "mittels HTTP" machst, ein übergeordnetes System dafür?

    Und hast du schon einen MQTT-Broker am Start? Den brauchst du in jedem Fall!

    Und wenn das alles passt, dann hängt es von der Generation der Shellies ab, die du Ein- und Ausschalten magst, wie das in MQTT aussieht...

    VG, Martin

  • Servus, gerne kann ich dir etwas mehr Info geben.

    Ich verwende openHAB als Smart Home Platform in meinem Hauptnetz (OH4 als docker container auf meinem Debian Server).

    Als MQTT Broker verwende ich Mosquitto (docker container am gleichen Debian Server).

    Viele Shellys sind über MQTT angebunden (Shellys der 1. und 2. Generation).

    Es gibt eine Außenstelle, die ein eigenes Netz hat (keine VPN Verbindung), wo ebenfalls einige Shellies im Einsatz sind und diese per MQTT mit dem Broker im Hauptnetz kommunizieren.

    Das Ganze funktioniert auch sehr gut. Jetzt hab ich die Herausforderung, dass ich in einem Shelly im Außennetz eine Schedule_Rule oder wie es jetzt heißt einen Job einzustellen. Das kann ich über HTTP statements auch perfekt machen, nur geht da natürlich nicht, wenn Sender und Empfänger nicht im gleichen Netz sind, über MQTT würde es aber gehen. Leider habe ich keine Möglichkeit gefunden, wie man diese rules über MQTT steuern kann.

    Wie gesagt, es geht nicht um das Ein- oder Ausschalten der Shelly Switches, dass funktioniert perfekt. Es geht darum eine Schedule_rule (Job) zu verändern.

    Hoffe damit ist es etwas klarer geworden.

    Danke für jede Hilfe, Peter

  • Hier findest du mehr dazu:

    RPC Channels | Shelly Technical Documentation
    Shellies support communication through multiple RPC channels. The number of simultaneous non-persistent RPC channels that can be opened on a Shelly is limited…
    shelly-api-docs.shelly.cloud

    MQTT ist nicht für peer to peer Kommunikation vorgesehen, was aber mit http gelingt.

    Meine Erfahrung in Node-RED ist folgende.

    Als workaround nutzt die Shelly Firmware in der MQTT Nutzlast (message, payload) einen Eintrag mit einer Absenderkennung, welche in der Antwort zu einer "Anfrage" im Topic genutzt wird.

    Wenn du diese etwas komplexe Nachricht-Struktur nicht nutzen möchtest, kannst du, zweite Shelly Generation vorausgesetzt, ein Skript hierfür verwenden. In einem solchen Skript kannst du deine bevorzugten Topics verwenden.

    Siehe auch die Dokumentation unter Scripts.

    In Skripten stehen MQTT Methoden wie MQTT.publish() und MQTT.subscribe() zur Verfügung.

    An Cloud-/Szenen-Benutzer (insbesondere für Regelungen): Was erwartest du, wenn Internet oder Cloud sabotiert werden? Nicht nur dafür meine kleine Skripteinführung  8)

    Die einzig existierende Konstante ist der Wandel. Oft liegt die größte Schwierigkeit darin, das Anliegen des Klienten zu verstehen.

  • Servus, in der Zwischenzeit habe ich selbst die Lösung gefunden. Bei den Geräten der 2.Gen kann man über MQTT das topic rpc verwenden. Über dieses topic kann man dann jobs anlegen, verändern, löschen etc. Anscheinend gibt es so etwas bei der 1.Gen. nicht.