Régulation ventilation cheminée

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 <\>.
Vincent
Messages : 5
Inscription : 05 nov. 2021, 18:05

Régulation ventilation cheminée

Message par Vincent »

Bonsoir à tous,
je viens de remplacer mon variateur de ventilation de ma cheminée pour un Wally dimmer FIBARO .
Je souhaite automatiser sa régulation avec domoticz: Je possède un détecteur de fumée +thermostat
FGSD-002 FIBARO placé à la sortie d'une bouche d'air.
j'essaie de faire évoluer le pourcentage de ventilation à chaque variation de température :De le démarrer à partir d'une certaine température et de l'arrêter lorsqu'il n'y a plus de chaleur à diffuser.

création d'un interrupteur virtuel OK :Ventilateur cheminee (action off :http://X.X.X.X:8080/json.htm?type=comma ... tchcmd=Off)

Mais voila :
1-Mon petit programme en lua se répète toutes les minutes alors que je souhaite qu'il s’exécute uniquement à l'évolution de la température. ?
2-Il semble qu'il ralentit domoticz :
2021-11-05 18:12:12.693 Status: EventSystem: Fetching URL http://192.168.10.152:8080/json.htm?typ ... el&level=5 after 0.2 seconds...
3- lorsque je lance la commande :
commandArray['OpenURL'] = 'http://X.X.X.X:8080/json.htm?type=comma ... el&level=5'
==> le widget du walli dimmer ne se met pas à jour.

j'ai fait beaucoup( trop) fais de test et modification ..et la je n'arrive plus à progresser .
Qui peut me donner un petit coup de main ...je vous remercie.
voici pour programme

Code : Tout sélectionner

----------------------------------------------------------------
--  PILOTAGE VENTILATION DE LA CHEMINEE
-- WALLI PLUG 
-- DETECTEUR DE FUMEE + SONDE TEMPERATURE  INTERNE
-- 
------------------------------------------------------------------

-- chargement des modules
dofile('/home/pi/domoticz/scripts/lua/modules.lua')

commandArray = {}

interrupteur = otherdevices['ventilateur cheminee']
print("interrupteur ="..interrupteur)
for deviceName,deviceValue in pairs(devicechanged) do
    --print ("Device based event fired on '"..deviceName.."', value '"..tostring(deviceValue).."'");
    if (deviceName=='Watt ventilateur') then
    print("variable"..tostring(deviceValue).."'");
    end
end
puissance = tostring(deviceValue)
   
--if (devicechanged['ventilateur cheminee'] == 'On' ) then
   if interrupteur == 'On'   then
       puissance = otherdevices['Watt ventilateur']
   temperature_cheminee = (otherdevices_svalues['cheminee'])
   print("Donnee brute = "..temperature_cheminee)  
   print("ventilateur cheminée activée")
   commandArray['Walli cheminee']='Set Level '.. puissance
   print("puissance ventilateur = ".. puissance)

   
   if  ((tonumber(temperature_cheminee) < tonumber("20")) and (tonumber(puissance))~= 0) then
       
       print("ventilateur cheminée déactivé")
       commandArray['OpenURL'] = 'http://X.X.X.X:8080/json.htm?type=command&param=switchlight&idx=310&switchcmd=Off'
      
   end
   if  ((tonumber(temperature_cheminee) > tonumber("21")) and (tonumber(puissance))== 5)then
       commandArray['OpenURL'] = 'http://X.X.X.X:8080/json.htm?type=command&param=switchlight&idx=310&switchcmd=Set%20Level&level=5'
   end
   if (tonumber("26")<tonumber(temperature_cheminee) and tonumber(temperature_cheminee)>tonumber("30")and (tonumber(puissance))== 15) then
       commandArray['OpenURL'] = 'http://X.X.X.X:8080/json.htm?type=command&param=switchlight&idx=310&switchcmd=Set%20Level&level=15'
   end
   if (tonumber("31")<tonumber(temperature_cheminee) and tonumber(temperature_cheminee)>tonumber("35")and (tonumber(puissance))== 25) then
       commandArray['OpenURL'] = 'http://X.X.X.X:8080/json.htm?type=command&param=switchlight&idx=310&switchcmd=Set%20Level&level=25'
   end
   if (tonumber("36")<tonumber(temperature_cheminee) and tonumber(temperature_cheminee)>tonumber("40")and (tonumber(puissance))== 35) then   
       commandArray['OpenURL'] = 'http://X.X.X.X:8080/json.htm?type=command&param=switchlight&idx=310&switchcmd=Set%20Level&level=35'
   end
   if (tonumber("41")<tonumber(temperature_cheminee) and tonumber(temperature_cheminee)>tonumber("45")and (tonumber(puissance))~= 45) then
        commandArray['OpenURL'] = 'http://X.X.X.X:8080/json.htm?type=command&param=switchlight&idx=310&switchcmd=Set%20Level&level=45'
   end
   ------------POUR TEST  ------
   --if (tonumber("20")<tonumber(temperature_cheminee) and tonumber(temperature_cheminee)>tonumber("21")and (tonumber(puissance))~= 55) then
    if (tonumber("17")<tonumber(temperature_cheminee)) and (tonumber(temperature_cheminee)<tonumber("21")and (tonumber(puissance))~= 10.2) then    
        --puissance = (otherdevices_svalues['Watt ventilateur'])
        commandArray['Walli cheminee']='Set Level '.. puissance
        commandArray['OpenURL'] = 'http://X.X.X.X:8080/json.htm?type=command&param=switchlight&idx=310&switchcmd=Set%20Level&level=5'
        
   end
   if (tonumber("51")<tonumber(temperature_cheminee) and tonumber(temperature_cheminee)>tonumber("55")and (tonumber(puissance))== (tonumber("65"))) then
        commandArray['OpenURL'] = 'http://X.X.X.X:8080/json.htm?type=command&param=switchlight&idx=310&switchcmd=Set%20Level&level=65'
   end
   if (tonumber("56")<tonumber(temperature_cheminee) and tonumber(temperature_cheminee)>tonumber("60")and (tonumber(puissance))== 75) then
        commandArray['OpenURL'] = 'http://X.X.X.X:8080/json.htm?type=command&param=switchlight&idx=310&switchcmd=Set%20Level&level=75'
   end
   if(( tonumber(temperature_cheminee) > tonumber("61")) and (tonumber(puissance))>76) then
       commandArray['OpenURL'] = 'http://X.X.X.X:8080/json.htm?type=command&param=switchlight&idx=310&switchcmd=Set%20Level&level=95'
   end
   print('le variateur est à '..otherdevices_svalues['Watt ventilateur' ] .." %")  

 end   


    
