j'ai ici trop souvent à mon gout des périphériques (rfxcom) qui font la sourde oreille.
j'ai par exemple plusieurs prises qui répondent au même signal radio, et parfois l'une d'entre elle ne va pas réagir.
je suis du coups obligé de renvoyer l'ordre manuellement.
certain me diront, change d'antenne, déplace le rfxcom etc... je suis conscient que c'est certainement le mieux, mais dans l'immédiat,
pour moi c'est plus simple de renvoyer l'ordre surtout si cela peut être fait automatiquement ^^
on trouve des scripts qui check toutes les x minutes l'état des périphériques et renvoient l'ordre correspondant à l'état supposé,
http://domoticz.blogspot.fr/2014/07/un- ... rence.html
c'est sympa mais j'avais besoin de quelque chose d'instantané, envoyer les commandes par groupe de 2,
j'ai donc écrit un petit script qui va, suivant une liste de périphérique pré-définis, renvoyer l'ordre immédiatement.
le voici:
Code : Tout sélectionner
-- script_device_twice.lua
--
-- ce script permet de doubler les commandes envoyées à certain périphériques
-- de sorte à fiabiliser leur fonctionnement
-- domoticz agit alors comme un répeteur
--------------------------------
------ Tableau à éditer ------
--------------------------------
local ip = '192.168.22.100:8080' -- user:pass@ip:port de domoticz
local switchs={}
switchs['0']='la cafetiere'
switchs['1']='la chambre'
switchs['2']='les pierres'
switchs['3']='leds'
-- switchs['4']='chauffage salon'
-- switchs['5']='chauffage salle de bain'
-- etc..
--------------------------------
-- Fin du tableau à éditer --
--------------------------------
time = os.date("*t")
function timedifference(s)
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = os.difftime (t1, t2)
return difference
end
function urlencode(str)
if (str) then
str = string.gsub (str, "\n", "\r\n")
str = string.gsub (str, "([^%w ])",
function (c) return string.format ("%%%02X", string.byte(c)) end)
str = string.gsub (str, " ", "+")
end
return str
end
commandArray = {}
for key, valeur in pairs(switchs) do
if(uservariables['TWICE_'..valeur..'_On'] == nil) then
commandArray[tonumber(key)]={['OpenURL']=ip..'/json.htm?type=command¶m=adduservariable&vname=TWICE_'..urlencode(valeur)..'_On&vtype=2&vvalue='..urlencode(otherdevices_lastupdate[valeur])}
print('TWICE : création variable manquante TWICE_'..valeur..'_On')
elseif(uservariables['TWICE_'..valeur..'_Off'] == nil) then
commandArray[tonumber(key)]={['OpenURL']=ip..'/json.htm?type=command¶m=adduservariable&vname=TWICE_'..urlencode(valeur)..'_Off&vtype=2&vvalue='..urlencode(otherdevices_lastupdate[valeur])}
print('TWICE : création variable manquante TWICE_'..valeur..'_Off')
elseif (devicechanged[valeur] and timedifference(uservariables['TWICE_'..valeur..'_'..otherdevices[valeur]]) > 5) then
commandArray[valeur] = otherdevices[valeur]..' AFTER 1'
commandArray['Variable:TWICE_'..valeur..'_'..otherdevices[valeur]]=otherdevices_lastupdate[valeur]
print('TWICE : '..valeur.. ' -> ' ..otherdevices[valeur])
end
end
return commandArray