Bonjour à tous,
Je suis tout nouveau sur domoticz et je suis actuellement en pleine découverte de ce sympathique outil.
Je voulais réaliser un événement en blocky simple qui me compare l'heure en cours à une heure donné et qui change d'état un interrupteur.
Sauf que je ne comprends absolument pas le résultat : on dirait que la comparaison est délirante, dans tous les cas ma condition est valide et mon interrupteur "test" est allumé!
L'interrupteur "mode_vacance_à_la_maison" me sert juste a reset l'interrupteur "test" et à tester ce script.
Quelqu’un a une idée?
Edit : je suis en V4.9700
blocky et comparaison avec time
blocky et comparaison avec time
Domoticz V4.10717 sur raspberry pi 3 B+
RFLink Gateway Nodo 433Mhz
Contrôleur Aeon Labs Z-Wave Plus Z-Stick GEN5
RFLink Gateway Nodo 433Mhz
Contrôleur Aeon Labs Z-Wave Plus Z-Stick GEN5
Re: blocky et comparaison avec time
SalutDouns a écrit : 04 oct. 2018, 20:54 Bonjour à tous,
Je suis tout nouveau sur domoticz et je suis actuellement en pleine découverte de ce sympathique outil.
Je voulais réaliser un événement en blocky simple qui me compare l'heure en cours à une heure donné et qui change d'état un interrupteur.
Sauf que je ne comprends absolument pas le résultat : on dirait que la comparaison est délirante, dans tous les cas ma condition est valide et mon interrupteur "test" est allumé!
L'interrupteur "mode_vacance_à_la_maison" me sert juste a reset l'interrupteur "test" et à tester ce script.
Quelqu’un a une idée?
blocky_time.JPG
Edit : je suis en V4.9700
J'ai abandonné le blocky pour ce type d'usage sous domoticz car cela ne marchait pas.
Cordialement
Antoine
Domoticz V2020.2 sous raspbian-Buster
Raspberry Pi B+ avec Clé Zigate 3.1d Plugin 4.11.011
Raspberry Pi B+ avec Clé Zigate 3.1d Plugin 4.11.011
Re: blocky et comparaison avec time
Dommage, j'aimais bien cette programmation visuelle... Et je ne connaissais pas le LUA.
Bon j'ai passé une bonne partie de la nuit dessus, mais j'ai tout réalisé en LUA et cela fonctionne nickel.
pour ceux que cela intéresse en LUA :
Bon j'ai passé une bonne partie de la nuit dessus, mais j'ai tout réalisé en LUA et cela fonctionne nickel.
pour ceux que cela intéresse en LUA :
Code : Tout sélectionner
local temperature_eco = 18.5
local temperature_normal = 20
local hysteresis = 0.5
local function split(s, delimiter)
local result = {}
for match in (s..delimiter):gmatch('(.-)'..delimiter) do
table.insert(result, match)
end
return result
end
local function compare_heure(heure_courante, heure_min,heure_max)
local tab_heure_courante={}
local tab_heure_min={}
local tab_heure_max={}
local int_heure_courante
local int_heure_min
local int_heure_max
tab_heure_courante=split(tostring(heure_courante), ":")
tab_heure_min=split(tostring(heure_min), ":")
tab_heure_max=split(tostring(heure_max), ":")
int_heure_courante = (tonumber(tab_heure_courante[1]) * 3600) + (tonumber(tab_heure_courante[2]) * 60) + tonumber(tab_heure_courante[3])
int_heure_min = (tonumber(tab_heure_min[1]) * 3600) + (tonumber(tab_heure_min[2]) * 60) + tonumber(tab_heure_min[3])
int_heure_max = (tonumber(tab_heure_max[1]) * 3600) + (tonumber(tab_heure_max[2]) * 60) + tonumber(tab_heure_max[3])
if int_heure_courante>=int_heure_min and int_heure_courante<int_heure_max then
return true
else
return false
end
end
local function test_temperature_chambre(nom_chambre,temperature_chambre,temperature_consigne,hysteresis,type_test)
if type_test=="inf" then
if temperature_chambre<=(temperature_consigne-hysteresis) then
print("Consigne à : "..temperature_consigne)
print("Chambre "..nom_chambre.." trop froide : "..temperature_chambre)
return true
else
return false
end
else
if temperature_chambre>=(temperature_consigne+hysteresis) then
print("Consigne à : "..temperature_consigne)
print("Chambre "..nom_chambre.." trop chaude : "..temperature_chambre)
return true
else
return false
end
end
end
commandArray = {}
local heure_now = os.date("%X")
local jour = tostring(os.date("%A"))
local temperature_chambre_Tim = tonumber(split(otherdevices['Sonde Chambre Tim'],";")[1])
local temperature_consigne
local drapeau_start_chauffage=0
local drapeau_stop_chauffage=1
if jour=="Sunday" or jour=="Saturday" or otherdevices['Mode Vacance']=='On' then
if compare_heure(heure_now,"08:00:00","20:30:00") then
temperature_consigne=temperature_normal
else
temperature_consigne=temperature_eco
end
else
if compare_heure(heure_now,"06:30:00","08:00:00") or compare_heure(heure_now,"17:00:00","20:30:00") then
temperature_consigne=temperature_normal
else
temperature_consigne=temperature_eco
end
end
--condition test temperature froide
if otherdevices['Chaudiere Gaz']=='Off' then
if test_temperature_chambre("Tim",temperature_chambre_Tim,temperature_consigne,hysteresis,"inf") then
drapeau_start_chauffage=1
end
--ajouter autres pièce à tester ici
if drapeau_start_chauffage==1 then
commandArray['Chaudiere Gaz']='On'
print("Démarrage chaudière")
end
end
if drapeau_start_chauffage==0 then
if otherdevices['Chaudiere Gaz']=='On' then
--condition test temperature chaude
if test_temperature_chambre("Tim",temperature_chambre_Tim,temperature_consigne,hysteresis,"sup")==false then
drapeau_stop_chauffage=0
end
--ajouter autres pièce à tester ici
if drapeau_stop_chauffage==1 then
commandArray['Chaudiere Gaz']='Off'
print("Arret chaudière")
end
end
end
return commandArrayDomoticz V4.10717 sur raspberry pi 3 B+
RFLink Gateway Nodo 433Mhz
Contrôleur Aeon Labs Z-Wave Plus Z-Stick GEN5
RFLink Gateway Nodo 433Mhz
Contrôleur Aeon Labs Z-Wave Plus Z-Stick GEN5