récupérer température IPX800V4 dans domoticz

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

récupérer température IPX800V4 dans domoticz

Message par marsflow »

Bonjour la communauté,

j'aurai besoin d'aide dans la création d'un script pour récupérer les sonde brancher à mon IPX dans Domoticz.

je pense que le faire en lua serait le plus simple par le biais du fichier XML ci joint
Pièces jointes
dd.PNG
dd.PNG (173.43 Kio) Consulté 10616 fois
Dernière modification par marsflow le 28 juin 2017, 00:47, modifié 1 fois.
bahia34
Messages : 23
Inscription : 20 sept. 2015, 09:54

Re: récupérer température IPX800V4 dans domoticz

Message par bahia34 »

Salut,

Plus simple avec json et sa commande spécifique à l'IPX800 (bon, moi j'ai la V3 mais je pense que c'est pareil pour la V4)

Code : Tout sélectionner

-- Fonction capture température IPX800
-- script_time_tempipx.lua
-- recup sonde temp de l'ipx

time=os.date("*t")

IDX=id du device dans domoticz

json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
 
local config=assert(io.popen('/usr/bin/curl "http://ip de ton ipx/api/xdevices.json?cmd=30"'))
local blocjson = config:read('*all')
 config:close()
 -- print (blocjson)
 local jsonValeur = json:decode(blocjson)

commandArray = {}

 if time.min%30==0 then

temp=(tonumber(jsonValeur.AN2)*0.323)-50

commandArray['UpdateDevice'] = IDX .. '|0|' .. tostring(temp)

end

return commandArray
AN2 à remplacer par le nom correspondant dans ta liste
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: récupérer température IPX800V4 dans domoticz

Message par marsflow »

Bonjour,
merci pour ta réponse rapide, j'ai modifié quelques adresse, mais ça ne fonctionne pas

Code : Tout sélectionner

-- Fonction capture température IPX800
-- script_time_tempipx.lua
-- recup sonde temp de l'ipx

time=os.date("*t")

IDX=39

json = (loadfile "/volume1/.@plugins/AppCentral/domoticz/scripts/lua/JSON.lua")()  -- For Linux
 
