Page 1 sur 1

[RESOLU] Interrupteur intégrant variables

Publié : 10 mars 2020, 11:57
par Dreamer
Bonjour,

Novice, j'ai bien avancé sur la domotisation de mon poele Rika Revo gràce à la mise en place d'un module DIO au niveau de son contact sec. Je pilote ce module "contact sec" grace à un RFXcom et Domoticz.

J'ai ainsi créé un interrupteur sélecteur
Selecteur.JPG
Selecteur.JPG (16.92 Kio) Consulté 5069 fois
. La fonction On active le poele en continue, Off l'éteind, Auto active des scripts en fonction de la présence ou non de mes enfants etc.. J'aimerai ajouter une fonction "Manuel". Cette fonction "Manuel" permettrait d'activer le poele entre un horaire de début et un horaire de fin mais ces deux horaires doivent être facilement modifiables (sans passer par un script, directement depuis le tableau de bord).

Question : existe t il une possibilité de créer un interrupteur permettant de renseigner ces deux horaires (deux variables donc)pour que mon mode "Manuel" puisse s'appuyer dessus ou existe t il une façon d'éditer le bouton "Manuel" du selecteur?

Merci de votre aide, j'espère avoir été clair :?

Re: Interrupteur intégrant variables

Publié : 10 mars 2020, 18:26
par denis_brasseur
Tu peux utiliser les variables utilisateur, plus facile de modifier une variable qu'un script

Re: Interrupteur intégrant variables

Publié : 10 mars 2020, 22:40
par Dreamer
En effet, j'ai bien des variables utilisateurs ;)

Je tente actuellement la mise en place de deux interrupteurs virtuels "consigne thermostat" pour simuler les horaires début/fin mais je bloque sur le script visant à transformer les consignes (exemple 12,5) en heure (format HH:MM)...novice je vous dis :lol:

Re: Interrupteur intégrant variables

Publié : 11 mars 2020, 04:50
par denis_brasseur
J'ai repris 2 fonctions existantes :

Code : Tout sélectionner

--[[
Fonction de base pour diviser une chaîne sur un délimiteur dans LUA. La syntaxe est délimiteur puis chaîne
Renvoie une table des sous-chaînes identifiées
]]--
function strSplit(delim,str)
    local t = {}
    for substr in string.gmatch(str, "[^".. delim.. "]*") do
        if substr ~= nil and string.len(substr) > 0 then
            table.insert(t,substr)
        end
    end
    return t
end

 --retourne une valeur sur 2 digit (exemple 1 retourne 01)
function deuxDigits(nombre)
	nombre = string.format("%02d",nombre)
	return nombre
end

Code : Tout sélectionner

s = string.match(otherdevices_svalues['consigne thermostat'], "(%d+%.*%d*)")
local t = strSplit('.',s)
valeur_return = deuxDigits(t[1])..':'..deuxDigits(t[2]*6/10)
print(valeur_return)
Ainsi, si la valeur de ton thermostat est 12,5, tu obtiens en retour 12:30. SI la valeur est 12, tu obtiens 12:00.

D’autres méthodes sont possibles, je me suis contenter d'utiliser 2 de mes fonctions existantes.

Re: Interrupteur intégrant variables

Publié : 11 mars 2020, 10:33
par Dreamer
Super, merci. Je vais tenter de créer un script sur la base de ces deux-ci. Je vous tiens au courant :P

Re: Interrupteur intégrant variables

Publié : 11 mars 2020, 18:34
par Dreamer
Et bien cela fonctionne, je parviens désormais à faire fonctionner mon poêle en mode Manuel
selecteur.JPG
selecteur.JPG (18.04 Kio) Consulté 4970 fois
.
Ce mode lance le poêle sur la base des consignes "Heure de début" et Heure de Fin"
Consignes.JPG
Consignes.JPG (21.46 Kio) Consulté 4970 fois
en changeant mes variables utilisateurs.

Merci à denis_brasseur de m'avoir bien aidé ;)