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-Befehl und Status in demselben Objekt

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

MQTT-Befehl und Status in demselben Objekt

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
6 Beiträge 4 Kommentatoren 2.4k Aufrufe
  • Ä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.
  • E Offline
    E Offline
    ehanna
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
      0
      • E Offline
        E Offline
        ehanna
        schrieb am zuletzt editiert von
        #3

        Danke Paul.

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

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • H Offline
            H Offline
            hr1311
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • SwedishChefS Offline
              SwedishChefS Offline
              SwedishChef
              schrieb am zuletzt editiert von
              #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 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

              777

              Online

              32.4k

              Benutzer

              81.5k

              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