Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Yahka Sprinkler mit Zeitsteuerung

    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

    Yahka Sprinkler mit Zeitsteuerung

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Marsel @cash last edited by

      @cash Das hätte mir auch auffallen können 🙄 SORRY!!!

      Jetzt habe ich das Problem, wenn ich im Homekit die Aktivezeit einstelle und diese dann abgelaufen ist, das er dann nicht abschaltet. Die Zeit bleibt bei 00:00 stehen.

      LOG:
      4.jpg

      Bei Yahka sieht es jetzt so aus:
      5.jpg

      Was mir noch aufgefallen ist, wenn er Runterzählt dann Zeigt er es in Homekit sauber an. Wenn er jetzt aber Hochzählt dann sieht es nicht ganz so sauber aus. Der Datenpunkt wenn ich den dabei beobachte der Zählst vernünftig.

      IMG_1097.TRIM.MOV

      1 Reply Last reply Reply Quote 0
      • M
        Marsel @cash last edited by

        @cash So sieht jetzt sein Script bei mir aus.

        
        /**************************
        * Script Gartenbewässerung per Homekit schalten incl Timer
        *
        * 08.06.19 V1.00    Erste Version
        * 09.06.19 V1.01    Stoppuhr eingebaut wenn kein Countdown gestartet wurde
        * 10.06.19 V1.02    Logging optimiert und Variablen zum einfachen steuern eingebaut
        * 11.06.19 V1.03    Logging präzisiert
        *                   kleinere Syntaxfehler behoben
        *                   set_on_time hinzugefügt um Funktion zu deaktivieren
        * 13.06.19 V1.04    Logging reduziert
        *
        * der Ziel Status wird durch Homekit geändert
        * func_Status_Syncronisierung synronisiert den realen Status 
        * vom Magnetventil mit den beiden Pseudo Stati von Homekit
        * 0 = Bewässerung ist aus
        * 1 = Bewässerung ist eingeschaltet
        * wichtig der Ziel Status wird durch Homekit ohne ack:true geändert
        **************************/
        
        const logging = true;
        const debugging = false;
        
        const Stoppuhr_Dauer = 3600;       //Dauer in Sekunden wie lange die Stopuhr läuft max. 3600
        const Stoppuhr_Wasser_off = true;  //Schaltet das Magnetventil nach Ablauf der Stoppuhr automatisch aus
        const set_on_time = false;           //Wenn ein Countdown gesetzt wird wird die Dauer direkt im Gerät gesetzt
        
        //Variablen für Pushover
        const sendpush = false;     //true = verschickt per Pushover Nachrchten // false = Pushover wird nicht benutzt
        const pushover_Instanz0 =  'pushover.0';     // Pushover instance für Pio = 0
        const pushover_Instanz1 =  'pushover.1';     // Pushover instance für Pio = 1
        const pushover_Instanz2 =  'pushover.2';     // Pushover instance für Pio = 2
        const pushover_Instanz3 =  'pushover.3';     // Pushover instance für Pio = -1 oder -2
        let _prio = 1;
        let _titel = 'Bewässerung';
        let _message;
        let _device = 'TPhone'; 
        //var device = 'All'; 
        
        const id_Status = 'javascript.0.Timer.Ventil1.STATUS'/*Timer Ventil1 STATUS*/;
        const id_Ziel_Status = 'javascript.0.Timer.Ventil1.ZIEL_STATUS'/*Timer Ventil1 ZIEL STATUS*/;
        const id_Ist = 'javascript.0.Timer.Ventil1.IST'/*Timer Ventil1 IST*/;
        const id_Soll = 'javascript.0.Timer.Ventil1.SOLL'/*Timer Ventil1 SOLL*/;
        const id_Magnetventil = 'sonoff.0.Küchenzeile.POWER'/*Küchenzeile POWER*/;
        const id_Magnetventil_on_time = 'hm-rpc.0.LEQ0929723.1.ON_TIME'/*Wohnzimmer GSV-Licht:1 ON TIME*/;
        //const id_Magnetventil = 'hm-rpc.0.LEQ0929723.1.STATE'/*Wohnzimmer GSV-Licht:1 STATE*/;
        //const id_Magnetventil_on_time = 'hm-rpc.0.LEQ0929723.1.ON_TIME'/*Wohnzimmer GSV-Licht:1 ON TIME*/;
        
        let timer = null;
        
        function send_pushover (_device, _message, _titel, _prio) {
          // Version 4.00 vom 15.01.19
          var pushover_Instanz =  'pushover.0';
          if (_prio === 0){pushover_Instanz =  'pushover.0'}
          else if (_prio == 1){pushover_Instanz =  'pushover.1'}
          else if (_prio == 2){pushover_Instanz =  'pushover.2'}
          else {pushover_Instanz =  'pushover.3'}
              sendTo(pushover_Instanz, { 
              device: _device,
              message: _message, 
              title: _titel, 
              priority: _prio,
              retry: 60,
              expire: 600,
              html: 1
          }); 
        }
        
        function func_Ziel_Status(){
          var Ziel_Status =  getState(id_Ziel_Status).val;
          var Status = getState(id_Status).val;
          var Soll = Number(getState(id_Soll).val);
          var Ist = Soll;
          var Ist_real = getState(id_Ist).val;
        
          
          //Magnetventil soll geschlossen werden
          if(Ziel_Status === 0){
              if(timer){ 
                  clearInterval(timer); // Stopp Timer
                  timer = null;
                  if(debugging){
                      log('[DEBUG] '+'[Ziel_Status] ' +'Es läuft ein Timer. Magnetventil soll per Homekit ausgeschaltet werden');
                  }
              }
              if(Ist_real !== 0){
                  if(debugging){
                      log('[DEBUG] '+'[Ziel_Status] ' +'id_Ist ist nicht null und wird auf 0 gesetzt.');
                  }
                  setState(id_Ist,0,true);
              }
              if(Soll !== 0){
                  if(debugging){
                      log('[DEBUG] '+'[Ziel_Status] ' +'id_Soll ist nicht null und wird auf 0 gesetzt.');
                  }
                  setState(id_Soll,0,true);
              }
              if(Status == 1){
                  if(logging){
                      log('Magnetventil soll per Homekit geschlossen werden.');
                  }
                  setStateDelayed(id_Magnetventil,false,500);
                  setState(id_Status,0);
              }
              else{
                  if(debugging){
                      log('[DEBUG] '+'[Ziel_Status] ' +'Magnetventil wurde nicht über Homekit bedient (geschlossen)');
                  }
              }
        
          }
          //Magnetventil soll geöffnet werden werden
          else if(Ziel_Status === 1){
              if(Status === 0){
                  if(logging){
                      log('Magnetventil soll per Homekit geöffnet werden.');
                  }
                  setStateDelayed(id_Magnetventil,true,1000);
                  setState(id_Status,1);
        
                  if(Soll === 0){
                      log('Es wurde kein Countdown gestartet. Starte Stopuhr.');
                      if(timer){ 
                          clearInterval(timer); // Stopp Timer
                          timer = null;
                          if(debugging){
                              log('[DEBUG] '+'[Ziel_Status] ' +'Stoppuhr soll gestartet werden. Es existiert ein Timer. Der Timer wird abgebrochen.');
                          }
                      }
                      timer = setInterval(function() {
                          Ist++;
                          //if(debugging){
                          //    log('Countdown bei ' +Ist +' Sekunden');
                          //}    
                          setState(id_Ist,Ist);
                          if(Ist >= Stoppuhr_Dauer) {
                              if(debugging){
                                  log('[DEBUG] '+'[Ziel_Status] ' +'Stoppuhr für Magnetventil abgelaufen.');
                              }
                              clearInterval(timer);
                              timer = null;
                              setState(id_Ist, 0, true);
                      
                      
                              if(getState(id_Magnetventil).val){
                                  if(logging){
                                      log('Stoppuhr abgelaufen. Magnetventil ist offen. Evtl vergessen');
                                  }
                                  if(Stoppuhr_Wasser_off){
                                      if(logging){
                                          log('Magnetventil soll automatisch ausschalten.');
                                      }
                                      setState(id_Magnetventil,false,true);
                                  }
                                  //Push verschicken
                                  if(sendpush){
                                      _prio = 2;
                                      _message = 'Magnetventil ist immer noch offen. Vergessen?';
                                      send_pushover(_device, _message, _titel, _prio);
                                  } 
                              }
                              else{
                                  if(debugging){
                                      log('[DEBUG] '+'[Ziel_Status] ' +'Stopuhr abgelaufen Magnetventil war bereits ausgeschaltet');
                                  }
                              }
                          }   
                      }, 1000);
                  }
              }
              else{
                  if(debugging){
                      log('[DEBUG] '+'[Ziel_Status] ' +'Magnetventil wurde nicht über Homekit bedient (angeschaltet)');
                  }
              }
        
          }
          else{
              if(debugging){
                  log('[DEBUG] '+'[Ziel_Status] ' +'Fehler der Zielstatus ist ungleich 0 oder 1. Das darf eigentlich nicht passieren');
              }
          }
        }
        
        function func_Status_Syncroniserung(){
          var Status = getState(id_Status).val;
          var Ziel_Status = getState(id_Ziel_Status).val;
          var Magnetventil = getState(id_Magnetventil).val;
        
          if(Magnetventil){
              if(Status === 0){
                  setState(id_Status,1);
                  if(debugging){
                      log('[DEBUG] '+'[Status_Sync] ' +'Status war 0 wird auf 1 gesetzt, da das Magnetventil an ist');
                  }
                  
              }
              else{
                  if(debugging){
                      log('[DEBUG] '+'[Status_Sync] ' +'Status war bereits auf 1. Magnetventil ist an');
                  } 
              }
              if(Ziel_Status === 0){
                  setState(id_Ziel_Status,1);
                  if(debugging){
                      log('[DEBUG] '+'[Status_Sync] ' +'Magnetventil wurde nicht über Homekit eingeschaltet. Ziel_Status wird von 0 auf 1 geändert');
                  }
              }
              else{
                  if(debugging){
                      log('[DEBUG] '+'[Status_Sync] ' +'Ziel_Status war bereits auf true. Magnetventil wurde eingeschaltet'); 
                  }
              }
          }
          else{
              if(Status == 1){
                  setState(id_Status,0);
                  if(debugging){
                      log('[DEBUG] '+'[Status_Sync] ' +'Status war 1 und wird auf 0 geändert weil das Magnetventil aus ist');
                  }
                  
              }
              else{
                  if(debugging){
                      log('[DEBUG] '+'[Status_Sync] ' +'Status war bereits auf 0 nachdem das Magnetnvetil ausgeschaltet wurde'); 
                  }
              }
              if(Ziel_Status == 1){
                  setState(id_Ziel_Status,0);
                  if(debugging){
                      log('[DEBUG] '+'[Status_Sync] ' +'Magnetventil wurde nicht über Homekit ausgeschaltet. Ziel_Status wird von 1 auf 0 geändert');
                  }
              }
              else{
                  if(debugging){
                      log('[DEBUG] '+'[Status_Sync] ' +'Ziel_Status war bereits auf 0. Magnetventil wurde ausgeschaltet.'); 
                  }   
              }
        
          }
        }
        
        function func_countdown(){
          var Status = getState(id_Status).val;
          var Soll = Number(getState(id_Soll).val);
          var Ist = Soll;
          //ontime 5 Sekunden kürzer
          var ontime = Soll - 10;
          setState(id_Ist,Ist);
        
          if(set_on_time){
              setState(id_Magnetventil_on_time,ontime);
          }
          setStateDelayed(id_Ziel_Status,1,500);
          
          if(logging){
              log('[countdown] ' +'Timer für Magnetventil wird gestartet für ' +Soll +' Sekunden.');
          }
          
          if(timer){ 
              clearInterval(timer); // Stopp Timer
              timer = null;
              if(logging){
                  log('[countdown] ' +'Es besteht schon ein Timer für das Magnetventil. Ggf prüfen');
              }
          }
        
          if(Soll !== 0){
              timer = setInterval(function() {
                  Ist--;
                  //if(debugging){
                  //    log('Countdown bei ' +Ist +' Sekunden');
                  //}    
                  setState(id_Ist,Ist);
                  if(Ist <= 0) {
                      log('[Status_Sync] ' +'Timer für Magnetventil abgelaufen');
                      clearInterval(timer);
                      timer = null;
                      setState(id_Soll, 0, true);
                      setState(id_Ist, 0, true);
                      setState(id_Magnetventil_on_time,0);
                      if(getState(id_Magnetventil).val){
                          if(logging){
                              log('[countdown] ' +'Magnetventil war noch nicht ausgeschaltet und wird nun ausgeschaltet');
                          }
                          setState(id_Magnetventil,false,true);
                          //Push verschicken
                          if(sendpush){
                              if(set_on_time){
                                  _message = 'Magnetventil war nicht geschlossen. on_Befehl hat nicht funktioniert';
                              }
                              else{
                                  _message = 'Magnetventil wurde ausgeschaltetn.';    
                              }
                              send_pushover(_device, _message, _titel, _prio);
                          } 
                      }
                      else{
                          if(debugging){
                              log('[countdown] ' +'Magnetventil war bereits ausgeschaltet');
                          }
                      }
                  }   
              }, 1000);
          }
          else{
              if(debugging){
                  log('[countdown] ' +'Soll ist gleich 0');
              }
          }
        } 
        
        
        //beim Start
        //func_countdown();
        
        on({id: id_Soll, valGt: 0 ,change: "ne"}, func_countdown);
        on({id: id_Ziel_Status, change: "ne"}, func_Ziel_Status);
        on({id: id_Magnetventil, change: "ne"}, func_Status_Syncroniserung);
        

        1 Reply Last reply Reply Quote 0
        • cash
          cash Most Active last edited by

          Das mit dem unsauberen hochzählen ist leider so. Anscheinend war das von Apple nicht so vorgesehen... Damit kann ich leben.

          Beim countdown geht das Ventil nicht aus? Aber ausschalten per Homekit geht?

          M 1 Reply Last reply Reply Quote 0
          • cash
            cash Most Active last edited by

            Das Script muss ich nochmal anpassen wegen den on-Datenpunkt damit die warnings verschwinden.
            Vielleicht schaffe ich es heute Abend sonst Montag oder Dienstag.

            M 1 Reply Last reply Reply Quote 0
            • M
              Marsel @cash last edited by

              @cash Nein schlimm ist es nicht, hätte ja nur sein können das bei mir noch was falsch ist.

              Wenn ich per Hand AN uns AUS mache geht es ohne Probleme. Soll jetzt die Stoppuhr oder Aktivzeit das Ventil Ausschalten passiert nichts.

              1 Reply Last reply Reply Quote 0
              • M
                Marsel @cash last edited by

                @cash Okay schön. Mach dir bloß keinen Stress! Lass dir Zeit!

                1 Reply Last reply Reply Quote 0
                • cash
                  cash Most Active last edited by

                  Hier eine kleine Änderung. Die ist aber nicht fürs ausschalten zuständig...

                  Wie schaltet man dein Magnetventil aus? mit true und false oder 0 und 1?

                  Gggf. auch mal Debug auf true stellen. Dann sollte im Log ein paar mehr Infos kommen damit man genauer sieht was ioBroker da so treibt...

                  
                  /**************************
                  * Script Gartenbewässerung per Homekit schalten incl Timer
                  *
                  * 08.06.19 V1.00    Erste Version
                  * 09.06.19 V1.01    Stoppuhr eingebaut wenn kein Countdown gestartet wurde
                  * 10.06.19 V1.02    Logging optimiert und Variablen zum einfachen steuern eingebaut
                  * 11.06.19 V1.03    Logging präzisiert
                  *                   kleinere Syntaxfehler behoben
                  *                   set_on_time hinzugefügt um Funktion zu deaktivieren
                  * 13.06.19 V1.04    Logging reduziert
                  * 18.06.19 V1.05    Stoppuhr Dauer geändert auf 1200 Sekunden // Pushover alle 5 Minunten für 40 Minuten. Somit erfolgt max eine Stunde lange eine Errinnerung
                  * 23.06.19 V1.06    Beim Datenpunkt on_time eine Abfrage auf set_on_time vergessen
                  *
                  * der Ziel Status wird durch Homekit geändert
                  * func_Status_Syncronisierung synronisiert den realen Status 
                  * vom Magnetventil mit den beiden Pseudo Stati von Homekit
                  * 0 = Bewässerung ist aus
                  * 1 = Bewässerung ist eingeschaltet
                  * wichtig der Ziel Status wird durch Homekit ohne ack:true geändert
                  **************************/
                  
                  const logging = true;
                  const debugging = false;
                  
                  const Stoppuhr_Dauer = 1200;       //Dauer in Sekunden wie lange die Stopuhr läuft max. 3600
                  const Stoppuhr_Wasser_off = false;  //Schaltet das Magnetventil nach Ablauf der Stoppuhr automatisch aus
                  const set_on_time = true;           //Wenn ein Countdown gesetzt wird wird die Dauer direkt im Gerät gesetzt
                  
                  //Variablen für Pushover
                  const sendpush = true;     //true = verschickt per Pushover Nachrchten // false = Pushover wird nicht benutzt
                  const pushover_Instanz0 =  'pushover.0';     // Pushover instance für Pio = 0
                  const pushover_Instanz1 =  'pushover.1';     // Pushover instance für Pio = 1
                  const pushover_Instanz2 =  'pushover.2';     // Pushover instance für Pio = 2
                  const pushover_Instanz3 =  'pushover.3';     // Pushover instance für Pio = -1 oder -2
                  let _prio = 1;
                  let _titel = 'Bewässerung';
                  let _message;
                  let _device = 'TPhone'; 
                  //var device = 'All'; 
                  
                  const id_Status = 'Systemvariable.0.Terrasse.Bewässerung.Magnetventil.Status_Homekit'/*Status Homekit*/;
                  const id_Ziel_Status = 'Systemvariable.0.Terrasse.Bewässerung.Magnetventil.Ziel_Status_Homekit'/*Ziel Status Homekit*/;
                  const id_Ist = 'Systemvariable.0.Terrasse.Bewässerung.Magnetventil.Timer_Ist_Homekit'/*Timer Ist Homekit*/;
                  const id_Soll = 'Systemvariable.0.Terrasse.Bewässerung.Magnetventil.Timer_Soll_Homekit'/*Timer Soll Homekit*/;
                  const id_Magnetventil = 'hm-rpc.0.LEQ1316331.1.STATE'/*Terrasse Bewässerung:1 STATE*/;
                  const id_Magnetventil_on_time = 'hm-rpc.0.LEQ1316331.1.ON_TIME'/*Terrasse Bewässerung:1 ON TIME*/;
                  //const id_Magnetventil = 'hm-rpc.0.LEQ0929723.1.STATE'/*Wohnzimmer GSV-Licht:1 STATE*/;
                  //const id_Magnetventil_on_time = 'hm-rpc.0.LEQ0929723.1.ON_TIME'/*Wohnzimmer GSV-Licht:1 ON TIME*/;
                  
                  let timer = null;
                  
                  function send_pushover (_device, _message, _titel, _prio) {
                     // Version 4.00 vom 15.01.19
                     var pushover_Instanz =  'pushover.0';
                     if (_prio === 0){pushover_Instanz =  'pushover.0'}
                     else if (_prio == 1){pushover_Instanz =  'pushover.1'}
                     else if (_prio == 2){pushover_Instanz =  'pushover.2'}
                     else {pushover_Instanz =  'pushover.3'}
                         sendTo(pushover_Instanz, { 
                         device: _device,
                         message: _message, 
                         title: _titel, 
                         priority: _prio,
                         retry: 300,
                         expire: 2400,
                         html: 1
                     }); 
                  }
                  
                  function func_Ziel_Status(){
                     var Ziel_Status =  getState(id_Ziel_Status).val;
                     var Status = getState(id_Status).val;
                     var Soll = Number(getState(id_Soll).val);
                     var Ist = Soll;
                     var Ist_real = getState(id_Ist).val;
                  
                     
                     //Magnetventil soll geschlossen werden
                     if(Ziel_Status === 0){
                         if(timer){ 
                             clearInterval(timer); // Stopp Timer
                             timer = null;
                             if(debugging){
                                 log('[DEBUG] '+'[Ziel_Status] ' +'Es läuft ein Timer. Magnetventil soll per Homekit ausgeschaltet werden');
                             }
                         }
                         if(Ist_real !== 0){
                             if(debugging){
                                 log('[DEBUG] '+'[Ziel_Status] ' +'id_Ist ist nicht null und wird auf 0 gesetzt.');
                             }
                             setState(id_Ist,0,true);
                         }
                         if(Soll !== 0){
                             if(debugging){
                                 log('[DEBUG] '+'[Ziel_Status] ' +'id_Soll ist nicht null und wird auf 0 gesetzt.');
                             }
                             setState(id_Soll,0,true);
                         }
                         if(Status == 1){
                             if(logging){
                                 log('Magnetventil soll per Homekit geschlossen werden.');
                             }
                             setStateDelayed(id_Magnetventil,false,500);
                             setState(id_Status,0);
                         }
                         else{
                             if(debugging){
                                 log('[DEBUG] '+'[Ziel_Status] ' +'Magnetventil wurde nicht über Homekit bedient (geschlossen)');
                             }
                         }
                  
                     }
                     //Magnetventil soll geöffnet werden werden
                     else if(Ziel_Status === 1){
                         if(Status === 0){
                             if(logging){
                                 log('Magnetventil soll per Homekit geöffnet werden.');
                             }
                             setStateDelayed(id_Magnetventil,true,1000);
                             setState(id_Status,1);
                  
                             if(Soll === 0){
                                 log('Es wurde kein Countdown gestartet. Starte Stopuhr.');
                                 if(timer){ 
                                     clearInterval(timer); // Stopp Timer
                                     timer = null;
                                     if(debugging){
                                         log('[DEBUG] '+'[Ziel_Status] ' +'Stoppuhr soll gestartet werden. Es existiert ein Timer. Der Timer wird abgebrochen.');
                                     }
                                 }
                                 timer = setInterval(function() {
                                     Ist++;
                                     //if(debugging){
                                     //    log('Countdown bei ' +Ist +' Sekunden');
                                     //}    
                                     setState(id_Ist,Ist);
                                     if(Ist >= Stoppuhr_Dauer) {
                                         if(debugging){
                                             log('[DEBUG] '+'[Ziel_Status] ' +'Stoppuhr für Magnetventil abgelaufen.');
                                         }
                                         clearInterval(timer);
                                         timer = null;
                                         setState(id_Ist, 0, true);
                                 
                                 
                                         if(getState(id_Magnetventil).val){
                                             if(logging){
                                                 log('Stoppuhr abgelaufen. Magnetventil ist offen. Evtl vergessen');
                                             }
                                             if(Stoppuhr_Wasser_off){
                                                 if(logging){
                                                     log('Magnetventil soll automatisch ausschalten.');
                                                 }
                                                 setState(id_Magnetventil,false,true);
                                             }
                                             //Push verschicken
                                             if(sendpush){
                                                 _prio = 2;
                                                 _message = 'Magnetventil ist immer noch offen. Vergessen?';
                                                 send_pushover(_device, _message, _titel, _prio);
                                             } 
                                         }
                                         else{
                                             if(debugging){
                                                 log('[DEBUG] '+'[Ziel_Status] ' +'Stopuhr abgelaufen Magnetventil war bereits ausgeschaltet');
                                             }
                                         }
                                     }   
                                 }, 1000);
                             }
                         }
                         else{
                             if(debugging){
                                 log('[DEBUG] '+'[Ziel_Status] ' +'Magnetventil wurde nicht über Homekit bedient (angeschaltet)');
                             }
                         }
                  
                     }
                     else{
                         if(debugging){
                             log('[DEBUG] '+'[Ziel_Status] ' +'Fehler der Zielstatus ist ungleich 0 oder 1. Das darf eigentlich nicht passieren');
                         }
                     }
                  }
                  
                  function func_Status_Syncroniserung(){
                     var Status = getState(id_Status).val;
                     var Ziel_Status = getState(id_Ziel_Status).val;
                     var Magnetventil = getState(id_Magnetventil).val;
                  
                     if(Magnetventil){
                         if(Status === 0){
                             setState(id_Status,1);
                             if(debugging){
                                 log('[DEBUG] '+'[Status_Sync] ' +'Status war 0 wird auf 1 gesetzt, da das Magnetventil an ist');
                             }
                             
                         }
                         else{
                             if(debugging){
                                 log('[DEBUG] '+'[Status_Sync] ' +'Status war bereits auf 1. Magnetventil ist an');
                             } 
                         }
                         if(Ziel_Status === 0){
                             setState(id_Ziel_Status,1);
                             if(debugging){
                                 log('[DEBUG] '+'[Status_Sync] ' +'Magnetventil wurde nicht über Homekit eingeschaltet. Ziel_Status wird von 0 auf 1 geändert');
                             }
                         }
                         else{
                             if(debugging){
                                 log('[DEBUG] '+'[Status_Sync] ' +'Ziel_Status war bereits auf true. Magnetventil wurde eingeschaltet'); 
                             }
                         }
                     }
                     else{
                         if(Status == 1){
                             setState(id_Status,0);
                             if(debugging){
                                 log('[DEBUG] '+'[Status_Sync] ' +'Status war 1 und wird auf 0 geändert weil das Magnetventil aus ist');
                             }
                             
                         }
                         else{
                             if(debugging){
                                 log('[DEBUG] '+'[Status_Sync] ' +'Status war bereits auf 0 nachdem das Magnetnvetil ausgeschaltet wurde'); 
                             }
                         }
                         if(Ziel_Status == 1){
                             setState(id_Ziel_Status,0);
                             if(debugging){
                                 log('[DEBUG] '+'[Status_Sync] ' +'Magnetventil wurde nicht über Homekit ausgeschaltet. Ziel_Status wird von 1 auf 0 geändert');
                             }
                         }
                         else{
                             if(debugging){
                                 log('[DEBUG] '+'[Status_Sync] ' +'Ziel_Status war bereits auf 0. Magnetventil wurde ausgeschaltet.'); 
                             }   
                         }
                  
                     }
                  }
                  
                  function func_countdown(){
                     var Status = getState(id_Status).val;
                     var Soll = Number(getState(id_Soll).val);
                     var Ist = Soll;
                     //ontime 5 Sekunden kürzer
                     var ontime = Soll - 10;
                     setState(id_Ist,Ist);
                  
                     if(set_on_time){
                         setState(id_Magnetventil_on_time,ontime);
                     }
                     setStateDelayed(id_Ziel_Status,1,500);
                     
                     if(logging){
                         log('[countdown] ' +'Timer für Magnetventil wird gestartet für ' +Soll +' Sekunden.');
                     }
                     
                     if(timer){ 
                         clearInterval(timer); // Stopp Timer
                         timer = null;
                         if(logging){
                             log('[countdown] ' +'Es besteht schon ein Timer für das Magnetventil. Ggf prüfen');
                         }
                     }
                  
                     if(Soll !== 0){
                         timer = setInterval(function() {
                             Ist--;
                             //if(debugging){
                             //    log('Countdown bei ' +Ist +' Sekunden');
                             //}    
                             setState(id_Ist,Ist);
                             if(Ist <= 0) {
                                 log('[Status_Sync] ' +'Timer für Magnetventil abgelaufen');
                                 clearInterval(timer);
                                 timer = null;
                                 setState(id_Soll, 0, true);
                                 setState(id_Ist, 0, true);
                                 if(set_on_time){
                                     setState(id_Magnetventil_on_time,0);
                                 }
                                 if(getState(id_Magnetventil).val){
                                     if(logging){
                                         log('[countdown] ' +'Magnetventil war noch nicht ausgeschaltet und wird nun ausgeschaltet');
                                     }
                                     setState(id_Magnetventil,false,true);
                                     //Push verschicken
                                     if(sendpush){
                                         if(set_on_time){
                                             _message = 'Magnetventil war nicht geschlossen. on_Befehl hat nicht funktioniert';
                                         }
                                         else{
                                             _message = 'Magnetventil wurde ausgeschaltetn.';    
                                         }
                                         send_pushover(_device, _message, _titel, _prio);
                                     } 
                                 }
                                 else{
                                     if(debugging){
                                         log('[countdown] ' +'Magnetventil war bereits ausgeschaltet');
                                     }
                                 }
                             }   
                         }, 1000);
                     }
                     else{
                         if(debugging){
                             log('[countdown] ' +'Soll ist gleich 0');
                         }
                     }
                  } 
                  
                  
                  //beim Start
                  //func_countdown();
                  
                  on({id: id_Soll, valGt: 0 ,change: "ne"}, func_countdown);
                  on({id: id_Ziel_Status, change: "ne"}, func_Ziel_Status);
                  on({id: id_Magnetventil, change: "ne"}, func_Status_Syncroniserung);
                  

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    Marsel @cash last edited by

                    @cash Das neue Script baue ich morgen ein und dann schau ich mal was im Debug Modus steht.

                    Wenn ich den direkt in den Sonoff Objekten schalten möchte muss ich true und false eingeben. Und für deine Ventile wird 0 und 1 verwendet wie ich sehe. Kann ich das im Script ändern oder ist es besser ein Brücke zu bauen die den Befehl umformt?

                    1 Reply Last reply Reply Quote 0
                    • cash
                      cash Most Active last edited by

                      Nein bei mir wird auch mit true und false geschaltet. Nur die angelegten Homekit Stati werden mit 0 und 1 geschaltet weil Homekit das so nutzt...

                      Schade ich hatte gehofft das es daran liegt das er nicht schaltet. Dann warten wir mal was im log steht. Denn ich kann es mir erstmal nicht erklären warum es nicht geht. Vielleicht lag es auch an den on_time Befehl und den warnings im Log...

                      M 1 Reply Last reply Reply Quote 0
                      • M
                        Marsel @cash last edited by

                        @cash Das wäre zu schön gewesen, wenn es das gewesen wäre.

                        Wenn ich per Hand in Homekit den Sprenger ein und ausschelte. Das
                        funktioniert auch Ordnungsgemäß.

                        2019-06-24 20:03:53.206 - info: javascript.0 script.js.Wassersprenger-skript: Magnetventil soll per Homekit geöffnet werden.
                        2019-06-24 20:03:53.207 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.STATUS, state=1) - was not executed, while debug mode is active
                        2019-06-24 20:03:53.207 - info: javascript.0 script.js.Wassersprenger-skript: Es wurde kein Countdown gestartet. Starte Stopuhr.
                        2019-06-24 20:03:54.207 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=sonoff.0.Küchenzeile.POWER, state={"val":true,"ack":false}) - was not executed, while debug mode is active
                        2019-06-24 20:03:54.209 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=1) - was not executed, while debug mode is active
                        2019-06-24 20:03:55.210 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=2) - was not executed, while debug mode is active
                        2019-06-24 20:03:56.211 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=3) - was not executed, while debug mode is active

                        Wenn ich per Hand ohne Aktivzeit einzuschalten starte und die Stoppuhr auf 5 sek stelle. Funktionier nur das einschalten aber er schaltet nicht ab. In Homekit versucht er abzuschalten aber das gerät macht es nicht.
                        2019-06-24 20:06:59.063 - info: javascript.0 script.js.Wassersprenger-skript: Magnetventil soll per Homekit geöffnet werden.
                        2019-06-24 20:06:59.064 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.STATUS, state=1) - was not executed, while debug mode is active
                        2019-06-24 20:06:59.064 - info: javascript.0 script.js.Wassersprenger-skript: Es wurde kein Countdown gestartet. Starte Stopuhr.
                        2019-06-24 20:07:00.065 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=sonoff.0.Küchenzeile.POWER, state={"val":true,"ack":false}) - was not executed, while debug mode is active
                        2019-06-24 20:07:00.066 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=1) - was not executed, while debug mode is active
                        2019-06-24 20:07:01.067 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=2) - was not executed, while debug mode is active
                        2019-06-24 20:07:02.068 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=3) - was not executed, while debug mode is active
                        2019-06-24 20:07:03.069 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=4) - was not executed, while debug mode is active
                        2019-06-24 20:07:04.070 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=5) - was not executed, while debug mode is active
                        2019-06-24 20:07:04.071 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state={"val":0,"ack":true}) - was not executed, while debug mode is active

                        Wenn ich per Hand mit 1 min Aktivzeit starte. Geht auch wieder an aber nach 1 min nicht mehr aus.
                        undefined2019-06-24 20:10:19.656 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=60) - was not executed, while debug mode is active
                        2019-06-24 20:10:19.657 - info: javascript.0 script.js.Wassersprenger-skript: [countdown] Timer für Magnetventil wird gestartet für 60 Sekunden.
                        2019-06-24 20:10:19.745 - info: javascript.0 script.js.Wassersprenger-skript: Magnetventil soll per Homekit geöffnet werden.
                        2019-06-24 20:10:19.746 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.STATUS, state=1) - was not executed, while debug mode is active
                        2019-06-24 20:10:20.158 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.ZIEL_STATUS, state={"val":1,"ack":false}) - was not executed, while debug mode is active
                        2019-06-24 20:10:20.658 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=59) - was not executed, while debug mode is active
                        2019-06-24 20:10:20.746 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=sonoff.0.Küchenzeile.POWER, state={"val":true,"ack":false}) - was not executed, while debug mode is active
                        2019-06-24 20:10:21.658 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=58) - was not executed, while debug mode is active
                        2019-06-24 20:10:22.659 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=57) - was not executed, while debug mode is active
                        2019-06-24 20:10:23.659 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=56) - was not executed, while debug mode is active
                        2019-06-24 20:10:24.659 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=55) - was not executed, while debug mode is active
                        .
                        .
                        .
                        .
                        2019-06-24 20:11:14.684 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=5) - was not executed, while debug mode is active
                        2019-06-24 20:11:15.684 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=4) - was not executed, while debug mode is active
                        2019-06-24 20:11:16.686 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=3) - was not executed, while debug mode is active
                        2019-06-24 20:11:17.687 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=2) - was not executed, while debug mode is active
                        2019-06-24 20:11:18.688 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=1) - was not executed, while debug mode is active
                        2019-06-24 20:11:19.688 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state=0) - was not executed, while debug mode is active
                        2019-06-24 20:11:19.689 - info: javascript.0 script.js.Wassersprenger-skript: [Status_Sync] Timer für Magnetventil abgelaufen
                        2019-06-24 20:11:19.690 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.SOLL, state={"val":0,"ack":true}) - was not executed, while debug mode is active
                        2019-06-24 20:11:19.690 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.IST, state={"val":0,"ack":true}) - was not executed, while debug mode is active
                        2019-06-24 20:11:40.572 - warn: javascript.0 script.js.Wassersprenger-skript: setForeignState(id=javascript.0.Bewässerung.SOLL, state={"val":0,"ack":true}) - was not executed, while debug mode is active

                        Was mir aufgefallen ist, wenn ich einschalte steht im LOG:
                        setForeignState(id=sonoff.0.Küchenzeile.POWER, state={"val":true,"ack":false})
                        und wenn ich ausschalte:
                        setForeignState(id=javascript.0.Bewässerung.SOLL, state={"val":0,"ack":true})

                        Bei "val" steht beim einschalten true und beim ausschalten 0. Das könnte das Problem sein oder?

                        cash 1 Reply Last reply Reply Quote 0
                        • cash
                          cash Most Active last edited by

                          Ähm. Was sind denn das für komische Fehler? Wo hast Du den Debug Mode aktiviert? Ich wollte nur das Du im Script oben bei debug = true machst :-))

                          Falls ich gleich noch am Rechner gehe gucke ich mir Dein Post nochmal genauer an. Ist am Smartphone etwas viel 🙂

                          1 Reply Last reply Reply Quote 0
                          • cash
                            cash Most Active @Marsel last edited by

                            @Marsel Beim einschalten kommt korrekt sonof = true. Beim ausschalten wird nicht das Gerät geschaltet sondern der Soll Datenpunkt und der ist 0. Das passt also

                            1 Reply Last reply Reply Quote 0
                            • M
                              Marsel last edited by

                              Ich habe ganz normal im Script oben Rechts bei Debug das häkchen gesetzt und bin dann in LOG gegangen und hab die Zeilen da raus kopiert. 😐
                              Gibt es noch eine andere Möglichkeit den zu aktivieren?

                              Okay hätte ja sein können. 😕

                              1 Reply Last reply Reply Quote 0
                              • cash
                                cash Most Active last edited by

                                Zeile 24 auf true stellen.

                                Ich vermute das er nicht synronisiert. Bitte mal folgendes testen:

                                1. Gerät nicht über Homekit einschaltenschalten. Welche Werte haben danach die 4 manuell angelegten Datenpunkte?

                                Wenn alles richtig ist sollten die Datenpunkte Status und Ziel_Status auf 1 stehen. Wenn Zeile 24 vorher auf true steht sollte es auch Einträge im log geben.

                                1. Danach Gerät nicht über Homekit ausschalten. Welche Werte haben nun die 4 manuell angelegten Datenpunkte? Wenn alles richtig ist sollten die Datenpunkte Status und Ziel_Status auf 0 stehen. Wenn Zeile 24 vorher auf true steht sollte es auch Einträge im log geben.

                                2. Danach Gerät über Homekit einschalten. Welche Werte haben nun die 4 manuell angelegten Datenpunkte? Wenn alles richtig ist sollten die Datenpunkte Status und Ziel_Status auf 1 stehen. Wenn Zeile 24 vorher auf true steht sollte es auch Einträge im log geben.

                                3. Danach Gerät über Homekit ausschalten. Welche Werte haben nun die 4 manuell angelegten Datenpunkte? Wenn alles richtig ist sollten die Datenpunkte Status und Ziel_Status auf 0 stehen. Wenn Zeile 24 vorher auf true steht sollte es auch Einträge im log geben.

                                4. Danach Gerät über Homekit einschalten mit Laufzeit von 5 Minuten. Welche Werte haben nun die 4 manuell angelegten Datenpunkte? Wenn alles richtig ist sollten die Datenpunkte Status und Ziel_Status auf 1 stehen. Das Datenfeld aus Zeile 45 Timer Soll Homekit sollte auf 300 stehen. Das Datenfeld aus Zeile 44 sollte runterzählne von 300 (Timer Ist Homekit) Wenn Zeile 24 vorher auf true steht sollte es auch Einträge im log geben.
                                  Nach 5 Minuten was steht im Log? Welche Werte haben nun die 4 manuell angelegten Datenpunkte.

                                5. Danach Gerät über Homekit einschalten (vorher Zeile 26 auf 300 stellen). Welche Werte haben nun die 4 manuell angelegten Datenpunkte? Wenn alles richtig ist sollten die Datenpunkte Status und Ziel_Status auf 1 stehen. Das Datenfeld aus Zeile 45 Timer Soll Homekit sollte auf 0 stehen. Das Datenfeld aus Zeile 44 sollte hochzählen auf 300 (Timer Ist Homekit) Wenn Zeile 24 vorher auf true steht sollte es auch Einträge im log geben.
                                  Nach 5 Minuten was steht im Log? Welche Werte haben nun die 4 manuell angelegten Datenpunkte.

                                M 1 Reply Last reply Reply Quote 0
                                • P
                                  peer69 Forum Testing last edited by

                                  @cash Vielen Dank für die Arbeit, bei mir funktionierts sehr gut.
                                  Eine Frage allerdings: Warum kürzt Du die ON_TIME für dem HM-Aktor um 10 Sekunden? Gibts da irgendeine Abhängigkeit? Ich war kurz verwirrt, als schon 10 Sekunden früher plötzlich alles aus ging.

                                  cash 1 Reply Last reply Reply Quote 0
                                  • cash
                                    cash Most Active @peer69 last edited by

                                    @peer69 ja der Grund ist simpel. Angenommen der on_Time Befehl wird nicht richtig ausgeführt, also das ausschalten durch die Steckdose hat nicht funktioniert, wäre das ja irgendwie nicht so gut. Bei einer Lampe wäre das ja nicht weiter tragisch bei Wasser finde ich das nicht so gut.

                                    Deshalb prüft das Script nach dem regulären Ablauf (also 10 Sekunden später) ob das Ventil lt. Steckdose wirklich ausgeschaltet ist. Falls nicht gibt es eine Push bzw es wird noch ein normaler ausschalt-Befehl gesendet.

                                    Ich hatte ein Script geschrieben für die Ansaat dort kann ich 24 Bewässerungszeiten festlegen wo das Ventil i. d. R. für 5 Minuten laufen soll. Dort hatte ich in der Anfangszeit das Problem das anscheinend das setzen des on-Befehls nicht funktioniert hat und somit das Ventil nicht ausgegangen wäre hätte ich nicht diese zusätzliche Sicherheit eingebaut. Sicher ist Sicher. Ist ein kleines Schönheitsmanko. Wenn Du den Befehl nicht nutzt (Zeile28 auf false) würde das Script Sekundengenau ausschalten.

                                    P 1 Reply Last reply Reply Quote 0
                                    • M
                                      Marsel @cash last edited by

                                      @cash Ich werde aus der Sache nicht schlau. Hoffe du kannst mir da noch helfen.

                                      Zeile 24 ist auf true.

                                      Ist=0
                                      Soll=0
                                      Status=1
                                      Ziel_Status=1

                                      LOG:
                                      2019-06-25 11:37:52.748 info script.js.Wassersprenger-skript: [DEBUG] [Ziel_Status] Magnetventil wurde nicht über Homekit bedient (angeschaltet)
                                      2019-06-25 11:37:52.741 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Magnetventil wurde nicht über Homekit eingeschaltet. Ziel_Status wird von 0 auf 1 geändert
                                      2019-06-25 11:37:52.740 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Status war 0 wird auf 1 gesetzt, da das Magnetventil an ist

                                      Ist=0
                                      Soll=0
                                      Status=0
                                      Ziel_Status=0

                                      LOG:
                                      2019-06-25 11:40:30.613 info script.js.Wassersprenger-skript: [DEBUG] [Ziel_Status] Magnetventil wurde nicht über Homekit bedient (geschlossen)
                                      2019-06-25 11:40:30.613 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Magnetventil wurde nicht über Homekit ausgeschaltet. Ziel_Status wird von 1 auf 0 geändert
                                      2019-06-25 11:40:30.610 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Status war 1 und wird auf 0 geändert weil das Magnetventil aus ist

                                      Ist=Zählt hoch
                                      Soll=0
                                      Status=1
                                      Ziel_Status=1

                                      LOG:
                                      2019-06-25 11:46:06.147 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Ziel_Status war bereits auf true. Magnetventil wurde eingeschaltet
                                      2019-06-25 11:46:06.146 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Status war bereits auf 1. Magnetventil ist an
                                      2019-06-25 11:46:05.142 info script.js.Wassersprenger-skript: Es wurde kein Countdown gestartet. Starte Stopuhr.
                                      2019-06-25 11:46:05.141 info script.js.Wassersprenger-skript: Magnetventil soll per Homekit geöffnet werden.

                                      Ist=0
                                      Soll=0
                                      Status=0
                                      Ziel_Status=0

                                      LOG:
                                      2019-06-25 11:48:42.303 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Ziel_Status war bereits auf 0. Magnetventil wurde ausgeschaltet.
                                      2019-06-25 11:48:42.303 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Status war bereits auf 0 nachdem das Magnetnvetil ausgeschaltet wurde
                                      2019-06-25 11:48:41.819 info script.js.Wassersprenger-skript: Magnetventil soll per Homekit geschlossen werden.
                                      2019-06-25 11:48:41.819 info script.js.Wassersprenger-skript: [DEBUG] [Ziel_Status] id_Ist ist nicht null und wird auf 0 gesetzt.
                                      2019-06-25 11:48:41.818 info script.js.Wassersprenger-skript: [DEBUG] [Ziel_Status] Es läuft ein Timer. Magnetventil soll per Homekit ausgeschaltet werden

                                      1. Beim Einschalten
                                        Ist=Zählt Runter
                                        Soll=300
                                        Status=1
                                        Ziel_Status=1

                                      LOG:
                                      2019-06-25 11:51:58.084 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Ziel_Status war bereits auf true. Magnetventil wurde eingeschaltet
                                      2019-06-25 11:51:58.083 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Status war bereits auf 1. Magnetventil ist an
                                      2019-06-25 11:51:57.050 info script.js.Wassersprenger-skript: Magnetventil soll per Homekit geöffnet werden.
                                      2019-06-25 11:51:56.542 info script.js.Wassersprenger-skript: [countdown] Timer für Magnetventil wird gestartet für 300 Sekunden.

                                      1. Wenn der Timer ende ist
                                        Ist=0
                                        Soll=0
                                        Status=0 und nach ca. 5 sek steht wieder ein 1 da
                                        Ziel_Status=0 und nach ca. 5 sek steht wieder ein 1 da

                                      LOG:
                                      2019-06-25 11:57:34.967 info script.js.Wassersprenger-skript: [DEBUG] [Ziel_Status] Magnetventil wurde nicht über Homekit bedient (angeschaltet)
                                      2019-06-25 11:57:34.945 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Magnetventil wurde nicht über Homekit eingeschaltet. Ziel_Status wird von 0 auf 1 geändert
                                      2019-06-25 11:57:34.943 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Status war 0 wird auf 1 gesetzt, da das Magnetventil an ist
                                      2019-06-25 11:56:56.733 info script.js.Wassersprenger-skript: [DEBUG] [Ziel_Status] Magnetventil wurde nicht über Homekit bedient (geschlossen)
                                      2019-06-25 11:56:56.733 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Magnetventil wurde nicht über Homekit ausgeschaltet. Ziel_Status wird von 1 auf 0 geändert
                                      2019-06-25 11:56:56.732 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Status war 1 und wird auf 0 geändert weil das Magnetventil aus ist
                                      2019-06-25 11:56:56.709 info script.js.Wassersprenger-skript: [countdown] Magnetventil war noch nicht ausgeschaltet und wird nun ausgeschaltet
                                      2019-06-25 11:56:56.709 info script.js.Wassersprenger-skript: [Status_Sync] Timer für Magnetventil abgelaufen

                                      1. Beim Einschalten
                                        Ist=Zählt Hoch
                                        Soll=0
                                        Status=1
                                        Ziel_Status=1

                                      LOG:
                                      2019-06-25 12:00:28.678 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Ziel_Status war bereits auf true. Magnetventil wurde eingeschaltet
                                      2019-06-25 12:00:28.677 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Status war bereits auf 1. Magnetventil ist an
                                      2019-06-25 12:00:27.649 info script.js.Wassersprenger-skript: Es wurde kein Countdown gestartet. Starte Stopuhr.
                                      2019-06-25 12:00:27.647 info script.js.Wassersprenger-skript: Magnetventil soll per Homekit geöffnet werden.

                                      1. Nach der Automatischen Abschaltung
                                        Ist=0
                                        Soll=0
                                        Status=0 und nach ca. 5 sek steht wieder ein 1 da
                                        Ziel_Status=0 und nach ca. 5 sek steht wieder ein 1 da

                                      LOG:
                                      2019-06-25 12:05:34.964 info script.js.Wassersprenger-skript: [DEBUG] [Ziel_Status] Magnetventil wurde nicht über Homekit bedient (angeschaltet)
                                      2019-06-25 12:05:34.943 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Magnetventil wurde nicht über Homekit eingeschaltet. Ziel_Status wird von 0 auf 1 geändert
                                      2019-06-25 12:05:34.942 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Status war 0 wird auf 1 gesetzt, da das Magnetventil an ist
                                      2019-06-25 12:05:32.687 sonoff.0 info Client [Küche LED Stripe] connection closed: closed
                                      2019-06-25 12:05:27.850 info script.js.Wassersprenger-skript: [DEBUG] [Ziel_Status] Magnetventil wurde nicht über Homekit bedient (geschlossen)
                                      2019-06-25 12:05:27.844 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Magnetventil wurde nicht über Homekit ausgeschaltet. Ziel_Status wird von 1 auf 0 geändert
                                      2019-06-25 12:05:27.843 info script.js.Wassersprenger-skript: [DEBUG] [Status_Sync] Status war 1 und wird auf 0 geändert weil das Magnetventil aus ist
                                      2019-06-25 12:05:27.798 info script.js.Wassersprenger-skript: Magnetventil soll automatisch ausschalten.
                                      2019-06-25 12:05:27.798 info script.js.Wassersprenger-skript: Stoppuhr abgelaufen. Magnetventil ist offen. Evtl vergessen
                                      2019-06-25 12:05:27.797 info script.js.Wassersprenger-skript: [DEBUG] [Ziel_Status] Stoppuhr für Magnetventil abgelaufen.

                                      cash 3 Replies Last reply Reply Quote 0
                                      • cash
                                        cash Most Active @Marsel last edited by

                                        @Marsel Deine Yahka Einstellungen sind wahrscheinlich falsch?

                                        Bei 3 müsste sowas kommen wie Magnetventil soll per Homekit geschaltet werden...

                                        So sieht es bei mir aus: Alles immer ioBroker.State

                                        RemainingDuration: Systemvariable.0.Terrasse.Bewässerung.Magnetventil.Timer_Ist_Homekit
                                        SetDuration: Systemvariable.0.Terrasse.Bewässerung.Magnetventil.Timer_Soll_Homekit
                                        Active: Systemvariable.0.Terrasse.Bewässerung.Magnetventil.Ziel_Status_Homekit
                                        InUse: Systemvariable.0.Terrasse.Bewässerung.Magnetventil.Status_Homekit
                                        ValveType: Systemvariable.0.Terrasse.Bewässerung.Magnetventil.Magnetventil_Icon_Homekit

                                        1 Reply Last reply Reply Quote 0
                                        • P
                                          peer69 Forum Testing @cash last edited by

                                          @cash Vielen Dank für die ausführlich Erläuterung! Das lasse ich gern so drin, als quasi dritte Sicherheitsstufe. Ich nehme die Brunnenpumpe außerhalb der vorgesehenen Bewässerungszeiten zusätzlich vom Strom, da die Pumpe druckschaltergesteuert ist und bei einem Leck lustig vor sich hin pumpen und die Nachbarschaft unter Wasser setzen würde. Leider alles mittels HM RF und ich ärgere mich, dass ich nicht auch zum Pumpenhaus Leitungen für HM-Wired bzw. für KNX gelegt habe. Damit hätte ich ein besseres Gefühl aber das ist ein anderes Thema. 🙂

                                          1 Reply Last reply Reply Quote 0
                                          • cash
                                            cash Most Active @Marsel last edited by

                                            @Marsel

                                            Teste mal das Script:

                                            const logging = true;
                                            
                                            const id_Magnetventil = 'hm-rpc.0.LEQ1316331.1.STATE'/*Terrasse Bewässerung:1 STATE*/;
                                            const ACK = true;
                                            
                                            function func_test(){
                                               if(getState(id_Magnetventil).val){
                                                   if(logging){
                                                       log('[Test] ' +'Status beim Start: ein');
                                                   }
                                                   if(ACK){
                                                       setState(id_Magnetventil,false,true);
                                                       if(logging){
                                                           log('[Test] ' +'Gerät per ACK true ausgeschaltet');
                                                       }
                                                   }
                                                   if(!ACK){
                                                       setState(id_Magnetventil,false);
                                                       if(logging){
                                                           log('[Test] ' +'Gerät ohne ACK true ausgeschaltet');
                                                       }
                                                   }
                                                       
                                               }
                                               else{
                                                   if(logging){
                                                       log('[Test] ' +'Status beim Start: aus');
                                                   }
                                                   if(ACK){
                                                       setState(id_Magnetventil,true,true);
                                                       if(logging){
                                                           log('[Test] ' +'Gerät per ACK true eingeschaltet');
                                                       }
                                                   }
                                                   if(!ACK){
                                                       setState(id_Magnetventil,true);
                                                       if(logging){
                                                           log('[Test] ' +'Gerät ohne ACK true eingeschaltet');
                                                       }
                                                   }
                                                   
                                               }
                                            
                                               
                                               
                                               
                                            }   
                                            
                                            //beim Start
                                            func_test();
                                            

                                            1. Das Script einfach starten. Schaltet das Ventil? Ändert sich der Status vom Ventil unter den Objekten und bleibt er so wie er ist?

                                            Danach im Script ACK = false; setzen und neu starten. Gleiche Frage wie oben?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            631
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            homekit yahka bewässerung zeit remaining duration homekit
                                            14
                                            76
                                            8390
                                            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