Powiadomienia
Wyczyść wszystko

INode w domoticzu - skrypt powiadamiający

11 Wpisów
2 Użytkownicy
1 Reactions
1,506 Wyświetleń
(@rafal_sz)
Wpisów: 26
Praktykant
Autor tematu
 

@isom

Witam, po przerwie, mam prośbę o skrypt. Moje urządzenie Inode (odczyt zużycia energii) zmieniło miejsce. Domoticz też postawiony na nowo.

Potrzebuję informacji (e-mail lub a lepiej powiadomienie pushover(mam wykupioną licencję)) o tym, że jeśli pobór chwilowy jest np >500 (W) przez pół godziny to mam dostać powiadomienie. Próbowałem coś na poprzednim przykładzie zmieniać ale niestety w logach domoticza są informacje o błędach w działaniu skryptu. Urządzenie Inode przesyła dane chyba co 1s (odświeża). Przesyłam opisy z domoticza.

Dzięki z góry.

 

 
Dodane : 30/12/2020 9:38 pm
isom
 isom
(@isom)
Wpisów: 5190
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@rafal_sz Nie wiem czy aż tak często czujnik odświeża swoje dane , ale zrobiłem to bardziej uniwersalne i możesz sobie sam dostosować parametry.

W ustawieniu local norma = 500 masz maksymalną moc jaka jest akceptowana , wszystko co powyżej zaczyna być zliczane

W ustawieniu local pomiar_ilosc = 100 masz ilość odczytów do sprawdzenia, jeżeli wszystkie 100 będą powyżej 500 to dostaniesz powiadomienie z datą , godziną i opisem 

Jeżeli 100 odczytów będzie za krótko to możesz to zwiększać ustawiając np 200, 500, 1000

Powiadomienie będzie wysłane na to co sobie skonfigurujesz w domoticz , czyli jeżeli włączysz powiadomienia pushover i np aktywujesz e-mail to dostaniesz powiadomienie na jedno i drugie 

Jeżeli w trakcie analizy chociaż jeden odczyt będzie poniżej 500 to licznik się zresetuje i zacznie liczenie od nowa 

Po sprawdzeniu działania skryptu jeżeli wszystko będzie ok to zmień w skrypcie LOG_DEBUG na LOG_ERROR zmniejszy to ilość logów a gdyby coś się działo to wywali błędy

Jak coś będzie nie tak to pisz

 

 
Dodane : 31/12/2020 3:23 pm
(@rafal_sz)
Wpisów: 26
Praktykant
Autor tematu
 

@isom

Dzięki za podejście do tematu.

Ustawiłem dla testu wartość tylko 10 odczytów aby szybko wyzwolić powiadomienie ale coś nie działa. Możesz zerknąć na logi

Dodam że w tym czasie wartość odczytu była powyżej 500.

 Skrypt log
 
Dodane : 01/01/2021 4:20 pm
(@rafal_sz)
Wpisów: 26
Praktykant
Autor tematu
 

Update.

Zaczęły przychodzić powiadomienia. Jednak mam problem z określeniem częstotliwości. Po wpisaniu wartości 1 dla pomiar_ilość ,dostałem powiadomienie po ok.3 minutach.

Czy każdy rekord z pliku LOG oznacza częstotliwość odczytu czy też jest to niezależna od odczytu informacja? 

 
Dodane : 01/01/2021 5:14 pm
isom
 isom
(@isom)
Wpisów: 5190
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@rafal_sz przy takiej częstotliwości odczytów z czujnika nie ustawiaj małej wartości dla pomiar_ilość bo system się zatka , szczególnie wtedy gdy wartość mocy będzie przekroczona. W takiej sytuacji rozkaz wysyłania powiadomień jest co kilka sekund i system nie jest w stanie tego przerobić.

Generalnie tak jak napisałem skrypt liczy odczyty i jeżeli wszystkie z ustawionych będą za wysokie to wysyła powiadomienie , jeśli w trakcje liczenia np 100 odczytów chociaż 1 będzie mniejszy niż norma to liczenie zacznie się od początku.

Jak nie sprawdzi Ci się ta wersja skryptu to napisz spróbuję napisać żeby skrypt uruchamiał się w funkcji czasu ( co np 5 minut ), 

 
Dodane : 01/01/2021 5:53 pm
(@rafal_sz)
Wpisów: 26
Praktykant
Autor tematu
 

@isom

Zweryfikowałem częstotliwość i chyba ustawiłem czas (1 odczyt co ok 2s.)? Rozpocząłem testy działania.

Ponieważ apetyt rośnie.....

