voici le script complet. c'est un script_variable.
J'ai oublié de dire que c'est un Harmony Hub qui fait la passerelle entre domoticz et canalsat
Code : Tout sélectionner
--[[
- script qui gére le décodeur canalsat
- nécessite une variable de type chaîne nommée zappingtele. les requêtes http mètent à jours cette variable qui déclenche ce script à chaque mise à jours.
pour les requêtes get http le type de uservariable est donné en dessous
uservariabletype = le type de valeur à stocker, entre 0 et 4 :
0 = Entier, e.g. -1, 1, 0, 2, 10
1 = Float, e.g. -1.1, 1.2, 3.1
2 = chaine, ex coucou
3 = Date au format DD/MM/YYYY
4 = Heure au format 24hr HH:MM
la forme de la requête est domoticzIp/json.htm?type=command¶m=updateuservariable&idx=idx&vname=uservariablename&vtype=uservariabletype&vvalue=uservariablevalue
]]--
dofile('/home/pi/domoticz/scripts/lua/modules.lua')
local debug = false -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local devices = {}
-- tableau à renseigner {'ordre', 'commande harmony'}. Ceux sont les requêtes qui ne sont pas numériques dans la variable zappingtele
devices[1] = {'baisse le volume', 'VolumeDown'}
devices[2] = {'monte le volume', 'VolumeUp'}
devices[3] = {'chaîne plus', 'ChannelUp'}
devices[4] = {'chaîne moins', 'ChannelUp'}
devices[5] = {'chaîne précédente', 'ChannelPrev'}
devices[6] = {'coupe le son', 'Mute'}
devices[7] = {'sortir', 'Exit'}
devices[8] = {'flèche vers le bas', 'DirectionDown'}
devices[9] = {'flèche vers la droite', 'DirectionRight'}
devices[10] = {'flèche vers la gauche', 'DirectionLeft'}
devices[11] = {'flèche vers le haut', 'DirectionUp'}
devices[12] = {'guide', 'Guide'}
devices[13] = {'info', 'Info'}
devices[14] = {'ok', 'Ok'}
devices[15] = {'tf1', '1'}
devices[16] = {'france 2', '2'}
devices[17] = {'france 3', '3'}
devices[18] = {'france 4', '4'}
devices[19] = {'france 5', '5'}
devices[20] = {'arte', '5'}
devices[21] = {'canal', '4'}
devices[22] = {'canal+', '4'}
devices[23] = {'canal +', '4'}
devices[24] = {'m 6', '6'}
devices[25] = {'tv breizh', '53'}
devices[26] = {'sister', '67'}
devices[27] = {'hd1', '66'}
devices[28] = {'infosport', '120'}
devices[29] = {'eurosport 1', '121'}
devices[30] = {'eurosport 2', '122'}
devices[31] = {'équipe tv', '137'}
devices[32] = {'info sport', '120'}
devices[33] = {'chaîne suivante', 'ChannelUp'}
devices[34] = {'sans', '100'}
devices[35] = {'m6','6'}
--fin du tableau
commandArray = {}
if (uservariables["zappingtele"] ~='0' and tonumber(uservariables["zappingtele"]) == nill) then -- pour commencer on s'occupe des requêtes qui ne sont pas numériques dans la variable zappingtele
for n,device in pairs(devices) do
if (uservariables["zappingtele"] == (device[1])) then
if (tonumber(device[2]) ~= nill) then --on s'occupe d'abord des valeurs qui sont numériques en device[2] (cas de la demande d'une chaine par le nom)
--pour les chaines de 0 à 9
if (tonumber(device[2]) <10) then
local chaine = tonumber(device[2])
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..chaine..'"')
log('je mets la '..chaine,debug)
--pour les chaines de 10 à 99
elseif (tonumber(device[2]) > 9 and tonumber(device[2]) < 100) then
local chainedizaine = math.floor(tonumber(device[2])/10,0.9)
local chaineunite = tonumber(device[2])-( math.floor(tonumber(device[2])/10,0.9)*10)
log('chaine demandée entre 10 et 99. Dizaine= '..chainedizaine..' unités= '..chaineunite,debug)
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..chainedizaine..'"')
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..chaineunite..'"')
--pour les chaines de 100 à 999
elseif (tonumber(device[2]) > 99 and tonumber(device[2]) < 1000) then
local chainecentaine = math.floor(tonumber(device[2])/100,0.9)
local chainedizaine = math.floor((tonumber(device[2]) - (math.floor(tonumber(device[2])/100,0.9)*100 ))/10,0.9)
local chaineunite = tonumber(device[2]) - math.floor(tonumber(device[2])/100,0.9)*100 - math.floor((tonumber(device[2]) - (math.floor(tonumber(device[2])/100,0.9)*100 ))/10,0.9)*10
log('chaine demandée entre 100 et 990. Centaine= '..chainecentaine..' Dizaine= '..chainedizaine..' unités= '..chaineunite,debug)
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..chainecentaine..'"')
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..chainedizaine..'"')
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..chaineunite..'"')
end--fin du traitement des requêtes numériques
break
--ensuite on s'occupe des requêtes qui ne sont pas numérique en device[2]
elseif( uservariables["zappingtele"] == 'monte le volume') then --cas particulier du volume ou on veut deux ordres de suite
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..device[2]..'"')
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..device[2]..'"')
log('je fais '..device[2],debug)
elseif( uservariables["zappingtele"] == 'baisse le volume') then --cas particulier du volume ou on veut deux ordres de suite
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..device[2]..'"')
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..device[2]..'"')
log('je fais '..device[2],debug)
else --toutes les requêtes qui ne sont pas numérique en device[2] et qui ne sont pas pour le volume
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..device[2]..'"')
log('je fais '..device[2],debug)
break
end
end
commandArray[#commandArray + 1]={['Variable:zappingtele']='0'} --variable pour éviter le zapping quand d'autres variables changent
end
end
if (uservariables["zappingtele"] ~='0' and tonumber(uservariables["zappingtele"]) ~= nill) then -- ensuite on s'occupe des requêtes qui sont numériques dans la variable zappingtele
log('chaine demandée '..tonumber(uservariables["zappingtele"]),debug)
--pour les chaines de 0 à 9
if (tonumber(uservariables["zappingtele"]) <10) then
local chaine = tonumber(uservariables["zappingtele"])
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..chaine..'"')
log('je mets la '..chaine,debug)
--pour les chaines de 10 à 99
elseif (tonumber(uservariables["zappingtele"]) > 9 and tonumber(uservariables["zappingtele"]) < 100) then
local chainedizaine = math.floor(tonumber(uservariables["zappingtele"])/10,0.9)
local chaineunite = tonumber(uservariables["zappingtele"])-( math.floor(tonumber(uservariables["zappingtele"])/10,0.9)*10)
log('chaine demandée entre 10 et 99. Dizaine= '..chainedizaine..' unités= '..chaineunite,debug)
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..chainedizaine..'"')
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..chaineunite..'"')
--pour les chaines de 100 à 999
elseif (tonumber(uservariables["zappingtele"]) > 99 and tonumber(uservariables["zappingtele"]) < 1000) then
local chainecentaine = math.floor(tonumber(uservariables["zappingtele"])/100,0.9)
local chainedizaine = math.floor((tonumber(uservariables["zappingtele"]) - (math.floor(tonumber(uservariables["zappingtele"])/100,0.9)*100 ))/10,0.9)
local chaineunite = tonumber(uservariables["zappingtele"]) - math.floor(tonumber(uservariables["zappingtele"])/100,0.9)*100 - math.floor((tonumber(uservariables["zappingtele"]) - (math.floor(tonumber(uservariables["zappingtele"])/100,0.9)*100 ))/10,0.9) * 10
log('chaine demandée entre 100 et 990. Centaine= '..chainecentaine..' Dizaine= '..chainedizaine..' unités= '..chaineunite,debug)
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..chainecentaine..'"')
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..chainedizaine..'"')
os.execute('/home/pi/HarmonyHubControl/HarmonyHubControl 'adressemail' 'password' 'ipHarmony' issue_device_command 27244186 "'..chaineunite..'"')
end
commandArray[#commandArray + 1]={['Variable:zappingtele']='0'} --variable pour eviter le zapping quand d'autres variables changent
end
return commandArray
Chrominator, j’avais déjà vu ce post mais je ne m'en suis pas sortie. J'y retourne de nouveau.