Page 2 sur 2

Re: Commandarray sur idx

Publié : 07 juin 2020, 13:24
par vil1driver
Fait voir tout le script

Re: Commandarray sur idx

Publié : 07 juin 2020, 13:36
par Wolfen38

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 commandArray

Re: Commandarray sur idx

Publié : 07 juin 2020, 13:53
par vil1driver
Le nom ne change pas dans ce script.

Re: Commandarray sur idx

Publié : 07 juin 2020, 13:55
par Wolfen38
Non, c'est dans celui la que je change nom et icone

Code : 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
 

}


Re: Commandarray sur idx

Publié : 07 juin 2020, 14:32
par vil1driver
Ah dzvent en + :?

Belle usine à gaz

Du coup ton Set Level est déjà fait dans dzvent ? A quoi bon le faire également dans le script lua ?

Pourquoi ne pas aussi faire la relève météo dans dzvent ?

Ca sera moins source de problèmes si tu regroupe tout. Tu pourras même te passer des variables intermédiaires

Re: Commandarray sur idx

Publié : 07 juin 2020, 14:45
par Wolfen38
Parce que le dzvent, j'y comprends pas grand chose, donc j'utilise le moins possible.

Re: Commandarray sur idx

Publié : 07 juin 2020, 15:21
par vil1driver
Dans ce cas fait tout en lua.
Changer le nom du device est possible aussi en lua

Code : Tout sélectionner

commandArray['OpenURL']='IPADDRESS:PORT/json.htm?type=command&param=renamedevice&idx=404&name=Aujourdhui - pluie : '..rain.. 'mm'
Possible qu'il y ai des erreurs dans ce code mais tu as l'idée générale
L'icône est sûrement modifiable de la même façon

Ce sera bien plus simple à debuguer

Maintenant je ne vais pas être d'une grande aide, pour moi l'interface est juste pour l'administration, l'apparence, etc ne m'importait pas du tout. Alors les icônes et autres thèmes, ce n'était pas pour moi

Re: Commandarray sur idx

Publié : 08 juin 2020, 05:10
par denis_brasseur
vil1driver a écrit : 07 juin 2020, 11:22 Salut,

Oui dans ma signature

Importe la fonction getDeviceName dans ton script
Puis

Code : Tout sélectionner

commandArray[getDeviceName('deviceIDX')] = 
S'agissant d'un idx, pas de quote

Code : Tout sélectionner

commandArray[getDeviceName(deviceIDX)] = 
print(getDeviceName(404))
commandArray[getDeviceName(404)] ='Set Level: 10'

Re: Commandarray sur idx

Publié : 08 juin 2020, 07:07
par Wolfen38
Quelle équipe de choc sur ce forum, grâce a vous tous j'au enfin un script qui fonctionne et me fait ce que je veux.

Merci les gars.

Re: Commandarray sur idx

Publié : 08 juin 2020, 12:39
par vil1driver
Bien vu Denis ;)