[LUA] Températures min/max et envoi par mail
Re: Températures min/max et envoi par mail
Pour la troisième variable, ce ne serait pas l'état des piles ? Un truc du genre 0 = 0%, 1 = 50% et 2 = 100% suivant les constructeur 
Raspberry Pi B+ / RF-Link 433MHz / divers device maison 433MHz et Wifi
Re: Températures min/max et envoi par mail
Bonjour,
Script mis en prod, ça fonctionne nickel !
Merci AlexElectro
A+
Script mis en prod, ça fonctionne nickel !
Merci AlexElectro
A+
Domoticz sur RPI4 / Rflink / Rftrxcom / Sondes thermo sur 1Wire / Volets Somfy rts / Divers modules 433 mhz pas chers / Poele à pellets Ravelli domotisé / Volets Bubendorf / SonOff / Arrosage enterré sur SonOff 4 / Robot piscine domotisé
-
AlexElectro
- Messages : 55
- Inscription : 18 juil. 2015, 22:13
Re: Températures min/max et envoi par mail
merci 
Domoticz sur RPi - RfxCom - Sondes oregon DIY - Bus one wire - sondes DS18B20 - BMP085 - Home confort
http://electro.bassignyinformatique.fr/
http://electro.bassignyinformatique.fr/
-
Chris54220
- Messages : 124
- Inscription : 20 mars 2016, 20:54
- Localisation : Nancy
Re: Températures min/max et envoi par mail
Bonjour Merci pour ce scripts très intéressent
mais j'ai un petit soucis il m'envoi pas le mail a 7h00 du matin et je trouve pas pour
petit info :
ma sonde extérieur me donne les donnée que toute les 10 min je sais pas si cela peux jouer
mais j'ai un petit soucis il m'envoi pas le mail a 7h00 du matin et je trouve pas pour
petit info :
ma sonde extérieur me donne les donnée que toute les 10 min je sais pas si cela peux jouer
-
AlexElectro
- Messages : 55
- Inscription : 18 juil. 2015, 22:13
Re: Températures min/max et envoi par mail
Bonjour
Tu peux poster le bout de log correspondant.
Tu peux poster le bout de log correspondant.
Domoticz sur RPi - RfxCom - Sondes oregon DIY - Bus one wire - sondes DS18B20 - BMP085 - Home confort
http://electro.bassignyinformatique.fr/
http://electro.bassignyinformatique.fr/
-
Chris54220
- Messages : 124
- Inscription : 20 mars 2016, 20:54
- Localisation : Nancy
Re: Températures min/max et envoi par mail
voila le LOG de 7h00
2016-04-03 07:01:02.923 Hardware Monitor: Fetching data (System sensors)
2016-04-03 07:01:19.680 (433 Mhz) Temp (Congelateur)
2016-04-03 07:01:22.930 LUA: #### Debug script température ####
2016-04-03 07:01:22.931 LUA: sonde Exterieur = 9°C
2016-04-03 07:01:22.931 LUA: Temp_max_ext = 11°C
2016-04-03 07:01:22.931 LUA: Temp_min_ext = 8°C
2016-04-03 07:01:22.931 LUA: Nous sommes le 3, il est 7h1min
2016-04-03 07:01:22.931 LUA: #### Fin du debug ####
2016-04-03 07:01:22.920 (Meteo) Temp + Humidity + Baro (Exterieur)
2016-04-03 07:01:02.923 Hardware Monitor: Fetching data (System sensors)
2016-04-03 07:01:19.680 (433 Mhz) Temp (Congelateur)
2016-04-03 07:01:22.930 LUA: #### Debug script température ####
2016-04-03 07:01:22.931 LUA: sonde Exterieur = 9°C
2016-04-03 07:01:22.931 LUA: Temp_max_ext = 11°C
2016-04-03 07:01:22.931 LUA: Temp_min_ext = 8°C
2016-04-03 07:01:22.931 LUA: Nous sommes le 3, il est 7h1min
2016-04-03 07:01:22.931 LUA: #### Fin du debug ####
2016-04-03 07:01:22.920 (Meteo) Temp + Humidity + Baro (Exterieur)
-
AlexElectro
- Messages : 55
- Inscription : 18 juil. 2015, 22:13
Re: Températures min/max et envoi par mail
Ca c'est le log de 7h01, le script envoi le mail à 7h00. Comme c'est un script time il s'exécute toutes les minutes.
Change l'heure en mettant quelque chose de proche, genre s'il est 11h00 met 11h04 et poste le log de cette minute précise.
C'est cette partie là qui semble ne pas s'exécuter:
Sinon il n'y a pas de problème avec ta sonde, elle est bien reconnue.
Change l'heure en mettant quelque chose de proche, genre s'il est 11h00 met 11h04 et poste le log de cette minute précise.
C'est cette partie là qui semble ne pas s'exécuter:
Code : Tout sélectionner
if (hour==07 and min==00)
then
objet = 'Températures du '..day
message = 'Cette nuit, la température est descendue à '..uservariables["Temp_min_ext"]..'°C à ' ..uservariables["Temp_min_ext_hour"]..'h'..uservariables["Temp_min_ext_min"]..'. Hier la température maxi a été de '..uservariables["Temp_max_ext"]..'°C à '..uservariables["Temp_max_ext_hour"]..'h'..uservariables["Temp_max_ext_min"]..'.'
commandArray['SendEmail']= objet..'#'.. message .. '#' .. EmailTo
commandArray['Variable:Temp_max_ext']= tostring(0)
if (debug == 'oui') then
print('message envoyé')
print('Objet:'..objet)
print('Corps du message: '..message)
print('Destinataire: '..EmailTo)
end
endDomoticz sur RPi - RfxCom - Sondes oregon DIY - Bus one wire - sondes DS18B20 - BMP085 - Home confort
http://electro.bassignyinformatique.fr/
http://electro.bassignyinformatique.fr/
-
Chris54220
- Messages : 124
- Inscription : 20 mars 2016, 20:54
- Localisation : Nancy
Re: Températures min/max et envoi par mail
je viens de change l'heure pour le mettre a l'heure que le scripts s’exécute est cela fonctionne bien je te remercie
Re: Températures min/max et envoi par mail
Hello,
Merci pour ce code qui correspond à ce que je cherchais
Mon objectif sera un peu différent (car il commence à faire meilleur
)
J'aimerai regarder le minimum des températures dans la maison pour passer en mode été quand le minimum est de 20°C par exemple
Je passerai en mode hivers dès que le minimum passera à 18°C par exemple.
Bref, c'est pas le sujet !
En mettant en place le code dans mon domoticz, j'ai vu quelques optimisations possible.
1. plutôt que d'utiliser 4 variables pour le stockage de l'heure de température mini et maxi, j'utilise le uservariables_lastupdate[]
au passage, si le script était modifié pour se dérouler sur une periode de plusieurs jours, on aurait la date et l'heure du min/max.
2. si l'intervalle d’émission de la sonde est supérieur à la minute ou si il y a des perturbations, on peut louper l'envoi du mail.
Du coup, j'ai déplacé le code d'envoi du mail hors du devicechanged
Par contre, le pb, c'est qu'il m'envoie 10 mails !
J'ai pas encore regardé, mais il faudrait probablement utiliser une variable pour eviter ça
Voici mon code modifié, qui nécessite encore des améliorations !
Merci pour ce code qui correspond à ce que je cherchais
Mon objectif sera un peu différent (car il commence à faire meilleur
J'aimerai regarder le minimum des températures dans la maison pour passer en mode été quand le minimum est de 20°C par exemple
Je passerai en mode hivers dès que le minimum passera à 18°C par exemple.
Bref, c'est pas le sujet !
En mettant en place le code dans mon domoticz, j'ai vu quelques optimisations possible.
1. plutôt que d'utiliser 4 variables pour le stockage de l'heure de température mini et maxi, j'utilise le uservariables_lastupdate[]
au passage, si le script était modifié pour se dérouler sur une periode de plusieurs jours, on aurait la date et l'heure du min/max.
2. si l'intervalle d’émission de la sonde est supérieur à la minute ou si il y a des perturbations, on peut louper l'envoi du mail.
Du coup, j'ai déplacé le code d'envoi du mail hors du devicechanged
Par contre, le pb, c'est qu'il m'envoie 10 mails !
J'ai pas encore regardé, mais il faudrait probablement utiliser une variable pour eviter ça
Voici mon code modifié, qui nécessite encore des améliorations !
Code : Tout sélectionner
commandArray = {}
---------------------------------
------ Variables à adapter ------
---------------------------------
local EmailTo = 'email@gmail.com' -- adresse mail, séparées par ; si plusieurs
local sonde = 'Exterieur' -- nom de la sonde à surveiller
local typeSonde = 'humid' -- type de sonde: 'temp': uniquement température / 'humid' : temp+humidité
local debug = 'oui' -- oui ou non pour avoir des valeurs dans le log
---------------------------------
---------------------------------
hour = tonumber(os.date("%H"));
min = tonumber(os.date("%M"));
day = tonumber(os.date("%d"));
if (hour==7 and min==00)
then
objet = 'Températures du '..day
--message = 'Cette nuit, la température est descendue à '..uservariables["Temp_min_ext"]..'°C à ' ..uservariables["Temp_min_ext_hour"]..'h'..uservariables["Temp_min_ext_min"]..'. Hier la température maxi a été de '..uservariables["Temp_max_ext"]..'°C à '..uservariables["Temp_max_ext_hour"]..'h'..uservariables["Temp_max_ext_min"]..'.'
message = 'Cette nuit, la température est descendue à '..uservariables["Temp_min_ext"]..'°C à ' ..uservariables_lastupdate["Temp_min_ext"]..'. Hier la température maxi a été de '..uservariables["Temp_max_ext"]..'°C à '..uservariables_lastupdate["Temp_max_ext"]..'.'
commandArray['SendEmail']= objet..'#'.. message .. '#' .. EmailTo
commandArray['Variable:Temp_max_ext']= tostring(0)
if (debug == 'oui') then
print('message envoyé')
print('Objet:'..objet)
print('Corps du message: '..message)
print('Destinataire: '..EmailTo)
end
end
if (devicechanged[sonde]) then
if (typeSonde == 'temp') then
temp = tonumber(otherdevices_svalues[sonde])
elseif (typeSonde == 'humid') then
temp, sHumid = otherdevices_svalues[sonde]:match("([^;]+);([^;]+)")
temp = tonumber(temp)
end
temp_min = tonumber(uservariables["Temp_min_ext"])
temp_max = tonumber(uservariables["Temp_max_ext"])
if (debug == 'oui') then
print('#### Debug script température ####')
print('sonde '..sonde..' = '..temp..'°C')
print('Temp_max_ext = '..temp_max..'°C')
print('Temp_min_ext = '..temp_min..'°C')
print('Nous sommes le '..day..', il est '..hour..'h'..min..'min')
end
if (tonumber(uservariables["Temp_ext_day"]) ~= day)
then
commandArray['Variable:Temp_min_ext']= tostring(30)
commandArray['Variable:Temp_ext_day'] = tostring(day)
if (debug == 'oui') then
print('Variable "day" changée, maintenant :'..day)
print('Variable Temp_min_ext passée à 30')
end
end
if (temp < temp_min)
then
commandArray['Variable:Temp_min_ext']= tostring (temp)
--commandArray['Variable:Temp_min_ext_hour']= tostring (hour)
--commandArray['Variable:Temp_min_ext_min']= tostring (min)
print('Temp_min_ext mis à jour : '..temp..' °c à '..hour..'h'..min)
end
if (temp > temp_max)
then
commandArray['Variable:Temp_max_ext']= tostring (temp)
--commandArray['Variable:Temp_max_ext_hour']= tostring (hour)
--commandArray['Variable:Temp_max_ext_min']= tostring (min)
print('Temp_max_ext mis à jour : '..temp..' °c à '..hour..'h'..min)
end
if (debug == 'oui') then
print('#### Fin du debug ####')
end
end
return commandArray
-
AlexElectro
- Messages : 55
- Inscription : 18 juil. 2015, 22:13
Re: Températures min/max et envoi par mail
C'est compliqué d'utiliser un deviceChanged pour la condition car le programme considère qu'il y a changement trop souvent. En effet les sondes emèttent régulièrement une data. Domoticz actualise la valeur et même si elle n'a pas varié. Ca change la date et l'heure et donc deviceChanged considère qu'il y a eu changement.... Je ne sais pas si j'ai été clair...
Bref, c'est pour ça que je suis plutôt parti sur un scripTime
Si tu arrives à faire fonctionner le script avec moins de lignes de code, je suis preneur!
Bref, c'est pour ça que je suis plutôt parti sur un scripTime
Si tu arrives à faire fonctionner le script avec moins de lignes de code, je suis preneur!
Domoticz sur RPi - RfxCom - Sondes oregon DIY - Bus one wire - sondes DS18B20 - BMP085 - Home confort
http://electro.bassignyinformatique.fr/
http://electro.bassignyinformatique.fr/