Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Hardy

    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

    H
    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 1
    • Best 0
    • Groups 0

    Hardy

    @Hardy

    0
    Reputation
    1
    Profile views
    1
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Hardy Follow

    Latest posts made by Hardy

    • setStateDelayed - Fragen zur Funktion

      Servus zusammen,

      hab mich heute mal drangesetzt eine von einem Shelly gemeldete Luftfeuchte dazu zu nutzen, einen Luftentfeuchter ein- und auszuschalten. Habe leider mit Javascript absolut keine Erfahrung und eigentlich überhaupt keine Kenntnisse dazu.

      Hab dann zunächst versucht mit Blockly mir da was zusammenzubasteln, hat aber nicht funktioniert.

      Bin dann dazu übergegangen, ein kleines Script zu basteln, dass einen Datenpunkt (switch) je nach Feuchtigkeit beschreibt mit true (Entfeuchter ein) oder false (Entfeuchter aus).

      Mir ist allerdings nicht ganz klar, was setStateDelayed genau macht.
      Ich kann damit einen Wert zeitverzögert schalten - soweit, so gut. Wie funktioniert dieser Befehl aber in Detail? Wann und wie läuft die Zeit ab? Lasse ich den Timer bei jedem Aufruf neu starten, dann schaltet der Befehl meinen Ausgang nicht. Lasse ich den Timer nicht neu starten, dann habe ich das Problem, dass es sein kann, das der Ein- und Ausschaltbefehl zu undefinierten Zeitpunkten geschrieben werden.

      Ist es möglich, den Timer irgendwie zu löschen oder sich die bereits abgelaufene Zeit und die Restzeit anzeigen zu lassen?

      Hier mal noch das Script zum besseren Verständnis (ist noch nicht ganz fertig)

      /* Ein- / Ausschaltzeitpunkte und Verzögerung */
      const Einschaltpunkt = 65.0;
      const Ausschaltpunkt = 52.0;
      
      const Verzoegerung = 60000 * 1; // 60000 mSek * 1 = Minuten
      
      /* Ein- / Ausschaltzeiten */
      const ZeitStundenEin = 10;      // frühester Einschaltzeitpunkt
      const ZeitMinutenEin = 0;
      
      const ZeitStundenAus = 21;      // spätester Ausschaltzeitpunkt
      const ZeitMinutenAus = 0;
      
      /* DEBUG Ausgabe aktivieren */
      const DEBUG = true;
      
      /* Datum / Uhrzeit */
      let DatumUhrzeit = new Date();
      
      // --------------------------------------------------------------------------------
      
      while (true) {
          // Wert von Shelly umkopieren
          setState('0_userdata.0.Entfeuchter.Istwert' /* Istwert */, getAttr(getState('mqtt.0.shellyhtg3-dcda0cb73fe0.status.humidity:0').val, 'rh'), true);
          if (DEBUG) { console.info('Wert Shelly: ' + getState('0_userdata.0.Entfeuchter.Istwert').val); }
      
          // Wert auf Gültigkeit prüfen
          if (getState('0_userdata.0.Entfeuchter.Istwert').val != null)
          {
              // Einschalten
              if (getState('0_userdata.0.Entfeuchter.Istwert').val > Einschaltpunkt)
              {
                  if (DEBUG) { console.info('Einschalten wird gewünscht'); }
      
                  // Entfeuchter verzögert einschalten
                  setStateDelayed('shelly.0.SHPLG2-1#4E5D76#1.Relay0.Switch' /* Schalter */, true, Verzoegerung, false);
              }
      
              // Ausschalten
              if (getState('0_userdata.0.Entfeuchter.Istwert').val < Ausschaltpunkt)
              {
                  if (DEBUG) { console.info('Ausschalten wird gewünscht'); }
      
                  // Entfeuchter verzögert ausschalten
                  setStateDelayed('shelly.0.SHPLG2-1#4E5D76#1.Relay0.Switch' /* Schalter */, false, Verzoegerung, false);
              }
          }
      
        await wait(10000);
      }
      
      posted in JavaScript
      H
      Hardy
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo