NEWS

  • Starter

    Hallo zusammen
    Ich habe für meinen Wohnzimmerstoren ein Skrypt (in Blockly) gemacht. Grundsätzlich funktioniert es, doch teilweise erhalte ich alle 15min eine Meldung das der Storen auf 100% geöffnet wurde und dann wieder auf 30%... dies wollte ich eigentlich mit der Variabel Auto_ausgelöst verhindern..

    Seht ihr bei meinem Skript fehler / Optimierungsmöglichkeiten

    Danke und Gruss

    Screenshot 2020-07-05 at 23.10.38.png ![alt text](image url)

    als code:

    var timeout5, timeout3, timeout, timeout2, timeout6, Auto_ausgel_C3_B6st, timeout4;
    
    /**
     * Beschreibe diese Funktion …
     */
    function Beschattungsprozess() {
      setState("shelly.0.SHSW-25#BA6DC5#1.Shutter.Position"/*Position*/, 29);
      timeout5 = setTimeout(function () {
        setState("shelly.0.SHSW-25#BA6DC5#1.Shutter.Position"/*Position*/, 30);
        console.log((['Der linker Storen ist zu: ',getState("shelly.0.SHSW-25#BA6DC5#1.Shutter.Position").val,'geöffnet'].join('')));
        Telegrammeldung();
        timeout4 = setTimeout(function () {
          Auto_ausgel_C3_B6st = 1;
          (function () {if (timeout4) {clearTimeout(timeout4); timeout4 = null;}})();
        }, 1800000);
        (function () {if (timeout5) {clearTimeout(timeout5); timeout5 = null;}})();
      }, 60000);
    }
    
    /**
     * Beschreibe diese Funktion …
     */
    function Telegrammeldung() {
      // Mitteilung an Telegram
      timeout3 = setTimeout(function () {
        sendTo("telegram", "send", {
            text: (['Der linke Storen ist zu: ',getState("shelly.0.SHSW-25#BA6DC5#1.Shutter.Position").val,'% geöffnet!'].join(''))
        });
        (function () {if (timeout3) {clearTimeout(timeout3); timeout3 = null;}})();
      }, 40000);
    }
    
    /**
     * Beschreibe diese Funktion …
     */
    function Aufmachen_voll() {
      setState("shelly.0.SHSW-25#BA6DC5#1.Shutter.Position"/*Position*/, 100);
      console.log((['Der linker Storen ist zu: ',getState("shelly.0.SHSW-25#BA6DC5#1.Shutter.Position").val,'geöffnet!'].join('')));
      Telegrammeldung();
      timeout6 = setTimeout(function () {
        Auto_ausgel_C3_B6st = 0;
        (function () {if (timeout6) {clearTimeout(timeout6); timeout6 = null;}})();
      }, 600000);
    }
    
    
    // Manuelle Steuerung
    on({id: "EigeneDatenpunkte.0.Storensteuerung"/*Storensteuerung*/, change: "ne"}, function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      if ((obj.state ? obj.state.val : "") != getState("shelly.0.SHSW-25#BA6DC5#1.Shutter.Position").val) {
        setStateDelayed("shelly.0.SHSW-25#BA6DC5#1.Shutter.Position"/*Position*/, (obj.state ? obj.state.val : ""), 2000, false);
        Telegrammeldung();
      }
    });
    
    // Automatische Steuerung bei Sonnenlicht
    on({id: "deconz.0.Sensors.25.lux"/*LightLevel 25 lux*/, change: "ne"}, function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      if ((obj.state ? obj.state.val : "") > 60000 && getState("shelly.0.SHSW-25#BA6DC5#1.Shutter.Position").val >= 100 && compareTime("13:30", "18:00", "between") && getState("deconz.0.Sensors.10.temperature").val > 18 && getState("deconz.0.Sensors.13.temperature").val > 23) {
        timeout = setTimeout(function () {
          if ((obj.state ? obj.state.val : "") > 55000 && getState("shelly.0.SHSW-25#BA6DC5#1.Shutter.Position").val >= 100 && getState("deconz.0.Sensors.13.temperature").val > 23) {
            Beschattungsprozess();
            (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
          } else {
            (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
          }
        }, 300000);
      }
    });
    
    // Automatische Steuerung auf
    on({id: "deconz.0.Sensors.25.lux"/*LightLevel 25 lux*/, change: "ne"}, function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      if (Auto_ausgel_C3_B6st == 1 && (obj.state ? obj.state.val : "") < 45000 && getState("shelly.0.SHSW-25#BA6DC5#1.Shutter.Position").val != 100) {
        timeout2 = setTimeout(function () {
          if ((obj.state ? obj.state.val : "") < 45000 && getState("shelly.0.SHSW-25#BA6DC5#1.Shutter.Position").val != 100 || compareTime("18:31", "null", ">=")) {
            Aufmachen_voll();
            (function () {if (timeout2) {clearTimeout(timeout2); timeout2 = null;}})();
          } else {
            (function () {if (timeout2) {clearTimeout(timeout2); timeout2 = null;}})();
          }
        }, 1200000);
      }
    });
    

Suggested Topics

2.4k
Online

35.3k
Users

41.2k
Topics

567.1k
Posts