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. Fehler beim States einlesen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Fehler beim States einlesen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
4 Beiträge 2 Kommentatoren 255 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.
  • PeoplesP Offline
    PeoplesP Offline
    Peoples
    schrieb am zuletzt editiert von
    #1

    Hi Leute,

    ich habe mal wieder eine Frage deren Antwort sehr simpel sein wird, ich jedoch nicht drauf komme.

    Ich fahre in meinem Gartenbewässerungsscript die Rollos je nach Bereich runter um Wasser auf den Scheiben zu vermeiden.
    Den vorherigen Stand der Rollos schreibe ich in eine Variable, welche ich nach dem Bewässern des Bereichs wieder auslese und an den Rollo schicke.

    Nur irgendwie erneuert sich der Wert nicht wenn das Script mal druchgelaufen ist. Sagen wir der Rollo in der Küche steht auf 15% und ich fahre ihn hoch bleibt der Wert der Variablen auf 15%. Bestimmt irgendwo nur ein Denkfehler.

    function bwJalousien(VentilNr) {
           if(VentilNr === 2){
                setStateDelayed('hm-rpc.0.NEQxxxxxxx.1.LEVEL', 15, getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000);
                setStateDelayed('hm-rpc.0.NEQxxxxxxx.1.LEVEL', 15, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+1000);
            }
            
            if(VentilNr === 3){
            var jalLevelWohnz =  getState('hm-rpc.0.NEQxxxxxxx.1.LEVEL').val;
            var jalLevelKueche = getState('hm-rpc.0.NEQxxxxxxx.1.LEVEL').val;
                setStateDelayed('hm-rpc.0.xxxxxxx.1.LEVEL', jalLevelWohnz, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+1000);
                setStateDelayed('hm-rpc.0.NEQxxxxxxx.1.LEVEL', jalLevelKueche, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+3000);
             }
    }
    

    Gibt es bei den Datenpunkten auch die Möglichkeit den "old.state.val" irgendwie auszulesen?
    Dann könnte ich mir das alles sparen oder kann mir jemand sagen warum die Level nicht jedesmal neu eingelesen werden?

    Ich beantworte keine Fragen zu Themen via PN

    PeoplesP paul53P 2 Antworten Letzte Antwort
    0
    • PeoplesP Peoples

      Hi Leute,

      ich habe mal wieder eine Frage deren Antwort sehr simpel sein wird, ich jedoch nicht drauf komme.

      Ich fahre in meinem Gartenbewässerungsscript die Rollos je nach Bereich runter um Wasser auf den Scheiben zu vermeiden.
      Den vorherigen Stand der Rollos schreibe ich in eine Variable, welche ich nach dem Bewässern des Bereichs wieder auslese und an den Rollo schicke.

      Nur irgendwie erneuert sich der Wert nicht wenn das Script mal druchgelaufen ist. Sagen wir der Rollo in der Küche steht auf 15% und ich fahre ihn hoch bleibt der Wert der Variablen auf 15%. Bestimmt irgendwo nur ein Denkfehler.

      function bwJalousien(VentilNr) {
             if(VentilNr === 2){
                  setStateDelayed('hm-rpc.0.NEQxxxxxxx.1.LEVEL', 15, getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000);
                  setStateDelayed('hm-rpc.0.NEQxxxxxxx.1.LEVEL', 15, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+1000);
              }
              
              if(VentilNr === 3){
              var jalLevelWohnz =  getState('hm-rpc.0.NEQxxxxxxx.1.LEVEL').val;
              var jalLevelKueche = getState('hm-rpc.0.NEQxxxxxxx.1.LEVEL').val;
                  setStateDelayed('hm-rpc.0.xxxxxxx.1.LEVEL', jalLevelWohnz, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+1000);
                  setStateDelayed('hm-rpc.0.NEQxxxxxxx.1.LEVEL', jalLevelKueche, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+3000);
               }
      }
      

      Gibt es bei den Datenpunkten auch die Möglichkeit den "old.state.val" irgendwie auszulesen?
      Dann könnte ich mir das alles sparen oder kann mir jemand sagen warum die Level nicht jedesmal neu eingelesen werden?

      PeoplesP Offline
      PeoplesP Offline
      Peoples
      schrieb am zuletzt editiert von
      #2

      Keiner eine Idee?

      Ich beantworte keine Fragen zu Themen via PN

      1 Antwort Letzte Antwort
      0
      • PeoplesP Peoples

        Hi Leute,

        ich habe mal wieder eine Frage deren Antwort sehr simpel sein wird, ich jedoch nicht drauf komme.

        Ich fahre in meinem Gartenbewässerungsscript die Rollos je nach Bereich runter um Wasser auf den Scheiben zu vermeiden.
        Den vorherigen Stand der Rollos schreibe ich in eine Variable, welche ich nach dem Bewässern des Bereichs wieder auslese und an den Rollo schicke.

        Nur irgendwie erneuert sich der Wert nicht wenn das Script mal druchgelaufen ist. Sagen wir der Rollo in der Küche steht auf 15% und ich fahre ihn hoch bleibt der Wert der Variablen auf 15%. Bestimmt irgendwo nur ein Denkfehler.

        function bwJalousien(VentilNr) {
               if(VentilNr === 2){
                    setStateDelayed('hm-rpc.0.NEQxxxxxxx.1.LEVEL', 15, getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000);
                    setStateDelayed('hm-rpc.0.NEQxxxxxxx.1.LEVEL', 15, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+1000);
                }
                
                if(VentilNr === 3){
                var jalLevelWohnz =  getState('hm-rpc.0.NEQxxxxxxx.1.LEVEL').val;
                var jalLevelKueche = getState('hm-rpc.0.NEQxxxxxxx.1.LEVEL').val;
                    setStateDelayed('hm-rpc.0.xxxxxxx.1.LEVEL', jalLevelWohnz, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+1000);
                    setStateDelayed('hm-rpc.0.NEQxxxxxxx.1.LEVEL', jalLevelKueche, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+3000);
                 }
        }
        

        Gibt es bei den Datenpunkten auch die Möglichkeit den "old.state.val" irgendwie auszulesen?
        Dann könnte ich mir das alles sparen oder kann mir jemand sagen warum die Level nicht jedesmal neu eingelesen werden?

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #3

        @Peoples
        Die Variablen erhalten zum falschen Zeitpunkt den Wert, der gemerkt werden soll:
        Wenn bei Ventil 3 die gemerkten Werte geschrieben werden sollen, muss das Merken vor setState(id, 15) für Ventil 2 erfolgen.
        Weshalb hast Du hier Verzögerungen drin ? Diese sind doch bestimmt für die Ventilöffnungsdauer gedacht, werden also schon dort berücksichtigt.

        Zu sehen ist nur eine Funktion. Wie sieht das gesamte Script aus ?

        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

        PeoplesP 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @Peoples
          Die Variablen erhalten zum falschen Zeitpunkt den Wert, der gemerkt werden soll:
          Wenn bei Ventil 3 die gemerkten Werte geschrieben werden sollen, muss das Merken vor setState(id, 15) für Ventil 2 erfolgen.
          Weshalb hast Du hier Verzögerungen drin ? Diese sind doch bestimmt für die Ventilöffnungsdauer gedacht, werden also schon dort berücksichtigt.

          Zu sehen ist nur eine Funktion. Wie sieht das gesamte Script aus ?

          PeoplesP Offline
          PeoplesP Offline
          Peoples
          schrieb am zuletzt editiert von
          #4

          @paul53
          Hi Paul anbei das ganze Script:

          // *******************************************************************************************************
          //
          // Bewässerungsautomatik
          //
          //
          // *******************************************************************************************************
          
          
          // -----------------------------------------------------------------------------
          // allgemeine Variablen
          // -----------------------------------------------------------------------------
          var logging = false;                                        // Logging on/off
          var debugging = false;
          var telegram_benachtrichtigung = true;
          
          var instanz = 'javascript.0';  instanz = instanz + '.';     // 
          var geraeteInstanz = 'hm-rpc.0.';                          // Geräteinstanz
          
          //var pfad1 = 'Automation.';                                  // Pfad innerhalb der Instanz - Status allgemien
          var pfad0 = 'Bewaesserung.'; 
          var pfad1 = '_Zeiten.';
          var pfad2 = '_History.';
          
          var bwZeit_Schedule1 = [];                              // Array für die Gieß Zeit1
          var bwZeit_Schedule2 = [];                              // Array für die Gieß Zeit2
          
          var Enum_ids =[]; // Array für die ID's die später in der enum.function erstellt werden
          
          var bwTage = ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'];       // Wochentage f. Autobewässerung
          
          var time;
          
          var runtimer = false;
          
          var bwModus = 'manu';
          
          var bwPumpe = geraeteInstanz + 'OEQxxxxxxxx.1';
          
          
          
          // Bewässerungszonen 
          var bwZone = [];
          
              bwZone[0] = [];
              bwZone[0][0] = '1';                 // Ventil Nummer fortlaufend
              bwZone[0][1] = 'Hinten';            // Name der Zone
              bwZone[0][2] = 'OEQxxxxxxxx.1';      // Ventil Geräte ID
          
              
              bwZone[1] = [];
              bwZone[1][0] = '2';                 // Ventil Nummer fortlaufend
              bwZone[1][1] = 'Terasse';           // Name der Zone
              bwZone[1][2] = 'OEQxxxxxxxx.2';      // Ventil Geräte ID
          
              bwZone[2] = [];
              bwZone[2][0] = '3';                 // Ventil Nummer fortlaufend
              bwZone[2][1] = 'Vorne';             // Name der Zone
              bwZone[2][2] = 'OEQxxxxxxxx.3';      // Ventil Geräte ID
          
          /*
              bwZone[3] = [];
              bwZone[3][0] = '4';                 // Ventil Nummer fortlaufend
              bwZone[3][1] = 'HeckeBlumen';             // Name der Zone
              bwZone[3][2] = 'xxxxxxxxxxxx';      // Ventil Geräte ID
          */
          // -----------------------------------------------------------------------------
          // Objekte
          // -----------------------------------------------------------------------------
          // Objekt für Zufalls-Farbwechsel an oder aus
          
          function createObjects() {
              createState(instanz + pfad0 + '_Konfig_abgeschlossen', {def: 'false', type: 'boolean', name: 'Konfiguration abgeschlossen'});
              createState(instanz + pfad0 + 'bwSchalter', {def: 'false', type: 'boolean', name: 'Schalter Bereiche Bewaessern start/stop'});
              createState(instanz + pfad0 + 'bwAktivZone', {def: '', type: 'string', name: 'Aktuell bewaesserte Zone'});
              createState(instanz + pfad0 + 'bwTimeCounter',  {def: '0', type: 'number', name: 'Bewaesserung Timer'});
          
              
              createState(instanz + pfad0 + pfad2 + 'bwZeitGesamtMin', {def: '0',type:'number',name: 'Bewässerungszeit gesammt alle Bereiche'});
              createState(instanz + pfad0 + pfad2 + 'bwZeitHeuteMin', {def: '0',type:'number',name: 'Bewaesserungszeit Heute alle Bereiche'});
              createState(instanz + pfad0 + pfad2 + 'bwZeitZuletztMin', {def: '0',type:'number',name: 'Bewaesserungszeit Zuletzt alle Bereiche'});
          
              bwTage.forEach(function(wtg){
                  createState(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik1',  {def: 'false',type: 'boolean',name: 'Bewaesserungsautomatik 1 ein/aus '+wtg});
                  createState(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik2',  {def: 'false',type: 'boolean',name: 'Bewaesserungsautomatik 2 ein/aus '+wtg});
                  
                  createState(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime1',  {def: '09:00',type: 'string',name: 'Uhrzeit 1 für Auto Bewaessern '+wtg});
                  createState(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime2',  {def: '20:00',type: 'string',name: 'Uhrzeit 1 für Auto Bewaessern'+wtg});
                  
                  if(!getState(instanz + pfad0 + '_Konfig_abgeschlossen').val) {
                      Enum_ids.push(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik1');
                      Enum_ids.push(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik2');
                      Enum_ids.push(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime1');
                      Enum_ids.push(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime2');
                  }   
              });
          
          
          
          
              bwZone.forEach(function(bwz) {
                  // -----------------------------------------------------------------------------
                  //  Erstellen Datenpunkte
                  // -----------------------------------------------------------------------------
                  createState(instanz + pfad0 + bwz[1] + '.bwAktiv', {def: 'false', type: 'boolean', name: 'Bewaesserung für Zone:'+bwz[1]+' Aktiv/Inaktiv'});
                  createState(instanz + pfad0 + bwz[1] + '.bwVorgabeZeit', {def: '2', type: 'number', name: 'Bewaesserungsvorgabezeit für Zone:'+bwz[1]});
                  createState(instanz + pfad0 + bwz[1] + '.bwZeitHeuteSek', {def: '0',type:'number',name: 'Bewaesserungszeit Heute in Sek'});
                  createState(instanz + pfad0 + bwz[1] + '.bwZeitZuletztSek', {def: '0',type:'number',name: 'Bewaesserungszeit Zuletzt in Sek'});
                  
                  createState(instanz + pfad0 + bwz[1] + '.bwVentilSchalten', {def: 'false', type: 'boolean', name: 'Ein / Aus Ventil für Zone:'+bwz[1]});
                  
                  if(!getState(instanz + pfad0 + '_Konfig_abgeschlossen').val) {
                      Enum_ids.push(instanz + pfad0 + bwz[1] + '.bwVentilSchalten'); 
                      Enum_ids.push(instanz + pfad0 + bwz[1] + '.bwAktiv');
                  }
                  
              });
          
          }
          
          // Objekte erstellen    
          createObjects();
          
          // #############################################################################
          // #                                                                           #
          // #  fahren der Jalousien                                                     #
          // #                                                                           #
          // #############################################################################
          function bwJalousien(VentilNr) {
                  // Jalosie in küche und wohnzimmer herunter während gießen, 
                  // beim hochfahren welches level?
                  if(VentilNr === 2){
          //                    log('____________________________________________________________________________________________')
          
                      setStateDelayed('hm-rpc.0.NEQxxxxx.1.LEVEL', 15, getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000);
                      setStateDelayed('hm-rpc.0.NEQxxxx.1.LEVEL', 15, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+1000);
                  }
                  
                  if(VentilNr === 3){
          //        var jalLevelWohnz =  getState('hm-rpc.0.NEQxxxx.1.LEVEL').val;
          //        var jalLevelKueche = getState('hm-rpc.0.NEQxxxx.1.LEVEL').val;
                      setStateDelayed('hm-rpc.0.NEQxxxx.1.LEVEL', getState('javascript.0.Jalousien.Jalousie_Wunschlevel_Wohnen').val, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+1000);
                      setStateDelayed('hm-rpc.0.NEQxxxx.1.LEVEL', getState('javascript.0.Jalousien.Jalousie_Wunschlevel_Kueche').val, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+3000);
          //            jalLevelKueche = 100;
          //            jalLevelWohnz = 100
                  }
          }
          // #############################################################################
          // #                                                                           #
          // #  Durchschalten der verfügbaren Bewässerungszonen                          #
          // #                                                                           #
          // #############################################################################
          function bwBereiche(VentilNr) {
                 bwJalousien(VentilNr);
          //    if(getState(instanz + pfad0 + "bwSchalter").val !== false){
                  if(logging === true && VentilNr < bwZone.length) log('Aktuell bewässerter Bereich:' + VentilNr);
                  if(debugging === true ) log('VentilNr-----------------------------------------------: '+VentilNr);
              
                  setState(instanz + pfad0 + 'bwAktivZone', VentilNr.toString());
                  if(VentilNr <= bwZone.length) setState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek', 0);
              
                  if(VentilNr <= bwZone.length){
          // Nachschauen ob die Variable verfügbar ist.            
          //        log(getState(instanz + pfad0 + bwz[VentilNr-1] + '.bwVorgabeZeit').val * 60000)
                      if(VentilNr == '1'){
                  //        BewaessernStart();
                          if(debugging === true ) log('Alle Ventile ausgeschalten');
                          setState(instanz + pfad0 + pfad2 + 'bwZeitZuletztMin', 0);
                          
                          bwZone.forEach(function(bwz) {
                          if(debugging === true ) log('Ventil '+bwz[2]+' ausgeschalten');
                          // Ventil ausschalten
                              if(getState(geraeteInstanz + bwz[2]+ ".STATE").val) setState(geraeteInstanz + bwz[2]+ ".STATE", false);
                          });
                      }   
                      if(VentilNr >1){
                          if(debugging === true ) log('Ventil Nr.:'+bwZone[VentilNr-2][2]+' ausgeschalten');
                          if(getState(geraeteInstanz + bwZone[VentilNr-2][2]+ ".STATE").val === true) setState(geraeteInstanz + bwZone[VentilNr-2][2]+ ".STATE", false);
                      }
                      if(debugging === true ) log('Pumpe einschalten');
                      
                      // Pumpe Schalten
                      if(getState(bwPumpe + ".STATE").val === false) setState(bwPumpe + ".STATE", true); //Pumpe
                      // Ventil ausschalten, nächstes nach 5 Sekunden einschalten
                      if(getState(geraeteInstanz + bwZone[VentilNr-1][2]+ ".STATE").val === false) setStateDelayed(geraeteInstanz + bwZone[VentilNr-1][2]+ ".STATE", true, 5000);
                      if(debugging === true ) log('Ventil Nr.:'+bwZone[VentilNr-1][2]+' eingeschalten');
                      setState(instanz + pfad0 + 'bwTimeCounter', getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60);// noch ändern auf 60
                      bwZeitCountdown(VentilNr);
                  }
                  else{
                       BewaessernEnde(VentilNr);
                  }
          //    } else {
          //        if(logging) log('Zonenbewaesserung ausgeschalten');
          //    }
          }
          
          // #############################################################################
          // #                                                                           #
          // #  Endefunktion nach dem Bewässern                                          #
          // #                                                                           #
          // #############################################################################
          
          function BewaessernEnde(VentilNr){
              
              if(time) clearTimeout(time);
              if(VentilNr < bwZone.length) bwWerteSpeichern(VentilNr);
              if(getState(geraeteInstanz + bwZone[VentilNr-2][2]+ ".STATE").val === true) setState(geraeteInstanz + bwZone[VentilNr-2][2]+ ".STATE", false);
              if(debugging === true ) log('Ventil Nr.:'+bwZone[VentilNr-2][2]+' ausgeschalten');
              if(debugging === true ) log('Übergebene Ventilnummer: '+VentilNr);
              if(getState(instanz + pfad0 + "bwSchalter").val !== false) setState(instanz + pfad0 + "bwSchalter", false);
              setState(instanz + pfad0 + 'bwAktivZone','');
              
              if(debugging === true ) log('Pumpe ausgeschalten');
              if(getState(bwPumpe + ".STATE").val === true) setState(bwPumpe + ".STATE", false); //Pumpe
              
              if(telegram_benachtrichtigung === true) telegram_versenden('BewaessernEnde');
          }
          
          // #############################################################################
          // #                                                                           #
          // #  Counter der die Bewässerungszeit herunter zählt                          #
          // #                                                                           #
          // #############################################################################
          
          function bwZeitCountdown(VentilNr) {
              time = setTimeout(function () {
                  var bwtimer = getState(instanz + pfad0 + 'bwTimeCounter').val; // || (getState(instanz + pfad0 + bwz[VentilNr-1] + '.bwVorgabeZeit').val * 60000);
          
                  if(VentilNr > bwZone.length) bwtimer = 0;
          
                  if (bwtimer >= 1) {
                      setState(instanz + pfad0 + 'bwTimeCounter', bwtimer - 1);
                      bwZeitCountdown(VentilNr);
                      
                      setState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitHeuteSek', parseInt(getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitHeuteSek').val) + 1);
                      setState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek', parseInt(getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek').val) + 1);
          
                      if(debugging) log(bwtimer);
                  }
                  else{
                      bwWerteSpeichern(VentilNr);
                      
                          bwBereiche(parseInt(VentilNr) + 1);
                  }
              }, 1000);
          }
          // #############################################################################
          // #                                                                           #
          // #  Speichert die ZonenWerte in die Gesamtwerte                              #
          // #                                                                           #
          // #############################################################################
          
          function bwWerteSpeichern(VentilNr){
              setState(instanz + pfad0 + pfad2 + 'bwZeitZuletztMin', parseInt(getState(instanz + pfad0 + pfad2 + 'bwZeitZuletztMin').val) + (Math.floor(parseInt(getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek').val)))/60);
              setState(instanz + pfad0 + pfad2 + 'bwZeitHeuteMin', parseInt(getState(instanz + pfad0 + pfad2 + 'bwZeitHeuteMin').val) + (Math.floor(parseInt(getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek').val)))/60);
              setState(instanz + pfad0 + pfad2 + 'bwZeitGesamtMin', parseInt(getState(instanz + pfad0 + pfad2 + 'bwZeitGesamtMin').val) + (Math.floor(parseInt(getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek').val)))/60);
              setState(instanz + pfad0 + 'bwTimeCounter', 0);
          }
          
          // #############################################################################
          // #                                                                           #
          // #  Timer der die Bewässerungszeit herauf zählt                              #
          // #                                                                           #
          // #############################################################################
          
          function bwStopUhr(VentilNr){
              time = setTimeout(function () {
                  bwtimer = 0;
          
                  setState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitHeuteSek', parseInt(getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitHeuteSek').val) + 1);
                  setState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek', parseInt(getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek').val) + 1);
          /*           
                      setState(instanz + pfad0 + 'bwZeitHeuteMin',Math.floor(getState(instanz + pfad0 + 'BetriebszeitHeuteSek').val/60));
                      setState(instanz + pfad0 + 'bwZeitZuletztMin',Math.floor(getState(instanz + pfad0 + 'BetriebszeitZuletztSek').val/60));
                      setState(instanz + pfad0 + 'bwZeitGesamtMin',Math.floor(getState(instanz + pfad0 + 'BetriebszeitHeuteSek').val/60));
          */
                  if(logging) log(bwtimer);
              }, 1000);
          }
          
          // #############################################################################
          // #                                                                           #
          // #  Timer der die Bewässerungszeit herauf zählt                              #
          // #                                                                           #
          // #############################################################################
          
          function bwAutoBewaesserungszeiten() {
              bwTage.forEach(function(wtg){
                  
                  if(getState(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime1').val){
                      var bwZeit1 = getState(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime1').val.split(':');
                      if(logging) log(getState(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik1').val);
                     
                     
                      if(getState(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik1').val === true){
                          if(bwZeit_Schedule1[wtg]) clearSchedule(bwZeit_Schedule1[wtg]);
                          bwZeit_Schedule1[wtg] = schedule('10 '+bwZeit1[1].trim() + ' ' + bwZeit1[0].trim() + ' * * '+ bwTage.indexOf(wtg), function (){
                                  setState(instanz + pfad0 + "bwSchalter", true);
                          });
                          if(logging) log('Automatisches Gießen 1 am '+wtg+' um '+bwZeit1[0]+': '+bwZeit1[1]+' Uhr aktiviert');
                      }
                      else{                                                               
                           if(bwZeit_Schedule1[wtg]) clearSchedule(bwZeit_Schedule1[wtg]);
                           if(logging) log('Automatisches Gießen 1 am '+wtg+' wurde deaktiviert');
                      }
                  }
                  
                  if(getState(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime2').val){
                      var bwZeit2 = getState(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime2').val.split(':');
                      if(debugging === true ) log(getState(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik2').val);
                     
                     
                      if(getState(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik2').val === true){
                          if(bwZeit_Schedule2[wtg]) clearSchedule(bwZeit_Schedule2[wtg]);
                          bwZeit_Schedule2[wtg] = schedule('10 '+bwZeit2[1].trim() + ' ' + bwZeit2[0].trim() + ' * * '+ bwTage.indexOf(wtg), function (){
                                setState(instanz + pfad0 + "bwSchalter", true);
                          });
                          if(logging) log('Automatisches Gießen 2 am '+wtg+' um '+bwZeit2[0]+': '+bwZeit2[1]+' Uhr aktiviert');
                      }
                      else{                                                               
                           if(bwZeit_Schedule2[wtg]) clearSchedule(bwZeit_Schedule2[wtg]);
                           if(logging) log('Automatisches Gießen 2 am '+wtg+' wurde deaktiviert');
                      }
                  }
              });
          }
          
          
          
          // #############################################################################
          // #                                                                           #
          // #  sonstiges                              #
          // #                                                                           #
          // #############################################################################
          
          
          if(!getState(instanz + pfad0 + '_Konfig_abgeschlossen').val) {
                  var Enum_obj = {};
                  Enum_obj.type = 'enum';
                  Enum_obj.common = {};
                  Enum_obj.common.name = 'Bewaesserung';
                  Enum_obj.common.members = Enum_ids;
                  setObject('enum.functions.Bewaesserung', Enum_obj);
              
          setState(instanz + pfad0 + '_Konfig_abgeschlossen', true);    
          }
          
          // #############################################################################
          // #                                                                           #
          // #  Zurücksetzen dert Tageswerte um 0:00 Uhr täglich                         #
          // #                                                                           #
          // #############################################################################
          
          schedule("0 0 * * *", function (){              
              bwZone.forEach(function(bwz) {
                  setState(instanz + pfad0 + bwz[1] + '.bwZeitHeuteSek', 0);
              });
              setState(instanz + pfad0 + pfad2 + 'bwZeitHeuteMin', 0);
          });
          
          // Beobachten des Schalters für die automatik Bewässerung 
          on({id: instanz + pfad0 + 'bwSchalter', change: "ne"}, function (dp) {
              if(dp.state.val === true){
                  bwBereiche('1');
              } else {
                  bwBereiche(bwZone.length +1);
              }
          });
          
          if(!getObject('enum.functions.Bewaesserung')) {
              log('objekt fehlt');
          } 
          
          
          function ScriptStart() {
          //    if(getState(instanz + pfad0 + 'Konfiguration.IoRestart_komp_Bkp').val === true){
          //        setStateDelayed(instanz + pfad0 + 'Konfiguration.IoRestart_komp_Bkp', false, 5000);
          //    }
              
             bwScheduleAktuallisieren();
          log('hier wurde der schedule-befehl ausgeführt');
          
          }
          
          function bwScheduleAktuallisieren() {
          //    runScript(name);
              log('Werte wurden aktualisiert');
              bwAutoBewaesserungszeiten();
          }
          // #############################################################################
          // #                                                                           #
          // #  Beobachten aller Enum Funcions Datenpunkte                               #
          // #                                                                           #
          // #############################################################################
          
          $('state(functions=Bewaesserung)').on(function(dp) {
              bwAutoBewaesserungszeiten();
              var flog = dp.id.split('.');
              if(logging === true ) log('Folgender Datenpunkt hat sich geändert: '+flog[3]);
           
               bwZone.forEach(function(findstring){
                   if(findstring.indexOf(flog[3]) != '-1') log('Ventil Nr.:'+findstring[0]);
               });
           
          });
          
          ScriptStart();
          
          

          Ich beantworte keine Fragen zu Themen via PN

          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

          631

          Online

          32.7k

          Benutzer

          82.4k

          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