Page 3 sur 3

Re: Transformer un script LUA en DZVETNS

Publié : 23 juil. 2021, 13:46
par kisskool
JE pense que j'ai un problème au niveau du controle de la pompe, j'ai l'impression qu'il compare la longueur des chaines de caractere plutot que le nombre et je ne sais pas comment mettre un "tonumber" comme en LUA

Code : Tout sélectionner

--------------------------------
 ------ Variables à éditer ------
 --------------------------------

local M3 = 4
local M3H = 3
local duree_cycle = tonumber(M3)/tonumber(M3H)*60 --M3 piscine / débit M3 pompe *60
local C01=0.1*duree_cycle -- si <10°
local C02=0.5*duree_cycle -- si 10-14°
local C03=1*duree_cycle -- si 15-20°
local C04=2*duree_cycle -- si 20-28°
local C05=3*duree_cycle -- si >28°
local H_Raz = 10	-- Heure de remise à zéro du compteur.
local scriptName = 'Script_PISCINE_DZVENT'
local scriptVersion = '1.0'
local newValue = value
local counterDivider = 1 -- x is depending on the counter divider set for the device

---------------------------------------------------------------------------------------------------------------------------------------------
-----*****************EN TEST************ VARIABLE *****************EN TEST************---------------------------
---------------------------------------------------------------------------------------------------------------------------------------------
--local T_eau=domoticz.devices('Sortie_piscine').temperature()

return {
	on = {
	   	timer = {
	   	    'every 10 minutes at 10:30-22:00',
		}
		--devices = { 340 }
	},
	-- custom logging level for this script
    logging = {
                --level   = domoticz.LOG_DEBUG,
                level   = domoticz.LOG_INFO,             -- Seulement un niveau peut être actif; commenter les autres
                -- level   = domoticz.LOG_ERROR,            -- Only one level can be active; comment others
                -- level   = domoticz.LOG_MODULE_EXEC_INFO,
                marker	= scriptName..' v'..scriptVersion
   },



execute = function(domoticz, item)

---------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------calcul du temps de filtration en fonction de la temperature-------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------

        ----------------------------------------------------------------------------------------------------------
            if (domoticz.devices('Sortie_piscine').temperature) < 10 then 
             domoticz.variables('Var_Piscine_bes').set(C01)
        ----------------------------------------------------------------------------------------------------------
            elseif (domoticz.devices('Sortie_piscine').temperature) >= 10 and (domoticz.devices('Sortie_piscine').temperature) < 14 then
             domoticz.variables('Var_Piscine_bes').set(C02)
        ----------------------------------------------------------------------------------------------------------
            elseif (domoticz.devices('Sortie_piscine').temperature) >= 14 and (domoticz.devices('Sortie_piscine').temperature) < 20 then
             domoticz.variables('Var_Piscine_bes').set(C03)
        ----------------------------------------------------------------------------------------------------------
            elseif (domoticz.devices('Sortie_piscine').temperature) >= 20 and (domoticz.devices('Sortie_piscine').temperature) < 28 then
             domoticz.variables('Var_Piscine_bes').set(C04)
        ----------------------------------------------------------------------------------------------------------
            elseif (domoticz.devices('Sortie_piscine').temperature) >= 28 then
             domoticz.variables('Var_Piscine_bes').set(C05)
        ----------------------------------------------------------------------------------------------------------
            end

---------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------commande de la pompe-------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------
		
    if domoticz.devices('Pompe mode manu').state == 'Off' then
        domoticz.log ('************************************************************')
        domoticz.log ('*********************Mode Manu désactivé********************')
        domoticz.log ('************************************************************')
			if (domoticz.variables('Var_Piscine_bes').value > domoticz.variables('Var_Piscine_tmp').value) then 
			    domoticz.devices('Filtration piscine').switchOn().forMin(5)
			    domoticz.log ('************************************************************')
                domoticz.log ('**************************POMPE_ON**************************')
                domoticz.log ('************************************************************')
            else
                domoticz.devices('Filtration piscine').switchOff()
                domoticz.log ('************************************************************')
                domoticz.log ('***********************POMPE_OFF****************************')
                domoticz.log ('************************************************************')
			end
    else
    domoticz.log ('************************************************************')
    domoticz.log ('*********************Mode Manu activé***********************')
    domoticz.log ('************************************************************')
	end		

---------------------------------------------------------------------------------------------------------------------------------------------
-----*****************EN TEST************ Remise à zero du compteur quotidien *****************EN TEST************---------------------------
---------------------------------------------------------------------------------------------------------------------------------------------

		
			if (os.date('%H',time) == (H_Raz)) then
			    domoticz.log ('RAZ Compteur', domoticz.LOG_INFO)
                local valeur = 0
                local variable = domoticz.variables('Var_Piscine_tmp')
                variable.set(valeur);
			end
			
---------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------Affichage de controle dans le LOG------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------

    domoticz.log ('************************************************************')
    domoticz.log ('********  Valeur du scenario 1 -> '..C01..' si <10°  ***************')
    domoticz.log ('********      Valeur du scenario 2 -> '..C02..' si 10-14°  ************')
    domoticz.log ('********      Valeur du scenario 3 -> '..C03..' si 15-20°  ************')
    domoticz.log ('********     Valeur du scenario 4 -> '..C04..' si 20-28°  ***********')
    domoticz.log ('********      Valeur du scenario 5 -> '..C05..' si >28°  *************')
    domoticz.log ('************************************************************')
    domoticz.log ('************************* '  ..os.date('%H'..'h'..'%M',time)..'*****************************')
    domoticz.log ('************************************************************')
    domoticz.log ('********  Besoin.: '..domoticz.variables('Var_Piscine_bes').value..' mn *********************************')
    domoticz.log ('********  Réalisé: '..domoticz.variables('Var_Piscine_tmp').value..' mn *********************************')
    domoticz.log ('********  Reste..: '..domoticz.variables('Var_Piscine_bes').value - domoticz.variables('Var_Piscine_tmp').value..' mn **********************************')
	domoticz.log ('******** '..domoticz.devices('Sortie_piscine').temperature..' Sortie *****************************')
    domoticz.log ('******** '..domoticz.devices('Entree_piscine').temperature..' Entrée *****************************')
    domoticz.log ('************************************************************')
    domoticz.log ('************************************************************')
    
end
}

