[Tuto] Domotiser son poêle à granulés

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
Gaz
Messages : 224
Inscription : 17 oct. 2015, 10:30

Re: [TUTO] Domotiser son poêle à granulés

Message par Gaz »

J'ai réussi à me faire envoyer des notifications sur les niveaux 20 et 10% en modifiant la ligne 41

Code : Tout sélectionner

if (devicechanged[pellet])then
ou

Code : Tout sélectionner

if (devicechanged[pellet]) then


par

Code : Tout sélectionner

if (uservariables["pellet"]) then
J'ai aussi basculé la variable à Entier

Du coup les notifications arrivent bien, mais une toutes les minutes...à partir du niveau 20% restant.
stephdes
Messages : 285
Inscription : 06 oct. 2016, 20:50

Re: [TUTO] Domotiser son poêle à granulés

Message par stephdes »

Gaz a écrit :J'ai réussi à me faire envoyer des notifications sur les niveaux 20 et 10% en modifiant la ligne 41

Code : Tout sélectionner

if (devicechanged[pellet])then
ou

Code : Tout sélectionner

if (devicechanged[pellet]) then


par

Code : Tout sélectionner

if (uservariables["pellet"]) then
J'ai aussi basculé la variable à Entier

Du coup les notifications arrivent bien, mais une toutes les minutes...à partir du niveau 20% restant.
Tu as essayé avec le code modifié que j'ai posté ?

Car chez moi il fonctionne. Etrangement je n'ai pas les notifs toutes les minutes
MiniPC W10 + RFXCom 433e + RFLINK
Elec : Téléinfo
Alexa + Alhau
MQTT...
(merci easydomoticz !)
Gaz
Messages : 224
Inscription : 17 oct. 2015, 10:30

Re: [TUTO] Domotiser son poêle à granulés

Message par Gaz »

Oui, mais j'avais des freeze de la variable.
Je devrais atteindre les 20% demain en soirée, je referais des tests.
campeaux
Messages : 66
Inscription : 02 oct. 2016, 21:58
Contact :

Re: [TUTO] Domotiser son poêle à granulés

Message par campeaux »

Bonjour,

Félicitations pour ce beau travail.
Je cherche aussi des solutions pour domotiser un poel MCZ, mais en abordant la problématique plutôt sous l'angle du pilotage RF433.
Je suis d’ailleurs ce forum depuis longtemps mais les réponses apportées sont trop complexes à mettre en oeuvre : http://www.touteladomotique.com/forum/v ... f=6&t=8706

J'ai une petite questions. Connaissez vous un moyen pour remonter à domoticz l'état du poel (en marche ou éteint) ?
stephdes
Messages : 285
Inscription : 06 oct. 2016, 20:50

Re: [TUTO] Domotiser son poêle à granulés

Message par stephdes »

campeaux a écrit :Bonjour,

Félicitations pour ce beau travail.
Je cherche aussi des solutions pour domotiser un poel MCZ, mais en abordant la problématique plutôt sous l'angle du pilotage RF433.
Je suis d’ailleurs ce forum depuis longtemps mais les réponses apportées sont trop complexes à mettre en oeuvre : http://www.touteladomotique.com/forum/v ... f=6&t=8706

J'ai une petite questions. Connaissez vous un moyen pour remonter à domoticz l'état du poel (en marche ou éteint) ?
En fait, je n'ai pas pris le temps de me poser sur le sujet du RF 433. Enfin que partiellement car j'ai déjà récupéré l'ID du poêle mais c'est tout.

J'ai contacté Bert pour avoir les modèles de trames mais il m'a renvoyé vers un membre du forum touteladomotique. Pixelman je pense.

Pour l'instant je n'ai plus trop le temps mais ça m'intéresserait aussi de pouvoir piloter le poele avec Domoticz. Surtout au niveau ventilateurs...
MiniPC W10 + RFXCom 433e + RFLINK
Elec : Téléinfo
Alexa + Alhau
MQTT...
(merci easydomoticz !)
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: [TUTO] Domotiser son poêle à granulés

Message par marsflow »

Bonsoir,
Je ne comprend pas pourquoi récupérer la température des fumées.
stephdes
Messages : 285
Inscription : 06 oct. 2016, 20:50

Re: [TUTO] Domotiser son poêle à granulés

