Skip to content
  • 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
Logo
  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.1k

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

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

[gelöst] Datenpunk in MQTT publishen mit Bedingung

Scheduled Pinned Locked Moved JavaScript
8 Posts 2 Posters 226 Views 2 Watching
  • 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.
  • ? Offline
    ? Offline
    A Former User
    wrote on last edited by A Former User
    #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 Reply Last reply
    0
    • ? A Former User

      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 Online
      CodierknechtC Online
      Codierknecht
      Developer Most Active
      wrote on last edited by
      #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 8.2.4 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi + dies & das
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      ? 1 Reply Last reply
      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
        A Former User
        wrote on last edited by
        #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 Reply Last reply
        0
        • ? A Former User

          @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 Online
          CodierknechtC Online
          Codierknecht
          Developer Most Active
          wrote on last edited by
          #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 8.2.4 LXC|8 GB|Core i7-6700
          HmIP|ZigBee|Tasmota|Unifi + dies & das
          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

          CodierknechtC 1 Reply Last reply
          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 Online
            CodierknechtC Online
            Codierknecht
            Developer Most Active
            wrote on last edited by
            #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 8.2.4 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi + dies & das
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            ? 1 Reply Last reply
            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
              A Former User
              wrote on last edited by
              #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 Replies Last reply
              0
              • ? A Former User

                @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 Online
                CodierknechtC Online
                Codierknecht
                Developer Most Active
                wrote on last edited by
                #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 8.2.4 LXC|8 GB|Core i7-6700
                HmIP|ZigBee|Tasmota|Unifi + dies & das
                Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                1 Reply Last reply
                0
                • ? A Former User

                  @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 Online
                  CodierknechtC Online
                  Codierknecht
                  Developer Most Active
                  wrote on last edited by
                  #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 8.2.4 LXC|8 GB|Core i7-6700
                  HmIP|ZigBee|Tasmota|Unifi + dies & das
                  Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                  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

                  765

                  Online

                  32.4k

                  Users

                  81.4k

                  Topics

                  1.3m

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

                  • Don't have an account? Register

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