récupérer température IPX800V4 dans domoticz
récupérer température IPX800V4 dans domoticz
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
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 (173.43 Kio) Consulté 10630 fois
Dernière modification par marsflow le 28 juin 2017, 00:47, modifié 1 fois.
Re: récupérer température IPX800V4 dans domoticz
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)
AN2 à remplacer par le nom correspondant dans ta liste
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 commandArrayRe: récupérer température IPX800V4 dans domoticz
Bonjour,
merci pour ta réponse rapide, j'ai modifié quelques adresse, mais ça ne fonctionne pas
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"'
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 commandArrayRe: récupérer température IPX800V4 dans domoticz
hello personne n'a d'idée ?
Re: récupérer température IPX800V4 dans domoticz
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
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
Objectif : WAF > 1
Re: récupérer température IPX800V4 dans domoticz
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à ?
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à ?
Re: récupérer température IPX800V4 dans domoticz
j'ai le bon emplacement de curl je verrai demain si le script marche
Re: récupérer température IPX800V4 dans domoticz
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.
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.
Re: récupérer température IPX800V4 dans domoticz
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
Re: récupérer température IPX800V4 dans domoticz
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.
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
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)
end2017-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