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. Skripten / Logik
  4. JavaScript
  5. [gelöst] Datenpunk in MQTT publishen mit Bedingung

NEWS

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

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

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

[gelöst] Datenpunk in MQTT publishen mit Bedingung

Geplant Angeheftet Gesperrt Verschoben JavaScript
8 Beiträge 2 Kommentatoren 228 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.
  • ? Offline
    ? Offline
    Ein ehemaliger Benutzer
    schrieb am zuletzt editiert von Ein ehemaliger Benutzer
    #1

    Hallo Zusammen,
    ich nutze schon seit einiger Zeit iobroker. Jedoch publishe ich Datenpunkte per MQTT um dieses Daten in einer anderen Smarthomezentrale zu nutzen.
    Jetzt möchte ich mich jetzt auch etwas mehr mit IOBroker beschäftigen und ggf. auch mal ein paar Logiken testen.

    Dazu möchte ich eine HUE GO per IO-Broker schalten. Die Daten dafür kommen über MQTT (zigbee2mqtt).

    Lesen der Datenpunkte klappt:

    function test() {
        var obj = JSON.parse(getState('mqtt.0.SmartHome.01_Buero.01_hue_go_1').val);
    
        if(obj.state == "OFF") setState('alias.0.test.testgerät.ON', false, true);  // DP-Typ: Logikwert
        else  setState('alias.0.test.testgerät.ON', true, true);
        setState('alias.0.test.testgerät.HUE', obj.color.hue, true);  // DP-Typ: Zahl
        
    }
    

    Nur das schreiben nicht:

    on({id: 'alias.0.test.testgerät.ON', change: "any"} , async function (obj) {
    
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
       
        if(value == "true") value = "ON";
        else value = "OFF"
        sendTo('mqtt.0', 'sendMessage2Client', {topic:"SmartHome/01_Buero/01_hue_go_1/set", message:`{"state":"${value}","transition":0}`})
    
    });
    

    Wenn ich jetzt über z.B. zigbee2mqtt die Lampe anschalte, geht diese sofort wieder aus. Aus io-Broker heraus passiert gar nichts.

    Wo ist denn da mein Denkfehler?

    Danke

    CodierknechtC 1 Antwort Letzte Antwort
    0
    • ? Ein ehemaliger Benutzer

      Hallo Zusammen,
      ich nutze schon seit einiger Zeit iobroker. Jedoch publishe ich Datenpunkte per MQTT um dieses Daten in einer anderen Smarthomezentrale zu nutzen.
      Jetzt möchte ich mich jetzt auch etwas mehr mit IOBroker beschäftigen und ggf. auch mal ein paar Logiken testen.

      Dazu möchte ich eine HUE GO per IO-Broker schalten. Die Daten dafür kommen über MQTT (zigbee2mqtt).

      Lesen der Datenpunkte klappt:

      function test() {
          var obj = JSON.parse(getState('mqtt.0.SmartHome.01_Buero.01_hue_go_1').val);
      
          if(obj.state == "OFF") setState('alias.0.test.testgerät.ON', false, true);  // DP-Typ: Logikwert
          else  setState('alias.0.test.testgerät.ON', true, true);
          setState('alias.0.test.testgerät.HUE', obj.color.hue, true);  // DP-Typ: Zahl
          
      }
      

      Nur das schreiben nicht:

      on({id: 'alias.0.test.testgerät.ON', change: "any"} , async function (obj) {
      
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
         
          if(value == "true") value = "ON";
          else value = "OFF"
          sendTo('mqtt.0', 'sendMessage2Client', {topic:"SmartHome/01_Buero/01_hue_go_1/set", message:`{"state":"${value}","transition":0}`})
      
      });
      

      Wenn ich jetzt über z.B. zigbee2mqtt die Lampe anschalte, geht diese sofort wieder aus. Aus io-Broker heraus passiert gar nichts.

      Wo ist denn da mein Denkfehler?

      Danke

      CodierknechtC Offline
      CodierknechtC Offline
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @darkness_08
      Müsste der 3. Parameter für das sendTo nicht ein string sein?
      Dann würde ich den vor der Verwendung über eine eigene Variable zusammenbauen.
      Da lässt sich dann zumindest mal per Log überprüfen, ob das auch alles passt.

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      ? 1 Antwort Letzte Antwort
      0
      • CodierknechtC Codierknecht

        @darkness_08
        Müsste der 3. Parameter für das sendTo nicht ein string sein?
        Dann würde ich den vor der Verwendung über eine eigene Variable zusammenbauen.
        Da lässt sich dann zumindest mal per Log überprüfen, ob das auch alles passt.

        ? Offline
        ? Offline
        Ein ehemaliger Benutzer
        schrieb am zuletzt editiert von
        #3

        @codierknecht
        Das sendTo funktioniert. Die HUE wird ja immer wieder aus geschaltet. Es kommt also immer ein

        {"state":"OFF","transition":0} per MQTT
        

        Wenn aus einer anderen Anwendung ein

        {"state":"ON","transition":0}
        

        kommt, bügelt die funktion drüber und schaltet die HUE aus.

        CodierknechtC 1 Antwort Letzte Antwort
        0
        • ? Ein ehemaliger Benutzer

          @codierknecht
          Das sendTo funktioniert. Die HUE wird ja immer wieder aus geschaltet. Es kommt also immer ein

          {"state":"OFF","transition":0} per MQTT
          

          Wenn aus einer anderen Anwendung ein

          {"state":"ON","transition":0}
          

          kommt, bügelt die funktion drüber und schaltet die HUE aus.

          CodierknechtC Offline
          CodierknechtC Offline
          Codierknecht
          Developer Most Active
          schrieb am zuletzt editiert von
          #4

          @darkness_08
          OK, dann geht das also auch mit 'nem Objekt.

          Bau doch mal vor das sendTo eine Debug-Ausgabe ein.
          Da der Trigger ja auf jede Aktualisierung reagiert, befürchte ich, dass der Dir da in die Suppe spuckt.
          Ich würde da auf jeden Fall ein change: "ne" verwenden, um nur bei Änderungen zu reagieren.

          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
          HmIP|ZigBee|Tasmota|Unifi
          Zabbix Certified Specialist
          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

          CodierknechtC 1 Antwort Letzte Antwort
          0
          • CodierknechtC Codierknecht

            @darkness_08
            OK, dann geht das also auch mit 'nem Objekt.

            Bau doch mal vor das sendTo eine Debug-Ausgabe ein.
            Da der Trigger ja auf jede Aktualisierung reagiert, befürchte ich, dass der Dir da in die Suppe spuckt.
            Ich würde da auf jeden Fall ein change: "ne" verwenden, um nur bei Änderungen zu reagieren.

            CodierknechtC Offline
            CodierknechtC Offline
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von
            #5

            @codierknecht sagte in Datenpunk in MQTT publishen mit Bedingung:

            Bau doch mal vor das sendTo eine Debug-Ausgabe ein.

            Interessant wäre vor allem, welchen Wert value hat, bevor das sendTo ausgeführt wird.

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            ? 1 Antwort Letzte Antwort
            0
            • CodierknechtC Codierknecht

              @codierknecht sagte in Datenpunk in MQTT publishen mit Bedingung:

              Bau doch mal vor das sendTo eine Debug-Ausgabe ein.

              Interessant wäre vor allem, welchen Wert value hat, bevor das sendTo ausgeführt wird.

              ? Offline
              ? Offline
              Ein ehemaliger Benutzer
              schrieb am zuletzt editiert von
              #6

              @codierknecht

              Guten Morgen. Jetzt funktioniert es.
              Zum einen habe ich das change: "ne" verwendet.
              Zum anderen hatte ich einen Fehler in meiner IF-Abfrage:

              if(value == "true" ) value = "ON";
              

              das muss :

              if(value == true ) value = "ON";
              

              sein.

              Ich habe hier einen Boolean mit String verglichen.

              Danke für deine Hilfe.

              CodierknechtC 2 Antworten Letzte Antwort
              0
              • ? Ein ehemaliger Benutzer

                @codierknecht

                Guten Morgen. Jetzt funktioniert es.
                Zum einen habe ich das change: "ne" verwendet.
                Zum anderen hatte ich einen Fehler in meiner IF-Abfrage:

                if(value == "true" ) value = "ON";
                

                das muss :

                if(value == true ) value = "ON";
                

                sein.

                Ich habe hier einen Boolean mit String verglichen.

                Danke für deine Hilfe.

                CodierknechtC Offline
                CodierknechtC Offline
                Codierknecht
                Developer Most Active
                schrieb am zuletzt editiert von
                #7

                @darkness_08 sagte in Datenpunk in MQTT publishen mit Bedingung:

                Zum anderen hatte ich einen Fehler in meiner IF-Abfrage:

                Glatt übersehen :-(

                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                HmIP|ZigBee|Tasmota|Unifi
                Zabbix Certified Specialist
                Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                1 Antwort Letzte Antwort
                0
                • ? Ein ehemaliger Benutzer

                  @codierknecht

                  Guten Morgen. Jetzt funktioniert es.
                  Zum einen habe ich das change: "ne" verwendet.
                  Zum anderen hatte ich einen Fehler in meiner IF-Abfrage:

                  if(value == "true" ) value = "ON";
                  

                  das muss :

                  if(value == true ) value = "ON";
                  

                  sein.

                  Ich habe hier einen Boolean mit String verglichen.

                  Danke für deine Hilfe.

                  CodierknechtC Offline
                  CodierknechtC Offline
                  Codierknecht
                  Developer Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @darkness_08
                  Wenn das Thema dann erledigt ist, bearbeite bitte Deinen Eingangspost und setze ein "[gelöst] - " vor den Titel.

                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                  Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                  HmIP|ZigBee|Tasmota|Unifi
                  Zabbix Certified Specialist
                  Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                  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

                  561

                  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