Page 2 sur 3

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

Publié : 30 nov. 2017, 21:36
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.

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

Publié : 01 déc. 2017, 18:11
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

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

Publié : 02 déc. 2017, 01:41
par Gaz
Oui, mais j'avais des freeze de la variable.
Je devrais atteindre les 20% demain en soirée, je referais des tests.

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

Publié : 03 déc. 2017, 14:24
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) ?

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

Publié : 04 déc. 2017, 17:13
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...

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

Publié : 09 déc. 2017, 00:13
par marsflow
Bonsoir,
Je ne comprend pas pourquoi récupérer la température des fumées.

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

Publié : 09 déc. 2017, 10:45
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

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

Publié : 11 déc. 2017, 18:20
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é 10427 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

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

Publié : 12 janv. 2018, 15:22
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

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

Publié : 19 janv. 2018, 16:13
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.