Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Lampe gleichzeitig als publish und subscribe?

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Lampe gleichzeitig als publish und subscribe?

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      HomeSweetHome last edited by

      Hallo,

      ich habe zur Implementierung des PubSub Cliet in Verbindung mit dem ioBroker eine Frage. Die Kommunikation für Sensoren (Out) und Aktoren (In) ist mir mir klar

            // Once connected, publish an announcement...
            client.publish("outTopic", "hello world");
            // ... and resubscribe
            client.subscribe("inTopic");
      

      Doch wie setze ich fogendes um, ohne ein DeadLock zu erzeugen. Beispiel: Mein IoT Gerät hat ein Taster, ein Relais und eine Lampe. Die Lampe soll per ioBroker als auch mit dem Taster aktiviert werden. Die Lampe soll ihren Status per MQTT zurückmelden - damit in Lampe In und Out bzw. publish und subscripe (gleicher Pfad?)
      Mein Ansatz: A. Die MQTT Abfrage in die callback Routine für Lampe ein. B. Taste Auslesen und in der Tasten Routine

            // Once connected, publish an announcement...
            client.publish("Lampe", "Aus");
            // ... and resubscribe
            client.subscribe("Lampe");
      
      client.publish("Lampe", msg);
      

      Funktioniert das Vorgehen "ohne Nebenwirkung". Eine Testumsetzung hat bisher funktioniert. Würde mich über Rückmeldung freuen.

      1 Reply Last reply Reply Quote 0
      • H
        HomeSweetHome last edited by

        Nachdem ich auf die Frage keine Antwort bekommen habe, gehe ich davon aus, dass ich mich nicht richtig ausgedrückt habe. Meine Befürchtung ist bzw. war, dass wenn die gleiche Nachricht als publish und subscripe deklariert ist eine Endlosschleife entsteht.

        1. Gleiche Nachricht als publish und subscripe
          Taste am Dev published Nachricht, ioBroker empfängt den neuen Weit, speichert und published seinerseits den Wert neu. Hier sollte die Kette zuende sein. Also ein Denkfehler.

        2. Rücksenden des gesetzten Wertes bei Verletzung des Wertebereich
          Eine andere Sache hat mich beschäftigt. Mein Dev empfängt einen Wert "Mode" der den Wertebereich 0..5 hat. Empfängt Dev den flaschen Wert, so soll bei zu klein der Min Wert (0) bei zu groß Wert (5) gesetzt werden.

        void MQTT_Callback(char* topic, byte* payload, unsigned int length) 
        {
          String value = "";
          for (int i=0;i<length;i++) {
              value += (char)payload[i];
          }
        
          if( strcmp( topic,"WeMosDev1/Mode")==0 )
          {
            Value = value.toInt();
        
            if( InRage( Valie,0,5 )==false )
            {
              Value = MinMax( Value,0,5 );
              snprintf( MQTT_msg,50,"%d",iFANPWM_Mode );
              MQTT_Client.publish( "WeMosDev1/Mode",Value );
            }
        

        Seht ihr hier Schwierigkeiten?

        H 1 Reply Last reply Reply Quote 0
        • H
          HomeSweetHome @HomeSweetHome last edited by

          @HomeSweetHome said in Lampe gleichzeitig als publish und subscribe?:

          Nachdem ich auf die Frage keine Antwort bekommen habe, gehe ich davon aus, dass ich mich nicht richtig ausgedrückt habe. Meine Befürchtung ist bzw. war, dass wenn die gleiche Nachricht als publish und subscripe deklariert ist eine Endlosschleife entsteht.

          1. Gleiche Nachricht als publish und subscripe
            Taste am Dev published Nachricht, ioBroker empfängt den neuen Weit, speichert und published seinerseits den Wert neu. Hier sollte die Kette zuende sein. Also ein Denkfehler.

          2. Rücksenden des gesetzten Wertes bei Verletzung des Wertebereich
            Eine andere Sache hat mich beschäftigt. Mein Dev empfängt einen Wert "Mode" der den Wertebereich 0..5 hat. Empfängt Dev den flaschen Wert, so soll bei zu klein der Min Wert (0) bei zu groß Wert (5) gesetzt werden.

          void MQTT_Callback(char* topic, byte* payload, unsigned int length) 
          {
            String value = "";
            for (int i=0;i<length;i++) {
                value += (char)payload[i];
            }
          
            if( strcmp( topic,"WeMosDev1/Mode")==0 )
            {
              Value = value.toInt();
          
              if( InRage( Valie,0,5 )==false )
              {
                Value = MinMax( Value,0,5 );
                snprintf( MQTT_msg,50,"%d",Value);
                MQTT_Client.publish( "WeMosDev1/Mode",Value );
              }
          

          Seht ihr hier Schwierigkeiten?

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          933
          Online

          31.6k
          Users

          79.4k
          Topics

          1.3m
          Posts

          1
          3
          185
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo