Récupérer valeur analogique (température) IPX800 V3 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 <\>.
mmikee02
Messages : 13
Inscription : 03 juin 2018, 17:04

Récupérer valeur analogique (température) IPX800 V3 dans domoticz

Message par mmikee02 »

Bonjour, :)

j'ai souvent consulté vos forums afin de m'aider avec l'usage de domoticz avec succès, mais aujourd'hui, je suis bloqué...
J'ai un souci avec un script que j'ai récupéré ici :
https://easydomoticz.com/forum/viewtopi ... =10&t=4108.

Je tiens d'abord à préciser que je suis débutant avec LUA & les scripts en général. :?

Le contexte :
domoticz qui tourne sur 1 Rpi B3
1 ipx 800 V3
1 ipx 800 V4 + X8R

Ce que j'aimerais faire :

Récupérer la valeur analogique n°3 (capteur de température) de l'ipx800 V3 et la reporter dans un wiget virtuel que j'ai créé à cet effet, afin d'obtenir 1 log sur plusieurs jours.

Ce que j'ai fait :
j'ai utilisé le script fourni par bahia34 dans l'autre thread, et je l'ai adapté à mon IPX (enfin j'ai essayé!).
j'ai changé l'IDX par celui de mon widget température.

Image

j'ai adapté l'IP de mon IPX V3 pour la requête JSON (cela fonctionne lorsque je rentre l'IP modifiée en manuel dans un navigateur internet).

Image

j'ai créé 1 scénario qui lance le script manuellement pour le tester, mais rien ne se passe lorsque je le lance. (il est bien lancé d'après le log de domoticz)
Image Image Image

Code : Tout sélectionner

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

time=os.date("*t")

IDX=90

json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
 
local config=assert(io.popen('/usr/bin/curl "http://192.168.1.26:85/api/xdevices.json?cmd=30"')) 

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.AN3)*0.323)-50

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

end

return commandArray
mais, lorsque je le lance manuellement, j'obtiens 2 erreurs

Image

Pourriez-vous aider un novice à régler ce problème?.. de syntaxe, à 1ère vue...???
lmet
Messages : 252
Inscription : 30 juin 2017, 18:16
Localisation : Val d'Oise
Contact :

Re: Récupérer valeur analogique (température) IPX800 V3 dans domoticz

Message par lmet »

Bonjour,

Il y a déjà un topic d'ouvert, il est vrai que cela concerne la v4

[Edit]
J'ai lu un peu trop vite, dans un premier temps il faudrait vérifier :
° Que tu as bien la commande "curl" dans /usr/bin/
° Que tu as bien le fichier JSON.lua dans /home/pi/domoticz/scripts/lua/

tu lances http://192.168.1.26:85 j'ai un IPX800 v3 et n'ai pas de port particulier, pourquoi le port 85 ?

La copie d'écran avec les messages d'erreur correspond bien au code lua ?
Domoticz : V4.10717
Zigate : V4.11230 plugin:4.5.4 firmware:031a
Mon petit blog domotique
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: Récupérer valeur analogique (température) IPX800 V3 dans domoticz

Message par marsflow »

Salut,
Tu utilises du lua, donc déjà tu as un sujet sur l'utilisation sur le site du forum. https://easydomoticz.com/point-scripts-lua
Tu dois mettre ton fichier dans le dossier /home/pi/domoticz/scripts/lua

Ensuite tu utilises un script lua en time,
Donc il se déclenche à un temps précis pour celui là
C'est 2 min
if time.min%2==0 then --[j'ai mit 2min pour tester]--
Tu peux remplacer le 2 par 1 comme ceci pour faire toute les minutes
if time.min%1==0 then --[j'ai mit 2min pour tester]--

Tu peux ensuite voir le résultat de ton script dans la partie log de domoticz attention met toi des print si tu veux savoir si les étapes passent bien.
print ('temp : ' .. temp) --ajout de cette ligne pour voir te température.

Code : Tout sélectionner

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

time=os.date("*t")

IDX=90

json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
 
local config=assert(io.popen('/usr/bin/curl "http://192.168.1.26:85/api/xdevices.json?cmd=30"')) 

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.AN3)*0.323)-50

print ('temp : ' .. temp) --ajout de cette ligne pour voir te température.

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

end

