Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Temperatursteuerung zuverlässiger gestalten

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Temperatursteuerung zuverlässiger gestalten

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

      Guten Morgen alle Zusammen,

      ich habe bei mir eine mit ZigBee und GPIO gesteuerte Temperaturregelung die öfters mal nicht so zuverlässig läuft.

      Die ZigBee Sensoren nehmen die Raumtemperatur auf und Steuern damit die GPIO I/O, was vom Skript auch soweit ganz gut läuft. Aber der GPIO wird gesetzt in der Software aber die Hardware führt das öfters mal nicht aus. Obwohl er gesetzt sein sollte. Woran kann das liegen, was kann ich dagegen tun ? Gibt es eine weitere Statusabfrage?

      Das wäre mein Skript.

      var FBH, Temperatur;
      
      
      FBH = getState("rpi2.0.gpio.10.state").val;
      on({id: "zigbee.0.00158d0007ed72a2.temperature"/*Temperature*/, change: "ne"}, async function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (getState("rpi2.0.temperature.soc_temp").val > 20) {
          Temperatur = parseFloat((obj.state ? obj.state.val : "")) + 0.4;
          if (Temperatur <= 21.4) {
            FBH = false;
          } else if (Temperatur >= 22) {
            FBH = true;
          }
        } else {
          FBH = true;
        }
        if (FBH != getState("rpi2.0.gpio.10.state").val) {
          setState("rpi2.0.gpio.10.state"/*GPIO 10*/, FBH);
        }
        console.log((['Temperatur :',Temperatur,'°C , FBH :',FBH].join('')));
      });
      
      

      Vielen Dank für event. Verbesserungen

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Zimbl last edited by

        @zimbl sagte: die Hardware führt das öfters mal nicht aus.

        Bleibt der GPIO-Wert dann unbestätigt?
        Man kann Wiederholungen von setState() mit verschiedenen Zeitabständen (z.B. 1 s, 5 s) vorsehen, die gestoppt werden, wenn der gesendete Wert bestätigt wird.

        var Temperatur, timer1, timer5;
        
        const idFBH = 'rpi2.0.gpio.10.state' ;
        var FBH = getState(idFBH).val;
        
        on('zigbee.0.00158d0007ed72a2.temperature', function (obj) {
          var value = obj.state.val;
          if (getState("rpi2.0.temperature.soc_temp").val > 20) {
            Temperatur = parseFloat(value) + 0.4;
            if (Temperatur <= 21.4) {
              FBH = false;
            } else if (Temperatur >= 22) {
              FBH = true;
            }
          } else {
            FBH = true;
          }
          if (FBH != getState(idFBH).val) {
            setState(idFBH, FBH);
            timer1 = setTimeout(function() {
                setState(idFBH, FBH);
            }, 1000); 
            timer5 = setTimeout(function() {
                setState(idFBH, FBH);
            }, 5000); 
          }
          console.log((['Temperatur: ',Temperatur,'°C , FBH: ',FBH ? 'Aus' : 'Ein'].join('')));
        });
        
        on({id: idFBH, ack: true}, function(dp) {
            if(dp.state.val == FBH) {
                clearTimeout(timer1);
                clearTimeout(timer5);
            }
        });
        
        Z 2 Replies Last reply Reply Quote 0
        • Z
          Zimbl @paul53 last edited by

          @paul53

          Vielen Dank Paul. Ich werde das mal testen und halte dich da auf dem laufenden.

          1 Reply Last reply Reply Quote 0
          • Z
            Zimbl @paul53 last edited by

            @paul53

            so ich habe das jetzt mal beobachtet, irgendwo liegt noch ein Fehler...?!?!?!
            Ich habe im Raum nun über 23 Grad...aber mein GPIO stand eben schon wieder auf FALSE...

            Wenn die Temperatur erreicht ist, sollte er auf TRUE stehen....

            Also im Protokoll war vermerkt FBH:AUS

            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @Zimbl last edited by

              @zimbl sagte: mein GPIO stand eben schon wieder auf FALSE... im Protokoll war vermerkt FBH:AUS

              Dann hast du wohl ein anderes Problem, das nichts mit dem Skript zu tun hat.

              Z 1 Reply Last reply Reply Quote 0
              • Z
                Zimbl @paul53 last edited by

                @paul53

                fehlt im neuen Skript nicht diese Funktion "async function (obj)" ?

                Weil wenn ZIGBEE sagt FALSE soll ja der GPIO TRUE sagen...

                oder stehe ich jetzt auf der Leitung ?

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @Zimbl last edited by paul53

                  @zimbl sagte: fehlt im neuen Skript nicht diese Funktion "async function (obj)" ?

                  Nein, "async" wird hier nicht benötigt. Du siehst ja an der Logausgabe, dass der richtige Wert gesendet wird.
                  Mach mal aus dem unteren Trigger ein Debug-Log:

                  on({id: idFBH}, function(dp) {
                      const from = dp.state.from.startsWith('system.adapter.javascript.') ? dp.state.c : dp.state.from;
                      log('FBH: ' + dp.state.val ? 'Aus' : 'Ein' + ', bestätigt: ' + dp.state.ack + ', Quelle: ' + from);
                      if(dp.state.val == FBH && dp.state.ack) {
                          clearTimeout(timer1);
                          clearTimeout(timer5);
                      }
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • Z
                    Zimbl last edited by

                    @paul53

                    ausgeführt.

                    Vielen Dank für deine Hilfe....
                    Melde mich sobald ich mehr Infos habe

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    947
                    Online

                    31.9k
                    Users

                    80.2k
                    Topics

                    1.3m
                    Posts

                    2
                    8
                    254
                    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