Powiadomienia
Wyczyść wszystko

Pomoc Zbyt częste powiadomienia

6 Wpisów
3 Użytkownicy
1 Likes
572 Wyświetleń
(@edass)
Wpisów: 216
Weteran
Autor tematu
 

Cześć

Zrobiłem regułę w Blocky, która wysyła mi powiadomienie o słabej baterii w termometrze (mam ich kilka).

Reguła działa ale efektem jej działania jest kilkanaście, a raczej kilkaset, powiadomień aż do momentu wymiany baterii.

Może mi ktoś jest w stanie podpowiedzieć co zrobić aby dostawać powiadomienie np. gdy bateria ma 15% następne gdy ta wartość spadnie do 10% i kolejne przy 5%.

var notifications = Java.type('org.openhab.io.openhabcloud.NotificationAction');


if (itemRegistry.getItem('gBattery').getState() <= '15') {
  notifications.sendBroadcastNotification('Słaba bateria w czujniku temperatury','temperature_cold','info');
}
aaaaaaa
 
Dodane : 28/09/2022 5:04 pm
isom
 isom
(@isom)
Wpisów: 5084
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@edass nie wiem jak jest w OH , ale zapewne można użyć jakichś zmiennych pomocniczych wykorzystując je w takim bloczku. Sprawdzasz stan baterii i jednocześnie wartość takiej zmiennej , jeśli stan baterii < 15 i zmienna np = 1 , to ustaw zmienną na 2 , w drugim warunku sprawdzasz stan zmiennej i jeśli = 2 to wyślij powiadomienie i ustaw zmienną na 3 , kolejne sprawdzenie baterii to jeśli bateria < 10% i zmienna = 3 to wyślij powiadomienie i ustaw zmienną na 4 , itd , na końcu dodajesz IF bateria > 90% ustaw zmienną na 1 . 

 
Dodane : 28/09/2022 7:50 pm
(@edass)
Wpisów: 216
Weteran
Autor tematu
 

Dobre jest to co mówisz - możesz zerknąć czy o to Ci chodziło? 

bbbbb
var bateria_pomoc;

var notifications = Java.type('org.openhab.io.openhabcloud.NotificationAction');


if (itemRegistry.getItem('gBattery').getState() > '15') {
  bateria_pomoc = 1;
} else if (itemRegistry.getItem('gBattery').getState() <= '15' && bateria_pomoc == 1) {
  notifications.sendBroadcastNotification('Słaba bateria w czujniku temperatury 15%','temperature_cold','info');
  bateria_pomoc = (typeof bateria_pomoc == 'number' ? bateria_pomoc : 0) + 1;
} else if (itemRegistry.getItem('gBattery').getState() <= '10' && bateria_pomoc == 2) {
  notifications.sendBroadcastNotification('Słaba bateria w czujniku temperatury 10%','temperature_cold','info');
  bateria_pomoc = (typeof bateria_pomoc == 'number' ? bateria_pomoc : 0) + 1;
} else if (itemRegistry.getItem('gBattery').getState() <= '5' && bateria_pomoc == 3) {
  notifications.sendBroadcastNotification('Słaba bateria w czujniku temperatury 10%','temperature_cold','info');
  bateria_pomoc = (typeof bateria_pomoc == 'number' ? bateria_pomoc : 0) + 1;
} else if (itemRegistry.getItem('gBattery').getState() <= '2' && bateria_pomoc == 4) {
  notifications.sendBroadcastNotification('BATERIA POZIOM KRYTYCZNY','temperature_cold','info');
  bateria_pomoc = (typeof bateria_pomoc == 'number' ? bateria_pomoc : 0) + 1;
}
 
Dodane : 28/09/2022 8:35 pm
isom
 isom
(@isom)
Wpisów: 5084
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 
 else if (itemRegistry.getItem('gBattery').getState() > '90' && bateria_pomoc == 4) {
 bateria_pomoc = (typeof bateria_pomoc == 'number' ? bateria_pomoc : 0) - 3;

Brakuje takiego zapisu 

Chociaż pierwszy warunek to realizuje , powinno być ok 

 
Dodane : 28/09/2022 9:33 pm
(@maras)
Wpisów: 190
Weteran Donator 2K22 Donator 2K19
 

Nie lepiej ustawić cron i np. raz dziennie sprawdzać stan baterii?

 
Dodane : 29/09/2022 4:54 pm
kamiKAC reacted
(@edass)
Wpisów: 216
Weteran
Autor tematu
 

@isom

Nie mogę resetować zmiennej

bateria_pomoc

przy baterii powyżej 90 ponieważ operuje na całej grupie baterii i po wymianie jednej baterii gBattery przyjmie wartość kolejnej najsłabszej baterii.  

Na razie testuje tą regułę w praktyce i działa zdecydowanie lepiej niż moja bazowa 😉 . Ta reguła przyda mi się jeszcze do monitorowania spadu temperatury.

Dzięki za pomoc.

 

@maras

Nie wpadłem na taki pomysł 🙁 . To jest GENIALNE w swojej prostocie. Pewnie będę z niego korzystał. Dzięki!

 

 
Dodane : 01/10/2022 8:36 pm
Udostępnij: