Zeitsteuerung über Slider

Haussteuerung mittels mediola

Moderator: Co-Administratoren

33zdenko
Beiträge: 343
Registriert: 21.12.2013, 16:50
Danksagung erhalten: 4 Mal

Re: Zeitsteuerung über Slider

Beitrag von 33zdenko » 17.04.2019, 15:59

michaelapp hat geschrieben:
17.04.2019, 15:43
Die Lösung wo ich gerade im Einsatz habe beruht auf dem Wecker Skript viewtopic.php?f=35&t=29963 welches auch funktioniert. Die Bedienung ist aber ein wenig schwierig.

Wollte es mit Slider realisieren, da Neo aber keine Systemvariablen befüllen kann habe ich als Ausgangspunkt die Lösung von Garbsen verwendet.

Wenn ich den Wert welchen ich über den Slider einstelle in der Systemvariable hätte und diesen im Programm ansprechen kann, könnte ich auf das Programm verzichten welches alle 5 Minuten läuft ...

Das mit der Variable "VARTRIGGER2" ist also ein neuer Ansatz um es ein wenig komfortabler zu gestalten und vorallem kann ich es leicht vervielfältigen.
ok
wieviele zeiten hast du in der variable
TriggerWecker -typ werteliste, so anlegen: 09:00:00;13:15:00;18:21:00
alle drei benutzst du?
reicht immer die erste zu schreiben???

michaelapp
Beiträge: 280
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 6 Mal
Danksagung erhalten: 5 Mal

Re: Zeitsteuerung über Slider

Beitrag von michaelapp » 17.04.2019, 16:03

Ich habe in der Variable TriggerWecker in der Zwischenzeit 6 Werte stehen und würde noch ein paar mehr benötigen.

33zdenko
Beiträge: 343
Registriert: 21.12.2013, 16:50
Danksagung erhalten: 4 Mal

Re: Zeitsteuerung über Slider

Beitrag von 33zdenko » 17.04.2019, 16:07

michaelapp hat geschrieben:
17.04.2019, 16:03
Ich habe in der Variable TriggerWecker in der Zwischenzeit 6 Werte stehen und würde noch ein paar mehr benötigen.
nun ja wir müssen diese zeit aus dem slider in triggerwecker schreiben und ich frage in welcher position sollten wir es machen

michaelapp
Beiträge: 280
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 6 Mal
Danksagung erhalten: 5 Mal

Re: Zeitsteuerung über Slider

Beitrag von michaelapp » 17.04.2019, 16:09

Am besten am Anfang der Variable.

33zdenko
Beiträge: 343
Registriert: 21.12.2013, 16:50
Danksagung erhalten: 4 Mal

Re: Zeitsteuerung über Slider

Beitrag von 33zdenko » 17.04.2019, 16:10

also zeige mal deine variable trigger wecker wie du sie angelegt hast
ich werde dir für die erste position script machen zum testen...

michaelapp
Beiträge: 280
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 6 Mal
Danksagung erhalten: 5 Mal

Re: Zeitsteuerung über Slider

Beitrag von michaelapp » 17.04.2019, 16:18

So hier die Variable mit den Werten
Zwischenablage-1.jpg

33zdenko
Beiträge: 343
Registriert: 21.12.2013, 16:50
Danksagung erhalten: 4 Mal

Re: Zeitsteuerung über Slider

Beitrag von 33zdenko » 17.04.2019, 16:28

schreibe die zeiten so:
bei mir sieht die variable so aus
10:35:00;05:01:00;02:14:00;11:00:00;13:00:00;18:00:00
also 6 zeiten
bei dir auch so???

33zdenko
Beiträge: 343
Registriert: 21.12.2013, 16:50
Danksagung erhalten: 4 Mal

Re: Zeitsteuerung über Slider

Beitrag von 33zdenko » 17.04.2019, 16:39

wenn ja dann nach dieser zeile im script:
diff = system.Date("%F %T").ToTime().ToInteger() - zeit_sec.ToTime().ToInteger();
das einfügen:

Code: Alles auswählen

var x = dom.GetObject("TriggerWecker").Value();
var y = dom.GetObject("TriggerWecker").ValueList();
var Zeit1 = y.StrValueByIndex(";",1);
var Zeit2 = y.StrValueByIndex(";",2);
var Zeit3 = y.StrValueByIndex(";",3);
var Zeit4 = y.StrValueByIndex(";",4);
var Zeit5 = y.StrValueByIndex(";",5);
zeit_sec = hstr + ":00";
dom.GetObject("TriggerWecker").ValueList(zeit_sec + ";"+ Zeit1 + ";" + Zeit2 + ";" + Zeit3 + ";" + Zeit4 + ";" + Zeit5);
wenn das script geht kopierst du es ganz und erstellst ein programm welches im wenn teil so aussieht:
Bildschirmfoto 2019-04-17 um 16.36.33.png
fügst du aber alle miniten mit oder bis 55
aufpassen das alles bei aktualisierung steht
im dann teil das script komplett einfügen mit diesen änderungen...
wenn du jetzt im slider welche änderungen an der zeit machst, sollte triggerwecker sich die erste zeit verändern
Zuletzt geändert von 33zdenko am 17.04.2019, 17:02, insgesamt 1-mal geändert.