local config=assert(io.popen('/usr/bin/curl "http://192.168.1.37/api/xdevices.json?key=apikey&Get=all"')) --[ l'emplacement sur la V4 n'est pas la même j'ai donc mis à jour cette partie, j'ai suivi l'emplacement de curl je crois qu'il n'est pas installé sur les nas asustor le problème pourrait venir de là]--

local blocjson = config:read('*all')
 config:close()
 -- print (blocjson)
 local jsonValeur = json:decode(blocjson)

commandArray = {}

 if time.min%2==0 then --[j'ai mit 2min pour tester]--

temp=(tonumber(jsonValeur.THL2-TEMP)*0.323)-50 

commandArray['UpdateDevice'] = IDX .. '|0|' .. tostring(temp)

end

return commandArray
mon code erreur est 2017-05-26 20:04:00.210 Error: EventSystem: in /volume1/.@plugins/AppCentral/domoticz/scripts/lua/script_time_tempipx.lua: .../AppCentral/domoticz/scripts/lua/script_time_tempipx.lua:21: expected near '"THL2-TEMP"'

fdf.PNG
fdf.PNG (126.73 Kio) Consulté 10571 fois
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: récupérer température IPX800V4 dans domoticz

Message par marsflow »

hello personne n'a d'idée ?
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: récupérer température IPX800V4 dans domoticz

Message par patrice »

Hello,
tu es sur de récupérer correctement ta valeur voulue ?
car tu cherches dans ton fichier json THL2-TEMP mais il y a queeTHL1-TEMP
et avant de faire des tonumber (....) fais juste afficher la valeur dans un print pour savoir si c'est OK
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: récupérer température IPX800V4 dans domoticz

Message par marsflow »

Bonjour,


il y'a bien un THL2-TEMP
avec un print ça me marque ceci :

2017-05-30 22:08:00.208 Error: EventSystem: in /volume1/.@plugins/AppCentral/domoticz/scripts/lua/script_time_tempipx.lua: .../AppCentral/domoticz/scripts/lua/script_time_tempipx.lua:24: attempt to perform arithmetic on global 'THL2' (a nil value)
2017-05-30 22:09:00.235 LUA:

j'ai suivi l'emplacement de curl, j'ai l'impression qu'il n'est pas installer sur les nas asustor... le problème viendrait pas de là ?
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: récupérer température IPX800V4 dans domoticz

Message par marsflow »

j'ai le bon emplacement de curl je verrai demain si le script marche
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: récupérer température IPX800V4 dans domoticz

Message par marsflow »

bonjour,

j'ai une erreur il me marque
2017-05-31 18:49:00.453 Error: EventSystem: in /volume1/.@plugins/AppCentral/domoticz/scripts/lua/script_time_tempipx.lua: .../AppCentral/domoticz/scripts/lua/script_time_tempipx.lua:24: attempt to perform arithmetic on field 'THL2' (a nil value)

j'ai donc essayé avec un relais voir si il prend le 1 et le 0 là ça marche,

on dirait que avec le relais vu que c'est marqué R1 qu'il n'y a pas de tiret ça marche là dans le code erreur il prend que le THL2 de THL2-TEMP, il prend pas en compte le -TEMP.
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: récupérer température IPX800V4 dans domoticz

Message par marsflow »

Pour les personnes intéressé avec NAS asustor et un IPX800 V4, je vous transmet mon script avec les bon emplacements :

Code : Tout sélectionner

-- Fonction capture température IPX800
-- script_time_tempipx.lua
-- recup sonde temp de l'ipx

time=os.date("*t")

IDX=39

json = (loadfile "/volume1/.@plugins/AppCentral/domoticz/scripts/lua/JSON.lua")()  -- For Linux
 
local config=assert(io.popen('/usr/builtin/bin/curl "http://192.168.1.37/api/xdevices.json?key=apikey&Get=A"'))
local blocjson = config:read('*all')
 config:close()
 print (blocjson)
 local jsonValeur = json:decode(blocjson)


 
commandArray = {}

 if time.min%5==0 then

 print (jsonValeur.A1)
 
temp=(tonumber(jsonValeur.A1)*0.0050354)-50

commandArray['UpdateDevice'] = IDX .. '|0|' .. tostring(temp)

end

return commandArray
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: récupérer température IPX800V4 dans domoticz

Message par marsflow »

bonjour,

j'ai un peu amélioré le code, j'avais trop de chiffres après la virgule, j'ai donc arrondie au dixième.

Code : Tout sélectionner

-- Fonction capture température IPX800
-- script_time_tempipx.lua
-- recup sonde temp de l'ipx

time=os.date("*t")

IDX=39

json = (loadfile "/volume1/.@plugins/AppCentral/domoticz/scripts/lua/JSON.lua")()  -- For Linux
 
local config=assert(io.popen('/usr/builtin/bin/curl "http://192.168.1.37/api/xdevices.json?key=apikey&Get=A"')) --[ l'emplacement sur la V4 n'est pas la même j'ai donc mis à jour cette partie, j'ai suivi l'emplacement de curl je crois qu'il n'est pas installé sur les nas asustor le problème pourrait venir de là]--

local blocjson = config:read('*all')
 config:close()
 print (blocjson)
 local jsonValeur = json:decode(blocjson)


 
commandArray = {}

 if time.min%1==0 then -- j'ai mit 1 min pour les essaies, mais je ne trouve pas nécessaire de mettre si peu pour moi je vais mettre 5 ou 10 min

 print (jsonValeur.A1)
 
 function round(num, dec) -- j'ai rajouté cette partie 
  local mult = 10^(dec or 1) -- j'ai rajouté cette partie
  return math.floor(num * mult + 0.5) / mult -- j'ai rajouté cette partie
  end -- j'ai rajouté cette partie
 
temp=(tonumber(jsonValeur.A1)*0.0050354)-50

print (temp) -- j'ai fait un print pour voir la valeur non arrondie

tempA1=round(temp) -- j'ai rajouté cette partie 

print (tempA1) -- un autre print avec la valeur arrondie

commandArray['UpdateDevice'] = IDX .. '|0|' .. tostring(tempA1)

end
résultat :

2017-06-30 01:32:00.173 LUA: 14467
2017-06-30 01:32:00.173 LUA: 22.8471318
2017-06-30 01:32:00.173 LUA: 22.8
Répondre