Page 1 sur 1
Gestion volet en fonction de la prod photovoltaique
Publié : 19 janv. 2016, 22:28
par mulot35
Salut,
J'essai de recupérer quelques calorie par la gestion de l'ouverture des volets en cas de beau temps (production photovoltaique moyenne)
J'ai commencé mon script est je but sur la condition:
-Si les volets sont fermé et (que la puissance des panneaux solaires est supérieur a 750w pendant 600sec) alors.
Je joint mon script:
Code : Tout sélectionner
--------------------------------
------ Variables à éditer ------
--------------------------------
local capteur = 'Photovoltaique' --Température de consigne
local thermostat = 'Chauffage_maison' --Nom de l'interrupteur virtuel du thermostat
local volet = 'Velux_2eme' --Nom du volet a fermer
--------------------------------
-- Fin des variables à éditer --
--------------------------------
commandArray = {}
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
if (otherdevices[thermostat]=='On') then
index1,index2,index3,index4,puissance,retour = otherdevices_svalues[''.. capteur ..'']:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)")
puissance = tonumber(puissance)
print(' ' .. puissance .. ' ')
--if (otherdevices[''..volet..'']=='Off' and (puissance > 750 depuis 600sec)) then
--commandArray[volet]='On'
--end
--if (otherdevices[''..volet..'']=='On' and (puissance < 750 depuis 1800sec)) then
--commandArray[volet]='Off'
end
return commandArray
Sachant que le print(' ' .. puissance .. ' ') me donne bien la valeur de prodution en instantané.
Merci d'avance pour l'aide
Re: Demande aide gestion volet en fonction de la prod photovoltaique
Publié : 20 janv. 2016, 20:24
par vil1driver
Salut,
Alors pour commencer
Les .. C'est pour concaténer les chaînes de caractères.
Si tu veux juste utiliser une variable pas besoin de l'attacher à des espaces ' ' ou à rien ''