To mam pytanie i prośbę. Jak powinien wyglądać skrypt z powidomieniem dla tego urządzenia (inode) jeśli nie będzie przesyłał odczytów przez np 5 minut (np.wyczerpana bateria).

 

 
Dodane : 01/01/2021 6:11 pm
isom
 isom
(@isom)
Wpisów: 5190
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@rafal_sz to może być takie coś 

 
jak wkleisz to do zdarzeń to popraw wszystko co jest w logach i w komunikacie powiadomienia , tak żeby to było czytelne bo wklejając tu skrypt z polskimi znakami robi się sieczka robaczków
do poprawienia 
dz.log 'Czujnik przestał‚ wysyłać dane'
dz.notify("Czujnik pompa","Czujnik nie wysyła danych sprawdź baterie " .. DateTimePressed .. ".", dz.PRIORITY_HIGH)
dz.log 'Czujnik wysyła dane i nie ma z nim problemu'
 
Dodane : 01/01/2021 7:04 pm
(@rafal_sz)
Wpisów: 26
Praktykant
Autor tematu
 

@isom

Dzięki.

Wstawiłem skrypt ale widzę taki komunikat w logach:

2021-01-01 22:06:00.369 Error: dzVents: Error: (3.0.2) Inode life: An error occurred when calling event handler Inode_life
2021-01-01 22:06:00.369 Error: dzVents: Error: (3.0.2) Inode life: ...omoticz/scripts/dzVents/generated_scripts/Inode_life.lua:18: attempt to index a nil value (global 'licznik')
 
Dodane : 01/01/2021 10:08 pm
isom
 isom
(@isom)
Wpisów: 5190
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@rafal_sz kurde machnąłem się w nazwie , zmień  w końcówce skryptu w wiersz

elseif licznik.lastUpdate.minutesAgo < 5 then

na 

elseif node.lastUpdate.minutesAgo < 5 then

 
Dodane : 01/01/2021 10:22 pm
(@rafal_sz)
Wpisów: 26
Praktykant
Autor tematu
 

@isom

Już zmieniłem na "node" i wszystko gra. Brak błędów w logach.

2021-01-01 22:45:00.350 Status: dzVents: Info: Inode life: Czujnik wysyła dane i nie ma z nim problemu

Dzięki jeszcze raz.

 
Dodane : 01/01/2021 10:46 pm
isom reacted
(@rafal_sz)
Wpisów: 26
Praktykant
Autor tematu
 

Witam,

Czy mógłbym prosić o dodanie jeszcze takiej funkcji, ze w przypadku braku odczytu z iNodea będzie wykonany restart systemu? Niedawno przeinstalowałem system i wszystko działa ale z nieznanych przyczyn co 2,3 dni traci połączenie i oczywiście dostaję powiadomienia poprzez e-mail (co minutę) ale jak się okazuje nie jest to problem z baterią iNode-a tylko jakaś inny błąd. Restart powoduje nawiązanie ponowne połączenia.

Z góry dziękuję.

 

Dodam, ze taki jest status bluetooth-a:

bluetooth.service - Bluetooth service
Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-12-30 09:03:39 CET; 2h 59min ago
Docs: man:bluetoothd(8)
Main PID: 814 (bluetoothd)
Status: "Running"
Tasks: 1 (limit: 1596)
CPU: 115ms
CGroup: /system.slice/bluetooth.service
└─814 /usr/libexec/bluetooth/bluetoothd

Dec 30 09:03:39 raspberrypi systemd[1]: Starting Bluetooth service...
Dec 30 09:03:39 raspberrypi bluetoothd[814]: Bluetooth daemon 5.55
Dec 30 09:03:39 raspberrypi systemd[1]: Started Bluetooth service.
Dec 30 09:03:39 raspberrypi bluetoothd[814]: Starting SDP server
Dec 30 09:03:39 raspberrypi bluetoothd[814]: Bluetooth management interface 1.21 initialized
Dec 30 09:03:39 raspberrypi bluetoothd[814]: profiles/sap/server.c:sap_server_register() Sap driver initialization failed.
Dec 30 09:03:39 raspberrypi bluetoothd[814]: sap-server: Operation not permitted (1)
Dec 30 09:03:39 raspberrypi bluetoothd[814]: Endpoint registered: sender=:1.23 path=/MediaEndpoint/A2DPSink/sbc
Dec 30 09:03:39 raspberrypi bluetoothd[814]: Endpoint registered: sender=:1.23 path=/MediaEndpoint/A2DPSource/sbc
Dec 30 09:03:39 raspberrypi bluetoothd[814]: Failed to set privacy: Rejected (0x0b)
 
Dodane : 30/12/2022 11:58 am
Udostępnij: