NEWS
[Vorlage] Variable Zeitsteuerung mit VIS Editor
-
@Glasfaser
Ja, das ist eine Sache die ich manchmal vermisse. Hatte versucht ein Kompromiss zu finden, das eine gewisse Auswahl erfüllt aber wo man nicht ewig scrollen muss.Zwei Vorschläge für die Umsetzung:
- eine neue Variable oben im Skript, wo die Schrittweite in Minuten FREI angegeben wird: 1 bedeutet alle 0,1,2,...,59. Eine 2 bedeutet 0,2,4,6,...,58. Für die aktuelle Auswahl müsste entsprechend eine 5 eingetragen werden.
- Andere Möglichkeit wäre, dass ich zukünftig das Dropdown für Offsets berücksichtige (aktuell ausgeblendet und daher unberücksichtigt). Manuelle Auswahl wäre weiterhin in 5-Minuten Schritten, aber mit Offset würde es minutiös korrigiert werden können. Vorteil hier: keine weiteren Variablen. Nachteil: noch ein Dropdown für die Einstellung der manuellen Uhrzeit relevant.
Welche Option wird bevorzugt?
-
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
@Glasfaser
Ja, das ist eine Sache die ich manchmal vermisse. Hatte versucht ein Kompromiss zu finden, das eine gewisse Auswahl erfüllt aber wo man nicht ewig scrollen muss.Zwei Vorschläge für die Umsetzung:
- eine neue Variable oben im Skript, wo die Schrittweite in Minuten FREI angegeben wird: 1 bedeutet alle 0,1,2,...,59. Eine 2 bedeutet 0,2,4,6,...,58.
Jipp …. auf dem Handy sieht es anders aus …. , nutze kein Handy deshalb fällt es nicht auf !
Dann lass doch den User mit der Auswahl "Variable" entscheiden , die Idee / Umsetzung finde ich gut
1 = 0 …. bis 59 Min
2 = 0 , 5, 10,15 …. 55 Min -
@Glasfaser sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
@Glasfaser
Ja, das ist eine Sache die ich manchmal vermisse. Hatte versucht ein Kompromiss zu finden, das eine gewisse Auswahl erfüllt aber wo man nicht ewig scrollen muss.Zwei Vorschläge für die Umsetzung:
- eine neue Variable oben im Skript, wo die Schrittweite in Minuten FREI angegeben wird: 1 bedeutet alle 0,1,2,...,59. Eine 2 bedeutet 0,2,4,6,...,58.
Jipp …. auf dem Handy sieht es anders aus …. , nutze kein Handy deshalb fällt es nicht auf !
Dann lass doch den User mit der Auswahl "Variable" entscheiden , die Idee / Umsetzung finde ich gut
1 = 0 …. bis 59 Min
2 = 0 , 5, 10,15 …. 55 MinDie Idee hierbei war eher:
1 = 0.... bis 59 Min
2 = 0, 2, 4... bis 58 Min
.
.
5 = 0, 5, 10.... bis 55 MinSo hätte ich noch mehr Möglichkeiten abgehakt und der Aufwand wäre sogar minimal geringer.
Ok?
-
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
So hätte ich noch mehr Möglichkeiten abgehakt und der Aufwand wäre sogar minimal geringer.
Ok?
Ja , stimmt so kann jeder mehr entscheiden wie er es haben will
-
@Glasfaser
Aufwand ist sehr gering, werde es wahrscheinlich später noch einstellen. Evtl aber auch erst morgen. Für dich wahrscheinlich eher uninteressant da schon selbst umgesetzt. -
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
@Glasfaser
….Für dich wahrscheinlich eher uninteressant da schon selbst umgesetzt.…… deshalb der Vorschlag von mir !
-
Ich habe mich heute erstmalig mit dieser Lösung beschäftigt und ich bin ehrlich beeindruckt. @GiuseppeS Toll gemacht!
Eigentlich müsste doch als Anwendungsfall hier auch die Erstellung einer Anwesenheitssimulation möglich sein. Aufgrund der Berücksichtigung von Astro-Zeiten, Zufallsabweichungen und Bedingungen für die Timer sind die wichtige Komponenten ja vorhanden.
Hat das vielleicht jemand schon versucht oder sich Gedanken dazu gemacht?
Selbst solche Szenarien müssten sich abbilden lassen: Ist der Sonnenaufgang vor der Aufstehzeit, dann braucht der Timer zum Licht Anschalten nicht ausgelöst werden, Ansonsten schon. Eine entsprechende Bedingung ließe sich ja zyklisch per Skript ermitteln und beim Timer auswerten.
VG
ak1 -
@ak1
Schön, dass die diese Lösung gefällt
Das Skript lässt sich beliebig oft anwenden, daher gibt es die Variable "path" weit oben im Skript. Einfach Skript nochmal kopieren und oben die Variable anpassen.
Bei den Views VOR dem nochmaligen Import öffnen und mit Copy/Paste den Pfadanteil "Devices" durch deinen neuen Pfad ersetzen.Ich nutze das Skript zwei Mal: für die allgemeine Rollladen-Steuerung und für die Anwesenheitssimulation.
Für deine Idee müsstest du zwar ein Hilfsskript verwenden, aber es wäre möglich. Als Output müsste aus dem Skript ein State mit true oder false beschrieben werden. Das State dann als Bedingung nutzen.
-
sehr gute Idee mir der Variablen. So ist es für verschiedene Anwenderwünsche flexibel und das drop down wird nicht ewig lang
Top!
Grüße -
@GiuseppeS
Hast Du ggf. mal einen Screenshot (nur einen Ausschnitt) mit 2-3 Timern, die Du im Rahmen der Anwesenheitssteuerung zum Ein- und Ausschalten von Lichtern nutzt? Vielleicht ein Besipiel, wo Du tatsächlich auch Astro-Zeiten einbeziehst.VG
ak1 -
Mir fällt gerade noch eine andere Idee ein.
Ich nutze dein Skript u.a. für meinen Staubsauger.
Jetzt möchte ich einen Timer erstellen, der nur morgen einmal zu einer bestimmten Zeit aktiviert wird und anschließend wieder deaktiviert ist.
Also einen einmaligen Timer.
Z.B. Wochentag und Zeit auswählen wie bisher und zusätzlich noch eine Editiermöglichkeit für einmalig.Siehst du da eine Möglichkeit?
-
@ak1 sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
@GiuseppeS
Hast Du ggf. mal einen Screenshot (nur einen Ausschnitt) mit 2-3 Timern, die Du im Rahmen der Anwesenheitssteuerung zum Ein- und Ausschalten von Lichtern nutzt? Vielleicht ein Besipiel, wo Du tatsächlich auch Astro-Zeiten einbeziehst.VG
ak1 -
@GiuseppeS
Danke! -
@K_o_bold sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Mir fällt gerade noch eine andere Idee ein.
Ich nutze dein Skript u.a. für meinen Staubsauger.
Jetzt möchte ich einen Timer erstellen, der nur morgen einmal zu einer bestimmten Zeit aktiviert wird und anschließend wieder deaktiviert ist.
Also einen einmaligen Timer.
Z.B. Wochentag und Zeit auswählen wie bisher und zusätzlich noch eine Editiermöglichkeit für einmalig.Siehst du da eine Möglichkeit?
Hmmm, das ist schon etwas sportlicher umzusetzen...
Timer soll sich nach Ausführung selbst deaktivieren wenn zuvor diese neue Option gewählt wurde, korrekt?
Wäre es nicht besser, wenn du einen Boolean State erstellst "StaubsaugerTimer = true/false" und diesen als Bedingung einbindest? Wenn der Staubsauger fertig ist setzt er diesen State selbst wieder zurück auf false (separates Mini-Skript). Somit wäre der Timer zwar aktiv aber nicht gesetzt, da die Bedingung nicht erfüllt wäre.
Den Schalter zum Scharfstellen des Saugers könntest Du dann auch frei platzieren. -
Ja korrekt. So war es gemeint.
Ein zusätzlicher datenpunkt + miniskript und das ganze als Bedingung einfügen wäre natürlich auch machbar.
Nachtrag:
Dann könnte ich diesen Datenpunkt in der Vis im Popup einfach selbst als Schalter platzieren..
Danke für den Anstoß... -
@K_o_bold sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Ja korrekt. So war es gemeint.
Ein zusätzlicher datenpunkt + miniskript und das ganze als Bedingung einfügen wäre natürlich auch machbar.
Nachtrag:
Dann könnte ich diesen Datenpunkt in der Vis im Popup einfach selbst als Schalter platzieren..
Danke für den Anstoß...Ich würde den neuen Schalter aber nicht im PopUp sondern im HauptView setzen. So steht die Tabelle mit den Timern immer bereit und separat wird die Bedingung für das Aktivieren gesetzt.
-
Danke für den Tip. Ich möchte aber den einmaligen Timer z.B. Timer 2 gelegentlich ändern und dazu muss ich das Im popup sowieso editieren, dann kann ich ja gleich da auch den Schalter platzieren.
-
Neue Version ist hochgeladen. Minuten Inkremente für PopUp View können nun über Variable verändert werden.
Das Skript und das PopUp View müssten theoretisch neu importiert werden.
Wer sich auskennt:- Im PopUp View muss nur der Verweis auf das neue Objekt angegeben werden, z.B.:
{javascript.0.Timer.Devices.Editor.DropDownMinutes}
- Im Skript gibt es die neue Variable
var minIncrement = 5;
und oben die neue Funktion
// Erstellen des DropDown-Inhalts für Minuten Auswahl in PopUp Editor function setMinutesDropDown() { var strDropDown = ""; for (var i = 0; i < 60; i += minIncrement) { var tmp = (i <= 9 ? "0" : "") + i; strDropDown += tmp + ";"; } strDropDown = strDropDown.slice(0, strDropDown.length - 1); // Entfernen letztes Semikolon setState("javascript.0.Timer." + path + ".Editor.DropDownMinutes", strDropDown); }
Der Aufruf der Funktion erfolgt in main:
function main () { var dropDownListe = ""; var devName; var TimerJSON = {}; var idCounter = 0; if (debugLog){stdLog = true;} // ConditionJSON wird mit jedem Start neu eingelesen createConditionsJSON(); compareCond(); setMinutesDropDown(); // usw...
-
Habe dein Update-Version inkl. PopUp Einstellung durchgeführt . ( Brauchte ich eigentlich nicht , aber bevor ein Fehler vorhanden ist was eigentlich nicht bei Dir vorkommt )
Läuft super … wie zuvor bei meine händischen Änderungen
-
@Glasfaser
Danke für's Testen