Page 1 sur 1

Script LUA : Insérer une valeur dans Domoticz Device

Publié : 17 oct. 2016, 13:20
par Doudy
Bonjour,
Je suis un peu perdu. Je cherche depuis plusieurs jours, mais en vain...

J'essaie d'insérer une valeur dans la variable "Description" de mon Device idx 4 - "Vent_M".
Mais cela ne fonctionne pas. Il me modifie toujours la variable "Data" !
Je voudrais insérer la variable : windresume qui vaut "SSE - 158°"

Si je fait :

Code : Tout sélectionner

commandArray = {}
commandArray={['UpdateDevice']='4|2|..windresume'}
return commandArray
il me modifie la variable de "Data" en : "Data" : "2, ..windresume",

Si je fait :

Code : Tout sélectionner

commandArray = {}

commandArray['Variable:Description']= tostring(windresume)

return commandArray
rien n'est modifié !

Quelqu'un peut me mettre sur le bon chemin ?
Merci.

Device 4 :
{
"ActTime" : 1476690439,
"ServerTime" : "2016-10-17 09:47:19",
"Sunrise" : "08:13",
"Sunset" : "18:47",
"result" : [
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,
"BatteryLevel" : 100,
"CustomImage" : 0,
"Data" : "158.00;SSE;4;7;0.0;0.0",
"Description" : "",
"Direction" : 158.0,
"DirectionStr" : "SSE",
"Favorite" : 1,
"Gust" : "2.5",
"HardwareID" : 3,
"HardwareName" : "RFXCOM",
"HardwareType" : "RFXCOM - RFXtrx433 USB 433.92MHz Transceiver",
"HardwareTypeVal" : 1,
"HaveTimeout" : false,
"ID" : "2500",
"LastUpdate" : "2016-10-17 09:45:40",
"Name" : "Vent_M",
"Notifications" : "false",
"PlanID" : "0",
"PlanIDs" : [ 0 ],
"Protected" : false,
"ShowNotifications" : true,
"SignalLevel" : 5,
"Speed" : "1.4",
"SubType" : "WGR800",
"Timers" : "false",
"Type" : "Wind",
"TypeImg" : "wind",
"Unit" : 0,
"Used" : 1,
"XOffset" : "0",
"YOffset" : "0",
"idx" : "4"
}
],
"status" : "OK",
"title" : "Devices"
}

Re: Script LUA : Insérer une valeur dans Domoticz Device

Publié : 17 oct. 2016, 15:00
par vil1driver
Salut,

Description c'est le contenu de la grande case lorsque tu édites ton dispositif.
Cela sert juste de pense bête.

Ce n'est pas modifiable autrement que manuellement.

Re: Script LUA : Insérer une valeur dans Domoticz Device

Publié : 17 oct. 2016, 16:18
par Doudy
vil1driver a écrit :Salut,

Description c'est le contenu de la grande case lorsque tu édites ton dispositif.
Cela sert juste de pense bête.

Ce n'est pas modifiable autrement que manuellement.
Merci pour l'info. Je ne savais pas.

Lequel peut-on modifier alors et comment ?

Re: Script LUA : Insérer une valeur dans Domoticz Device

Publié : 17 oct. 2016, 17:21
par vil1driver
Ba rien, ta girouette te donne la direction et la force du vent, voila tout, qu'est ce que tu veux de plus ?

Si il s'agissait d'un dispositif virtuel tu ne pourais que lui fournir les info qu'un vrai aurait.

Ton but c'est quoi au juste ?

Re: Script LUA : Insérer une valeur dans Domoticz Device

Publié : 17 oct. 2016, 18:33
par deennoo
Avec certains anemometre on peut avoir une temperature ressentit : sur la base des indications de vents + temperature exterieur.

Si on jete un oeil a l'api, il y a plusieur indication possible

Re: Script LUA : Insérer une valeur dans Domoticz Device

Publié : 18 oct. 2016, 07:22
par Doudy
vil1driver a écrit :Ton but c'est quoi au juste ?
Mon but est d'afficher ceci SSE - 158 dansun seul champ.
Et pas d'afficher "Direction" et "DirectionStr" dans des champs différents !
P. EX :
Image

Voilou..
;)

Re: Script LUA : Insérer une valeur dans Domoticz Device

Publié : 18 oct. 2016, 13:47
par vil1driver
Ba ça tu peux dans un script lua récupérer data et envoyer les infos dans un widget texte par exemple, formaté à ta convenance et afficher son contenu dans la frontpage

En gros ce que tu voulais faire mais vers un dispositif prévu pour ;)

Sinon tu peux également jouer avec le html de la page pour afficher 2 infos dans la même case..

Re: Script LUA : Insérer une valeur dans Domoticz Device