return commandArray
Si tu veux vraiment faire avec un inter tu peux aussi moi je le fais pour lancer le script toutes les 20sec
A ce moment là Tu utilise un script device et non plus time
Si ton inter change le script se lance
Que les script time
Il fonctionne 1 fois par minute
Donc impossible de réduire en desous de 1 min.
Voici mes valeur sur un ipx v4, donc mon code du v4 devrait sans doute marcher une v3

Code : Tout sélectionner

{
    "product": "IPX800_V4",
    "status": "Success",
    "A1": 13757,
    "A2": 0,
    "A3": 0,
    "A4": 0
}
mmikee02
Messages : 13
Inscription : 03 juin 2018, 17:04

Re: Récupérer valeur analogique (température) IPX800 V3 dans domoticz

Message par mmikee02 »

Je me permet de citer ton message pour répondre, c'est plus commode.
lmet a écrit :Bonjour,

Il y a déjà un topic d'ouvert, il est vrai que cela concerne la v4.

C'est là que j'ai pêché le script que j'ai essayé d'adapter, mais comme j'y connais pas grand chose... ben ça marche pas :lol: :lol: ...

[Edit]
J'ai lu un peu trop vite, dans un premier temps il faudrait vérifier :
° Que tu as bien la commande "curl" dans /usr/bin/
Elle y est, j'ai vérifié...

° Que tu as bien le fichier JSON.lua dans /home/pi/domoticz/scripts/lua/

Il y est aussi, ...

tu lances http://192.168.1.26:85 j'ai un IPX800 v3 et n'ai pas de port particulier, pourquoi le port 85 ?

85 car j'ai changé le port par défaut sur l'ipx (80). La commande dans le navigateur internet passe sans soucis.

La copie d'écran avec les messages d'erreur correspond bien au code lua ?

C'est ce que j'obtiens lorsque je lance le script manuellement dans une console.
Merci en tous cas de passer du temps pour répondre à mon problème, surtout en cette période de vacances ensoleillées pour la plupart.
Dernière modification par mmikee02 le 02 août 2018, 21:32, modifié 1 fois.
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: Récupérer valeur analogique (température) IPX800 V3 dans domoticz

Message par marsflow »

mmikee02 a écrit :Je me permet de citer ton message pour répondre, c'est plus commode.
lmet a écrit :Bonjour,

Il y a déjà un topic d'ouvert, il est vrai que cela concerne la v4.

C'est là que j'ai pêché le script que j'ai essayé d'adapter, mais comme j'y connais pas grand chose... ben ça marche pas :lol: :lol: ...

[Edit]
J'ai lu un peu trop vite, dans un premier temps il faudrait vérifier :
° Que tu as bien la commande "curl" dans /usr/bin/
Elle y est, j'ai vérifié...

° Que tu as bien le fichier JSON.lua dans /home/pi/domoticz/scripts/lua/

Il y est aussi, ...

tu lances http://192.168.1.26:85 j'ai un IPX800 v3 et n'ai pas de port particulier, pourquoi le port 85 ?

85 car j'ai changé le port par défaut sur l'ipx (80). La commande dans le navigateur internet passe sans soucis.

La copie d'écran avec les messages d'erreur correspond bien au code lua ?

C'est ce que j'obtiens lorsque je lance le script manuellement dans une console.
Merci en tous cas de passer du temps pour répondre à mon problème, surtout en cette période de vacances ensoleillées pour la plupart.
marsflow a écrit :Salut,
Tu utilises du lua, donc déjà tu as un sujet sur l'utilisation sur le site du forum. https://easydomoticz.com/point-scripts-lua
Tu dois mettre ton fichier dans le dossier /home/pi/domoticz/scripts/lua

Ensuite tu utilises un script lua en time,
Donc il se déclenche à un temps précis pour celui là
C'est 2 min
if time.min%2==0 then --[j'ai mit 2min pour tester]--
Tu peux remplacer le 2 par 1 comme ceci pour faire toute les minutes
if time.min%1==0 then --[j'ai mit 2min pour tester]--

Tu peux ensuite voir le résultat de ton script dans la partie log de domoticz attention met toi des print si tu veux savoir si les étapes passent bien.
print ('temp : ' .. temp) --ajout de cette ligne pour voir te température.

Code : Tout sélectionner

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

time=os.date("*t")

IDX=90

json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
 
local config=assert(io.popen('/usr/bin/curl "http://192.168.1.26:85/api/xdevices.json?cmd=30"')) 

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.AN3)*0.323)-50

print ('temp : ' .. temp) --ajout de cette ligne pour voir te température.

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

end

