Blockly Zeit zwischen 21-6 Uhr in if-Abfrag3
-
- Beiträge: 221
- Registriert: 16. Dez 2017 10:49
Re: Blockly Zeit zwischen 21-6 Uhr in if-Abfrag3
Hallo zusammen.
Leider zu früh gefreut.
Ich bekomme jetzt immer eine Telegram Meldung, wenn die Garage aufgeht(immer die Meldung: Die Garage ist nach 17 Uhr geöffnet)
Gibt es eine Möglichkeit, Log-einträge ohne den front-tail anzuschauen?
Ich bin halt bis spät Abends "auf Arbeit" und meine Frau ist Nachmittags schon daheim.
Wenn ich im front-tail nachschauen, dann kann ich ja nur "etwas" in die Vergangenheit schauen, würde aber gerne einmal sehen, was zum Zeitpunkt der Öffnung geloggt wird.
Gesendet von meinem SM-G998B mit Tapatalk
Leider zu früh gefreut.
Ich bekomme jetzt immer eine Telegram Meldung, wenn die Garage aufgeht(immer die Meldung: Die Garage ist nach 17 Uhr geöffnet)
Gibt es eine Möglichkeit, Log-einträge ohne den front-tail anzuschauen?
Ich bin halt bis spät Abends "auf Arbeit" und meine Frau ist Nachmittags schon daheim.
Wenn ich im front-tail nachschauen, dann kann ich ja nur "etwas" in die Vergangenheit schauen, würde aber gerne einmal sehen, was zum Zeitpunkt der Öffnung geloggt wird.
Gesendet von meinem SM-G998B mit Tapatalk
RPI4/8GB RAM mit openhabian (bullseye) - Kernel Linux 6.1.21-v8+ - openhab 4.0.2 - Release Build - HM-CCU3 - ZWave UZB-USB Stick - Wifi-LED-Stripes - Logitech Harmony Hub - AVM Fritzbox - Enigma2-Box - Gardena HUB - Fronius-Binding - Miele@Home
-
- Beiträge: 489
- Registriert: 30. Apr 2021 13:13
Re: Blockly Zeit zwischen 21-6 Uhr in if-Abfrag3
Moin,
mir fällt da jetzt keine einfache Lösung ein. Wenn ich das aber richtig sehe, benötigt dein Timer noch eine Abbruchoption, wenn das Tor innerhalb der 5 min geschlossen wurde. Sollte reichen den cancel-Block vor dem ersten if zu platzieren.
E: und den Hinweis von Udo mit dem AND beachten
mir fällt da jetzt keine einfache Lösung ein. Wenn ich das aber richtig sehe, benötigt dein Timer noch eine Abbruchoption, wenn das Tor innerhalb der 5 min geschlossen wurde. Sollte reichen den cancel-Block vor dem ersten if zu platzieren.
E: und den Hinweis von Udo mit dem AND beachten