Publié : 18 oct. 2016, 14:28
par frenchyyii
vil1driver a écrit : Si il s'agissait d'un dispositif virtuel tu ne pourais que lui fournir les info qu'un vrai aurait.
Je rebondis un petit peu là dessus. Peut être que celà pourrait aussi aider Doudy
Je cherche à faire un petit peu la même chose pour 2 dummies
*un dummy virtuel wind sur lequel je voudrais faire afficher les Wg Ws etc que je récupère grace à une des méthodes que j'ai trouvé ici (et que je vois dans les logs à la fois si je fais un tonumber et un tostring)
J'ai essayé via commandarray et via json je n'arrive à rien. en Json je passe bien les commandes mais les variables ne passent pas

Code : Tout sélectionner

-- chargement des modules
package.path = package.path..";/home/pi/domoticz/scripts/lua/?.lua"
require "modules"
commandArray = {}
Wb, Wd, Ws, Wg = otherdevices_svalues['Oregon Wind Cognac']:match("([^;]+);([^;]+);([^;]+);([^;]+)")
Wb = tonumber(Wb)
Wd = tostring(Wg)
Ws = tonumber(Ws)
Wg = tonumber(Wg)
WB = tostring(Wb)
WD = tostring(Wd)
WS = tostring(Ws)
WG = tostring(Wg)
print("Vitesse du Vent " ..  Ws)
print("Vitesse Rafale " ..  Wg)
print("Vitesse ?? " ..  Wb)
print("Vitesse ?? " ..  Wd)
print("Vitesse ?? " ..  WS)
print("Vitesse ?? " ..  WG)
print("Vitesse ?? " ..  WB)
print("Vitesse ?? " ..  WD)
commandArray['OpenURL']='http://192.168.0.78:8080/json.htm?type=command&param=udevice&idx=1616&nvalue=0&svalue=WB;WD;WS;WG;22;24'

if Wg > 80 and Wg < 180 then
   print("Trop de Vent overture portail")
   switchOn('Ouverture Forcée Portail')
end
return commandArray
*la deuxieme manip concerne mon compteur d'eau incrementiel qui est sur un autre pi et que je n'arrive pas à voir dans les partages remote server.
Je me disais que du coup je pourrais faire un peu la même chose...

Question à ce sujet d'ailleurs est ce normal que les dummies virtuels comme mon compteur d'eau n'apparaissent pas quand je les partage ou est-ce un bug ?

Merci à tous
Eric

Re: Script LUA : Insérer une valeur dans Domoticz Device

Publié : 18 oct. 2016, 17:21
par Doudy
Hello,

Pour finir, j'ai créé un capteur virtuel "WindResume"- Texte

Dans lequel, je sauvegarde ma variable "sWinResume" (commandArray['UpdateDevice'] = deviceNum .. '|2|' .. sWindResume)

Code : Tout sélectionner

local deviceNum = 577
commandArray = {}
if (devicechanged['Vent_M']) then
wind = otherdevices_svalues['Vent_M']
sWindDirectionDegrees, sWindDirection, sWindSpeed, sWindGust, sWindTemperature, sWindFeel = otherdevices_svalues['Vent_M']:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)")
	if (sWindDirectionDegrees ~=  nil ) then
		sWindDirectionDegrees = tonumber(sWindDirectionDegrees);
	else
		sWindDirectionDegrees = 0
	end
	if (sWindDirection ~=  nil ) then
		sWindDirection = (sWindDirection);
	else
		sWindDirection = "0"
	end
	if (sWindSpeed ~=  nil ) then
		sWindSpeed = tonumber(sWindSpeed);
	else
		sWindSpeed = 0
	end
	if (sWindGust ~=  nil ) then
		sWindGust = tonumber(sWindGust);
	else
		sWindGust = 0
	end
	if (sWindTemperature ~=  nil ) then
		sWindTemperature = tonumber(sWindTemperature);
	else
		sWindTemperature = 0
	end
	if (sWindFeel ~=  nil ) then
		sWindFeel = tonumber(sWindFeel);
	else
		sWindFeel = 0
	end

	if sWindDirection == "SW" then 
		sWindDirection = "SO"
	elseif 	sWindDirection == "SSW" then 
		sWindDirection = "SSO"
	elseif 	sWindDirection == "W" then 
		sWindDirection = "O"
	elseif 	sWindDirection == "WSW" then 
		sWindDirection = "OSO"
	elseif 	sWindDirection == "WNW" then 
		sWindDirection = "ONO"
	elseif 	sWindDirection == "NNW" then 
		sWindDirection = "NNO"
	end
	sWindResume = (sWindDirection.. " - " ..sWindDirectionDegrees.. "°")
	commandArray['UpdateDevice'] = deviceNum .. '|2|' .. sWindResume
return commandArray
et dans frontpage_settings.js je récupère la valeur de "Data" de mon capteur virtuel 'WindResume'

Code : Tout sélectionner

['577','Data', 			'cell2_13',                     	'','1','','font-size:32px',''], 
Un avis d'un spécialiste ?
;)

Re: Script LUA : Insérer une valeur dans Domoticz Device

Publié : 19 oct. 2016, 13:49
par Doudy
Bonjour,

Tout ce ne me dit pas comment je doit faire pour modifier une autre variable que "Data" !
Quelqu'un peu m'expliquer ?

Merci