NEWS
Zeitsteuerung will nicht
-
Hallo Zusammen,
ich versuche mir eine Zeitsteuerung via VIS zu bauen, bei welcher ich zwei separate an- und Abschaltzeiten definieren kann.
Zusätzlich soll es einen Schalter aktiv geben.
Wenn ich nur die Zeiten übergebe passt das, jedoch funktioniert der Schalter aktiv nicht.
Skript:
var ontime = null; var offtime1 = null; on("javascript.0.FunkStart1_1", function(dp) { var Einschaltzeit = dp.state.val.split(':'); // Array: [h,m] var timeHourOn = Einschaltzeit[0]; var timeMinuteOn = Einschaltzeit[1]; log(timeHourOn, "info"); log(timeMinuteOn, "info"); if (ontime) clearSchedule(ontime); ontime = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () { if ("javascript.0.FunkAktiv1"/*FunkAktiv1*/ === true) { sendTo("telegram.0", "send", { text: 'Test Zeitsteuerung1 AN', user: 'Andreas' }); console.info("telegram['Andreas']: " + 'Zeit 1 an'); } }); }); on("javascript.0.FunkStop1_1"/*FunkStop1_1*/, function(dp) { var Einschaltzeit = dp.state.val.split(':'); // Array: [h,m] var timeHourOn = Einschaltzeit[0]; var timeMinuteOn = Einschaltzeit[1]; log(timeHourOn, "info"); log(timeMinuteOn, "info"); if (offtime1) clearSchedule(offtime1); offtime1 = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () { if ("javascript.0.FunkAktiv1"/*FunkAktiv1*/ === true) { sendTo("telegram.0", "send", { text: 'Test Zeitsteuerung1 AUS', user: 'Andreas' }); console.info("telegram['Andreas']: " + 'Zeit 1 aus'); } }); });
-
Hallo Zusammen,
! ich versuche mir eine Zeitsteuerung via VIS zu bauen, bei welcher ich zwei separate an- und Abschaltzeiten definieren kann.
! Zusätzlich soll es einen Schalter aktiv geben.
! Wenn ich nur die Zeiten übergebe passt das, jedoch funktioniert der Schalter aktiv nicht.
! vis.JPG
! Skript:
! ````
var ontime = null;
var offtime1 = null;
! on("javascript.0.FunkStart1_1", function(dp) {
var Einschaltzeit = dp.state.val.split(':'); // Array: [h,m]
var timeHourOn = Einschaltzeit[0];
var timeMinuteOn = Einschaltzeit[1];
log(timeHourOn, "info");
log(timeMinuteOn, "info");
if (ontime) clearSchedule(ontime);ontime = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () { if ("javascript.0.FunkAktiv1"/*FunkAktiv1*/ === true) { sendTo("telegram.0", "send", { text: 'Test Zeitsteuerung1 AN', user: 'Andreas' }); console.info("telegram['Andreas']: " + 'Zeit 1 an'); } });
});
! on("javascript.0.FunkStop1_1"/FunkStop1_1/, function(dp) {
var Einschaltzeit = dp.state.val.split(':'); // Array: [h,m]
var timeHourOn = Einschaltzeit[0];
var timeMinuteOn = Einschaltzeit[1];
log(timeHourOn, "info");
log(timeMinuteOn, "info");
if (offtime1) clearSchedule(offtime1);
offtime1 = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () {
if ("javascript.0.FunkAktiv1"/FunkAktiv1/ === true) {
sendTo("telegram.0", "send", {
text: 'Test Zeitsteuerung1 AUS',
user: 'Andreas'
});
console.info("telegram['Andreas']: " + 'Zeit 1 aus');
}
});
});
```` `komt irgendwas im log wen du den haken setzt ?
Ist die variable auch wirklich ein boolean (true/false) oder wert 0/1 ?
Die abfrage "if ("javascript.0.FunkAktiv1"/FunkAktiv1/ === true) {" sieht schon richtig aus, wen der datenpunkt stimmt
-
Ja es ist bool. Es steht auch unter Objekten mit true. Im Log kommt rein garnichts.
Wenn ich die if Zeile raus nehme funktioniert es auch.
-
Die abfrage "if ("javascript.0.FunkAktiv1"/FunkAktiv1/ === true) {" sieht schon richtig aus, wen der datenpunkt stimmt `
Nein, sieht sie nicht. Richtig:if (getState("javascript.0.FunkAktiv1"/*FunkAktiv1*/).val === true) {
-
Oeps Paul hat recht, ohne .val kommt ja kein Wert zum vergleichen ich krische jetzt mal wieder ins Loch….
Sent from my iPhone using Tapatalk
-
Verdammt, stimmt… Das getstate fehlt auch... Ich werde glaube ich nie ein Fan von Java..
Danke
-
Hallo Zusammen,
ich versuche mir eine Zeitsteuerung via VIS zu bauen, bei welcher ich zwei separate an- und Abschaltzeiten definieren kann.
Zusätzlich soll es einen Schalter aktiv geben.
Wenn ich nur die Zeiten übergebe passt das, jedoch funktioniert der Schalter aktiv nicht.
vis.JPG `
Hallo takero78
Könntest du auch das Widget veröffentlichen? Sieht toll aus….
Schon mal ein Danke dafür
Gruß
Adrian
-
Hallo Adrian,
das ist kein einzelnes Widget. Das ist quasi aus einzelnen Elementen zusammengestellt.
Viele Grüße
-
Hallo,
ich nutze da im ersten Post verwendete Script. Dies funktioniert auch Tadellos, nur habe ich das Problem das bei einem Systemneustart die Zeiten nicht automatisch neu gesetzt werden.
Was auch relativ logisch ist, da das Script ja nur auf Änderungen an den Zeiten reagieren soll.
Gibt es einen einfachen schnellen Weg dieses Problem zu umgehen?
Ich hatte überlegt einfach ein getState und ein setState bei Scripstart zu setzten, aber ist das sauber?
Jemand eine bessere Idee?
-
Ich hatte überlegt einfach ein getState und ein setState bei Scripstart zu setzten, aber ist das sauber?
Jemand eine bessere Idee? `
Das mit dem setState ist nicht so gut. Vorschlag:var ontime = null; var offtime1 = null; var Einschaltzeit = getState("javascript.0.FunkStart1_1").val.split(':'); var Ausschaltzeit = getState("javascript.0.FunkStop1_1").val.split(':'); function setOn() { var timeHourOn = Einschaltzeit[0]; var timeMinuteOn = Einschaltzeit[1]; log(timeHourOn, "info"); log(timeMinuteOn, "info"); if (ontime) clearSchedule(ontime); ontime = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () { if (getState("javascript.0.FunkAktiv1").val === true) { sendTo("telegram.0", "send", { text: 'Test Zeitsteuerung1 AN', user: 'Andreas' }); console.info("telegram['Andreas']: " + 'Zeit 1 an'); } }); } function setOff() { var timeHourOn = Ausschaltzeit[0]; var timeMinuteOn = Ausschaltzeit[1]; log(timeHourOn, "info"); log(timeMinuteOn, "info"); if (offtime1) clearSchedule(offtime1); offtime1 = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () { if (getState("javascript.0.FunkAktiv1").val === true) { sendTo("telegram.0", "send", { text: 'Test Zeitsteuerung1 AUS', user: 'Andreas' }); console.info("telegram['Andreas']: " + 'Zeit 1 aus'); } }); } setOn(); // Script start setOff(); // Script start on("javascript.0.FunkStart1_1", function(dp) { Einschaltzeit = dp.state.val.split(':'); // Array: [h,m] setOn(); }); on("javascript.0.FunkStop1_1"/*FunkStop1_1*/, function(dp) { Ausschaltzeit = dp.state.val.split(':'); // Array: [h,m setOff(); });
-
Danke, das sieht gut aus