Device scripts each receive 7 tables from Domoticz: devicechanged, otherdevices, otherdevices_lastupdate, otherdevices_svalues, otherdevices_idx, uservariables and uservariables_lastupdate
Variable scripts receive 7 tables from Domoticz: otherdevices, otherdevices_lastupdate, otherdevices_svalues, otherdevices_idx, , uservariables, uservariables_lastupdate and uservariablechanged
Time scripts receive 6 tables: otherdevices, otherdevices_lastupdate, otherdevices_svalues, otherdevices_utility, otherdevices_idx, uservariables and uservariables_lastupdate
.../...
Temperature, humidity and barometer values for other devices can be found in otherdevices_temperature['yourdevice'],otherdevices_humidity['yourdevice'] and otherdevices_barometer['yourdevice'] tables
pas de nvalues
il faut passer par une requête json pour récupérer le level
-- Meteo France vigilance from domogeek API
-- domoticz/scripts/lua/script_time_vigilance.lua
-- Information from Meteo France is updated everyday at 6AM and 5PM
-- This script will check at 6.10AM and 5.10PM
function os.capture(cmd, raw)
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if raw then return s end
s = string.gsub(s, '^%s+', '')
s = string.gsub(s, '%s+$', '')
s = string.gsub(s, '[\n\r]+', ' ')
return s
end
commandArray = {}
time = os.date("*t")
-- Trigger at 6:10 and 17:10
if (time.min == 10 and ((time.hour == 6) or (time.hour == 17))) then
-- Path to curl
local curl = '/usr/bin/curl'
-- Device ID (Type Alert on virtual hardware)
local idx = '63'
-- Department (France)
local dept = '44'
local cmd = 'curl http://domogeek.entropialux.com/vigilance/' .. dept..'/all'
local vigilance = os.capture(cmd, true)
local fill1 = nil
local fill2 = nil
local fill3 = nil
local flood = nil
local color = nil
local risk = nil
fill1, flood, fill2, color, fill3, risk = string.match(vigilance,"{\"(.-)\": \"(.-)\", \"(.-)\": \"(.-)\", \"(.-)\": \"(.-)\"}$")
print('Vigilance: ' .. cmd .. ': ' .. color .. ' / ' .. risk)
local sValue = 'Risque : ' .. risk
local nValue = 0
if color == "vert" then nValue = 1
elseif color == "jaune" then nValue = 2
elseif color == "orange" then nValue = 3
elseif color == "rouge" then nValue = 4
else nValue = 0
end
-- Update device idx with nValue and sValue
commandArray['UpdateDevice'] = idx .. '|' .. nValue .. '|' .. sValue
end
return commandArray
il fonctionne parfaitement, trop parfaitement même.
Je m'explique il se déclenche 3 fois par jour à X H et Y Mn, en cas d alerte il envoi des notifications , sauf que durant la minute de déclenchement il envoi 7-8 fois la même notification, je suppose donc que le script à le temps de s exécuter plusieurs fois.
n'étant pas du tout un pro du lua: y a t il une possibilité pour que le script n’envoie qu'une seule notification en cas d'alerte ?
mais excuse moi, j'ai tellement l’habitude de parler de script lua que je n'avais pas fait attention que c'était du shell lancé par cron..
surtout que ce script à une version lua dont on parlait 3 messages plus haut, j'ai fais l'amalgame, désolé, oublie ce que j'ai dit
MAJ = VIDER LE CACHE(<-Clicable) /!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus modules.lua