Zuletzt geändert von Harka am 22. Nov 2023 20:13, insgesamt 2-mal geändert.
- udo1toni
- Beiträge: 15244
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Blockly Zeit zwischen 21-6 Uhr in if-Abfrag3
Du musst halt Zugriff auf den Rechner haben, auf dem openHAB läuft. Die Logs liegen auf einem GNU/Linux System gewöhnlich unter /var/log/openhab/, die aktuellen Daten in events.log und openhab.log, die letzten 7 Dateien werden gepackt aufgehoben, die muss man notfalls entpacken, um sie betrachten zu können (gunzip <datei>)
Ansonsten musst Du halt für den Abend das OR in ein AND ändern. Die Bedingung A >= 17 ODER A < 21 gilt halt für alle Zahlen von - ∞ bis + ∞...
Ansonsten musst Du halt für den Abend das OR in ein AND ändern. Die Bedingung A >= 17 ODER A < 21 gilt halt für alle Zahlen von - ∞ bis + ∞...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 221
- Registriert: 16. Dez 2017 10:49
Re: Blockly Zeit zwischen 21-6 Uhr in if-Abfrag3
Habe leider kein Emoji gefunden, was sich mit der flachen Hand auf die Stirn haut.udo1toni hat geschrieben:...
Ansonsten musst Du halt für den Abend das OR in ein AND ändern. Die Bedingung A >= 17 ODER A < 21 gilt halt für alle Zahlen von - ∞ bis + ∞...
Danke für die Tipps.
Frage zum "cancel": Muss ich das wirklich machen?
Prüft die if nicht nach der Zeit den aktuellen Wert?
Gesendet von meinem SM-G998B mit Tapatalk
RPI4/8GB RAM mit openhabian (bullseye) - Kernel Linux 6.1.21-v8+ - openhab 4.0.2 - Release Build - HM-CCU3 - ZWave UZB-USB Stick - Wifi-LED-Stripes - Logitech Harmony Hub - AVM Fritzbox - Enigma2-Box - Gardena HUB - Fronius-Binding - Miele@Home
-
- Beiträge: 489
- Registriert: 30. Apr 2021 13:13
Re: Blockly Zeit zwischen 21-6 Uhr in if-Abfrag3
Mmmh, jain? Nicht direkt. Aber beim Schließen des Tors wird die Rule, und damit auch der Timer, neu gestartet sowie der neue Wert von Tor gespeichert. Von daher ist Deine Frage berechtigt. Bin mir gerade nicht sicher. Selbst würde ich es sicherheitshalber testen und im Zweifel den cancel mit rein nehmen.
- udo1toni
- Beiträge: 15244
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Blockly Zeit zwischen 21-6 Uhr in if-Abfrag3
Wie sieht der Code der Rule denn konkret aus?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 221
- Registriert: 16. Dez 2017 10:49
Re: Blockly Zeit zwischen 21-6 Uhr in if-Abfrag3
Code: Alles auswählen
var Abend, Nacht, Tor;
var things = Java.type('org.openhab.core.model.script.actions.Things');
Abend = ((time.ZonedDateTime.now()).hour()) >= 17 && ((time.ZonedDateTime.now()).hour()) < 21;
Nacht = ((time.ZonedDateTime.now()).hour()) >= 21 && ((time.ZonedDateTime.now()).hour()) < 6;
Tor = items.getItem('Garagentor_Status').numericState;
if (items.getItem('R_Urlaub').state == 'ON') {
if (Tor != 100) {
console.info('Urlaubsschaltung und Garagentor ist offen --> Telegram');
things.getActions('telegram', 'telegram:telegramBot:TelegramBot').sendTelegram(24452824, 'Die Urlaubsschaltung ist an und das Garagentor ist offen oder wird gerade geöffnet!');
}
} else {
if (cache.private.exists('Garagentor') === false || cache.private.get('Garagentor').hasTerminated()) {
cache.private.put('Garagentor', actions.ScriptExecution.createTimer('Garagentor', time.ZonedDateTime.now().plusMinutes(15), function () {
if (Tor != 100) {
console.info('Das Garagentor ist noch offen');
if (Abend) {
things.getActions('telegram', 'telegram:telegramBot:TelegramBot').sendTelegram(244528224, 'Das Garagentor ist nach 17.00 Uhr noch offen');
console.info('Und es ist zwischen 17.00 und 21.00 Uhr');
} else if (Nacht) {
console.info('Und es ist nach 21.00 Uhr');
things.getActions('telegram', 'telegram:telegramBot:TelegramBot').sendTelegram(244528224, 'Das Garagentor ist nach 21.00 Uhr noch offen');
}
}
}));
};
}
RPI4/8GB RAM mit openhabian (bullseye) - Kernel Linux 6.1.21-v8+ - openhab 4.0.2 - Release Build - HM-CCU3 - ZWave UZB-USB Stick - Wifi-LED-Stripes - Logitech Harmony Hub - AVM Fritzbox - Enigma2-Box - Gardena HUB - Fronius-Binding - Miele@Home
- udo1toni
- Beiträge: 15244
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Blockly Zeit zwischen 21-6 Uhr in if-Abfrag3
Also, es gibt da ein paar Haken und Ösen...
1. ein cache.private.get('Garagentor').cancel() brauchst Du nicht zwingend, denn Du prüfst ja auf hasTerminated.
Gewöhnlich wird man einen laufenden Timer löschen und den Zeiger zurücksetzen, denn so, wie Deine Rule gebaut ist, legt openHAB jedes Mal einen Timer an, wenn die Rule getriggert wird und Urlaub inaktiv ist, und zwar unabhängig davon, ob das nun notwendig wäre oder nicht.
Der Timer wird niemals entfernt, das bedeutet, wenn du das Tor öffnest und gleich wieder schließt, nur um es nach (z.B.) zehn Minuten wieder zu öffnen, wird es nach weniger als 5 Minuten Alarm geben (mal vorausgesetzt, wir befinden und im passenden Zeitfenster).
Und Damit nicht genug, eine Viertelstunde nach dem Öffnen gibt es einen zweiten Alarm, weil ja ein zweiter Timer angelegt wird. Dass dafür die selbe Variable (bzw. der selbe Private Cache) genutzt wird, ändert daran nichts, Du verlierst lediglich den Zugriff auf den ersten Timer.
2. Du greifst innerhalb des Timer Blocks auf die lokalen Variablen Abend und Nacht zu. Diese werden initialisiert, wenn die Rule ausgeführt wird.
Es mag sein, dass die Variablen tatsächlich im Timer zur Verfügung stehen (wetten würde ich nicht drauf, denn die Rule ist zu dem Zeitpunkt schon beendet), aber sie enthalten jedenfalls keine Hinweis auf den aktuellen Zeitpunkt, sondern nur auf den Zeitpunkt, zu dem die Rule zuletzt ausgeführt wurde.
3. Die Variable Nacht wird niemals wahr werden, denn eine Integer Zahl kann nicht gleichzeitig größer (oder gleich) 21 UND kleiner als 6 sein.
1. ein cache.private.get('Garagentor').cancel() brauchst Du nicht zwingend, denn Du prüfst ja auf hasTerminated.
Gewöhnlich wird man einen laufenden Timer löschen und den Zeiger zurücksetzen, denn so, wie Deine Rule gebaut ist, legt openHAB jedes Mal einen Timer an, wenn die Rule getriggert wird und Urlaub inaktiv ist, und zwar unabhängig davon, ob das nun notwendig wäre oder nicht.
Der Timer wird niemals entfernt, das bedeutet, wenn du das Tor öffnest und gleich wieder schließt, nur um es nach (z.B.) zehn Minuten wieder zu öffnen, wird es nach weniger als 5 Minuten Alarm geben (mal vorausgesetzt, wir befinden und im passenden Zeitfenster).
Und Damit nicht genug, eine Viertelstunde nach dem Öffnen gibt es einen zweiten Alarm, weil ja ein zweiter Timer angelegt wird. Dass dafür die selbe Variable (bzw. der selbe Private Cache) genutzt wird, ändert daran nichts, Du verlierst lediglich den Zugriff auf den ersten Timer.
2. Du greifst innerhalb des Timer Blocks auf die lokalen Variablen Abend und Nacht zu. Diese werden initialisiert, wenn die Rule ausgeführt wird.
Es mag sein, dass die Variablen tatsächlich im Timer zur Verfügung stehen (wetten würde ich nicht drauf, denn die Rule ist zu dem Zeitpunkt schon beendet), aber sie enthalten jedenfalls keine Hinweis auf den aktuellen Zeitpunkt, sondern nur auf den Zeitpunkt, zu dem die Rule zuletzt ausgeführt wurde.
3. Die Variable Nacht wird niemals wahr werden, denn eine Integer Zahl kann nicht gleichzeitig größer (oder gleich) 21 UND kleiner als 6 sein.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 489
- Registriert: 30. Apr 2021 13:13
Re: Blockly Zeit zwischen 21-6 Uhr in if-Abfrag3
Ergänzung meinerseits..
zu 1.) der vorgeschlagene Cancel-Befehl von Blockly sollte das imho verhindern.
Hoggle -wenn Du den Timer eine Ebene tiefer legst (nach if Tor ungleich 100) sollte das schon besser aussehen.
zu 2.) die Variablen stehen innerhalb des Timers unter Javascript noch zur Verfügung. Habe es extra noch mal getestet.
zu 1.) der vorgeschlagene Cancel-Befehl von Blockly sollte das imho verhindern.
Code: Alles auswählen
if (cache.private.exists('Garagentor')) { cache.private.remove('Garagentor').cancel(); };
zu 2.) die Variablen stehen innerhalb des Timers unter Javascript noch zur Verfügung. Habe es extra noch mal getestet.