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 <\>.
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 :
--[ 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
--[[
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