Re: Commandarray sur idx
Publié : 07 juin 2020, 13:24
Fait voir tout le script
Reprenez le contrôle de votre domotique
https://easydomoticz.com/forum/
Code : Tout sélectionner
-- chargement des modules
dofile('/home/pi/domoticz/scripts/lua/modules.lua')
--------------------------------------------
----------- Variables à éditer -------------
--------------------------------------------
local api = 'xxxxxxxxxxxxxxxxxxx' -- Remplacer par votre clé API
local lat = 'xxxxxxx' -- Remplacer par ici votre latittude
local long = 'xxxxxxxxxxxxx' -- Remplacer par votre longitude
--Sélectionner le chemin vers votre fichier JSON.lua en enlevant les dé commentant la ligne pour votre système d'exploitation
--json = (loadfile "/home/votrenomutilisé/domoticz/scripts/lua/JSON.lua")() -- For Linux
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- for PI
--json = (loadfile "/volume1/@appstore/domoticz/var/scripts/lua/JSON.lua")() -- For Syno
--------------------------------------------
---------- Fin variables à éditer ----------
--------------------------------------------
commandArray = {}
-- Récupère les IDX des widgets.
idxjour = '402'
idxdemain = '403'
-- Récupère l'heure actuelle.
local heure = os.date('%H:%M')
local debug = true
if (heure == '20:00' or heure == '8:00' or heure == '13:00' or heure == '13:12') then
-- L'appel et l'enregistrement des prévisions dans la variable jsonValeur
config=assert(io.popen('/usr/bin/curl "https://api.openweathermap.org/data/2.5/onecall?lat='..lat..'&lon='..long..'&appid='..api..'&lang=fr&units=metric"'))
blocjson = config:read('*all')
config:close()
jsonValeur = json:decode(blocjson)
--------------------------------------------
---- Code à modifier selon vos besoins -----
--------------------------------------------
-- L'enregistrement des données souhaitées dans des variables (vous pouvez en ajouter autant que vous voulez)
--temp = jsonValeur.current.temp
--rose = jsonValeur.current.dew_point
--weather = jsonValeur.current.weather[1].description
if (jsonValeur.daily[1].rain) then
rain = jsonValeur.daily[1].rain
else
rain = 0
end
if (jsonValeur.daily[2].rain) then
rain2 = jsonValeur.daily[2].rain
else
rain2 = 0
end
rain = jsonValeur.daily[1].rain
rain2 = jsonValeur.daily[2].rain
if rain ~= nil then
commandArray['Variable:Pluie-jour'] = tostring(rain)
print(getDeviceName('404'))
commandArray[getDeviceName('404')] ='Set Level: 10'
else
commandArray['Variable:Pluie-jour'] = '0'
print(getDeviceName('404'))
commandArray[getDeviceName('404')] ='Set Level: 20'
end
if rain2 ~= nil then
commandArray['Variable:Pluie-lendemain'] = tostring(rain2)
print(getDeviceName('406'))
commandArray[getDeviceName('406')] ='Set Level: 10'
else
commandArray['Variable:Pluie-lendemain'] = '0'
print(getDeviceName('406'))
commandArray[getDeviceName('406')] ='Set Level: 20'
end
--Pluiejour = uservariables['Pluie-jour']
--Pluielendemain = uservariables['Pluie-lendemain']
--commandArray[#commandArray+1]={['UpdateDevice'] =idxjour..'|0|' .. tostring(Pluiejour)}
--commandArray[#commandArray+1]={['UpdateDevice'] =idxdemain..'|0|' .. tostring(Pluielendemain)}
--------------------------------------------
--------- Fin code à modifier -------------
--------------------------------------------
end
return commandArrayCode : Tout sélectionner
-- Icon changer
local ICON_RAIN = 116
local ICON_SUN = 117
return {
logging = {
level = domoticz.LOG_DEBUG, -- Select one of LOG_DEBUG, LOG_INFO, LOG_ERROR, LOG_FORCE to override system log level
},
on = {
devices = {404},
},
execute = function(dz, item)
local pluiej = dz.variables('Pluie-jour').value
print('start icon ' .. pluiej)
if item.level == 10 then
item.setIcon(ICON_RAIN)
item.rename('Aujourdhui - pluie : '..pluiej..'mm')
item.switchSelector(10).silent()
elseif item.level == 20 then
item.setIcon(ICON_SUN)
item.rename('Aujourdhui - soleil')
item.switchSelector(20).silent()
end
end
}
Code : Tout sélectionner
commandArray['OpenURL']='IPADDRESS:PORT/json.htm?type=command¶m=renamedevice&idx=404&name=Aujourdhui - pluie : '..rain.. 'mm'
S'agissant d'un idx, pas de quotevil1driver a écrit : 07 juin 2020, 11:22 Salut,
Oui dans ma signature
Importe la fonction getDeviceName dans ton script
PuisCode : Tout sélectionner
commandArray[getDeviceName('deviceIDX')] =
Code : Tout sélectionner
commandArray[getDeviceName(deviceIDX)] = print(getDeviceName(404))
commandArray[getDeviceName(404)] ='Set Level: 10'