blocky et comparaison avec time

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 <\>.
Douns
Messages : 64
Inscription : 04 oct. 2018, 20:38
Localisation : Meurthe-et-Moselle

blocky et comparaison avec time

Message par Douns »

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
blocky_time.JPG (30.13 Kio) Consulté 2818 fois
Edit : je suis en V4.9700
Domoticz V4.10717 sur raspberry pi 3 B+
RFLink Gateway Nodo 433Mhz
Contrôleur Aeon Labs Z-Wave Plus Z-Stick GEN5
Tonio16
Messages : 349
Inscription : 13 oct. 2017, 17:00

Re: blocky et comparaison avec time

Message par Tonio16 »

Douns 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
Salut

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
Douns
Messages : 64
Inscription : 04 oct. 2018, 20:38
Localisation : Meurthe-et-Moselle

Re: blocky et comparaison avec time

Message par Douns »

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 :

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 commandArray
Domoticz V4.10717 sur raspberry pi 3 B+
RFLink Gateway Nodo 433Mhz
Contrôleur Aeon Labs Z-Wave Plus Z-Stick GEN5
Répondre