Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. MQTT-Befehl und Status in demselben Objekt

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    927

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

MQTT-Befehl und Status in demselben Objekt

Scheduled Pinned Locked Moved ioBroker Allgemein
6 Posts 4 Posters 2.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E Offline
    E Offline
    ehanna
    wrote on last edited by
    #1

    Hallo alle,

    Bitte brauche ich deine Hilfe mit einem MQTT-Objekt, wo ich nicht in der Lage bin ein Objekt mit Befehls- und Statusthemen zu erstellen.

    Zum Beispiel habe ich ein Thema für ein Relais: Cmnd/Relais und ich habe die Zustände dieses Relais, das ist Stat/Relais. Ich bin in der Lage, das Relais über iobroker zu steuern, normalerweise unter Verwendung des Befehls topic (cmnd/relay), und den Status dieses Relais in einem anderen Objekt (stat/relay) zu sehen. aber wie ich beide Themen in einem Objekt zusammenführen kann, damit ich den Status dieses Objekts senden und abrufen kann.

    Vielen Dank im Voraus.

    1 Reply Last reply
    0
    • paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by paul53
      #2

      @ehanna:

      aber wie ich beide Themen in einem Objekt zusammenführen kann, damit ich den Status dieses Objekts senden und abrufen kann.

      Dafür kann ein zusätzlicher Datenpunkt (unter javascript.0) dienen, der Senden und Empfangen zusammenführt und ein Script.

      const idCmd = '...';  // Datenpunkt-ID für Kommando
      const idStat = '...'; // Datenpunkt-ID für Status
      const idVis = 'MQTT.Relais1'; // Datenpunkt für gleichzeitige Anzeige / Bedienung
      const js = 'system.adapter.javascript.' + instance;
      
      createState(idVis, getState(idStat).val, {type: 'boolean'}); // Datenpunkt erzeugen
      
      on({id: idVis, change: 'ne', fromNe: js}, function(dp) {
         setState(idCmd, dp.state.val);
      });
      
      on(idStat, function(dp) {
         setState(idVis, dp.state.val, true);
      });
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Reply Last reply
      0
      • E Offline
        E Offline
        ehanna
        wrote on last edited by
        #3

        Danke Paul.

        Und in diesem Fall welches Objekt sollte ich in der iobroker vis Taste zuweisen?

        1 Reply Last reply
        0
        • paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #4

          @ehanna:

          welches Objekt sollte ich in der iobroker vis Taste zuweisen? `
          Wenn du den Namen so übernimmst: "javascript.0.MQTT.Relais1".

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Reply Last reply
          0
          • H Offline
            H Offline
            hr1311
            wrote on last edited by
            #5

            Ich bin neu hier und noch blutiger IOBroker Anfänger. Programmierkenntnisse habe ich aber ausreichend.

            Ich habe dein Skript ausprobiert und zuerst hat es auch wunderbar funktioniert.

            Als ich nun eine neue ioBroker Installation aufsetzen musste bringe ich es dort einfach nicht mehr ans laufen.

            Irgendwie scheint der Subscribe auf den erstellten Datenpunkt nicht zu funktionieren. Selbst ein einfaches Log oder ein Subscribe ohne Pattern funktioniert nicht.

            Das Skript sieht wie folgt aus:

            const idCmd = 'MQTT.Mobil.Sonoff-Socket.PowerCmnd'; // Datenpunkt-ID für Kommando

            const idStat = 'MQTT.Mobil.Sonoff-Socket.PowerStatus'; // Datenpunkt-ID für Status

            const idVis = 'MQTT.Sonoff-Socket.Power'; // Datenpunkt für gleichzeitige Anzeige / Bedienung

            const js = 'system.adapter.javascript.' + instance;

            createState(idVis, getState(idStat).val=="ON"?true:false, {type: 'boolean'}); // Datenpunkt erzeugen

            on({id: idVis, change: 'ne', fromNe: js}, function(dp) {

            console.log("Send command");

            setState(idCmd, dp.state.val?"ON":"OFF");

            });

            on(idStat, function(dp) {

            console.log("Status changed");

            setState(idVis, dp.state.val=="ON"?true:false, true);

            });

            Das ändern des Datenpunktes über den MQTT Status funktioniert, nur wenn ich den Wert des Datenpunktes ändere, tut sich gar nichts.

            Eine Idee woran das liegen könnte?

            Danke im Voraus.

            1 Reply Last reply
            0
            • SwedishChefS Offline
              SwedishChefS Offline
              SwedishChef
              wrote on last edited by
              #6

              Probiere es damit:

              const idCmd = 'MQTT.Mobil.Sonoff-Socket.PowerCmnd'; // Datenpunkt-ID für Kommando
              const idStat = 'MQTT.Mobil.Sonoff-Socket.PowerStatus'; // Datenpunkt-ID für Status
              const id = 'MQTT.Sonoff-Socket.Power'; // Datenpunkt für gleichzeitige Anzeige / Bedienung
              const js = 'javascript.' + instance;
              const idVis = js + '.' + id;
              
              var state = (getState(idStat).val == "ON");
              createState(id, state, {type: 'boolean'}); // Datenpunkt erzeugen
              setState(idVis, state, true);  // beim starten setzen
              ...
              
              1 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate
              FAQ Cloud / IOT
              HowTo: Node.js-Update
              HowTo: Backup/Restore
              Downloads
              BLOG

              407

              Online

              32.6k

              Users

              82.2k

              Topics

              1.3m

              Posts
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Home
              • Recent
              • Tags
              • Unread 0
              • Categories
              • Unreplied
              • Popular
              • GitHub
              • Docu
              • Hilfe