Commandarray sur idx

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Commandarray sur idx

Message par vil1driver »

Fait voir tout le script
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: Commandarray sur idx

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Commandarray sur idx

Message par vil1driver »

Le nom ne change pas dans ce script.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: Commandarray sur idx

Message 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
 

}

vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Commandarray sur idx

Message 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
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: Commandarray sur idx

Message par Wolfen38 »

Parce que le dzvent, j'y comprends pas grand chose, donc j'utilise le moins possible.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Commandarray sur idx

Message 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
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Commandarray sur idx

Message 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'
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: Commandarray sur idx

Message 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.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Commandarray sur idx

Message par vil1driver »

Bien vu Denis ;)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Répondre