Message par stephdes »

marsflow a écrit :Bonsoir,
Je ne comprend pas pourquoi récupérer la température des fumées.
Dans ce cas précis, à connaître l'état du poêle : allumé / éteint
MiniPC W10 + RFXCom 433e + RFLINK
Elec : Téléinfo
Alexa + Alhau
MQTT...
(merci easydomoticz !)
Gaz
Messages : 224
Inscription : 17 oct. 2015, 10:30

Re: [TUTO] Domotiser son poêle à granulés

Message par Gaz »

Au vue de la mesure de ma cuve qui est très variable :oops: :oops: :oops:
Lecture pellet.png
Lecture pellet.png (462.4 Kio) Consulté 10419 fois
J'ai remarqué que si la valeur mesuré était hors plage (supérieurement à la hauteur de la cuve déclaré dans ton script) et ce durant une heure, alors la variable pellet était plus mise à jour pour les heures suivantes.
Du coup je te propose un script simple qui vérifie que le dernier update à était fait il y a moins de 1h par exemple, si c’est pas le cas, alors il modifie la variable.

Code : Tout sélectionner

--[[  
Script_time_Debogage_Compteur_Pellet.lua
Auteur : Gaz
version : 1.0
MAJ : 10/12/2017
création : 10/112/2017
Principe :
Vérifie si il y a pas plus de 10mins entre deux MAJ cohérente du niveau de pellet

]]--

function timedifference(s)
   year = string.sub(s, 1, 4)
   month = string.sub(s, 6, 7)
   day = string.sub(s, 9, 10)
   hour = string.sub(s, 12, 13)
   minutes = string.sub(s, 15, 16)
   seconds = string.sub(s, 18, 19)
   t1 = os.time()
   t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
   difference = os.difftime (t1, t2)
   return difference
end

commandArray = {}
if (timedifference(otherdevices_lastupdate['Niveau pellet']) > 600) then -- en secondes
commandArray['Variable:pellet']= tostring(30) -- Remise à 30 de la varriable
end
Obone
Messages : 88
Inscription : 12 janv. 2018, 15:12

Re: [TUTO] Domotiser son poêle à granulés

Message par Obone »

i9987popo a écrit :Bonjour à tous, moi j'ai un Jotul, je gère également le poêle a granulés avec le contact sec, maintenant j'aimerais également jouer sur la puissance de la flamme et de la ventilation, mais la cela se complique. Si des personnes ont des infos sur les poeles Jotul ou Palazetti (Jotul utilise l’électronique de Palazetti) je suis preneur.
Il y a derrière le poele un prise ressemblant a RJ11, quelqu'un sait a quoi elle sert ? C'est peut être par cette prise que l'on pourrait commander la flamme et la ventilation non ?
Bonjour, ton poele est il compatible avec la "connexion box" ?
Je possède un palazzetti et avec ce boitier de connexion il est facile de récupérer beaucoup d'infos sur le poêle.

Nicolas
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: [TUTO] Domotiser son poêle à granulés

Message par marsflow »

Boujour à tous,

je vous donne mon amélioration pour le problème de température qui donne des erreurs du niveau pellet,
c'est du bidouillage je l'avoue, j'apprends pour le moment, il aurait fallu connaitre les commandes string etc, mais pour le moment j'en suis incapable,
vous aurez besoin de 6 variables utilisateur type chaîne :

pellet
pelletII
pellet III
pelletIV
pelletV
pellet_erreur

il y'a des choses qui sont pas du tout obligatoire, mais ça fonctionne et pour le moment ça me va très bien.

Code : Tout sélectionner

--[[   
auteur : Steph D
modifié par : marsflow
version : 1.0
MAJ : 19/01/2018
création : 28/10/2017
Principe :
Calculer en % le niveau de pellet dans un poêle Skia


]]--

--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
local pellet = 'Lecture pellet'     -- nom du capteur de lecture niveau pellet 
local pelletid = 91                -- Idx du dummy pellet
val_pelletmini = 0                  -- Seuil mini de prise en compte valeur           
val_pelletmax = 45                  --Seuil maxi de prise en compte valeur   
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------