Re: Transformer un script LUA en DZVETNS

Publié : 23 juil. 2021, 13:50
par Neutrino
Le plus simplement du monde :

Code : Tout sélectionner

tonumber(chaine)
;)

Re: Transformer un script LUA en DZVETNS

Publié : 23 juil. 2021, 14:01
par Keros
Concernant la partie Remise à zero du compteur quotidien, ce que tu as fait va fonctionner (au niveau du déclenchement), mais c'est dommage de ne pas utiliser les fonctions native du DzVents. Voir l'utilisation des timers.

Pour info, toutes les lignes domoticz.devices('xxx') doivent être après execute = function(domoticz, item) sinon, cela fait appel à la variable domoticz qui n'est pas connue. --local T_eau=domoticz.devices('Sortie_piscine').temperature() est commentée, mais elle ne fonctionnera jamais là, d'où l'erreur que tu avais avant.

Re: Transformer un script LUA en DZVETNS

Publié : 23 juil. 2021, 14:46
par kisskool
Et oui j'avais bien pensé utiliser un truc du genre at 10:00, etc mais je ne sais pas si je peux utiliser ni comment utiliser plusieurs declencheur timer dans le même script, est-ce qu'il existe un truc genre qui remplace le IF ?
at 10:00 domoticz.log ('RAZ Compteur', domoticz.LOG_INFO)
local valeur = 0
local variable = domoticz.variables('Var_Piscine_tmp')
variable.set(valeur);
end

Pour les variables je l'ai mis au bon endroit mais ca veut pas...

Re: Transformer un script LUA en DZVETNS

Publié : 23 juil. 2021, 15:04
par boum
Un autre soucis de ton code est que la remise à zéro ne peut pas être faite à 10h vu que le script n'est pas déclenché à cette heure. Par contre, elle se fera à 10h30, 10h40 et 10h50.

Pour le déclencheur supplémentaire, il suffit de faire :

Code : Tout sélectionner

-- [...]
local razTrigger = 'at 10:03' 
return {
	on = {
	   	timer = {
	   	   razTrigger,
	   	    'every 10 minutes at 10:30-22:00',
		}
	},
-- [...]
execute = function(domoticz, item)
    -- Remise à zéro
    if item.trigger == razTrigger then
                domoticz.log ('RAZ Compteur', domoticz.LOG_INFO)
                local variable = domoticz.variables('Var_Piscine_tmp')
                variable.set(0);
                return -- arrête l'exécution du script immédiatement dans ce cas
    end
-- [...]
end
}
kisskool a écrit : Pour les variables je l'ai mis au bon endroit mais ca veut pas...
Ce n'est pas une fonction, pas de parenthèses après temperature

Code : Tout sélectionner

local T_eau=domoticz.devices('Sortie_piscine').temperature -- pas de ()

Re: Transformer un script LUA en DZVETNS

Publié : 23 juil. 2021, 16:17
par kisskool
Je pense qu'avec ce post tu viens de me faire gagner plusieurs heures !
Pour la variable j'ai essayé tellement de trucs qu'il restait un peu de caca....

Merci beaucoup ! Je vais essayer tous ça !