Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Wahl eines Datenpunktes

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Wahl eines Datenpunktes

    This topic has been deleted. Only users with topic management privileges can see it.
    • Aphofis
      Aphofis @paul53 last edited by Aphofis

      @paul53
      Ich habe in dem Blockly 20 Zeitsteuerungen!
      Kann es jetzt aber anders machen per javascript und VIS direkt die 6 Datenpunkte Zeitgesteuert steuern.
      Nur will das Javascript iwie die Datenpunkte nicht sauber schalten.
      Kann es sein, das dass Javascript mit Großbuchstaben und den Unterstrichen Probleme hat !? kann man das im Javascript irgendwie anpassen !?
      Ich würde auch gerne, das das Script die Datenpunkte in:

      Aqua_Control.0.Tunze_Steuerung.
      

      erstellt. Anstatt in

      javascript.0.Timer.
      

      Das Dazugehörige VIS Widget kann ich dann auch die richtigen Datenpunkte anpassen.
      In TimerTargetNames

      intervall;sequenzial;puls;wave;stop;feed 
      

      eingetragen
      und in TimerTarget

      Aqua_Control.0.Tunze_Steuerung.intervall;Aqua_Control.0.Tunze_Steuerung.sequenzial;Aqua_Control.0.Tunze_Steuerung.puls;Aqua_Control.0.Tunze_Steuerung.wave;Aqua_Control.0.Tunze_Steuerung.stop;Aqua_Control.0.Tunze_Steuerung.feed
      

      Der Quellcode ist:

      //Script tested & Ok
      //Legt Timer an
      //Wichtige Einstellungen
      const AnzahlTimer = 20; //Wieviele Timer anlegen? Der erste ist 1, nicht 0!
      
      //let setTimeout;
      const logging = true; //Logmeldungen an/aus
      const praefix = "javascript.0.Timer."; //Grundpfad
      // let Presence = getState("radar2.0._nHere").val; //Pfad zum Anwesenheitsdatenpunkt. Erwartet wird eine Zahl >=
      let Presence = true
      var Wochentage = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]; //Array für createStateschleife zum anlegen der Wochentage
      var Astrotrigger = ["dawn", "sunrise", "dusk", "goldenHour", "dusk", "sunset"]; //Array für Astro 
      //if (logging) { log(Astrotrigger.length.toString()) };
      createState(praefix + "TimerTargets", "", false, { read: true, write: true, name: "Ziele welche geschaltet werden", type: "string", def: "" }); //Zentrale Source für die Anzeige in vis, Erstellung in der TimerRoot
      createState(praefix + "TimerTargetNames", "", false, { read: true, write: true, name: "Smartnames für die Ziele", type: "string", def: "" });
      
      for (let x = 1; x < AnzahlTimer + 1; x++) {
          //Datenpunkte anlegen 
          createState(praefix + x + ".Aktiv", false, false, { read: true, write: true, name: "Timer aktiv", type: "boolean", role: "switch", def: false }); //Legt fest ob der Timer aktiv ist
          createState(praefix + x + ".Rolle", 2, false, { read: true, write: true, name: "Rolle", type: "number", role: "value", def: 2 }); //Legt fest ob der Timer für An oder Aus zuständig ist
          createState(praefix + x + ".TimerTimestamp", "00:00:00", false, { read: true, write: true, name: "Zeitstempel für schaltzeit", type: "string", def: "00:00:00" });
          createState(praefix + x + ".TimerAstroTimestamp", "00:00:00", false, { read: true, write: true, name: "Zeitstempel für Astroschaltzeit", type: "string", def: "00:00:00" });
          createState(praefix + x + ".TimerAstroShift", 0, false, { read: true, write: true, name: "Zeitverschiebung für Astroschaltzeit", type: "number", def: 0 });
          for (let y = 0; y < 7; y++) { //Einträge für jeden Wochentag anlegen
              createState(praefix + x + ".Timer" + Wochentage[y], true, false, { read: true, write: true, name: Wochentage[y], type: "boolean", role: "switch", def: true });
          };
          createState(praefix + x + ".TimerChoice", "Zeit", false, { read: true, write: true, name: "Funktionswahl für Timer/Astro", type: "string", def: "Zeit" }); //Gewählte Funktion, Timer oder Astro
          createState(praefix + x + ".SwitchTarget", "", false, { read: true, write: true, name: "Ziel für Schaltvorgang", type: "string", def: "" });
          createState(praefix + x + ".OnlyIfPresence", false, false, { read: true, write: true, name: "Nur ausführen falls jemand anwesend", type: "boolean", role: "switch", def: false }); //Legt fest ob der Timer aktiv ist
          createState(praefix + x + ".OnlyIfNoPresence", false, false, { read: true, write: true, name: "Nur ausführen falls niemand anwesend", type: "boolean", role: "switch", def: false }); //Legt fest ob der Timer aktiv ist
      };
      
      
      //****************************
      
      //Datenpunkte Id"s zuweisen
      var id1 = [];
      for (let x = 1; x < AnzahlTimer + 1; x++) {//Anzahl der Timer
          let y = 0;
          id1[x] = [];
          id1[x][y] = (praefix + x + ".Aktiv"); y = y + 1;
          id1[x][y] = (praefix + x + ".Rolle"); y = y + 1;
          id1[x][y] = (praefix + x + ".TimerTimestamp"); y = y + 1;
          id1[x][y] = (praefix + x + ".TimerAstroTimestamp"); y = y + 1;
          id1[x][y] = (praefix + x + ".TimerAstroShift"); y = y + 1;
          id1[x][y] = (praefix + x + ".TimerChoice"); y = y + 1;
          for (let z = 0; z < Wochentage.length; z++) {//Schleifenvariable für Wochentage
              id1[x][y] = (praefix + x + ".Timer" + Wochentage[z]); y = y + 1;
          };
          id1[x][y] = (praefix + x + ".SwitchTarget"); y = y + 1;
          id1[x][y] = (praefix + x + ".OnlyIfPresence"); y = y + 1;
          id1[x][y] = (praefix + x + ".OnlyIfNoPresence"); y = y + 1;
      
      };
      
      // TimerVariablenArray anlegen für schedules
      var TimerAction = [];
      for (let x = 1; x < AnzahlTimer + 1; x++) {
          TimerAction[x] = null;
      };
      
      //Alle Daten in MyTimer Array einlesen
      var MyTimer = [];
      for (let x = 1; x < AnzahlTimer + 1; x++) {
          MyTimer[x] = [];
          for (let y = 0; y < id1[x].length; y++) {
              //log("x=" + x + "  y=" + y);
              MyTimer[x][y] = getState(id1[x][y]).val;
              //log(MyTimer[x][y]);
          };
      };
      
      //******************************************************** */
      
      function MakeCronString(whichone) { //String nach Cronsyntax zusammenbauen für Schedule
      
          var DaysSubString = "";
          for (let x = 0; x < 7; x++) {
              if (MyTimer[whichone][x + 6] == true) { //Beginnend mit dem 6ten Eintrag (TimerSonntag) die 7 Wochentage durchzählen und Werte anhängen
                  DaysSubString = DaysSubString + x + ",";
              };
          };
          DaysSubString = DaysSubString.substr(0, DaysSubString.length - 1); //Komma am Ende entfernen
          if (DaysSubString == "0,1,2,3,4,5,6") { DaysSubString = "*"; }; // Sternchen wenn alle Tage gewählt
      
          var tempString = "";
          if (MyTimer[whichone][5] == "Zeit") { //Wenn Zeit gewählt
              tempString = SplitTime(MyTimer[whichone][2])[1] + " " + SplitTime(MyTimer[whichone][2])[0] + " * * " + DaysSubString;
              log("CronString für Timer " + whichone + " erstellt " + tempString);
          }
          else if (MyTimer[whichone][5] != "Zeit") { //Wenn Astro gewählt
              tempString = SplitTime(MyTimer[whichone][3])[1] + " " + SplitTime(MyTimer[whichone][3])[0] + " * * " + DaysSubString;
              log("Cronstring für Timer " + whichone + " Astro erstellt " + tempString);
          };
          return tempString;
      };
      
      //spezifischen Timer setzen
      function SetTimer(whichone) {
          if (MyTimer[whichone][0] == true) {
              log("Timer " + whichone + " wird gesetzt")
              TimerAction[whichone] = schedule(MakeCronString(whichone), function () {
                  DoAction(whichone);
                  if (MyTimer[whichone][5] != "Zeit") { //Wenn Astro gewählt
                      RefreshAstro(whichone); //Neue Astrozeit setzen nach Ausführung
                  }
              });
          };
      };
      
      function RefreshAstro(whichone) {
          if (logging) { log("Refresh Astro") };
          SetChoosenAstroTime(whichone, true);
          SetTimer(whichone);
      };
      
      //Alle Timer setzen
      function SetAllTimer() {
          if (logging) { log("Setting all Timers") };
          for (let x = 1; x < AnzahlTimer + 1; x++) {
              SetTimer(x);
          }
      };
      
      //spezifischen Timer löschen
      function KillTimer(whichone) {
          clearSchedule(TimerAction[whichone]);
          if (logging) { log("Timer " + whichone + " killed") };
      }
      
      //Astro oder Zeit Gateway
      function AstroOrTime(whichone) {
          if (MyTimer[whichone][5] == "Zeit") {
              if (logging) { log("Zeit gewählt " + MyTimer[whichone][2]) };
          }
          else if (MyTimer[whichone][5] != "Zeit") {
              SetChoosenAstroTime(whichone);
              log("Astro gewählt, Variante " + MyTimer[whichone][5]);
          };
      };
      
      function SetChoosenAstroTime(whichone, GoToTomorrow) { //Zeit für gewählte Astrozeit eintragen
          let Shift = parseInt(MyTimer[whichone][4]); //Wert für Shift
          let AstroChoice = MyTimer[whichone][5].trim(); //Wert für Astroereignis
      
          //Berücksichtigen ob Event schon vorbei ist und dann für morgen setzen
          let today = new Date();
          let jetzt = new Date();
          let tomorrow = today.setDate(today.getDate() + 1);
          let tomorrowAstroTime = getAstroDate(AstroChoice, tomorrow);
          tomorrowAstroTime.setMinutes(tomorrowAstroTime.getMinutes() + Shift);//zammrechna
          log(AstroChoice + " beginnt heute um:" + getAstroDate(AstroChoice).toLocaleTimeString('de-DE', { hour12: false }) + " und beginnt morgen um " + tomorrowAstroTime.toLocaleTimeString('de-DE', { hour12: false }));
          //log(getAstroDate(AstroChoice).getTime() + " " + today.getTime() + " " + today.toLocaleTimeString());
          //log("Astro=" + getAstroDate(AstroChoice) + " Heute=" + jetzt + " " + "todayzeit=" + today.toLocaleTimeString());
      
          let AstroTime = getAstroDate(AstroChoice); //Astrotime einlesen
          AstroTime.setMinutes(AstroTime.getMinutes() + Shift);//zammrechna
          AstroTime.toLocaleTimeString('de-DE', { hour12: false });
          //if (getAstroDate(AstroChoice).getTime()  < jetzt.getTime()) { //Wenn Astrozeit vor aktueller Zeit dann Astrozeit von morgen verwenden
          if (AstroTime.getTime() <= jetzt.getTime() || GoToTomorrow == true) { //Wenn Astrozeit vor aktueller Zeit dann Astrozeit von morgen verwenden
              setState(id1[whichone][3], tomorrowAstroTime.toLocaleTimeString('de-DE', { hour12: false }));
              MyTimer[whichone][3] = tomorrowAstroTime.toLocaleTimeString('de-DE', { hour12: false });
              log("Astrotime von morgen verwendet, Event is heute bereits vorüber = " + tomorrowAstroTime.toLocaleTimeString('de-DE', { hour12: false }));
          }
          //else if (getAstroDate(AstroChoice).getTime() > jetzt.getTime()) {
          else if (AstroTime.getTime() > jetzt.getTime()) {
              setState(id1[whichone][3], AstroTime.toLocaleTimeString('de-DE', { hour12: false }));
              MyTimer[whichone][3] = AstroTime.toLocaleTimeString('de-DE', { hour12: false });
              log("Astrotime von heute verwendet, Event kommt heute noch = " + AstroTime.toLocaleTimeString('de-DE', { hour12: false }) + " Morgen=" + tomorrowAstroTime.toLocaleTimeString('de-DE', { hour12: false }));
          }
          else {
              log("Derf ned sei");
          };
      };
      
      function DoAction(whichone) {
          if (MyTimer[whichone][0] == true) { //Wenn Timer aktiv
              if ((MyTimer[whichone][14] == true && Presence !=0) || (MyTimer[whichone][13] == true && Presence == 0) || (MyTimer[whichone][13] == true && MyTimer[whichone][14] == true)) { //Wenn "bei Anwesenheit" aktiv
      
                  if (MyTimer[whichone][1] == 1) { // Wenn die Rolle Anschalter ist
                      setState(MyTimer[whichone][13], true); //Switchtarget aktivieren
                      log(MyTimer[whichone][13] + " Timer " + whichone + " hat angeschaltet");
                  }
                  else if (MyTimer[whichone][1] == 0) { //Wenns die Rolle Ausschalter ist
                      setState(MyTimer[whichone][13], false);//Switchtarget deaktivieren
                      log("Timer " + whichone + " hat ausgeschaltet");
                  };
              };
          };
      };
      
      
      //if (logging) { log(SplitTime("12:05") + h + m) };
      //Zeit in Stunden und Minuten teilen für Cronstring
      function SplitTime(Time) {
          var timesplit = Time.split(":", 2);
          //h = timesplit[0]  / m = timesplit[1];
          return timesplit;
      };
      
      function main() {
          SetAllTimer();
      };
      
      main();
      
      //Trigger für Timer x
      onStop(function () { //Bei Scriptende alle Timer löschen
          for (let x = 1; x < AnzahlTimer + 1; x++) {
              KillTimer(x);
          };
      }, 100);
      
      for (let x = 1; x < AnzahlTimer + 1; x++) { //Alle Timer durchlaufen und Trigger setzen
          on(id1[x][5], function (dp) { //Bei Änderung AstroChoice
              MyTimer[x][5] = getState(id1[x][5]).val; //Nach Änderung neuen Wert einlesen
              KillTimer(x);
              AstroOrTime(x);
              SetTimer(x);
              if (logging) log("AstroChoice geändert" + " für Timer " + x);
          });
      
          on(id1[x][1], function (dp) { //Bei Änderung Rolle
              MyTimer[x][1] = getState(id1[x][1]).val; //Nach Änderung neuen Wert einlesen
              if (MyTimer[x][1] == 2) {//Wenn TimerRolle=2 =inaktiv
                  MyTimer[x][0] = false;
                  setState(id1[x][0], false);
              }
              else {
                  MyTimer[x][0] = true;
                  setState(id1[x][0], true);
              };
              KillTimer(x);
              SetTimer(x);
              if (logging) log("Rolle geändert" + " für Timer " + x);
          });
      
          on(id1[x][4], function (dp) { //Bei Änderung Shift
              MyTimer[x][4] = getState(id1[x][4]).val; //Nach Änderung neuen Wert einlesen
              KillTimer(x);
              AstroOrTime(x);
              SetTimer(x);
              if (logging) log("Shift geändert" + " für Timer " + x);
          });
      
          on(id1[x][2], function (dp) { //Bei Änderung Zeit (TimerTimestamp)
              //setTimeout(function () { //1sek Timeout um prellen zu vermeiden
              MyTimer[x][2] = getState(id1[x][2]).val; //Nach Änderung neuen Wert einlesen
              KillTimer(x);
              SetTimer(x);
              if (logging) log("TimerTimestamp Zeit geändert auf " + MyTimer[x][2] + " für Timer " + x);
              //}, 1000);
          });
      
          on(id1[x][0], function (dp) { //Bei Änderung Timer Aktiv
              MyTimer[x][0] = getState(id1[x][0]).val; //Nach Änderung neuen Wert einlesen
              if (logging) log("TimerActive geändert auf " + MyTimer[x][0] + " für Timer " + x);
              //KillTimer(x);
              //SetTimer(x);
      
          });
      
          on(id1[x][6], function (dp) { //Bei Änderung Wochentage
              MyTimer[x][6] = getState(id1[x][6]).val; //Nach Änderung neuen Wert einlesen
              KillTimer(x);
              SetTimer(x);
      
              if (logging) log("TimerTag " + Wochentage[0] + " geändert auf " + MyTimer[x][6] + " für Timer " + x);
          });
          on(id1[x][7], function (dp) { //Bei Änderung Wochentage
              MyTimer[x][7] = getState(id1[x][7]).val; //Nach Änderung neuen Wert einlesen
              KillTimer(x);
              SetTimer(x);
      
              if (logging) log("TimerTag " + Wochentage[1] + " geändert auf " + MyTimer[x][7] + " für Timer " + x);
          });
          on(id1[x][8], function (dp) { //Bei Änderung Wochentage
              MyTimer[x][8] = getState(id1[x][8]).val; //Nach Änderung neuen Wert einlesen
              KillTimer(x);
              SetTimer(x);
      
              if (logging) log("TimerTag " + Wochentage[2] + " geändert auf " + MyTimer[1][8] + " für Timer " + x);
          });
          on(id1[x][9], function (dp) { //Bei Änderung Wochentage
              MyTimer[x][9] = getState(id1[x][9]).val; //Nach Änderung neuen Wert einlesen
              KillTimer(x);
              SetTimer(x);
      
              if (logging) log("TimerTag " + Wochentage[3] + " geändert auf " + MyTimer[x][9] + " für Timer " + x);
          });
          on(id1[x][10], function (dp) { //Bei Änderung Wochentage
              MyTimer[x][10] = getState(id1[x][10]).val; //Nach Änderung neuen Wert einlesen
              KillTimer(x);
              SetTimer(x);
      
              if (logging) log("TimerTag " + Wochentage[4] + " geändert auf " + MyTimer[x][10] + " für Timer " + x);
          });
          on(id1[x][11], function (dp) { //Bei Änderung Wochentage
              MyTimer[x][11] = getState(id1[x][6]).val; //Nach Änderung neuen Wert einlesen
              KillTimer(x);
              SetTimer(x);
      
              if (logging) log("TimerTag " + Wochentage[5] + " geändert auf " + MyTimer[x][11] + " für Timer " + x);
          });
          on(id1[x][12], function (dp) { //Bei Änderung Wochentage
              MyTimer[x][12] = getState(id1[x][12]).val; //Nach Änderung neuen Wert einlesen
              KillTimer(x);
              SetTimer(x);
      
              if (logging) log("TimerTag " + Wochentage[6] + " geändert auf " + MyTimer[x][12] + " für Timer " + x);
          });
          on(id1[x][12], function (dp) { //Bei Änderung Switchtarget
              MyTimer[x][13] = getState(id1[x][13]).val; //Nach Änderung neuen Wert einlesen
              if (logging) log("TimerTag " + Wochentage[6] + " geändert auf " + MyTimer[x][12] + " für Timer " + x);
          });
      
      };
      
      
      

      Mit freundlicher weitergabe von carlo
      Irgendwie wird immer nur puls auf true gesetzt aber nix weiter

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Aphofis last edited by paul53

        @Aphofis sagte:

        Kann es sein, das dass Javascript mit Großbuchstaben und den Unterstrichen Probleme hat !?

        Großbuchstaben und Unterstriche machen keine Probleme.

        @Aphofis sagte in Wahl eines Datenpunktes:

        Script die Datenpunkte in: Aqua_Control.0.Tunze_Steuerung. erstellt.

        Mit der Funktion von @Mic kann man Datenpunkte auch unter einem eigenen Ordner erstellen, wenn man Zeile 21 anpasst

            const WHERE = '0_userdata.0';   // You could change the starting path accordingly. Not recommended to change, though.
        
        1 Reply Last reply Reply Quote 1
        • Aphofis
          Aphofis last edited by

          @paul53
          Das hat schon mal geklappt mit dem eigenen Ordner.
          Die gewählten Datenpunkte im VIS werden korrekt in den einzelnen Timern gesetzt, doch werden die falschen Datenpunkte der switch Datenpunkte geschaltet.
          Obgleich TimerTargetNames und TimerTargets sogar in der selben Reihenfolge sind.
          Alle widgets hab ich einzelne durchforstet und die sind richtig eingestellt.
          Woran, kann der Fehler liegen, das nicht die richtigen Datenpunkte geschaltet werden.

          paul53 1 Reply Last reply Reply Quote 0
          • Aphofis
            Aphofis last edited by

            Das ist das dazugehörige Timer Widget

            [{"tpl":"tplValueBoolCheckbox","data":{"oid":"javascript.0.Timer.1.OnlyIfNoPresence","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_append":"wenn abwesend","class":""},"style":{"left":"786px","top":"519px","width":"157px","height":"20px","font-size":"small"},"widgetSet":"basic"},{"tpl":"tplValueBoolCheckbox","data":{"oid":"javascript.0.Timer.1.OnlyIfPresence","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_append":"wenn anwesend","class":"mdui-Title"},"style":{"left":"630px","top":"519px","width":"157px","height":"20px","font-size":"small"},"widgetSet":"basic"},{"tpl":"tplValueBool","data":{"oid":"javascript.0.Timer.1.Aktiv","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_false":"Timer 1","html_true":"Timer 1","class":"mdui-flatbutton mdui-center ","html_append":"","visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide"},"style":{"left":"630px","top":"454px","height":"25px","width":"80px","text-align":"","z-index":"5","cursor":"default"},"widgetSet":"basic"},{"tpl":"tplValueBoolCtrl","data":{"oid":"javascript.0.Timer.1.TimerSonntag","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_false":"<diff class=\"mdui-red\" >So:","html_true":"<diff class=\"mdui-green\" >So:","class":"mdui-raisedbutton"},"style":{"left":"630px","top":"541px","width":"40px","height":"20px","text-align":"center"},"widgetSet":"basic"},{"tpl":"tplValueBoolCtrl","data":{"oid":"javascript.0.Timer.1.TimerMontag","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_false":"<diff class=\"mdui-red\" >Mo:","html_true":"<diff class=\"mdui-green\" >Mo:","class":"mdui-raisedbutton"},"style":{"left":"672px","top":"541px","width":"40px","height":"20px","text-align":"center"},"widgetSet":"basic"},{"tpl":"tplValueBoolCtrl","data":{"oid":"javascript.0.Timer.1.TimerDienstag","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_false":"<diff class=\"mdui-red\" >Di:","html_true":"<diff class=\"mdui-green\" >Di:","class":"mdui-raisedbutton"},"style":{"left":"715px","top":"541px","width":"40px","height":"20px","text-align":"center"},"widgetSet":"basic"},{"tpl":"tplValueBoolCtrl","data":{"oid":"javascript.0.Timer.1.TimerMittwoch","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_false":"<diff class=\"mdui-red\" >Mi:","html_true":"<diff class=\"mdui-green\" >Mi:","class":"mdui-raisedbutton"},"style":{"left":"757px","top":"541px","width":"40px","height":"20px","text-align":"center"},"widgetSet":"basic"},{"tpl":"tplValueBoolCtrl","data":{"oid":"javascript.0.Timer.1.TimerDonnerstag","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_false":"<diff class=\"mdui-red\" >Do:","html_true":"<diff class=\"mdui-green\" >Do:","class":"mdui-raisedbutton"},"style":{"left":"799px","top":"541px","width":"40px","height":"20px","text-align":"center"},"widgetSet":"basic"},{"tpl":"tplValueBoolCtrl","data":{"oid":"javascript.0.Timer.1.TimerFreitag","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_false":"<diff class=\"mdui-red\" >Fr:","html_true":"<diff class=\"mdui-green\" >Fr:","class":"mdui-raisedbutton"},"style":{"left":"842px","top":"541px","width":"40px","height":"20px","text-align":"center"},"widgetSet":"basic"},{"tpl":"tplValueBoolCtrl","data":{"oid":"javascript.0.Timer.1.TimerSamstag","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_false":"<diff class=\"mdui-red\" >Sa:","html_true":"<diff class=\"mdui-green\" >Sa:","class":"mdui-raisedbutton"},"style":{"left":"884px","top":"541px","width":"40px","height":"20px","text-align":"center"},"widgetSet":"basic"},{"tpl":"tplValueBool","data":{"oid":"","g_fixed":true,"g_visibility":true,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":"true","visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_false":"","html_true":"","class":"mdui-flatbutton mdui-center mdui-green-pulse","html_append":"","visibility-oid":"javascript.0.Timer.1.Aktiv"},"style":{"left":"630px","top":"454px","height":"25px","width":"80px","text-align":"","z-index":"0","cursor":"default"},"widgetSet":"basic"},{"tpl":"tplJquiSelectList","data":{"oid":"javascript.0.Timer.1.SwitchTarget","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","values":"{javascript.0.Timer.TimerTargets}","texts":"{javascript.0.Timer.TimerTargetNames}","height":"150","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"class":"mdui-select","no_style":true},"style":{"left":"724px","top":"452px","width":"200px","z-index":10,"height":"25px","font-size":"small"},"widgetSet":"jqui"},{"tpl":"tplValueStringRaw","data":{"oid":"javascript.0.Timer.1.TimerAstroTimestamp","g_fixed":true,"g_visibility":true,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"!=","visibility-val":"Zeit","visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"visibility-oid":"javascript.0.Timer.1.TimerChoice","views":null,"class":"mdui-value"},"style":{"left":"849px","top":"494px","width":"90px","height":"22px","z-index":3,"background-color":"","color":"","text-align":"","font-weight":"","font-size":"","border-color":"","border-width":"","border-style":""},"widgetSet":"basic"},{"tpl":"tplJquiSelectList","data":{"oid":"javascript.0.Timer.1.Rolle","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","values":"0;1;2","texts":"Ausschalten;Einschalten;Nix macha","height":"120","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"no_style":true,"views":null,"class":"mdui-select"},"style":{"left":"630px","top":"487px","width":"100px","height":"28px","z-index":8,"font-size":"small"},"widgetSet":"jqui"},{"tpl":"tplJquiInput","data":{"oid":"javascript.0.Timer.1.TimerAstroShift","g_fixed":true,"g_visibility":true,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"label":"+/-","digits":"0","size":"1","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"visibility-cond":"!=","visibility-val":"Zeit","visibility-groups-action":"hide","visibility-oid":"javascript.0.Timer.1.TimerChoice","views":null,"class":"mdui-input"},"style":{"left":"847px","top":"573px","width":"93px","height":"20px","font-size":"","z-index":9,"font-weight":"bold","color":"black"},"widgetSet":"jqui"},{"tpl":"tplJquiSelectList","data":{"oid":"javascript.0.Timer.1.TimerChoice","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","values":"Zeit;dawn;sunrise;goldenHour;dusk;sunset","texts":"Zeit;Morgendämmerung;Sonnenaufgang;Goldene Stunde;Abenddämmerung;  Sonnenuntergang;","height":"200","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"no_style":true,"views":null,"class":"mdui-select"},"style":{"left":"630px","top":"567px","width":"198px","height":"25px","font-size":"small","font-weight":"bold","z-index":9},"widgetSet":"jqui"},{"tpl":"tplJquiInputDatetime","data":{"oid":"javascript.0.Timer.1.TimerTimestamp","g_fixed":true,"g_visibility":true,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":"Zeit","visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"size":"5","timeOnly":true,"hideSeconds":true,"visibility-oid":"javascript.0.Timer.1.TimerChoice","views":null,"class":"mdui-input"},"style":{"left":"849px","top":"491px","width":"90px","height":"25px","font-weight":"","z-index":9,"font-size":"","text-align":"right"},"widgetSet":"jqui"}]
            
            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @Aphofis last edited by

              @Aphofis sagte:

              Woran, kann der Fehler liegen, das nicht die richtigen Datenpunkte geschaltet werden.

              Mit Vis/Widgets kenne ich mich nicht aus.

              1 Reply Last reply Reply Quote 0
              • Aphofis
                Aphofis last edited by

                Ich denke mal es liegt irgendwo im JavaScript und nicht am Widget! Da in den timer datenpunkten die richtigen Programme eingetragen werden aber nicht an die Switch datenpunkte übergeben wird. Iwo muss ein Fehler sein

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @Aphofis last edited by paul53

                  @Aphofis sagte in Wahl eines Datenpunktes:

                  Ich denke mal es liegt irgendwo im JavaScript

                  Ändere mal in Zeile 178 [13] --> [15]

                          if ((MyTimer[whichone][14] && Presence) || (MyTimer[whichone][15] && !Presence) || (MyTimer[whichone][15] && MyTimer[whichone][14])) { //Wenn "bei Anwesenheit" aktiv
                  
                  Aphofis 1 Reply Last reply Reply Quote 1
                  • Aphofis
                    Aphofis @paul53 last edited by

                    @paul53
                    Habe ich geändert! zwar wurde beim ersten mal der richtige Datenpunkt geschaltet aber dann beim zweiten Timer nicht mehr da wurde dann der selbe Datenpunkt gewählt obwohl im timer SwitchTarget der richtige Datenpunkt eingetragen wurde.
                    Hatte im timer Sequenzial gewählt und im Timer stand dann auch "javascript.0.Timer.sequenzial" ohne"".
                    wenn ich zwischen den Timern den letzten Datenpunkt manuell auf false setze bringt auch keine Änderung.

                    paul53 2 Replies Last reply Reply Quote 0
                    • paul53
                      paul53 @Aphofis last edited by paul53

                      @Aphofis sagte:

                      obwohl im timer SwitchTarget der richtige Datenpunkt eingetragen wurde.

                      Zeigt das Log "... hat angeschaltet" auch die falsche ID an ?

                      1 Reply Last reply Reply Quote 0
                      • Aphofis
                        Aphofis last edited by

                        Meine LOG:
                        Bildschirmfoto 2020-01-25 um 17.34.10.png

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @Aphofis last edited by paul53

                          @Aphofis
                          Noch mal in das Script geschaut: Ab Zeile 312 steht Unsinn. Ändere [12] --> [13] und passe die Log-Ausgabe an.

                              on(id1[x][13], function (dp) { //Bei Änderung Switchtarget
                                  MyTimer[x][13] = dp.state.val; //Nach Änderung neuen Wert einlesen
                          

                          EDIT: Enthalten die Datenpunkte ".OnlyIfPresence" und ".OnlyIfNoPresence" Konstanten ? Es gibt dafür keinen Trigger.

                          1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @Aphofis last edited by

                            @Aphofis sagte:

                            Meine LOG:

                            "javascript.0.Timer.sequenzial" ist falsch ?

                            1 Reply Last reply Reply Quote 0
                            • Aphofis
                              Aphofis last edited by Aphofis

                              wenn ich einen Datenpunkt raus kopiere ist bei sequenzial der Pfad javascript.0.Timer.sequenzial

                              Bildschirmfoto 2020-01-25 um 18.54.00.png
                              Wie ist denn dann der richtige Datenpunkt Pfad ???

                              Bildschirmfoto 2020-01-25 um 18.58.26.png

                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @Aphofis last edited by

                                @Aphofis sagte:

                                Pfad javascript.0.Timer.sequenzial

                                Also sollte das Log doch den richtigen Datenpunkt zeigen, der auch auf true steht ?

                                Aphofis 1 Reply Last reply Reply Quote 0
                                • Aphofis
                                  Aphofis @paul53 last edited by

                                  @paul53
                                  Ich sehe nicht wo der Pfad falsch sein soll!
                                  wie gesagt, erste Schaltung Timer 1 wird der richtige Datenpunkt geschaltet dann aber Timer 2 soll ein anderer der 6 Datenpunkte geschaltet werden und es wir wieder sequenzial geschaltet anstatt wie eingestellt puls.
                                  Andere Frage, kann man es per Javascript so programmieren, das wenn ein neuer Datenpunkt der im aktuellen Timer auf true gesetzt wird, das die anderen 5 dann abgeschaltet werden !?
                                  Insofern die Timer dann bald auch funktionieren

                                  1 Reply Last reply Reply Quote 0
                                  • Aphofis
                                    Aphofis last edited by

                                    Ich wollte 20 Timer erstellen, die dann später die Strömungspumpen steuern und jetzt 40 Timer zu erstellen, damit dann jeweils keine Ahnung paar Sekunden später nach aktivieren eines neuen Datenpunktes dann der alte per timer abgeschaltet wird.

                                    1 Reply Last reply Reply Quote 0
                                    • Aphofis
                                      Aphofis last edited by

                                      Hier wird Das Programm aus TimerTargetNames genommen und in SwitchTarget eingetragen
                                      Bildschirmfoto 2020-01-25 um 20.13.43.png

                                      Hier wird der Timer ein oder aus geschaltet
                                      Bildschirmfoto 2020-01-25 um 20.16.04.png

                                      Hier werden die Wochentage de/aktiviert
                                      Bildschirmfoto 2020-01-25 um 20.17.22.png

                                      Hier wird die Uhrzeit geschaltet
                                      Bildschirmfoto 2020-01-25 um 20.18.48.png

                                      Hier wird die Anwesenheit eingestellt was aber im Javascript ausgeklammert ist per

                                      //let Presence = getState("radar2.0._nHere").val; //Pfad zum Anwesenheitsdatenpunkt. Erwartet wird eine Zahl >=0
                                      let Presence = true
                                      

                                      Bildschirmfoto 2020-01-25 um 20.21.08.png

                                      1 Reply Last reply Reply Quote 0
                                      • Aphofis
                                        Aphofis last edited by

                                        @paul53
                                        also habe alles noch mal gelöscht und komplett neu installiert.
                                        jetzt werden alle Datenpunkte richtig geschaltet.
                                        Bleibt nur noch das bei aktivieren eines neuen Datenpunktes muss der vorherige auf false gesetzt werden.
                                        Wie kann man das in das Javascript am besten einbauen ???

                                        paul53 2 Replies Last reply Reply Quote 0
                                        • paul53
                                          paul53 @Aphofis last edited by

                                          @Aphofis sagte:

                                          bei aktivieren eines neuen Datenpunktes muss der vorherige auf false gesetzt werden.

                                          Was hat es mit der "Rolle" (An/Aus) auf sich ?

                                          1 Reply Last reply Reply Quote 0
                                          • paul53
                                            paul53 @Aphofis last edited by paul53

                                            @Aphofis sagte:

                                            bei aktivieren eines neuen Datenpunktes muss der vorherige auf false gesetzt werden.

                                            Damit auch bei Script-Start ermittelt werden kann, welche Aktivität läuft, wird ein zusätzlicher Datenpunkt (idActive) benötigt. Dann könnte man es etwa so lösen:

                                            var active = getState(idActive).val; // neuer Datenpunkt, damit bei Scriptstart die aktive ID passt
                                            function DoAction(whichone) {
                                                if (MyTimer[whichone][0]) { //Wenn Timer aktiv
                                                    if ((MyTimer[whichone][14] && Presence) || (MyTimer[whichone][15] && !Presence) || (MyTimer[whichone][15] && MyTimer[whichone][14])) { //Wenn "bei Anwesenheit" aktiv
                                                        if(active) setState(active, false); // laufende Aktivität aus 
                                                        active = MyTimer[whichone][13];
                                                        if (MyTimer[whichone][1] == 1) { // Wenn die Rolle Anschalter ist
                                                            setState(active, true); //Switchtarget aktivieren
                                                            log(active + " Timer " + whichone + " hat angeschaltet");
                                                        } else { //Wenns die Rolle Ausschalter ist
                                                            setState(active, false);//Switchtarget deaktivieren
                                                            log("Timer " + whichone + " hat ausgeschaltet");
                                                        }
                                                        setState(idActive, active, true); // neue Aktivität im Datenpunkt merken
                                                    }
                                                }
                                            }
                                            
                                            Aphofis 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            488
                                            Online

                                            32.0k
                                            Users

                                            80.4k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            35
                                            1147
                                            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