------------------- --------------------
-- Fonction arrondir à deux décimales --
------------------- --------------------
function arrondir(num, dec)
if num == 0 then
return 0
else
local mult = 10^(dec or 2)
return math.floor(num * mult + 0.5) / mult
end
end
----------------------------------------
commandArray = {}


now=os.date("*t")
if (devicechanged[pellet])then

--------------------------------------------
---------------- Fonctions -----------------
--------------------------------------------

val_pellet = tonumber(otherdevices_svalues[pellet])
val_pelletupdate = tonumber(otherdevices_svalues[pellet])
val_pellet = ((val_pelletmax-val_pellet)/val_pelletmax)*100
val_pelletA = arrondir (val_pellet,0)
val_delta = (uservariables['pelletII'] + uservariables['pelletIII'] + uservariables['pelletIV'] + uservariables['pelletV'])
val_delta_2 = (val_delta /4)/val_pelletA
val_var2 = (uservariables['pelletII']) + 1 - 1
val_var3 = (uservariables['pelletIII']) + 1 - 1
val_var4 = (uservariables['pelletIV']) + 1 - 1
val_var5 = (uservariables['pelletV']) + 1 - 1
val_var_erreur = (uservariables['pellet_erreur']) + 1 - 1
val_var_erreur_raz = 1

if (val_pelletupdate < val_pelletmax) then

print('Delta 2 : ' .. val_delta_2)
print('Delta  : ' .. val_delta)
print('val_deltaA  : ' .. val_pelletA)
print('variable 2 : ' ..uservariables['pelletII'])
print('variable 3 : ' ..uservariables['pelletIII'])
print('variable 4 : ' ..uservariables['pelletIV'])
print('variable 5 : ' ..uservariables['pelletV'])
print('compteur erreur : ' ..uservariables['pellet_erreur'])
end



if (val_pelletupdate < val_pelletmax) and (val_delta_2 < 1.0909090909090909090909090909091) and (val_delta_2 > 0.92307692307692307692307692307692) then
commandArray={['UpdateDevice']= pelletid .. "|0|" .. val_pelletA}
commandArray['Variable:pellet']= tostring(val_pelletA)
commandArray['Variable:pelletV']= tostring(val_var4)
commandArray['Variable:pelletIV']= tostring(val_var3)
commandArray['Variable:pelletIII']= tostring(val_var2)
commandArray['Variable:pelletII']= tostring(val_pelletA)
commandArray['Variable:pellet_erreur']= tostring(val_var_erreur_raz)
print('val_deltaA mise à jour : ' .. val_pelletA)

 
 elseif (val_delta_2 < 1.0909090909090909090909090909091) and (val_var_erreur < 3) then
 
 commandArray['Variable:pellet']= tostring(val_var2)
 commandArray['Variable:pellet_erreur']= tostring(uservariables["pellet_erreur"] +1)
 print('valeur trop haute : ' .. val_pelletA)
 print('compteur erreur : ' ..uservariables['pellet_erreur'])
 
 elseif (val_delta_2 > 0.92307692307692307692307692307692) and (val_var_erreur < 3) then
 
commandArray['Variable:pellet']= tostring(val_var2)
 commandArray['Variable:pellet_erreur']= tostring(uservariables["pellet_erreur"] +1)
print('valeur trop basse : ' .. val_pelletA)
print('compteur erreur : ' ..uservariables['pellet_erreur'])

 elseif (val_var_erreur >= 3) then

commandArray={['UpdateDevice']= pelletid .. "|0|" .. val_pelletA}
commandArray['Variable:pellet']= tostring(val_pelletA)
commandArray['Variable:pelletV']= tostring(val_pelletA)
commandArray['Variable:pelletIV']= tostring(val_pelletA)
commandArray['Variable:pelletIII']= tostring(val_pelletA)
commandArray['Variable:pelletII']= tostring(val_pelletA)
commandArray['Variable:pellet_erreur']= tostring(val_var_erreur_raz)
print('valeur remise à zéro: ' .. val_pelletA)
print('compteur erreur : ' ..uservariables['pellet_erreur'])

end

if (val_pellet<20) and (val_pellet>10) then
commandArray['SendNotification']='Poêle: niv. <20% !'
elseif (val_pellet<10) then
commandArray['SendNotification']='Poêle: niv. <10% !'
end

end
return commandArray
je donnerai un peu plus d'explication plus tard.
Répondre