Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Tuya Thermostat soll GPIO Klemme steuern

    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

    Tuya Thermostat soll GPIO Klemme steuern

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

      Hallo liebe Forengemeinde,

      ich habe irgendwie bei mir so ein bisschen den Faden verloren.

      Vielleicht könnt ihr mir weiterhelfen.

      Ich möchte gerne wenn mein Thermostat auf Open geht, das der GPIO auf FALSE geht und wenn es auf Close geht das der GPIO auf TRUE schaltet. Da ich in der Vergangenheit immer das Problem hatte, das selbst wenn er laut IOB auf TRUE steht. War die Hardware immer noch auf FALSE. Das ganze hatte ich bei Wertänderung immer nur durchgeführt. Jetzt soll das ganze im Interval von 5 Minuten passieren ( Test gerade auf 10 s). Aber ich sicher gehen kann, das er dann auch irgendwann mal schaltet.

      Aber ich habe den Eindruck das ich hier den verkehrten Datentyp nehme.

      Wer kann mir hier helfen ? Wo liegt der Fehler ?

      // Funktion zur Überprüfung und Aktualisierung des GPIO-Werts
      async function updateGPIO() {
          // Den aktuellen Wert von tuya.0.70412616a4e57c975a09.36 abrufen
          let tuyaValue = getState("tuya.0.70412616a4e57c975a09.36").val;
      
          // Protokollieren des aktuellen Werts
          console.log("Aktueller Wert von tuya.0.70412616a4e57c975a09.36:", tuyaValue);
      
          // Überprüfen, ob der Wert gültig ist
          if (String(tuyaValue) === "Close(1)") {
              // Wenn der Wert "Close" ist, setzen wir GPIO auf TRUE
              setState("rpi2.0.gpio.11.state"/*GPIO 11*/, true);
              console.log("GPIO auf TRUE gesetzt.");
          } else if (String(tuyaValue) === "Open(0)") {
              // Wenn der Wert "Open" ist, setzen wir GPIO auf FALSE
              setState("rpi2.0.gpio.11.state"/*GPIO 11*/, false);
              console.log("GPIO auf FALSE gesetzt.");
          } else {
              // Wenn der Wert ungültig ist, geben wir eine Fehlermeldung aus
              console.error("Ungültiger Wert für tuya.0.70412616a4e57c975a09.36:", tuyaValue);
          }
      }
      
      // Die Funktion updateGPIO initial ausführen
      updateGPIO();
      
      // Alle zwei Minuten die Funktion updateGPIO ausführen
      setInterval(updateGPIO, 10000);
      
      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Zimbl last edited by paul53

        @Zimbl
        Es sieht so aus, als liefere der DP "tuya.0.70412616a4e57c975a09.36" die Zahlenwerte 0 und 1 für "Open" und "Close". Dann genügt es, daraus einen booleschen Wert zu machen.

                setState("rpi2.0.gpio.11.state"/*GPIO 11*/, !!tuyaValue);
        

        Weshalb ein Intervall anstelle eines Triggers auf "tuya.0.70412616a4e57c975a09.36"?

        const idTuya = 'tuya.0.70412616a4e57c975a09.36';
        const idGPIO = 'rpi2.0.gpio.11.state'/*GPIO 11*/;
        
        // Funktion zur Überprüfung und Aktualisierung des GPIO-Werts
        function updateGPIO(tuyaValue) {
            // Protokollieren des aktuellen Werts
            console.log("Aktueller Wert von tuya.0.70412616a4e57c975a09.36: " + tuyaValue);
         
            // Überprüfen, ob der Wert gültig ist
            if (tuyaValue === 1 || tuyaValue === 0) {
                setState(idGPIO, !!tuyaValue);
            } else {
                // Wenn der Wert ungültig ist, geben wir eine Fehlermeldung aus
                console.error("Ungültiger Wert für tuya.0.70412616a4e57c975a09.36: " + tuyaValue);
            }
        }
         
        // Die Funktion updateGPIO initial ausführen
        updateGPIO(getState(idTuya).val);
         
        on(idTuya, function(dp) {
            updateGPIO(dp.state.val);
        });
        
        Z 1 Reply Last reply Reply Quote 0
        • Z
          Zimbl @paul53 last edited by

          @paul53

          Ja, ich hatte an ein Intervall gedacht, denn gelegentlich wird der Befehl auf meinem GPIO (Hardware) nicht umgesetzt. Im IoBroker wird zwar angezeigt, dass beispielsweise TRUE sein sollte, aber in der Hardware bleibt es weiterhin auf 0 bzw. FALSE

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

          Support us

          ioBroker
          Community Adapters
          Donate

          399
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

          2
          3
          115
          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