...
Donc ceci
Peut être remplacé par
C'est valable ailleurs dans ton code..
Pour savoir depuis combien de temps tu es au dessus ou en dessous d'un seuil, je passerais à On ou Off un switch virtuel suivant ce seuil
En gros quelque chose dans ce style
Code : Tout sélectionner
if (puissance > 750 and otherdevices['seuil']=='Off') then
commandArray['seuil']='On'
elseif (puissance < 750 and otherdevices['seuil']=='On') then
commandArray['seuil']='Off'
end
En suite tu peux regarder depuis combien de temps ton switch est dans tel ou tel état
Exemple
Code : Tout sélectionner
if(otherdevices['seuil']=='On' and timedifference(otherdevices_lastupdate['seuil']) > 600) then
print('seuil haut atteint depuis plus de 10min')
end
Re: Demande aide gestion volet en fonction de la prod photovoltaique
Publié : 20 janv. 2016, 20:31
par mulot35
Ca semble tellement évident en plus.
Merci Vil1driver
Re: Demande aide gestion volet en fonction de la prod photovoltaique
Publié : 20 janv. 2016, 22:34
par mulot35
Merci ca a l'air de marcher j'attend le soleil pour passer le titre en résolu.
script_time_chauffage_solaire.lua
Code : Tout sélectionner
--------------------------------
------ Variables à éditer ------
--------------------------------
local capteur = 'Photovoltaique' --Température de consigne
local thermostat = 'Chauffage_maison' --Nom de l'interrupteur virtuel du thermostat
local seuil = 'Seuil_ensoleillement' --Nom de l'interrupteur virtuel gérant l'ensoleillement
local volet = 'Velux_2eme' --Nom du volet a fermer
--------------------------------
-- Fin des variables à éditer --
--------------------------------
commandArray = {}
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
--Si le mode chauffage solaire est activer alors récupere la production instantanée du photovoltaique
if (otherdevices[thermostat]=='On') then
index1,index2,index3,index4,puissance,retour = otherdevices_svalues[capteur]:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)")
puissance = tonumber(puissance)
print(puissance)
-- Et si la production est superieur a 750W passe le seuil d'ensoleillement a On
if (puissance > 750 and otherdevices[seuil]=='Off') then
commandArray[seuil]='On'
print('Activation switch seuil solaire')
--parcontre si la production est inferieur a 750W passe le seuil d'ensoleillement a Off
elseif (puissance < 750 and otherdevices[seuil]=='On') then
commandArray[seuil]='Off'
print('Désactivation switch seuil solaire')
end
--Si les volets sont fermé et que le seuil d'ensoleillement est atteint depuis 10 min ouvre les volets
if (otherdevices[volet]=='Close' and otherdevices[seuil]=='On' and timedifference(otherdevices_lastupdate[seuil]) > 600) then
commandArray[volet]='On'
print('Ouverture Velux par chauffage solaire')
--parcontre si les volets sont ouverts et que le seuil d'ensoleillement n'est pas atteint depuis 10 min ferme les volets
elseif (otherdevices[volet]=='Open' and otherdevices[seuil]=='Off' and timedifference(otherdevices_lastupdate[seuil]) > 600) then
commandArray[volet]='Off'
print('Fermeture Velux par chauffage solaire')
end
end
return commandArray
Si ca interesse quelqu'un attention mes volets sont en type interrupteur : Blinds inverted et non On/Off.
Si vous etes en On/Off remplacer le Close par OFF et le Open par On.
Re: Demande aide gestion volet en fonction de la prod photovoltaique
Publié : 21 janv. 2016, 08:35
par toutazimuth
Merci mulot35 pour ce partage et cette idée.
Je vais essayer d'adapter ton idée, mais avec pour objectif de gérer mon store banne sur la terrasse.
Des que la production photovoltaïque instantanée est supérieure à***W, ouverture de mon store.
Pas bête ! mais comme je suis nul en script je reviendrais sans doute te solliciter.
Merci
Re: Demande aide gestion volet en fonction de la prod photovoltaique
Publié : 21 janv. 2016, 18:07
par mulot35
Il y a juste la zone valeurs a édité a modifier.
Re: Demande aide gestion volet en fonction de la prod photovoltaique
Publié : 07 févr. 2016, 10:22
par mulot35
Code : Tout sélectionner
--------------------------------
------ Variables à éditer ------
--------------------------------
local capteur = 'Photovoltaique' --Température de consigne
local thermostat = 'Chauffage_maison' --Nom de l'interrupteur virtuel du thermostat
local seuil = 'Seuil_ensoleillement' --Nom de l'interrupteur virtuel gérant l'ensoleillement
local volet = 'Velux_2eme' --Nom du volet a fermer
--------------------------------
-- Fin des variables à éditer --
--------------------------------
commandArray = {}
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
--Si le mode chauffage solaire est activer alors récupere la production instantanée du photovoltaique
if (otherdevices[thermostat]=='On') then
index1,index2,index3,index4,puissance,retour = otherdevices_svalues[capteur]:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)")
puissance = tonumber(puissance)
print(puissance)
-- Et si la production est superieur a 750W passe le seuil d'ensoleillement a On
if (puissance > 750 and otherdevices[seuil]=='Off') then
commandArray[seuil]='On'
print('Activation switch seuil solaire')
--parcontre si la production est inferieur a 750W passe le seuil d'ensoleillement a Off
elseif (puissance < 750 and otherdevices[seuil]=='On') then
commandArray[seuil]='Off'
print('Désactivation switch seuil solaire')
end
--Si les volets sont fermé et que le seuil d'ensoleillement est atteint depuis 10 min ouvre les volets
if (otherdevices[volet]=='Closed' and otherdevices[seuil]=='On' and timedifference(otherdevices_lastupdate[seuil]) > 600) then
commandArray[volet]='On'
print('Ouverture Velux par chauffage solaire')
--parcontre si les volets sont ouverts et que le seuil d'ensoleillement n'est pas atteint depuis 10 min ferme les volets
elseif (otherdevices[volet]=='Open' and otherdevices[seuil]=='Off' and timedifference(otherdevices_lastupdate[seuil]) > 600) then
commandArray[volet]='Off'
print('Fermeture Velux par chauffage solaire')
end
end
return commandArray
Passage de close en closed.
Fonctionne bien a la maison.
Re: Gestion volet en fonction de la prod photovoltaique
Publié : 12 mars 2016, 16:18
par toutazimuth
Bonjour merci pour ce partage.
Je crée un interrupteur virtuel de type de on/off que je nomme "seuil", ça c'est ok pour moi
Mais comme je pars de zéro, j'ai déjà une première question :
- dans "action on" de cette interrupteur virtuel : je mets quoi pour qu'il comprenne de passer en "on" si la puissance photovoltaïque est ok pendant 600 secondes ?
ben oui je débute, je vous dis