return commandArray
Dernière modification par Keros le 05 nov. 2021, 20:45, modifié 1 fois.
Raison : Ajout des balises [code] pour faciliter la lecture
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Régulation ventilation cheminée

Message par Keros »

Bonjour Vincent et bienvenu sur le forum ;)

Lors de la rédaction des messages, il y a une petite icône </> qui permet d'insérer des balises de code dans le message. Les scripts sont ainsi plus lisibles. Je les ai rajouté dans ton post.

Tu as un souci au niveau de la syntaxe de ton script : Le premier end ferme la première condition if (en bleu) mais tout de suite derrière tu refermes la condition for (en rouge).

for deviceName,deviceValue in pairs(devicechanged) do
--print ("Device based event fired on '"..deviceName.."', value '"..tostring(deviceValue).."'");
if (deviceName=='Watt ventilateur') then
print("variable"..tostring(deviceValue).."'");
end
end

Le problème est que la condition suivante if interrupteur == 'On' then n'est plus du tout liée à un évènement : elle est vérifiée dés que le script s'exécute. En fonction du trigger, cela peut être toutes les minutes ou à chaque fois qu'un dispositif change.
D'ailleurs, quel est le trigger de ton script ?

Tu as bien démarré la programmation, bravo. Si besoin, j'ai écrit un petit guide pour débuter en programmation (lien dans ma signature).
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Vincent
Messages : 5
Inscription : 05 nov. 2021, 18:05

Re: Régulation ventilation cheminée

Message par Vincent »

Merci pour ces précisions Keros,
je vais lire ta bible.
je souhaite le trigger du type device : Si mon bouton virtuel "interrupteur " est a "ON " alors je déclenche
la suite qui est:
"si la température a augmentée changement d'état
j’accélère la vitesse du ventilateur"
"si la température a baissé changement d'état
je décélère ou je l'arrête"
simple pourtant ...:-|
Bonne soirée
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Régulation ventilation cheminée

Message par Keros »

Dans ce cas, ton script peut avoir la forme suivante :

Code : Tout sélectionner

Si la température a changé alors  
   si interrupteur est a "ON " alors
      si la température a augmenté alors ....
      sinon ....
      fin
   fin
fin
Autre question : pourquoi passes-tu par l'API pour mettre à jour le level ? Tu ne peux pas utiliser la commande LUA commandArray["Dispositif"] = 'Set Level:10' ?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Vincent
Messages : 5
Inscription : 05 nov. 2021, 18:05

Re: Régulation ventilation cheminée

Message par Vincent »