return commandArray
Si tu veux vraiment faire avec un inter tu peux aussi moi je le fais pour lancer le script toutes les 20sec
A ce moment là Tu utilise un script device et non plus time
Si ton inter change le script se lance
Que les script time
Il fonctionne 1 fois par minute
Donc impossible de réduire en desous de 1 min.
Voici mes valeur sur un ipx v4, donc mon code du v4 devrait sans doute marcher une v3

Code : Tout sélectionner

{
    "product": "IPX800_V4",
    "status": "Success",
    "A1": 13757,
    "A2": 0,
    "A3": 0,
    "A4": 0
}

de rien, tu es aller voir la page sur le fonctionnement de LUA ?, un script lua ne se lance pas dans un terminal, ty peux les modifier avec pico par exemple, mais après il se lance par le biais de domoticz, donc il faut que tu copies ton fichier dans le dossier lua.
mmikee02
Messages : 13
Inscription : 03 juin 2018, 17:04

Re: Récupérer valeur analogique (température) IPX800 V3 dans domoticz

Message par mmikee02 »

Hé bien, à 1ère vue, même en mettant le script dans le dossier "lua"
& en rajoutant la ligne que tu avais écrite, cela ne fonctionne toujours pas... :cry:
voici 1 screen du log domoticz :

Image

J'ai une "erreur 512", je vais fouiller pour voir ce que c'est.

ÉDIT :

J'ai réessayé manuellement dans mon navigateur, j'ai remarqué que j'avais oublié d’inscrire le login+ password dans l'url, je l'ai donc modifiée comme ceci :
http://login:mot_de_passe@192.168.1.26: ... son?cmd=30

mais cela me donne toujours cette erreur 512
Dernière modification par mmikee02 le 03 août 2018, 00:16, modifié 2 fois.
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: Récupérer valeur analogique (température) IPX800 V3 dans domoticz

Message par marsflow »

mmikee02 a écrit :Hé bien, à 1ère vue, même en mettant le script dans le dossier "lua"
& en rajoutant la ligne que tu avais écrite, cela ne fonctionne toujours pas... :cry:
voici 1 screen du log domoticz :

Image

J'ai une "erreur 512", je vais fouiller pour voir ce que c'est.
renomme ton fichier en script_time_temp.lua par exemple sinon il sait pas si tu es en device ou time.
https://easydomoticz.com/point-scripts-lua
mmikee02
Messages : 13
Inscription : 03 juin 2018, 17:04

Re: Récupérer valeur analogique (température) IPX800 V3 dans domoticz

Message par mmikee02 »

Ca avance! :D :D :D

Après avoir copié le fichier dans le dossier lua, & l'avoir renommé en "script_time_temp.lua" comme tu l'as dit, j'obtiens une réponse dans le log de domoticz.
Bon, il y a sûrement une faute dans la formule, mais j'ai qqch, c'est déjà un bon début. (parce que 180°C, ça fait chaud pour l'eau de la douche, même pour mon boiler solaire où l'eau est stockée en général vers 90°/95°C. max.)

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

Re: Récupérer valeur analogique (température) IPX800 V3 dans domoticz

Message par marsflow »

mmikee02 a écrit :Ca avance! :D :D :D

Après avoir copié le fichier dans le dossier lua, & l'avoir renommé en "script_time_temp.lua" comme tu l'as dit, j'obtiens une réponse dans le log de domoticz.
Bon, il y a sûrement une faute dans la formule, mais j'ai qqch, c'est déjà un bon début. (parce que 180°C, ça fait chaud pour l'eau de la douche, même pour mon boiler solaire où l'eau est stockée en général vers 90°/95°C. max.)

Image
tu utilises quoi comme sonde ? tu n'as sans doute pas le bon calcul et sur ta page ipx ça dit combien ?
tu as la TC100 ((x * 0.000050354) - 0.25) / 0.028
TC4012 : (x * 0.0050354) - 50

j'ai récupéré les miennes sur le site de gce, tu les as aussi sur la page de paramétrage des entrées analogique.
mmikee02
Messages : 13
Inscription : 03 juin 2018, 17:04

Re: Récupérer valeur analogique (température) IPX800 V3 dans domoticz

Message par mmikee02 »

J'ai bien une TC100.
je viens de changer la formule du script pour tester, j'ai écris ceci :

Code : Tout sélectionner

temp=((tonumber(jsonValeur.AN3)*0.000050354)-0.25)/0.028
sur l'ipx, après 5 douches consécutives, la T° du boiler est à 72,9°C.
Répondre