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. Tuya Thermostat soll GPIO Klemme steuern

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    911

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Tuya Thermostat soll GPIO Klemme steuern

Geplant Angeheftet Gesperrt Verschoben JavaScript
3 Beiträge 2 Kommentatoren 221 Aufrufe 1 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.
  • Z Offline
    Z Offline
    Zimbl
    schrieb am zuletzt editiert von Zimbl
    #1

    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);
    
    paul53P 1 Antwort Letzte Antwort
    0
    • Z 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);
      
      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @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);
      });
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      Z 1 Antwort Letzte Antwort
      0
      • paul53P 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 Offline
        Z Offline
        Zimbl
        schrieb am zuletzt editiert von
        #3

        @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 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

        737

        Online

        32.6k

        Benutzer

        82.2k

        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