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. ioBroker Allgemein
  4. MQTT mit Shelly PRO Dimmer 2PM

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    533

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

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

MQTT mit Shelly PRO Dimmer 2PM

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
7 Beiträge 2 Kommentatoren 573 Aufrufe 2 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.
  • Berges01B Offline
    Berges01B Offline
    Berges01
    schrieb am zuletzt editiert von Berges01
    #1

    Wenn ich meinen Dimmer mittels MQTT einbinde, so weis ich nicht wie ich den per MQTT steuern soll.
    Mit dem hier habe ich es schon auf allen möglichen Datenpunkten versuch !
    {
    "id": 0,
    "brightness": 100,
    "turn": "on"
    }
    Das hatte auch beim Dimmer2 funktioniert, nur fehlen hier bei dem "PRO Dimmer 2PM" scheinbar einige Datenpunkte.
    Eine Dokumentation für genau das Relais habe ich auch nicht gefunden.
    Beispiele leider auch nicht.

    PS:
    Auch das bei dem Datenpunkt"rpc" brachte keinen Erfolg.
    {
    "method": "Light.Set",
    "params": {
    "id": 0,
    "brightness": 100,
    "on": true
    }
    }

    F.B.

    M 1 Antwort Letzte Antwort
    0
    • Berges01B Berges01

      Wenn ich meinen Dimmer mittels MQTT einbinde, so weis ich nicht wie ich den per MQTT steuern soll.
      Mit dem hier habe ich es schon auf allen möglichen Datenpunkten versuch !
      {
      "id": 0,
      "brightness": 100,
      "turn": "on"
      }
      Das hatte auch beim Dimmer2 funktioniert, nur fehlen hier bei dem "PRO Dimmer 2PM" scheinbar einige Datenpunkte.
      Eine Dokumentation für genau das Relais habe ich auch nicht gefunden.
      Beispiele leider auch nicht.

      PS:
      Auch das bei dem Datenpunkt"rpc" brachte keinen Erfolg.
      {
      "method": "Light.Set",
      "params": {
      "id": 0,
      "brightness": 100,
      "on": true
      }
      }

      M Online
      M Online
      MCU
      schrieb am zuletzt editiert von
      #2

      @berges01 Wäre es mit dem Shelly-adapter nicht einfacher?

      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

      Berges01B 1 Antwort Letzte Antwort
      0
      • M MCU

        @berges01 Wäre es mit dem Shelly-adapter nicht einfacher?

        Berges01B Offline
        Berges01B Offline
        Berges01
        schrieb am zuletzt editiert von
        #3

        @mcu
        Tja das hatte ich mir auch so gedacht.
        Aber auf dem 2PM läuft ein Script das Topcs erzeugt und das geht nicht mit dem Shelly-MQTT der lässt keine eigenen Topics zu.
        Somit muss ich auf dem MQTT ausweichen und rumbasteln.

        Hier das Script :

        // Script für den SHELLY Pro Dimmer 2PM Taster-Anschluss
        // Tastendruck SW1-SW4 auswerten 0-2 und diese dem MQTT übergeben
        // Zählerbeeinflussung vom MQTT den Tastenzählern zuweisen
        // --------------------------------------------------------------
        //Variabeln deffinieren
        
        let CONFIG = {
          device_id: "",
          device_mac: "",
          device_model: "",
          fw_ver: "",
          topic_prefix: "",
          wifi_ip: "",
        };
        
        let Taste = [0,0,0,0]; //Tate SW1 - SW4
        let T_Name = ["Nr:1","Nr:2","Nr:3","Nr:4"]; //Name der Taste im MQTT
        
        function isConfigReady() {
          for (let key in CONFIG) {
            if (CONFIG[key] === "") return false;
          }
          return true;
        }
        
        Shelly.call("Shelly.GetDeviceInfo", null, function (info) {
          CONFIG.device_id = info.id;
          CONFIG.device_mac = info.mac;
          CONFIG.device_model = info.model;
          CONFIG.fw_ver = info.fw_id;
        });
        
        //Read ip from status
        Shelly.call("WiFi.GetStatus", null, function (status) {
          if (status.status === "got ip") {
            CONFIG.wifi_ip = status.sta_ip;
          }
        });
        
        //Monitor ip changes
        Shelly.addStatusHandler(function (status) {
          if (status.component === "wifi" && status.delta.status === "got ip") {
            CONFIG.wifi_ip = status.delta.sta_ip;
          }
        });
        
        //Read mqtt topic prefix
        Shelly.call("MQTT.GetConfig", null, function (config) {
          CONFIG.topic_prefix = config.topic_prefix;
        });
        
        
        // Eingänge abfragen und Tastendruck von 0 - 2 zählen
        Shelly.addEventHandler
        (
          function (event)
          // Event aktivieren
          {
            if(event.name==="input" && event.info.state === true)
            {
              let id = event.info.id; //id = Welcher Eingang
              if (id > -1 && id < 4) //SW1 - SW3
              {
                Taste[id] = Taste[id] + 1;
                if (Taste[id] === 3)
                {
                  Taste[id] = 0;
                }
                //print(deviceInfo.id,"/Taste/",T_Name[id],JSON.stringify(Taste[id]));
                MQTT.publish(CONFIG.topic_prefix + "/Taste/"+T_Name[id], JSON.stringify(Taste[id]));
              }
            }
          }
        )
        
        // Announcen die MQTT ankommen bearbeiten
        function announceHandler(topic, message) 
        {
        let kanal = 0;
          print("topic = ",topic,"   message = ",message);
          kanal = JSON.parse(topic.slice(topic.length - 1,topic.length)) -1; 
          if (message !== "0" && message !== "1" && message !== "2") return;
          Taste[kanal] = JSON.parse(message);
          MQTT.publish(CONFIG.topic_prefix + "/Taste/"+T_Name[kanal], message);
        }
        
        // Announcen im MQTT anmelden
        function subscribeToTopics() 
        {
          MQTT.subscribe(CONFIG.topic_prefix  + "/Taste/command_Nr_1", announceHandler);
          MQTT.subscribe(CONFIG.topic_prefix  + "/Taste/command_Nr_2", announceHandler);
          MQTT.subscribe(CONFIG.topic_prefix  + "/Taste/command_Nr_3", announceHandler);
          MQTT.subscribe(CONFIG.topic_prefix  + "/Taste/command_Nr_4", announceHandler);
        }
        
        
        //Start a timer that checks if all fields in CONFIG are populated
        let configReadyTimer;
        function connectToMQTT() {
          configReadyTimer = Timer.set(3000, true, function () {
            if (!isConfigReady()) return;
            if (!MQTT.isConnected()) return;
        
            subscribeToTopics();
            Timer.clear(configReadyTimer);
          });
        }
        
        connectToMQTT();
        
        MQTT.setDisconnectHandler(function () {
          connectToMQTT();
        });
        

        So meine Info.

        F.B.

        M 1 Antwort Letzte Antwort
        0
        • Berges01B Berges01

          @mcu
          Tja das hatte ich mir auch so gedacht.
          Aber auf dem 2PM läuft ein Script das Topcs erzeugt und das geht nicht mit dem Shelly-MQTT der lässt keine eigenen Topics zu.
          Somit muss ich auf dem MQTT ausweichen und rumbasteln.

          Hier das Script :

          // Script für den SHELLY Pro Dimmer 2PM Taster-Anschluss
          // Tastendruck SW1-SW4 auswerten 0-2 und diese dem MQTT übergeben
          // Zählerbeeinflussung vom MQTT den Tastenzählern zuweisen
          // --------------------------------------------------------------
          //Variabeln deffinieren
          
          let CONFIG = {
            device_id: "",
            device_mac: "",
            device_model: "",
            fw_ver: "",
            topic_prefix: "",
            wifi_ip: "",
          };
          
          let Taste = [0,0,0,0]; //Tate SW1 - SW4
          let T_Name = ["Nr:1","Nr:2","Nr:3","Nr:4"]; //Name der Taste im MQTT
          
          function isConfigReady() {
            for (let key in CONFIG) {
              if (CONFIG[key] === "") return false;
            }
            return true;
          }
          
          Shelly.call("Shelly.GetDeviceInfo", null, function (info) {
            CONFIG.device_id = info.id;
            CONFIG.device_mac = info.mac;
            CONFIG.device_model = info.model;
            CONFIG.fw_ver = info.fw_id;
          });
          
          //Read ip from status
          Shelly.call("WiFi.GetStatus", null, function (status) {
            if (status.status === "got ip") {
              CONFIG.wifi_ip = status.sta_ip;
            }
          });
          
          //Monitor ip changes
          Shelly.addStatusHandler(function (status) {
            if (status.component === "wifi" && status.delta.status === "got ip") {
              CONFIG.wifi_ip = status.delta.sta_ip;
            }
          });
          
          //Read mqtt topic prefix
          Shelly.call("MQTT.GetConfig", null, function (config) {
            CONFIG.topic_prefix = config.topic_prefix;
          });
          
          
          // Eingänge abfragen und Tastendruck von 0 - 2 zählen
          Shelly.addEventHandler
          (
            function (event)
            // Event aktivieren
            {
              if(event.name==="input" && event.info.state === true)
              {
                let id = event.info.id; //id = Welcher Eingang
                if (id > -1 && id < 4) //SW1 - SW3
                {
                  Taste[id] = Taste[id] + 1;
                  if (Taste[id] === 3)
                  {
                    Taste[id] = 0;
                  }
                  //print(deviceInfo.id,"/Taste/",T_Name[id],JSON.stringify(Taste[id]));
                  MQTT.publish(CONFIG.topic_prefix + "/Taste/"+T_Name[id], JSON.stringify(Taste[id]));
                }
              }
            }
          )
          
          // Announcen die MQTT ankommen bearbeiten
          function announceHandler(topic, message) 
          {
          let kanal = 0;
            print("topic = ",topic,"   message = ",message);
            kanal = JSON.parse(topic.slice(topic.length - 1,topic.length)) -1; 
            if (message !== "0" && message !== "1" && message !== "2") return;
            Taste[kanal] = JSON.parse(message);
            MQTT.publish(CONFIG.topic_prefix + "/Taste/"+T_Name[kanal], message);
          }
          
          // Announcen im MQTT anmelden
          function subscribeToTopics() 
          {
            MQTT.subscribe(CONFIG.topic_prefix  + "/Taste/command_Nr_1", announceHandler);
            MQTT.subscribe(CONFIG.topic_prefix  + "/Taste/command_Nr_2", announceHandler);
            MQTT.subscribe(CONFIG.topic_prefix  + "/Taste/command_Nr_3", announceHandler);
            MQTT.subscribe(CONFIG.topic_prefix  + "/Taste/command_Nr_4", announceHandler);
          }
          
          
          //Start a timer that checks if all fields in CONFIG are populated
          let configReadyTimer;
          function connectToMQTT() {
            configReadyTimer = Timer.set(3000, true, function () {
              if (!isConfigReady()) return;
              if (!MQTT.isConnected()) return;
          
              subscribeToTopics();
              Timer.clear(configReadyTimer);
            });
          }
          
          connectToMQTT();
          
          MQTT.setDisconnectHandler(function () {
            connectToMQTT();
          });
          

          So meine Info.

          M Online
          M Online
          MCU
          schrieb am zuletzt editiert von
          #4

          @berges01 Was kann man denn seitens der Shelly-APP dort einstellen bzgl Daten über MQTT?

          NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
          Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

          Berges01B 1 Antwort Letzte Antwort
          0
          • M MCU

            @berges01 Was kann man denn seitens der Shelly-APP dort einstellen bzgl Daten über MQTT?

            Berges01B Offline
            Berges01B Offline
            Berges01
            schrieb am zuletzt editiert von Berges01
            #5

            @mcu
            Ich verstehe deine Frage nicht !
            Auf dem Shelly-MQTT kann man nur das benutzen was der Shelly selber hergiebt.
            Eigene Topics kann man nicht per Script erzeugen und abfragen.
            Mein Script erzeugt 2 x 4 Topics und die Fragen Tastendrücke ab und übermitteln welche. Das ist für meine Aussenlichtsteuerung.
            1 x Taste = Licht an und nach 5min. wieder aus, noch mal Tasten Dauerlicht und ein weiterer Tastendruck schaltet das wieder aus.
            Das arbeitet mit einem Blockly im ioBroker zusammen.
            Das war nötig weil sonst die Latenszeit zu hoch ist und Tastendrücke nicht richtig vom Blockly erkannt wurden.
            Somit behalte ich die Kontrolle des Aussenlichtes (Für Einbruchalarm usw.) und nutze den Shelly zur schnellen erfassung.

            F.B.

            M 1 Antwort Letzte Antwort
            0
            • Berges01B Berges01

              @mcu
              Ich verstehe deine Frage nicht !
              Auf dem Shelly-MQTT kann man nur das benutzen was der Shelly selber hergiebt.
              Eigene Topics kann man nicht per Script erzeugen und abfragen.
              Mein Script erzeugt 2 x 4 Topics und die Fragen Tastendrücke ab und übermitteln welche. Das ist für meine Aussenlichtsteuerung.
              1 x Taste = Licht an und nach 5min. wieder aus, noch mal Tasten Dauerlicht und ein weiterer Tastendruck schaltet das wieder aus.
              Das arbeitet mit einem Blockly im ioBroker zusammen.
              Das war nötig weil sonst die Latenszeit zu hoch ist und Tastendrücke nicht richtig vom Blockly erkannt wurden.
              Somit behalte ich die Kontrolle des Aussenlichtes (Für Einbruchalarm usw.) und nutze den Shelly zur schnellen erfassung.

              M Online
              M Online
              MCU
              schrieb am zuletzt editiert von MCU
              #6

              @berges01 welche DPs stehen denn überhaupt in MQTT zur Verfügung?
              <device_id>/light/0/set

              Beispiel für ein Script mit dem man die Helligkeit setzen kann

              Shelly.addEventHandler(function (event, userData) {
                  if (event.name === "mqtt_in") {
                      let topic = event.topic;
                      let message = event.message;
              
                      if (topic === "home/dimmer/set") {
                          let payload = JSON.parse(message);
                          
                          if (payload.brightness !== undefined) {
                              Shelly.call("Light.Set", {
                                  id: 0,
                                  brightness: payload.brightness,
                                  on: true
                              });
                          }
                      }
                  }
              });
              
              

              NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
              Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

              Berges01B 1 Antwort Letzte Antwort
              0
              • M MCU

                @berges01 welche DPs stehen denn überhaupt in MQTT zur Verfügung?
                <device_id>/light/0/set

                Beispiel für ein Script mit dem man die Helligkeit setzen kann

                Shelly.addEventHandler(function (event, userData) {
                    if (event.name === "mqtt_in") {
                        let topic = event.topic;
                        let message = event.message;
                
                        if (topic === "home/dimmer/set") {
                            let payload = JSON.parse(message);
                            
                            if (payload.brightness !== undefined) {
                                Shelly.call("Light.Set", {
                                    id: 0,
                                    brightness: payload.brightness,
                                    on: true
                                });
                            }
                        }
                    }
                });
                
                
                Berges01B Offline
                Berges01B Offline
                Berges01
                schrieb am zuletzt editiert von Berges01
                #7

                @mcu
                9086692b-bbf5-4b75-8ddb-9292fc46ad73-image.png
                Ich glaube ich habe den Fehler,
                Ich habe den Blau markierten "rpc" benutzt mit dem Letzten "rpc" auf dem Bild und dem inhalt kann ich steuern.

                {
                  "method": "Light.Set",
                  "params": {
                    "id": 0,
                    "brightness": 100,
                    "on": true
                  }
                }
                

                Den Letzten (Im Bild) hatte ich erst übersehen.
                Scheint zu funktionieren.
                Ist aber recht aufwendig damit zu steuern muss man dann über Alias anpassen (Muss ich erst mal wieder sehen wie das ging).

                PS So sieht das aus wenn mein Script läuft:
                a7b94841-a82a-4684-8c89-d0e0341d6aee-image.png

                F.B.

                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
                FAQ Cloud / IOT
                HowTo: Node.js-Update
                HowTo: Backup/Restore
                Downloads
                BLOG

                728

                Online

                32.5k

                Benutzer

                81.8k

                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