[LUA] Controler un store automatiquement
Publié : 06 juin 2015, 10:20
Bonjour,
EDITER LE 01/07/2015
- ajout d'une condition d'heure mini d 'ouverture (j'ai mon store qui c'est ouvert cette nuit a 00:01 car il faisait plus chaud dehors que dedans)
EDITER LE 26/06/2015
-Correction de synthaxe pour la gestion des plages horaires
EDITER LE 18/06/2015
- Ajout de la la conditions d'heure pour une ouverture (non pas en appellant Time mais Hours = time efface les 0 si il est 09:02 il affichera 92)
EDITER LE 09/06/2015
- Rajout de la couverture nuageuse prevu aujourd hui
- Rajout d'une condition de l'etat du store pour l'ouverture ou la fermeture
- Rajout de plein de print pour faire le debugage
Voici mon premier script, realiser avec l'aide Patrice et de Vil1driver qui a pour but de controler l'ouverture et la fermeture d'un store en fonction de :
La temperature interieur par rapport a la temperature exterieur
Du Vent
Du risque de Pluie
De la tendance journaliere prevu par Forcastio
De l'heure
de la position actuel du store (ouvert ou ferme)
a mettre en place de la presence du quelqu'un dans la maison = abandon de cette contrainte car le but est de garder la fraicheur meme si il n y a personne a l'instant T
crée un faux capteur de temperature qui fait un differentiel entre la temperature exterieur et interieur, il a été cree en suivant ce topic : viewtopic.php?f=17&t=97 il ne faut cree que le capteur de temperature, dans mon script il s'appelle Deltat
J'utilise les valeurs de vent que me donne mon anémometre Oregon WGR800, dans mon script il s'appelle anemometre, une valeur en temps reel est tres importante dans mon cas, car le store ne supporte pas une vitesse de vent de plus de 27km/h ou 7.5m/s, Domoticz traduit les données de l'anémometre ainsi 27km/h = 7.5m/s = 75.
Cree un device de prevision meteo en suivant ce topic : http://easydomoticz.com/tag/forecast-io/ dans mon cas le script est appeller une fois par jour a 6h du matin et demande les infos pour midi (soit 6h plus tard = offset = 6),
il me permet de connaitre : La tendance (ensoleillé, nuageux, etc etc).
j'ai egalement cree un device pour la prevision de pluie dans 1h, ce script est appeler toutes les heures toujours avec forcast io
J'ai ajouter la notion d'heure car dans mon cas, a 19h00 le store n'a plus de raison d'etre ouvert, le soleil étant de l'autre coté de la maison, a 19h00 le store ce referme seul
sur mon store j'ai placer un detecteur d'ouverture chacon qui me permet de savoir si le store est deja ouvert ou non, si oui pas besoin de l ouvrir, si non : on l ouvre
pour les neophyte tout ce qui est ['mot ou nom'] c'est le capteur, l'orthographe doit etre la meme que celle qui apparait dans domoticz
chez moi il s'appelle script_time_store.lua, ainsi il est executé toute les minutes, il est placer dans home\pi\domoticz\scripts\lua
comme c'est le premier, un peu d'indugence SVP
EDITER LE 01/07/2015
- ajout d'une condition d'heure mini d 'ouverture (j'ai mon store qui c'est ouvert cette nuit a 00:01 car il faisait plus chaud dehors que dedans)
EDITER LE 26/06/2015
-Correction de synthaxe pour la gestion des plages horaires
EDITER LE 18/06/2015
- Ajout de la la conditions d'heure pour une ouverture (non pas en appellant Time mais Hours = time efface les 0 si il est 09:02 il affichera 92)
EDITER LE 09/06/2015
- Rajout de la couverture nuageuse prevu aujourd hui
- Rajout d'une condition de l'etat du store pour l'ouverture ou la fermeture
- Rajout de plein de print pour faire le debugage
Voici mon premier script, realiser avec l'aide Patrice et de Vil1driver qui a pour but de controler l'ouverture et la fermeture d'un store en fonction de :
La temperature interieur par rapport a la temperature exterieur
Du Vent
Du risque de Pluie
De la tendance journaliere prevu par Forcastio
De l'heure
de la position actuel du store (ouvert ou ferme)
a mettre en place de la presence du quelqu'un dans la maison = abandon de cette contrainte car le but est de garder la fraicheur meme si il n y a personne a l'instant T
crée un faux capteur de temperature qui fait un differentiel entre la temperature exterieur et interieur, il a été cree en suivant ce topic : viewtopic.php?f=17&t=97 il ne faut cree que le capteur de temperature, dans mon script il s'appelle Deltat
J'utilise les valeurs de vent que me donne mon anémometre Oregon WGR800, dans mon script il s'appelle anemometre, une valeur en temps reel est tres importante dans mon cas, car le store ne supporte pas une vitesse de vent de plus de 27km/h ou 7.5m/s, Domoticz traduit les données de l'anémometre ainsi 27km/h = 7.5m/s = 75.
Cree un device de prevision meteo en suivant ce topic : http://easydomoticz.com/tag/forecast-io/ dans mon cas le script est appeller une fois par jour a 6h du matin et demande les infos pour midi (soit 6h plus tard = offset = 6),
il me permet de connaitre : La tendance (ensoleillé, nuageux, etc etc).
j'ai egalement cree un device pour la prevision de pluie dans 1h, ce script est appeler toutes les heures toujours avec forcast io
J'ai ajouter la notion d'heure car dans mon cas, a 19h00 le store n'a plus de raison d'etre ouvert, le soleil étant de l'autre coté de la maison, a 19h00 le store ce referme seul
sur mon store j'ai placer un detecteur d'ouverture chacon qui me permet de savoir si le store est deja ouvert ou non, si oui pas besoin de l ouvrir, si non : on l ouvre
pour les neophyte tout ce qui est ['mot ou nom'] c'est le capteur, l'orthographe doit etre la meme que celle qui apparait dans domoticz
chez moi il s'appelle script_time_store.lua, ainsi il est executé toute les minutes, il est placer dans home\pi\domoticz\scripts\lua
comme c'est le premier, un peu d'indugence SVP
Code : Tout sélectionner
commandArray = {}
print("----------------------------------------")
------les etats des devices-----
--recupere l'heure
time=os.time()
minutes=tonumber(os.date('%M',time))
hours=tonumber(os.date('%H',time))
print("il est " .. hours .. minutes)
--donnée de l'anemometre
Wb, Wd, Ws, Wg = otherdevices_svalues['Anemometre']:match("([^;]+);([^;]+);([^;]+);([^;]+)")
Wb = tonumber(Wb)
Ws = tonumber(Ws)
Wg = tonumber(Wg)
print("Vitesse du Vent " .. Ws)
print("Vitesse Rafale " .. Wg)
--etat du store
etat = otherdevices_svalues['PIR Store']:match("([^;]+)")
etat = tonumber (etat)
if etat > 1 then
print ("Store ouvert")
elseif etat < 1 then
print ("Store fermé")
end
--delta temperature
Deltat = otherdevices_svalues['Delta_T']:match("([^;]+)")
Deltat = tonumber(Deltat)
if Deltat > 0 then
print("Il fait plus chaud dehors que dedans de + " .. Deltat)
elseif Deltat < 0 then
print("Il fait plus froid dehors que dedans de " .. Deltat)
end
--tendance nuageuse
print("---")
print("aujourd hui")
Temp, Hum, type, baro, tendance = otherdevices_svalues['Aujourd hui']:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)")
Temp = tonumber(Temp)
Hum = tonumber(Hum)
type = tonumber(type)
baro = tonumber(baro)
tendance = tonumber(tendance)
print("temperature " .. Temp)
print("Humidité " .. Hum)
print("baro " .. baro)
if type == 1 then
print("temps sec")
elseif type == 2 then
print("temps confortable")
elseif type == 3 then
print("temps humide")
end
if tendance == 1 then
print("ensoleilé")
elseif tendance == 2 then
print("Partiellement nuageux")
elseif tendance == 3 then
print("Nuageux")
elseif tendance == 4 then
print("Pluvieux")
end
print("---")
--pluie
pluie = otherdevices_svalues['Pluie dans 1 Heure']:match("([^;]+)")
pluie = tonumber (pluie)
print("% de chance de pluie dans 1H : " .. pluie)
------la regle-----
--pour la fermeture----
--si l'une des conditions n'est pas rempli, la regle continue
--d'abord le vent
if (Ws >= 75 or Wg >= 75 and etat > 1) then
commandArray['Store Terrasse']='Off'
print("Trop de vent pour ouvrir le store")
--ensuite la pluie
elseif (pluie >= 75 and etat > 1) then
commandArray['Store Terrasse']='Off'
print("il va pleuvoir, On ferme")
--puis l'heure de fermeture
elseif (hours == 19 and minutes == 0 and etat > 1) then
commandArray['Store Terrasse']='Off'
print("ALLEZ HOP IL EST TARD ON FERME, TOUT LE MONDE DEDANS !!")
--pour l'ouverture--
--si aucune des conditions qui doivent fermer le store n'est rempli, on peut l'ouvrir si il fait beau si il fait plus chaud dehors que dedans et si le store est fermé.
--la temperature + la tendance
elseif (hours <= 18 and hours >= 6 and minutes <= 59 and Deltat > 0 and etat <= 1 and pluie <= 75) then
print("Il fait beau et chaud, Ouvrons le store")
commandArray['Store Terrasse']='On'
end
print("----------------------------------------")
return commandArray