- Il più semplice è Blockly, un linguaggio strutturato a 'tessere di puzzle' che possono essere agganciate l'una all'altra in modo da creare funzioni specifiche (n.d.r. Se il sensore di movimento rileva qualcosa, accendi la luce).
- LUA Scripts è un linguaggio strutturato capace di funzioni complesse, con una sintassi semplice e di facile comprensione.
- dzVents Scripts è una versione più sofisticata di LUA.
- Phyton è un linguaggio script molto potente e usato tantissimo per l'elaborazione dati.
- Device: Ovvero in base al cambio di stato di un dispositivo;
- Time: Ovvero in base al tempo. Gli script di questo tipo vengono eseguiti ogni minuto;
- Security: Non abbiamo ancora affrontato l'argomento Sicurezza (n.d.r. Come far sì che Domoticz ci faccia da Allarme), ma gli script di questo tipo si attivano a ogni cambio di stato del livello di sicurezza di Domoticz;
- User Variables: Sono script che vengono eseguiti ogni qual volta una variabile utente da noi impostata cambia stato;
- All: Sono script che intervengono in ognuna delle soprastanti categorie.
-- =========================================
-- Check battery level for all used devices
-- =========================================
-- User Configuration
BatteryThreshold = 20
WeeklySummary = true
SummaryDay = 1 -- Sunday is 1
EmailTo = "email@example.com"
ReportHour = 9
ReportMinute = 01
Domoticz = "localhost"
DomoticzPort = "8080"
Message = ''
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- linux
--json = (loadfile "C:\\Domoticz\\scripts\\lua\\json.lua")() -- windows
commandArray = {}
time = os.date("*t")
-- Weekly Device Battery Summary
if WeeklySummary == true and time.wday == SummaryDay and time.hour == ReportHour and time.min == ReportMinute then
-- Get a list of all devices
handle = io.popen("curl 'http://" .. Domoticz .. ":" .. DomoticzPort .. "/json.htm?type=devices&order=name'")
devicesJson = handle:read('*all')
handle:close()
devices = json:decode(devicesJson)
BattToReplace = false
for i,device in ipairs(devices.result) do
if device.BatteryLevel < 100 and device.Used == 1 then
Message = Message .. device.Name .. ' battery level is ' .. device.BatteryLevel .. '%<br>'
print(device.Name .. ' battery level is ' .. device.BatteryLevel .. '%')
end
end
commandArray['SendEmail']='Domoticz Battery Levels#'.. Message .. '#' .. EmailTo
-- Daily Low Battery Report
elseif time.hour == ReportHour and time.min == ReportMinute then
-- Get a list of all devices
handle = io.popen("curl 'http://" .. Domoticz .. ":" .. DomoticzPort .. "/json.htm?type=devices&order=name'")
devicesJson = handle:read('*all')
handle:close()
devices = json:decode(devicesJson)
BattToReplace = false
for i,device in ipairs(devices.result) do
if device.BatteryLevel < BatteryThreshold and device.Used == 1 then
Message = Message .. device.Name .. ' battery level is ' .. device.BatteryLevel .. '%<br>'
print(device.Name .. ' battery level is ' .. device.BatteryLevel .. '%')
end
end
commandArray['SendEmail']='Domoticz Battery Levels#'.. Message .. '#' .. EmailTo
end
return commandArray
Lo script esegue sia un report settimanale in cui sono indicati tutti i dispositivi con valore di batteria sotto il 100%, sia un report quotidiano in cui sono indicati solo i dispositivi con livello di batteria sotto una certa soglia da noi impostata. E' sufficiente settare i seguenti parametri in base ai nostri desideri:
- WeeklySummary: se è uguale a True lo script esegue sia il report settimanale, sia quello quotidiano, se è False lavora tutti i giorni.
- SummaryDay: Se WeeklySummary è True, questo parametro indica quale giorno fare il report settimanale. Il valore è numerico da 1 a 7 dove 1 è Domenica.
- ReportHour: Definisce l'ora in cui inviare il rapporto.
- ReportMinute: Definisce il minuto in cui inviare il rapporto. Se ReportHour è 10, e ReportMinute è 30, il rapporto sarà inviato alle 10:30.
- BatteryThreshold: è la soglia di controllo per il report quotidiano. Nello script è impostato al 20%, per cui il report visualizzerà solo i dispositivi con livello di carica inferiore al 20 %.
- EmailTo: è il nostro indirizzo email. Ricordarsi di scriverlo tra virgolette.
- Domoticz: va settato con l'indirizzo ip del nostro Raspberry. L'indirizzo va scritto tra virgolette.
Da questo momento lo script è funzionante.
0 commenti:
Posta un commento