@wal
Im endeffekt ja.
Der Schwimmer ist halt dazu da, wenn ich futterpause aktiviere wo alle Pumpen abgeschaltet werden, steigt der Wasserstand im Technik Becken und das Vlies würde durch den Schwimmer aktiviert wird aber durch den Max Schwimmer gestoppt.
Eigntl kann der Schwimmer raus aber ich überlege mir das noch wie es am besten ist.
NEWS
[gelöst]Anfänger: Variable über Uhrzeit
-
Hallo,
habe folgenden Code für meine Türklingel erstellt. Bei Betätigung eines Taster zwischen 06:00 - 09:00 und 14:00 - 19:45 soll nicht nur ein Telegram versendet werden, sondern auch die Glocke läuten:
var Zeit; schedule('0 6 * * *', function () {Zeit = '1'}); schedule('0 9 * * *', function () {Zeit = '0'}); schedule('0 14 * * *', function () {Zeit = '1'}); schedule('45 19 * * *', function () {Zeit = '0'}); on ('mqtt.0.ESP_Tuerklingeltaster.Glocke.State', function (obj) { if (obj.state.val == 1 && Zeit =='1') setState('sonoff.0.Sonoff_Bridge_.RfKey3', "555503" ) sendTo('telegram.0', 'send', {text: 'Es hat an der Haustüre geläutet'}); sendTo('telegram.1', 'send', {text: 'Es hat an der Haustüre geläutet'}); if (obj.state.val == 1 && Zeit =='0') {sendTo('telegram.0', 'send', {text: 'Es hat an der Haustüre geläutet'}) sendTo('telegram.1', 'send', {text: 'Es hat an der Haustüre geläutet'})}; });
Was passiert mit bei einem Reboot mit meiner Variable Zeit? Ist der Status dann undefinied bzw. wie sollte der Code aussehen, damit es besser funktioniert?
-
Die Variable Zeit is solange undefiniert bis sie die erste Zuweisung erhält.
Frage es doch direkt in der "on" Funktion ab.?
var Zeit; var currentTime = new Date(); var cH = currentTime.getHours() var cM = currentTime.getMinutes(); var cS = currentTime.getSeconds(); if ((cM>=6 && cM<9) || (cM>14 && (cM<19 || (cM==19 && cS<45)))) Zeit=1; else Zeit=0; console.log(Zeit);
oder damit es übersichtlicher ist:
if (cM>19 || (cM==19 && cS>=45)){ } else if (cM>=14) { } else if (cM>=9) { } else if (cM>=6) { } else { }
-
@ticaki Vielen Dank für deine Hilfe.
Ich glaube du hast cH, cM, cS vertauscht:
var Zeit; var currentTime = new Date(); var cH = currentTime.getHours() var cM = currentTime.getMinutes(); var cS = currentTime.getSeconds(); if ((cH>=6 && cH<12) || (cH>14 && (cH<19 || (cH==19 && cM<45)))) Zeit=1; else Zeit=0; console.log(Zeit);
So sollte es aussehen.
-
@Johannes-Bauerstatter
Du hast recht. Cron.... -
@ticaki Hier ist nochmal ne alternative, die vielleicht ein klein wenig übersichtlicher ist, da nicht Stunden und Minuten separat abgefragt werden. Sie jetzt nur voraus, dass dein Value von "mqtt.0.ESP_Tuerklingeltaster.Glocke.State" immer nur 0 oder 1 ist. Sonst müsste man die if-Abfrage nochmal anpassen.
on({id: 'mqtt.0.ESP_Tuerklingeltaster.Glocke.State', change: 'any'}, function (obj) { //Falls Value gleich 0, Funktion abbrechen if(obj.state.val == 0) return; //Aktuelle Dates generieren var currentTime = new Date(); var t06_00 = new Date(currentTime.getFullYear(), currentTime.getMonth(), currentTime.getDay(), 6,0,0); var t09_00 = new Date(currentTime.getFullYear(), currentTime.getMonth(), currentTime.getDay(), 9,0,0); var t14_00 = new Date(currentTime.getFullYear(), currentTime.getMonth(), currentTime.getDay(), 14,0,0); var t19_45 = new Date(currentTime.getFullYear(), currentTime.getMonth(), currentTime.getDay(), 19,45,0); // Abfragen, ob Zeit innerhalb der gewünschten Zeitspanne liegt if( (currentTime >= t06_00 && currentTime < t09_00) || (currentTime >= t14_00 && currentTime < t19_45) ) { setState('sonoff.0.Sonoff_Bridge_.RfKey3', "555503" ); } //Telegrammnachricht immer senden sendTo('telegram.0', 'send', {text: 'Es hat an der Haustüre geläutet'}); sendTo('telegram.1', 'send', {text: 'Es hat an der Haustüre geläutet'}); });
-
@Tictactoo
kann es sein das du anstatt getSeconds() getDay() schreiben wolltest?Aber schönes Beispiel danke
-
@ticaki Ja, natürlich.^^ Sry, war vorher wohl etwas verpeilt.^^