Gestion volet en fonction de la prod photovoltaique

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
mulot35
Messages : 200
Inscription : 20 déc. 2014, 00:27

Gestion volet en fonction de la prod photovoltaique

Message 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
Dernière modification par mulot35 le 07 févr. 2016, 10:23, modifié 1 fois.
Raspi B+ avec Domoticz ,6 Chacon 2300W , 6 Sondes Oregon, 1 Sonde DIY Oregon ds18b20, Téléinfo sur photovoltaique, script backup ftp & anti offline.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Demande aide gestion volet en fonction de la prod photovoltaique

Message 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

Code : Tout sélectionner

print(' ' .. puissance .. ' ')
Peut être remplacé par

Code : Tout sélectionner

print(puissance)
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 
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
mulot35
Messages : 200
Inscription : 20 déc. 2014, 00:27

Re: Demande aide gestion volet en fonction de la prod photovoltaique

Message par mulot35 »

Ca semble tellement évident en plus.

Merci Vil1driver
Raspi B+ avec Domoticz ,6 Chacon 2300W , 6 Sondes Oregon, 1 Sonde DIY Oregon ds18b20, Téléinfo sur photovoltaique, script backup ftp & anti offline.
mulot35
Messages : 200
Inscription : 20 déc. 2014, 00:27

Re: Demande aide gestion volet en fonction de la prod photovoltaique

Message 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.
Raspi B+ avec Domoticz ,6 Chacon 2300W , 6 Sondes Oregon, 1 Sonde DIY Oregon ds18b20, Téléinfo sur photovoltaique, script backup ftp & anti offline.
toutazimuth
Messages : 225
Inscription : 19 juil. 2015, 22:33

Re: Demande aide gestion volet en fonction de la prod photovoltaique

Message 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
SynoDS213J - RFXcom E - Cam IP HikVision Dahua- Thermostat+Météo NetAtmo - OWL180 - KLFO50 IO SOMFY - Zwave - Philips HUE - Passerelle MDAH - Imperihome par epierre - Controlicz by Madgeni - 2*Pi3 test - Connexoon by nonolk - aspi xiaomi :mrgreen:
mulot35
Messages : 200
Inscription : 20 déc. 2014, 00:27

Re: Demande aide gestion volet en fonction de la prod photovoltaique

Message par mulot35 »

Il y a juste la zone valeurs a édité a modifier.
Raspi B+ avec Domoticz ,6 Chacon 2300W , 6 Sondes Oregon, 1 Sonde DIY Oregon ds18b20, Téléinfo sur photovoltaique, script backup ftp & anti offline.
mulot35
Messages : 200
Inscription : 20 déc. 2014, 00:27

Re: Demande aide gestion volet en fonction de la prod photovoltaique

Message 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.
Raspi B+ avec Domoticz ,6 Chacon 2300W , 6 Sondes Oregon, 1 Sonde DIY Oregon ds18b20, Téléinfo sur photovoltaique, script backup ftp & anti offline.
toutazimuth
Messages : 225
Inscription : 19 juil. 2015, 22:33

Re: Gestion volet en fonction de la prod photovoltaique

Message 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 :mrgreen:
SynoDS213J - RFXcom E - Cam IP HikVision Dahua- Thermostat+Météo NetAtmo - OWL180 - KLFO50 IO SOMFY - Zwave - Philips HUE - Passerelle MDAH - Imperihome par epierre - Controlicz by Madgeni - 2*Pi3 test - Connexoon by nonolk - aspi xiaomi :mrgreen:
Répondre