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.
@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
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.
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?
@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 ),
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).
@rafal_sz to może być takie coś
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'
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')
@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
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)