michaelapp
Beiträge: 280
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 6 Mal
Danksagung erhalten: 5 Mal

Re: Zeitsteuerung über Slider

Beitrag von michaelapp » 17.04.2019, 17:00

Ich hab es jetzt mal umgesetzt, mein Skript sieht wie folgt aus:

Code: Alles auswählen

!# ######################################################
!# Trigger-Variable wird gesetzt, wenn die Zeit durch Stunden- und Minutenvariable erreicht ist.
!# Daher periodisches Prüfen der Zeitvariablen nötig, dieses Skript dazu periodisch ausführen.
!# 
!# Hinweis: Der Trigger wird NICHT gesetzt, wenn die Zeit auf "00:00" eingestellt ist!
!#
!# Auf die Trigger-Variable kann in anderen Programmen reagiert werden und Aktionen ausgeführt werden.
!#
!# Erstellt von A. Kos am 04.07.2017
!# ######################################################


!# Name der Stundenvariable vom Typ Werteliste:
string VARSTUNDE = "VARSTUNDE";

!# Name der Minutenvariable vom Typ Werteliste:
string VARMINUTE = "VARMINUTE";

!# Name der Trigger-Variable vom Typ Boolean:
string VARTRIGGER = "VARTRIGGER";

string VARTRIGGER2 = "VARTRIGGER2";

!######### AB HIER MUSS NICHTS GEÄNDERT WERDEN #########

!# Variablen-Deklarationen
string hstr;
integer hint;
string zeit_sec;
integer diff;

!# Die beiden Variablen für Stunde und Minute auf das richtige Format bringen und in hstr schreiben
hint = web.webGetValueFromList(dom.GetObject(VARSTUNDE).ValueList(), dom.GetObject(VARSTUNDE).Variable().ToInteger()).ToInteger();

hstr = hint.ToString() + ":";
hint = web.webGetValueFromList(dom.GetObject(VARMINUTE).ValueList(), dom.GetObject(VARMINUTE).Variable().ToInteger()).ToInteger();

hstr = hstr + hint.ToString();

!# Nur Ausführen, wenn die Zeit nicht auf 00:00 eingestellt ist:
if (hstr == "00:00") { quit; }

!# Prüfen, ob die aktuelle Zeit gleich der zentral eingestellten Zeit ist. Für die Übereinstimmung darf die Differenz zwischen eingestellter und aktueller Uhrzeit nicht mehr als 65 Sekunden betragen.
zeit_sec = system.Date("%F") + " " + hstr + ":00";

diff = system.Date("%F %T").ToTime().ToInteger() - zeit_sec.ToTime().ToInteger();

zeit_sec = hstr + ":00";
dom.GetObject(VARTRIGGER2).State(zeit_sec);

var x = dom.GetObject("TriggerWecker").Value();
 var y = dom.GetObject("TriggerWecker").ValueList();
 var Zeit1 = y.StrValueByIndex(";",1);
 var Zeit2 = y.StrValueByIndex(";",2);
 var Zeit3 = y.StrValueByIndex(";",3);
 var Zeit4 = y.StrValueByIndex(";",4);
 var Zeit5 = y.StrValueByIndex(";",5);
 zeit_sec = hstr + ":00";
 !dom.GetObject("TriggerWecker").ValueList(zeit_sec + ";"+ Zeit1 + ";" + Zeit2 + ";" + Zeit3 + ";" + Zeit4 + ";" + Zeit5); 

if (diff < 0 ) { diff = -1 * diff; }
if (diff <= 65){
  !# Trigger setzen
  dom.GetObject(VARTRIGGER).State(1);
}
else 
{!# Trigger setzen
  dom.GetObject(VARTRIGGER).State(0);}
Meine Systemvariable:
Zwischenablage-3.jpg
Mein Programm nur mal mit den ersten Werten:
Zwischenablage-2.jpg
Leider ändert sich der Wert nicht wenn ich den Slider im Neo schiebe :-(

33zdenko
Beiträge: 343
Registriert: 21.12.2013, 16:50
Danksagung erhalten: 4 Mal

Re: Zeitsteuerung über Slider

Beitrag von 33zdenko » 17.04.2019, 17:03

das !
muss weg in dieser zeile
!dom.GetObject("TriggerWecker").ValueList(zeit_sec + ";"+ Zeit1 + ";" + Zeit2 + ";" + Zeit3 + ";" + Zeit4 + ";" + Zeit5);

Antworten

Zurück zu „mediola“