Bonjour,
J'ai bien avancé !!
je vais pouvoir optimiser la chaleur fournie par la ventilateur de ma cheminée !!.
=>Au déclenchement du ventilateur j'ai toujours dans les logs ce message mais bon je vais finir par l'ignorer...

2021-11-06 19:37:06.333 Status: EventSystem: Fetching URL http://192.168.10.152:8080/json.htm?typ ... el&level=5 after 0.2 seconds...

=>seul l'appel par l'API fonctionne active le FIBARO Walli..( j'ai essayé les 3 syntaxes en commentaire)
mon code pour test :

Code : Tout sélectionner

commandArray = {}
interrupteur = otherdevices['ventilateur cheminee']
temperature_cheminee = (otherdevices_svalues['cheminee'])
print("temperature_cheminee  = "..temperature_cheminee)
if devicechanged['cheminee']   then
    print("temperature_cheminee = "..temperature_cheminee)
    if interrupteur == 'On'   then
        
        ------------POUR TEST  ------
       print("interrupteur à ON ,variation temperature_cheminee = "..temperature_cheminee)
        if (tonumber("17")<tonumber(temperature_cheminee)) and (tonumber(temperature_cheminee)<tonumber("21")) then
        print("ventilateur activé = "..temperature_cheminee)
       --commandArray['Walli cheminee']='Set Level 5'
        --commandArray['Walli cheminee']='Set Level=5'
        --commandArray['Walli cheminee']='Set Level:5'
        commandArray['OpenURL'] = 'http://X.X.X.X:8080/json.htm?type=command&param=switchlight&idx=310&switchcmd=Set%20Level&level=5'.
mon code:

        else
        commandArray['Walli cheminee']='Off'
        commandArray['OpenURL'] = 'http://X.X.X.X:8080/json.htm?type=command&param=switchlight&idx=310&switchcmd=Off'
        
        print("ventilateur déactivé ")
        end
    end
        end
return commandArray
=>il me reste la vérification de l'état du Walli_cheminee qui semble ne pas se mettre à l'état réel (il est à Off et le dimmer reste à 5%..en même temps.. ??)
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Régulation ventilation cheminée

Message par Keros »

Attention, tu as la ligne print("temperature_cheminee = "..temperature_cheminee) qui est en dehors de la condition if devicechanged['cheminee'] then. Cela signifie que tu auras un print à chaque fois que le trigger lance le script (c'est-à-dire à chaque changement dans DomoticZ quel que soit le dispositif) mais pas quand 'cheminee' change.

La ligne d'erreur est générée par le script ? Ou tu l'as également lorsque le script est désactivé ?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Vincent
Messages : 5
Inscription : 05 nov. 2021, 18:05

Re: Régulation ventilation cheminée

Message par Vincent »

Non uniquement quand le script est activé et que
Cela active le fibaro walli dimmer.
J ai laissé dans ma copie du script des prints pour le debug...
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Régulation ventilation cheminée

Message par Neutrino »

2021-11-06 19:37:06.333 Status: EventSystem: Fetching URL http://192.168.10.152:8080/json.htm?typ ... el&level=5 after 0.2 seconds...
C'est pas une erreur ça.
C'est juste l'appel de l'URL, tout va bien ;)
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
ker49
Messages : 85
Inscription : 08 janv. 2016, 18:13

Re: Régulation ventilation cheminée

Message par ker49 »

Bonjour,
Ton installation m'intéresse.
Pourrais-tu nous dire plus précisément ce que tu as utilisé comme matériel : marque et/ou modèle du ventilateur ...
As-tu déjà un retour sur l'utilisation (positive ?) de ton installation ?
Et enfin, si tu avais à apporter des modifications, lesquelles envisagerais-tu ?
Merci par avance pour ton retour ... et bon chauffage ;)
Vincent
Messages : 5
Inscription : 05 nov. 2021, 18:05

Re: Régulation ventilation cheminée

Message par Vincent »

Bonsoir ker49,
J'ai comme installation un foyer STUV 105 avec un variateur (remplacé par le dimmer FIBARO) et un ventilateur (90w max fournis par le constructeur) sous ce foyer.
L'air pris à l'extérieur passe autour du foyer puis est poussée à travers une gaine à l'étage.
Je n'ai pas encore testé mais je vais vérifier si la vitesse du ventilateur pilotée par le dimmer soit bien proportionnel à la chaleur fournie par le foyer.L'objectif premier est donc de démarrer et d'arrêter la ventilation avant d 'envoyer de l'air froid par oubli et d'optimiser la chaleur fournie.
Si cela est satisfaisant je vais regarder pour envoyer des alertes via google home.(manque bois,surchauffe ..)
Il faudra toujours réguler l'arrivée de l'air pour la combustion et mettre du bois :D
Répondre