Ipx800v4 retour état en json/lua

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

Re: Ipx800v4 retour état en json/lua

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Ipx800v4 retour état en json/lua

Message 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
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: Ipx800v4 retour état en json/lua

Message 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   
manuloup
Messages : 781
Inscription : 18 févr. 2015, 13:05

Re: Ipx800v4 retour état en json/lua

Message par manuloup »

Merci, grâce à toi j'ai résolu mon problème d'url avec &param :)
Synology DS920+ avec VM Debian 12, Aeon Labs Z-Stick Gen5, Aeon Zwave et devices zwaves , Teleinfo USB, devices Zigbee, batterie Marstek Venus E, Shelly Pro 3EM...
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: Ipx800v4 retour état en json/lua

Message 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 ;)
Répondre