Page 2 sur 2

Re: Ipx800v4 retour état en json/lua

Publié : 18 août 2018, 12:02
par marsflow
Bonjour,

je vous met le retour d'état entre mon IPX800V4 et mon domoticz, vous faites un device dummy, vous rajoutez donc les liens Json dans le dummy action on et off. et vous créez un fichier script device lua,
avec dedans ceci :

Code : Tout sélectionner

--[ il va vérifier après le changement d'état si dans le json de l'IPX800V4 la sortie est bien passé en on ou off, j'ai eu le cas où le lien n'a pas pu être ouvert donc la sortie ne s'était pas allumé ou éteinte ]--

commandArray = {}



if (devicechanged[cumulus]) then 

sleep(2)

json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
 
local config=assert(io.popen('/usr/bin/curl "http://192.168.1.32:82/api/xdevices.json?key=apikey&Get=R"')) 

local blocjson = config:read('*all')
 config:close()
 local jsonValeur = json:decode(blocjson)
          relais1=(tonumber(jsonValeur.R1))
		   relais2=(tonumber(jsonValeur.R2))
          relais3=(tonumber(jsonValeur.R3))

		  
	if (otherdevices[cumulus]=='Off') and (relais3 == 1) then
         print('Relais 3 off :' .. relais3) 
		 commandArray[cumulus]='Off'

	elseif (otherdevices[cumulus]=='On') and (relais3 == 0) then
         print('Relais 3 on:' .. relais3) 
		 commandArray[cumulus]='On'
		 
	elseif (otherdevices[cumulus]=='Off') and (relais3 == 0) then
         print('Relais 3 ok off :' .. relais3) 
		 
	elseif (otherdevices[cumulus]=='On') and (relais3 == 1) then
         print('Relais 3 ok on:' .. relais3) 


       end
		end 



 
return commandArray

Re: Ipx800v4 retour état en json/lua

Publié : 18 août 2018, 14:06
par vil1driver
(Lecture rapide)

Declarer cumulus ou le placer entre '

sleep n'est déclaré et va également donner une erreur.

Il doit manquer une partie du script

Re: Ipx800v4 retour état en json/lua

Publié : 05 oct. 2018, 09:41
par marsflow
vil1driver a écrit : 18 août 2018, 14:06 (Lecture rapide)

Declarer cumulus ou le placer entre '

sleep n'est déclaré et va également donner une erreur.

Il doit manquer une partie du script
Bonjour vil1driver,

Désolé j'avais oublié de préciser que ce script marche correctement.

J'en profite pour te remercier pour ton aide précieuse.

Mon script actuel finit.

Code : Tout sélectionner

         --[[
jai créais un interrupteur virtuel sur domoticz, j'ai mit les liens json de l'ipx dans les paramètres de l'interrupteur virtuel mais le problème était que quand j'enclanchais l'interrupteur ça arrivait que l'envoie échoue, Donc le script permet d'avoir un retour d'État de mon relais et si l'envoie échoue de le renvoyer. J'ai aussi rajouter dans mon script un interrupteur nommé scripts qui bloque la récupération des données de l'ipx si la communication entre l'ipx ou mon serveur consomation et mon serveur domoticz est coupé pour empêcher le plantage de domoticz. l'interrupteur scripts est relié à un script lua qui envoie des ping toutes les 3min.
--]]
-- chargement des modules
dofile('/home/pi/domoticz/scripts/lua/modules.lua')

 --------------------------------
 ------ Start of edit section ------
 -------------------------------- 
 
 local voletveranda = 'Volet veranda'
 local cumulus = 'CUMULUS' --Nom du contacte à allumer/éteindre
 local OnOff = 'scripts'
 --------------------------------
 -- End of edit section --
 --------------------------------




 
commandArray = {}



if (devicechanged[cumulus]) and (otherdevices[OnOff]=='On') then 

sleep(2)

json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
 
local config=assert(io.popen('/usr/bin/curl "http://192.168.1.32:82/api/xdevices.json?key=apikey&Get=R"')) --[ 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()
 local jsonValeur = json:decode(blocjson)
          relais1=(tonumber(jsonValeur.R1))
		   relais2=(tonumber(jsonValeur.R2))
          relais3=(tonumber(jsonValeur.R3))

		  
	if (otherdevices[cumulus]=='Off') and (relais3 == 1) then
         print('Relais 3 off :' .. relais3) 
		 commandArray[cumulus]='Off'

	elseif (otherdevices[cumulus]=='On') and (relais3 == 0) then
         print('Relais 3 on:' .. relais3) 
		 commandArray[cumulus]='On'
		 
	elseif (otherdevices[cumulus]=='Off') and (relais3 == 0) then
         print('Relais 3 ok off :' .. relais3) 
		 
	elseif (otherdevices[cumulus]=='On') and (relais3 == 1) then
         print('Relais 3 ok on:' .. relais3) 


       end
		end 



 
return commandArray   

Re: Ipx800v4 retour état en json/lua

Publié : 01 janv. 2019, 16:26
par manuloup
Merci, grâce à toi j'ai résolu mon problème d'url avec &param :)

Re: Ipx800v4 retour état en json/lua

Publié : 07 janv. 2019, 19:38
par marsflow
manuloup a écrit : 01 janv. 2019, 16:26 Merci, grâce à toi j'ai résolu mon problème d'url avec &param :)
De rien ;)