Page 1 sur 1

IPX800 v5 commande relais http

Publié : 31 oct. 2021, 16:41
par cocof
bonjour
je viens de recevoir mon ipx800 V5 de chez GCE. j'essaye de piloter les relais via un interrupteur sous domoticz.
Actuellement j'ai un IPX800V4, sous domoticz, il suffit que je mettre dans l'interrupteur dans l'"action on" : http://192.168.1.65/api/xdevices.json?SetR=01. et en "action off" : http://192.168.1.65/api/xdevices.json?ClearR=01
Avec le v5 c'est bcp plus compliqué.
Après 2 j de recherche j'arrive enfin via un script lua à piloter un relais :
os.execute("curl -X PUT -H 'Content-Type: application/json' -d '{\"on\":true}' http://192.168.1.125/api/core/io/65537? ... xxxxxxxxxx"). si j'ai 4 relais, il faut que je crée des conditions pour chaque état, chaque relais ... un peu lourd.

j'arrive aussi via un script shell à piloter le relais: (j'appelle ce script dans l'interrupteur Action On et Action Off) :
curl -X PUT -H "Content-Type: application/json" -d '{"toggle":true}' http://192.168.1.125/api/core/io/65537? ... xxxxxxxxxx
mais c'est un peu lourd si je doit créer un script par relais et par état.
j'aimerai le faire comme avec l'IPX800V4 via une simple ligne http.
quelqu'un a une idée ?

Re: IPX800 v5 commande relais http et lecture valeur analogique

Publié : 04 nov. 2021, 11:41
par cocof
bonjour
je n'y suis tjs pas arrivée mais j'arrive à une solution "convenable". voici donc pour ceux que ca interesse 2 scripts lua permettant de commander le relais et de lire des valeurs de mon IPX800 v5:
commande des relais 1 et 2 de l'IPX via interruteur virtuel sous domoticz test1 et test2 :

Code : Tout sélectionner

-----configuration
local url = 'http://192.168.1.84/' -- url locale IPX800V5
local apikey = 'xxxxxxxxxxxxxxx' -- APIKEY pour acceder à l'IPX800v5

----- fin configuration 

commandArray = {}

----- commande relais 1
if (devicechanged['test1'] == "On")
then
os.execute("curl -X PUT -H 'Content-Type: application/json' -d '{\"on\":true}' "..url.."api/core/io/65536?ApiKey="..apikey.."")
end
if (devicechanged['test1'] == "Off")
then

--ligne complete : os.execute("curl -X PUT -H 'Content-Type: application/json' -d '{\"on\":false}' http://192.168.1.84/api/core/io/65536?ApiKey=xxxxxxxxx")
os.execute("curl -X PUT -H 'Content-Type: application/json' -d '{\"on\":false}' "..url.."api/core/io/65536?ApiKey="..apikey.."")
end

----- commande relais 2
if (devicechanged['test2'] == "On")
then
os.execute("curl -X PUT -H 'Content-Type: application/json' -d '{\"on\":true}' "..url.."api/core/io/65537?ApiKey="..apikey.."")
end

if (devicechanged['test2'] == "Off")
then
os.execute("curl -X PUT -H 'Content-Type: application/json' -d '{\"on\":false}' "..url.."api/core/io/65537?ApiKey="..apikey.."")
end

return commandArray

Lecture de la valeur analogique 1 de l'IPX800 v5 avec affichage sur domoticz (device 527):

Code : Tout sélectionner

-----configuration
local url = 'http://192.168.1.84/' -- url locale IPX800V5
local apikey = 'xxxxxxxxxxxxxxxx' -- APIKEY pour acceder à l'IPX800v5

----- fin configuration 

commandArray = {}

-- lecture toutes les 10s grace à l'interrupteur "horloge" qui change toutes les 10 s via un script dzVents
if (devicechanged['Horloge'])
then

--import des fontions pour lire le JSON
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- For Linux

-- recuperation info analogique 1 (id n° 262144) de IPX800V5

local config=assert(io.popen("/usr/bin/curl "..url.."api/core/ana/262144?ApiKey="..apikey..""))
local blocjson = config:read('*all')
config:close()
local jsonValeur = json:decode(blocjson)
val_ana1 = jsonValeur.value/19750

commandArray[527] = {['UpdateDevice'] = 527 ..'|0|'..  val_ana1  }

end

return commandArray