Apres nous allons ajouter les échanges avec Wiser en Http réponse en Json : Script en LUA comme toujours adaptez ces scripts en fonction de votre installation ip mdp équipements
Code : Tout sélectionner
---------------------------------------
---------- Variables publics ----------
---------------------------------------
-- Dans un premier temps veuillez créer ces variables utilisateurs pour les besoin système
-- Réglage/Plus d'option/Variable utilisateur = "StepWiser" de type entier
-- Réglage/Plus d'option/Variable utilisateur = "Cycle_CmdWiser" de type entier
-- Réglage/Plus d'option/Variable utilisateur = "RemoteCmdWiser" de type entier
---------------------------------------
------------ Configuration ------------
---------------------------------------
local nom_script = "CmdWiser" -- Scipt LUA de type Device
local Desc_script = "Ecriture des commandes Wiser"
local version = "2.60"
local debugging = false -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local IpAddr = "192.168.0.2" -- adresse du Wiser
local LogAdmin = "admin" -- Login Wiser
local Mdp = "admin" -- mot de passe Wiser
local TempsSansActivite = 15 -- Temps sans activité des équipements
local JoursDeVacances = 2 -- Jours de vacances pour le passage du mode vacances
local RemoteCmd = uservariables["RemoteCmdWiser"] -- Commande Wiser provenant d'un autre script ajoutez -> commandArray['Variable:RemoteCmdWiser']=tostring(otherdevices_idx['Votre actionneur']), pour relancer la commande de votre actionneur dans vos scripts
local VarTempsCycle = "Cycle_" .. nom_script -- Facultatif : Variable pour la mesure de temps de cycle du script
-- Rebonds d'écritures après lecture des données
-- Si vous constatez ce type d'effets dans les logs ajustez le paramètre "TempoApresLecWiser" qui bloque ce problème
--17:41:00.457 dzVents: Info Script MajCapteursWiser : Lecture des données de températures Wiser, dernière lecture il y à 358 sec
--17:41:31.510 dzVents: Info Script CmdWiser : Start requete = /usr/bin/curl -H "Content-Type: application/json" -X POST -d '{"targetTemp":[{"locationId":"Cuisine","targetValue":19.00}]}' http://admin:admin@192.168.0.2/rpc/hvac/set_loc_temp
--17:41:31.735 (Wiser) Thermostat (Csg de la cuisine)
local TempoApresLecWiser = 100 -- Temps en secondes après la lecture des données Wiser : Ajustez ce temps pour éviter les rebonds de commandes apres la lecture Wiser
-- Liste des requêtes disponibles Wiser -- /rpc/mode/set_home_mode | Wiser <- Ecriture du mode de chauffe
-- /rpc/hvac/set_loc_temp | Wiser <- Ecriture d'une consigne de température
-- /rpc/loadmanagement/set_appliance_state | Wiser <- Commande d'un équipement de type Interupteur
-- Sur un navigateur internet lancer "http://192.168.0.2/rpc/loadmanagement/get_appliances" (avec l'IP du votre Wiser) pour trouver les applianceId de vos équipements
-- Favorisez FireFoxe qui traduit directement le Json
-- Attention quand vous ajoutez des nouveaux équipements, il est possible que votre Wiser reclasse vos équipements, l'ordre de vos équipements peut bouger. Contrôler l'ordre après votre ajout.
--------------------------------------------
---------------- Fonctions -----------------
--------------------------------------------
-- Fonction des log
function voir_les_logs (s, debugging)
if (debugging) then
if s ~= nil then
print ("<font color='#01CC43'>".. s .."</font>")
else
print ("<font color='#f3031d'>aucune valeur affichable</font>")
end
end
end
-- Fonction commande d'équipement Wiser
function CmdCapteur(ID_Equip, IdxEquip, Type, Valeur001, Valeur002, FonctionReqWiser)
if (uservariables["StepWiser"]==0) then
if (Type == "PrisePilotée") then
local Cmd = "true"
if (Valeur001~="nil") or (RemoteCmd==IdxEquip) then
if Valeur001 == "On" then
Cmd = "true"
else
Cmd = "false"
end
Req = '/usr/bin/curl -H "Content-Type: application/json" -X POST -d \'{"applianceState":[{"applianceId":"' .. ID_Equip .. '","state":' .. Cmd .. '}]}\' http://' .. LogAdmin .. ':' .. Mdp .. '@' .. IpAddr .. FonctionReqWiser
local config=assert(io.popen(Req))--Commande Json dans la requête HTTP : {"applianceState":[{"applianceId":"' .. ID_Equip .. '","state":' .. Cmd .. '}]}
voir_les_logs("Info Script ".. nom_script .. " : Start requete = " .. Req ,true)
end
end
if (Type == "ModeChauffe") then
local Cmd = '{"homeMode":"schedule","antiFreeze":false}'--Commande Json
if (Valeur001~="nil") or (RemoteCmd==IdxEquip) then
if (Valeur001 == "Off") then
Cmd = '{"homeMode":"energysaver","antiFreeze":false}'--Commande Json
end
if (Valeur001 == "Manuel") then
Cmd = '{"homeMode":"manual","antiFreeze":false}'--Commande Json
end
if (Valeur001 == "Vacances") then
Cmd = '{"homeMode":"holiday","antiFreeze":true,"endTime":' .. os.time()+ tonumber(Valeur002) * 24 * 60 * 60 ..'}'--Commande Json
end
if (Cmd == '{"homeMode":"schedule","antiFreeze":false}') then
commandArray['Jours de vacances']="Off"
commandArray['Simulation']='Set Level: 0'
end
Req = '/usr/bin/curl -H "Content-Type: application/json" -X POST -d \'' .. Cmd .. '\' http://' .. LogAdmin .. ':' .. Mdp .. '@' .. IpAddr .. FonctionReqWiser
local config=assert(io.popen(Req))
voir_les_logs("Info Script ".. nom_script .. " : Start requete = " .. Req ,true)
end
end
if (Type == "ConsigneTemp") then
if (Valeur001~="nil") or (RemoteCmd==IdxEquip) then
local Cmd = '{"targetTemp":[{"locationId":"'.. ID_Equip .. '","targetValue":' .. Valeur002 .. '}]}'--Commande Json
Req = '/usr/bin/curl -H "Content-Type: application/json" -X POST -d \'' .. Cmd .. '\' http://' .. LogAdmin .. ':' .. Mdp .. '@' .. IpAddr .. FonctionReqWiser
local config=assert(io.popen(Req))
voir_les_logs("Info Script ".. nom_script .. " : Start requete = " .. Req ,true)
end
end
if (RemoteCmd==IdxEquip) then
commandArray['Variable:RemoteCmdWiser']='0'
end
end
end
--Fonction calcule la différence de temps (en secondes) entre maintenant et la date passée en paramètre.
function timedifference (s)
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = os.difftime (t1, t2)
return difference
end
--------------------------------------------
-------------- Fin Fonctions ---------------
--------------------------------------------
--------------------------------------------
commandArray = {}
commandArray['Variable:' .. VarTempsCycle]= '600'
voir_les_logs("Info Script ".. nom_script .. " : " .. Desc_script .. " (v".. version ..") by MikeW",debugging)
if (uservariables["StepWiser"]==0) and (timedifference(otherdevices_lastupdate["Mode de chauffage"]) > TempsSansActivite * 60) then
-- Pour ajouter votre consigne wiser ajouter une ligne comme celles suvantent avec les nom de votre installation
-- ajoutez aussi une ligne avec votre configuration juste après "if (uservariables["StepWiser"]==1 and"
-- CmdCapteur("Nom de l'équipement dans Wiser", "ConsigneTemp", tostring(devicechanged["Nom de votre capteur virtuel dans Domoticz"]), "/rpc/hvac/set_loc_temp")
if tonumber(otherdevices_svalues["Batteries du Rad salle à manger"]:match("([^;]+)"))>0 then
CmdCapteur("Salle à manger", otherdevices_idx["Csg de la salle a manger"], "ConsigneTemp", tostring(devicechanged["Csg de la salle a manger"]), tostring(tonumber(string.format("%.2f",tostring(otherdevices_svalues["Csg de la salle a manger"])))), "/rpc/hvac/set_loc_temp")
end
if tonumber(otherdevices_svalues["Batteries du Rad du salon"]:match("([^;]+)"))>0 then
CmdCapteur("Salon", otherdevices_idx["Csg du salon"], "ConsigneTemp", tostring(devicechanged["Csg du salon"]), tostring(tonumber(string.format("%.2f",tostring(otherdevices_svalues["Csg du salon"])))), "/rpc/hvac/set_loc_temp")
end
if tonumber(otherdevices_svalues["Batteries du Rad du salon"]:match("([^;]+)"))>0 then
CmdCapteur("Buanderie", otherdevices_idx["Csg de la Buanderie"], "ConsigneTemp", tostring(devicechanged["Csg de la Buanderie"]), tostring(tonumber(string.format("%.2f",tostring(otherdevices_svalues["Csg de la Buanderie"])))), "/rpc/hvac/set_loc_temp")
end
-- CmdCapteur("Nom de l'équipement dans Wiser", "ConsigneTemp", tostring(devicechanged["Nom de votre capteur virtuel dans Domoticz"]), "/rpc/mode/set_home_mode")
CmdCapteur("", otherdevices_idx["Mode de chauffage"], "ModeChauffe", tostring(devicechanged["Mode de chauffage"]),tonumber(JoursDeVacances), "/rpc/mode/set_home_mode")
-- Sur un navigateur internet lancer "http://192.168.0.2/rpc/loadmanagement/get_appliances" (avec l'IP du votre Wiser) pour trouver les applianceId de vos équipements
-- CmdCapteur("applianceId", "PrisePilotée", tostring(devicechanged["Nom de votre capteur virtuel dans Domoticz"]), "/rpc/loadmanagement/set_appliance_state")
CmdCapteur("124b00042a2401-11", otherdevices_idx["Interrupteur Divers 1"], "PrisePilotée", tostring(devicechanged["Interrupteur Divers 1"]),0, "/rpc/loadmanagement/set_appliance_state")
CmdCapteur("124b00011fbf67-11", otherdevices_idx["Interrupteur Divers 2"], "PrisePilotée", tostring(devicechanged["Interrupteur Divers 2"]),0, "/rpc/loadmanagement/set_appliance_state")
end
-- Test lecture en cours pour éviter larsen informatique
-- Ajoutez votre équipement à cette liste
if (uservariables["StepWiser"]==1 and
(timedifference(otherdevices_lastupdate["Csg du salon"]) > TempoApresLecWiser) and
(timedifference(otherdevices_lastupdate["Csg de la Buanderie"]) > TempoApresLecWiser) and
(timedifference(otherdevices_lastupdate["Interrupteur Divers 1"]) > TempoApresLecWiser) and
(timedifference(otherdevices_lastupdate["Interrupteur Divers 2"]) > TempoApresLecWiser) and
(timedifference(otherdevices_lastupdate["Mode de chauffage"]) > TempoApresLecWiser)
) then
commandArray['Variable:StepWiser']='0'
end
-- Initialisation des commandes Wiser en cas de blockage des commandes Manu, ajoutez -> commandArray['Variable:RemoteCmdWiser']="-1", dans votre script pour initialiser les commandes Wiser
if (RemoteCmd==-1) and
(otherdevices["Interrupteur Divers 1"]=="Off") and -- On controle les interrupteurs car Wiser initilise les inters pendant son initialisation, si un inter est à on wiser va le mettre à off
(otherdevices["Interrupteur Divers 2"]=="Off") then
commandArray['Variable:RemoteCmdWiser']=tostring(otherdevices_idx['Mode de chauffage'])
end
-- Selection du nombre de jours de vacances par un capteur virtuel Inter Sellecteur Off; 1 Jour; 2 Jours ext ...
if tostring(devicechanged['Jours de vacances'])~="Off" and tostring(devicechanged['Jours de vacances'])~="nil" then
JoursDeVacances = tostring(string.format("%.0f",string.gsub(otherdevices['Jours de vacances'], "%D", "")))
CmdCapteur("", otherdevices_idx["Mode de chauffage"], "ModeChauffe", "Vacances",tonumber(JoursDeVacances), "/rpc/mode/set_home_mode")
end
if (tostring(devicechanged['Jours de vacances'])=="Off") and tostring(otherdevices['Mode de chauffage'])~="Program"then
CmdCapteur("", otherdevices_idx["Mode de chauffage"], "ModeChauffe", "Program",0, "/rpc/mode/set_home_mode")
end
commandArray['Variable:' .. VarTempsCycle]=tostring(timedifference(tostring(uservariables_lastupdate[VarTempsCycle])))
return commandArray
Code : Tout sélectionner
-- Attention sur cette version nous utilisons l'état des Batteries pour savoir si nous pouvons intéroger certains capteurs avec Batteries (vannes thermostatiques). L'état des batteries est mis à jour par Wiser une à deux fois par jour
---------------------------------------
---------- Variables publics ----------
---------------------------------------
-- Dans un premier temps veuillez créer ces variables utilisateurs pour les besoin système
-- Réglage/Plus d'option/Variable utilisateur = "StepWiser" de type entier
-- Réglage/Plus d'option/Variable utilisateur = "Cycle_CmdAuto" de type entier
-- Réglage/Plus d'option/Variable utilisateur = "CycleTime001" de type Chaîne
---------------------------------------
------------ Configuration ------------
---------------------------------------
local nom_script = "MajCapteursWiser" -- Scipt LUA de type Time cycle de 1 minute
local Desc_script = "Récupération des données Wiser"
local version = "3.01"
local debugging = false -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local MajCycle = false -- true pour une mise à jour des capteurs à chaque tour de cycle ou false pour une mise à jour sur exception
local IpAddr = "192.168.0.2" -- Adresse IP du Wiser
local LogAdmin = "admin" -- Login installateur Wiser
local Mdp = "admin" -- Mot de passe installateur Wiser
local system = "Synology" -- Systeme d'exploitation sur lequel est éxécuté ce script : linux, windows, synology pour le chemin vers JSON.LUA
local BpModeEco = "Mode de chauffage" -- Nom de votre capteur virtuel mode de chauffe wiser, Indiquez ici le nom du capteur virtuel Mode de chauffe
local IndexJson = 1 -- Index de réponse des requetes HTTP en Json
local TempsMajCapteur = 5 -- Temps de mise à jour des mesures en minutes : exemple les mesures de températures wiser sont maj par le Wiser tout les 5 minutes
local VarTempsCycle = "Cycle_" .. nom_script -- Facultatif : Variable pour la mesure de temps de cycle du script
-- Liste des requêtes disponibles Wiser -- /rpc/hvac/get_all_loc_temp | Wiser -> Liste des équipements de température
-- /rpc/homedevice/device_list | Wiser -> Lecture des de tout les équipements
-- /rpc/loadmanagement/get_appliances | Wiser -> Liste des équipements Interupteur
-- /rpc/mode/get_home_mode | Wiser -> Lecture du mode de chauffe en cours
-- Sur un navigateur internet lancez -> "http://192.168.0.2/rpc/hvac/get_all_loc_temp" (avec l'IP du votre Wiser) pour trouver les IndexJson températures de vos pièces
-- retour en Json
-- Exemple : {"hcMode":"manual","locationTempDetails":[
--{"locationId":"Cuisine",
--"locationName":"Cuisine",
--"unit":"C",
-- Votre pièce dite Cuisine est donc le premier IndexBlock = 1 et ainsi suite
-- idème pour la Fonction "http://192.168.0.2/rpc/homedevice/device_list" qui vous donne votre liste d'équipements installés
-- ou bien "http://192.168.0.2/rpc/loadmanagement/get_appliances" qui vous donne votre liste des Interrupteurs
-- Attention quand vous ajoutez des nouveaux équipements, il est possible que votre Wiser reclasse vos équipements, l'ordre de vos équipements peut bouger. Contrôler l'ordre après votre ajout.
--------------------------------------------
if system == "Windows" then
json = (loadfile "c:\\Domoticz\\scripts\\lua\\json.lua")() -- Pour Windows
elseif system == "Synology" then
json = (loadfile "/volume1/@appstore/domoticz/var/scripts/lua/JSON.lua")() -- Pour Synology
else
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- Pour Linux
end
--------------------------------------------
---------------- Fonctions -----------------
--------------------------------------------
-- Fonction des log
function voir_les_logs (s, debugging)
if (debugging) then
if s ~= nil then
print ("<font color='#01CC43'>".. s .."</font>")
else
print ("<font color='#f3031d'>aucune valeur affichable</font>")
end
end
end
-- Fonction de mise à jour des données Wiser
function MajCapteur(IndexBlock, Capteur001, Capteur002, Type, Name, Valeur001, UnitCapteur001, Valeur002, UnitCapteur002)
if (Type == "PrisePilotée") then
ModeInter = "Off"
if (Valeur001 == "true") then
ModeInter="On"
end
voir_les_logs("Info Script ".. nom_script .. " : Lecture BlocJson Wiser " .. Type .. " : Num " .. IndexBlock .. ", " .. Name .. "| " .. Type .. " = " .. ModeInter ,debugging)
if (otherdevices[Capteur001]~=ModeInter) then
voir_les_logs("Info Script ".. nom_script .. " : Ecriture " .. Capteur001 .." = " .. tostring(ModeInter),debugging)
commandArray[Capteur001]=ModeInter
commandArray['Variable:StepWiser']='1'
end
else
if (UnitCapteur002 ~= "") then
if (Capteur001~="") then
voir_les_logs("Info Script ".. nom_script .. " : Lecture BlocJson Wiser : Num " .. IndexBlock .. ", " .. Name .. "| " .. Type .. " = " .. Valeur001 .. UnitCapteur001 .. " / " .. Valeur002 .. UnitCapteur002 ,debugging)
update(Type, Capteur001,Valeur001,Valeur002,UnitCapteur001,UnitCapteur002)
end
if (Capteur002~="") then
update(Type .. "2", Capteur002,Valeur001,Valeur002,UnitCapteur001,UnitCapteur002)
end
else
if (Capteur001~="") then
voir_les_logs("Info Script ".. nom_script .. " : Lecture BlocJson Wiser : Num " .. IndexBlock .. ", " .. Name .. "| " .. Type .. " = " .. Valeur001 .. " " .. UnitCapteur001 ,debugging)
update(Type, Capteur001,Valeur001,0,UnitCapteur001,UnitCapteur002)
end
if (Capteur002~="") then
update(Type .. "2", Capteur002,Valeur001,0,UnitCapteur001,UnitCapteur002)
end
end
end
end
-- Fonctions tabeau de commandes de domoticz pour Wiser
function update(Type, dev, value1, value2, Unit1 , Unit2)
local Val1, Val2 = otherdevices_svalues[dev]:match("([^;]+);([^;]+)")
if tostring(Val1)=="nil" then
Val1=tonumber(otherdevices_svalues[dev])
end
if (Unit2 =="") then
if ( ( tonumber(tostring(string.format("%.1f",tostring(Val1)))) ~= tonumber(tostring(string.format("%.1f",tostring(value1)))) )
or MajCycle) then
commandArray['Variable:StepWiser']='1'
voir_les_logs("Info Script ".. nom_script .. " : Ecriture sur le block " .. Type .. " " .. string.format("%.1f",tostring(Val1)) .. Unit1 .. " : " .. dev .. " = Val1 <- ".. tostring(string.format("%.1f",tostring(value1))) .. Unit1 .. " BolckJson N" .. tostring(IndexJson) ,debugging)
local cmd = tostring(otherdevices_idx[dev] .. '|0|'.. tostring(string.format("%.1f",tostring(value1))) ..';'.. tostring(string.format("%.1f",tostring(value2))) ..';'.. '1')
table.insert (commandArray, { ['UpdateDevice'] = cmd } )
end
else
if ( ( tonumber(tostring(string.format("%.1f",tostring(Val1)))) ~= tonumber(tostring(string.format("%.1f",tostring(value1)))) ) or
( tonumber(tostring(string.format("%.1f",tostring(Val2)))) ~= tonumber(tostring(string.format("%.1f",tostring(value2)))) )
or MajCycle) then
commandArray['Variable:StepWiser']='1'
voir_les_logs("Info Script ".. nom_script .. " : Ecriture sur le block " .. Type .. " " .. string.format("%.1f",tostring(Val1)) .. Unit1 .. " ; " .. string.format("%.1f",tostring(Val2)) .. Unit2 .. " : " .. dev .. " = Val1 <- ".. tostring(string.format("%.1f",tostring(value1))) .. Unit1 .. " = Val2 <- ".. tostring(string.format("%.1f",tostring(value2))) .. Unit2 .. " BolckJson N" .. tostring(IndexJson) ,debugging)
local cmd = tostring(otherdevices_idx[dev] .. '|0|'.. tostring(string.format("%.1f",tostring(value1))) ..';'.. tostring(string.format("%.1f",tostring(value2))) ..';'.. '1')
table.insert (commandArray, { ['UpdateDevice'] = cmd } )
end
end
end
-- Fonction construction de la requête HTTP
function RequeteHTTP(FonctionReqWiser)
local Req = '/usr/bin/curl http://' .. LogAdmin .. ':' .. Mdp .. '@' .. IpAddr .. FonctionReqWiser
voir_les_logs("Info Script ".. nom_script .. " : Start requete = " .. Req,debugging)
return Req
end
--Fonction calcule la différence de temps (en secondes) entre maintenant et la date passée en paramètre.
function timedifference (s)
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = os.difftime (t1, t2)
return difference
end
--------------------------------------------
-------------- Fin Fonctions ---------------
--------------------------------------------
--------------------------------------------
voir_les_logs("Info Script ".. nom_script .. " : " .. Desc_script .. " (v".. version ..") by MikeW",debugging)
commandArray = {}
commandArray['Variable:' .. VarTempsCycle]= '600'
-- Test de mise à jour sous conditions
if (timedifference(tostring(uservariables_lastupdate['CycleTime001'])) > TempsMajCapteur *60) or MajCycle then
voir_les_logs("Info Script ".. nom_script .. " : Lecture des données de températures Wiser, derniére lecture il y à " .. timedifference(tostring(uservariables_lastupdate['CycleTime001'])) .. " Sec" ,debugging)
----------------------Niveaux de Batteries---------------------------------
local config=assert(io.popen(RequeteHTTP("/rpc/homedevice/device_list")))
local blocjson = config:read('*all')
config:close()
local jsonValeur = json:decode(blocjson)
-- Pour ajouter votre consigne "vanne thermostatiques" wiser ajouter une ligne comme celles suvantes avec les noms de votre installation
-- MajCapteur(IndexJson, "Nom de votre 1er capteur virtuel", "Nom de votre 2eme capteur virtuel", "Batteries", tostring(jsonValeur.device[IndexJson].name),tostring(((tonumber(jsonValeur.device[IndexJson].batteryLevel) +1)*100)/7),"%", 0,"")
IndexJson = 2
MajCapteur(IndexJson, "Batteries du Rad de la cuisine", "", "Batteries", tostring(jsonValeur.device[IndexJson].name),tostring(((tonumber(jsonValeur.device[IndexJson].batteryLevel) +1)*100)/7),"%", 0,"")
IndexJson = IndexJson + 1
MajCapteur(IndexJson, "Batteries du Rad 001", "", "Batteries", tostring(jsonValeur.device[IndexJson].name),tostring(((tonumber(jsonValeur.device[IndexJson].batteryLevel) +1)*100)/7),"%", 0,"")
IndexJson = IndexJson + 1
MajCapteur(IndexJson, "Batteries du Rad 002", "", "Batteries", tostring(jsonValeur.device[IndexJson].name),tostring(((tonumber(jsonValeur.device[IndexJson].batteryLevel) +1)*100)/7),"%", 0,"")
IndexJson = IndexJson + 1
MajCapteur(IndexJson, "Batteries du Rad 003", "", "Batteries", tostring(jsonValeur.device[IndexJson].name),tostring(((tonumber(jsonValeur.device[IndexJson].batteryLevel) +1)*100)/7),"%", 0,"")
IndexJson = IndexJson + 1
MajCapteur(IndexJson, "Batteries du Rad du salon", "", "Batteries", tostring(jsonValeur.device[IndexJson].name),tostring(((tonumber(jsonValeur.device[IndexJson].batteryLevel) +1)*100)/7),"%", 0,"")
IndexJson = IndexJson + 1
MajCapteur(IndexJson, "Batteries du Rad de la buanderie", "", "Batteries", tostring(jsonValeur.device[IndexJson].name),tostring(((tonumber(jsonValeur.device[IndexJson].batteryLevel) +1)*100)/7),"%", 0,"")
IndexJson = IndexJson + 1
MajCapteur(IndexJson, "Batteries du Bouton mode eco", "", "Batteries", tostring(jsonValeur.device[IndexJson].name),tostring(((tonumber(jsonValeur.device[IndexJson].batteryLevel) +1)*100)/7),"%", 0,"")
-------------------------------Mesures Wiser------------------------------------
local config=assert(io.popen(RequeteHTTP("/rpc/hvac/get_all_loc_temp")))
local blocjson = config:read('*all')
config:close()
local jsonValeur = json:decode(blocjson)
-- Pour ajouter votre mesure sur "vanne thermostatiques" wiser ajouter une ligne comme celles suvantes avec les noms de votre installation
-- MajCapteur(IndexJson, "Nom de votre 1er capteur virtuel", "Nom de votre 2eme capteur virtuel", "Mesure et Vanne", tostring(jsonValeur.locationTempDetails[IndexJson].locationName),jsonValeur.locationTempDetails[IndexJson].currentValue,"°C", jsonValeur.locationTempDetails[IndexJson].valve[1].valvePosition,"%")
IndexJson = 1
if tonumber(otherdevices_svalues["Batteries du Rad du salon"]:match("([^;]+)"))>0 then
MajCapteur(IndexJson, "T du salon / Vanne", "", "Mesure et Vanne", tostring(jsonValeur.locationTempDetails[IndexJson].locationName),jsonValeur.locationTempDetails[IndexJson].currentValue,"°C", jsonValeur.locationTempDetails[IndexJson].valve[1].valvePosition,"%")
end
IndexJson = IndexJson + 1
if tonumber(otherdevices_svalues["Batteries du Rad de la buanderie"]:match("([^;]+)"))>0 then
MajCapteur(IndexJson, "T de la Buanderie / Vanne", "", "Mesure et Vanne", tostring(jsonValeur.locationTempDetails[IndexJson].locationName),jsonValeur.locationTempDetails[IndexJson].currentValue,"°C", jsonValeur.locationTempDetails[IndexJson].valve[1].valvePosition,"%")
end
IndexJson = IndexJson + 1
if tonumber(otherdevices_svalues["Batteries du Rad de l entrée"]:match("([^;]+)"))>0 then
MajCapteur(IndexJson, "T de l entree / Vanne", "", "Mesure et Vanne", tostring(jsonValeur.locationTempDetails[IndexJson].locationName),jsonValeur.locationTempDetails[IndexJson].currentValue,"°C", jsonValeur.locationTempDetails[IndexJson].valve[1].valvePosition,"%")
end
IndexJson = IndexJson + 1
if tonumber(otherdevices_svalues["Batteries du Rad de la cuisine"]:match("([^;]+)"))>0 then
MajCapteur(IndexJson, "T de la cuisine / Vanne", "", "Mesure et Vanne", tostring(jsonValeur.locationTempDetails[IndexJson].locationName),jsonValeur.locationTempDetails[IndexJson].currentValue,"°C", jsonValeur.locationTempDetails[IndexJson].valve[1].valvePosition,"%")
end
-----------------------------Consignes Wiser------------------------------------
-- Pour ajouter votre consigne wiser ajouter une ligne comme celles suvantes avec les noms de votre installation
-- MajCapteur(IndexJson, "Nom de votre 1er capteur virtuel", "Nom de votre 2eme capteur virtuel", "Consigne", tostring(jsonValeur.locationTempDetails[IndexJson].locationName),jsonValeur.locationTempDetails[IndexJson].targetValue,"°C", 0,"")
IndexJson = 1
MajCapteur(IndexJson, "CT du salon", "Csg du salon", "Consigne", tostring(jsonValeur.locationTempDetails[IndexJson].locationName),jsonValeur.locationTempDetails[IndexJson].targetValue,"°C", 0,"")
IndexJson = IndexJson + 1
MajCapteur(IndexJson, "CT de la Buanderie", "Csg de la Buanderie", "Consigne", tostring(jsonValeur.locationTempDetails[IndexJson].locationName),jsonValeur.locationTempDetails[IndexJson].targetValue,"°C", 0,"")
IndexJson = IndexJson + 1
MajCapteur(IndexJson, "CT de la cuisine", "Csg de la cuisine", "Consigne", tostring(jsonValeur.locationTempDetails[IndexJson].locationName),jsonValeur.locationTempDetails[IndexJson].targetValue,"°C", 0,"")
--------------------------------------------------------------------------------
-- Fin de mise à jour sous conditions
commandArray['Variable:CycleTime001'] = tostring(os.date('%Y-%m-%d %H:%M:%S'))
end
-- Mise à jour toutes les minutes
----------------------Etats interrupteurs Wiser---------------------------------
local config=assert(io.popen(RequeteHTTP("/rpc/loadmanagement/get_appliances")))
local blocjson = config:read('*all')
config:close()
local jsonValeur = json:decode(blocjson)
-- Pour ajouter l'état de votre "interrupteur" wiser ajouter une ligne comme celles suvantes avec les noms de votre installation
-- MajCapteur(IndexJson, "Nom de votre 1er capteur virtuel", "Nom de votre 2eme capteur virtuel", "PrisePilotée", tostring(jsonValeur.applianceDetails[IndexJson].locationName),tostring(jsonValeur.applianceDetails[IndexJson].state),"", 0,"")
IndexJson = 1
MajCapteur(IndexJson, "Interrupteur Divers 1", "", "PrisePilotée", tostring(jsonValeur.applianceDetails[IndexJson].locationName),tostring(jsonValeur.applianceDetails[IndexJson].state),"", 0,"")
IndexJson = IndexJson + 1
MajCapteur(IndexJson, "Interrupteur Divers 2", "", "PrisePilotée", tostring(jsonValeur.applianceDetails[IndexJson].locationName),tostring(jsonValeur.applianceDetails[IndexJson].state),"", 0,"")
IndexJson = 1
MajCapteur(IndexJson, "P Interrupteur Divers 1", "", "PuissancePrise", tostring(jsonValeur.applianceDetails[IndexJson].locationName),tostring(jsonValeur.applianceDetails[IndexJson].powerConsump),"W", 0,"")
IndexJson = IndexJson + 1
MajCapteur(IndexJson, "P Interrupteur Divers 2", "", "PuissancePrise", tostring(jsonValeur.applianceDetails[IndexJson].locationName),tostring(jsonValeur.applianceDetails[IndexJson].powerConsump),"W", 0,"")
----------------------Mode de chauffege Wiser-----------------------------------
local config=assert(io.popen(RequeteHTTP("/rpc/mode/get_home_mode")))
local blocjson = config:read('*all')
config:close()
local jsonValeur = json:decode(blocjson)
voir_les_logs("Info Script ".. nom_script .. " : Lecture du mode de chauffe Wiser : Mode = ".. jsonValeur.homeMode ,debugging)
RHomeMode = 'Set Level: 0'
CHomeMode = "Off"
if (tostring(jsonValeur.homeMode) == "schedule") then
RHomeMode='Set Level: 20'
CHomeMode = "Program"
end
if (tostring(jsonValeur.homeMode) == "holiday") then
RHomeMode='Set Level: 30'
CHomeMode = "Vacances"
end
if (tostring(jsonValeur.homeMode) == "manual") then
RHomeMode='Set Level: 10'
CHomeMode = "Manuel"
end
if (otherdevices[BpModeEco]~=CHomeMode) then
commandArray['Variable:StepWiser']='1'
voir_les_logs("Info Script ".. nom_script .. " : Ecriture du mode = " .. RHomeMode,debugging)
commandArray[BpModeEco]=RHomeMode
if CHomeMode ~= "Vacances" then
commandArray['Jours de vacances']="Off"
commandArray['Simulation']='Set Level: 0'
else
commandArray['Simulation']='Set Level: 10'
end
end
--------------------------------------------------------------------------------
commandArray['Variable:' .. VarTempsCycle]=tostring(timedifference(tostring(uservariables_lastupdate[VarTempsCycle])))
return commandArray