Notification nur einmal erhalten
Verfasst: 5. Aug 2021 06:23
Hallo zusammen,
ich nutze die OpenHAB App am Handy. Nun stehe ich vor dem Problem das ich ständig Notifications bekomme wenn ein Fehler auftritt.
Bei einige Regeln habe ich Items/Switch erzeugt die den Status setzen, bereits gesendet. Nun meine Frage, kann man das auch einfacher und schöner umsetzen? Ich hatte einen Beitrag von Udo gefunden der das Thema in den DSL Rules schon behandelt viewtopic.php?t=3540 aber mit ".previousState.state" klappt das in den Javascript Rules nicht.
So schaut mein Code im Augenblick aus, dieser setzt ein Item auf ON wenn die Temperatur unterschritten wird damit keine weitere Notification gesendet wird. Wenn die Temperatur wieder gestiegen ist wird das Item wieder auf OFF gesetzt.
Gibt es hier einen eleganteren Weg in Javascript?
Danke
Lenschi
ich nutze die OpenHAB App am Handy. Nun stehe ich vor dem Problem das ich ständig Notifications bekomme wenn ein Fehler auftritt.
Bei einige Regeln habe ich Items/Switch erzeugt die den Status setzen, bereits gesendet. Nun meine Frage, kann man das auch einfacher und schöner umsetzen? Ich hatte einen Beitrag von Udo gefunden der das Thema in den DSL Rules schon behandelt viewtopic.php?t=3540 aber mit ".previousState.state" klappt das in den Javascript Rules nicht.
So schaut mein Code im Augenblick aus, dieser setzt ein Item auf ON wenn die Temperatur unterschritten wird damit keine weitere Notification gesendet wird. Wenn die Temperatur wieder gestiegen ist wird das Item wieder auf OFF gesetzt.
Code: Alles auswählen
if ((itemRegistry.getItem(Frostschutz_Temperatur_previousState').getState() == 'OFF') && (itemRegistry.getItem('Sensorbox1_Wassertemperatur').getState() <= '10')) {
this.timer = ScriptExecution.createTimer(ZonedDateTime.now().plusMinutes(30), function() {
if ((itemRegistry.getItem('Frostschutz_Temperatur_previousState').getState() == 'OFF') && (itemRegistry.getItem('Sensorbox1_Wassertemperatur').getState() <= '10')) {
//logger.info(Wassertemperatur unter 10°C Timer durchgelaufen);
//Schalter wird auf ON gesetzt damit Notification nur 1x gesendet wird
events.postUpdate('Frostschutz_Temperatur_previousState', 'ON');
//Notification werden versendet
if (itemRegistry.getItem('notification').getState() == 'ON'){
NotificationAction.sendNotification('aaa@xxx.de', 'Wasser unter 10°C', "temperature_cold", "Kritisch");
//logger.info("Notification: Wasser weniger als 10°C");
}
}
});
}
//Wassertemperatur wieder über 10°C
else if ((itemRegistry.getItem('Frostschutz_Temperatur_previousState').getState() == 'ON') && (itemRegistry.getItem('Sensorbox1_Wassertemperatur').getState() > '10')){
this.timer = ScriptExecution.createTimer(ZonedDateTime.now().plusMinutes(30), function() {
if ((itemRegistry.getItem('Frostschutz_Temperatur_previousState').getState() == 'ON') && (itemRegistry.getItem(Sensorbox1_Wassertemperatur').getState() > '10')) {
//logger.info("Wassertemperatur über 10°C Timer durchgelaufen");
//Schalter wird auf OFF gesetzt damit Notification wieder gesendet wird
events.postUpdate('Frostschutz_Temperatur_previousState', 'OFF');
if (itemRegistry.getItem('notification').getState() == 'ON'){
//Notification werden versendet
NotificationAction.sendNotification('aaa@xxx.de', 'Wasser über 10°C', "temperature", "Info");
//logger.info("Notification: Wasser mehr als 10°C");
}
}
});
}
Danke
Lenschi