Check dei device in Domoticz
Domoticz è in grado di gestire eventi che possono essere creati in due modi:
- usando le funzionalità di creazione ed editing fornite da domoticz stesso. In questo caso si hanno quattro opzioni: utilizzare un’interfaccia grafica chiamata Bloky e utilizzare tre linguaggi di programmazione: LUA, python e Dzevents (aggiunto nelle versioni più recenti e destinato a soppiantare LUA di cui è un’evoluzione)
- Aggiungendo gli script nella corrispondente cartella in /scripts presente nella cartella di installazione di domoticz.
Personalmente preferisco questa seconda opzione perchè in questo modo posso tenere sotto controllo i file che aggiungo alla centralina di domotica ed utilizzare i software per creare e editare gli script.
Maggiori informazioni sull’argomento nel link contenuto in fondo alla pagina.
In questo articolo mi soffermerò sull’utilizzo di DzEvents che è un’evoluzione di LUA adottata nelle ultime versioni di Domoticz. DzEvents ha reso più semplice gestire i trigger basati su eventi.
In particolare lo script nasce dalla necessità di capire se uno dei data logger (in questo caso un sensore di temperatura), inseriti come device in Domoticz installato su Raspberry 3, avesse smesso di inviare dati. Questo può succedere a causa dello scaricamento della batteria o di problemi di rete.
local THRESHOLD = 240 -- minutes 4h local devicesToCheck = {'TemperaturaEsterna','Temperatura Corridoio'} return { active = true, on = { devices = { devicesToCheck }, timer = { 'at 23:59' } }, execute = function(domoticz, item, triggerInfo) if (item.isTimer) then -- check all devices that are off and have not been updated in the past 5 minutes and have not been notified for for index, deviceName in pairs(devicesToCheck) do local device = domoticz.devices(deviceName) if (device.lastUpdate.minutesAgo >= THRESHOLD) then domoticz.notify(deviceName .. ' is not responding anymore.',deviceName .. ' is not responding anymore.',domoticz.PRIORITY_HIGH) -- make sure we only notify once for this device in this case end end end end }
In questa riga si imposta la soglia dei minuti oltre i quali il device è dichiarato morto local THRESHOLD = 240 -- minutes 4h
Di seguito si elencano i device su cui lo script andrà a fare il check local devicesToCheck = {'TemperaturaEsterna','Temperatura Corridoio'}
Viene quindi impostato l’orario di partenza dello script timer = { 'at 23:59' }
L’impostazione del timer può essere settata in ogni momento e con ogni periodicità possibile (vedi link sotto).
Infine viene fatto il check sul tempo di ultima modifica del device e nel caso positivo viene inviata una notifica mediante domoticz.
if (device.lastUpdate.minutesAgo >= THRESHOLD) then domoticz.notify(deviceName .. ' is not responding anymore.',deviceName .. ' is not responding anymore.',domoticz.PRIORITY_HIGH) end
Il tipo di notifica impostata in questo caso ha un’alta priorità, ma i canali a cui arriverà la notifica sono quelli impostati sul singolo device
Link suggeriti per maggiori informazioni:
- Eventi in Domoticz: pagina di informazione generali sugli eventi in domoticz
- Esempi di script in LUA
- DZEvents: Il futuro dello script in Domoticz