Page 1 sur 1
fermeture volet deux heures avant le zenith
Publié : 24 mars 2019, 16:39
par grdsek
bonjour, je souhaite lancer la fermeture de mes volets deux heures avant le zenith. Je ne trouve pas malgré mes recherches comment faire. Je connais la formule timeofday['sunriseinminutes'], mais est-ce-que la formule ['zenithinminutes'] existe? (je ne pense pas mais bon)
sinon est ce que je peux mettre par ex:
Code : Tout sélectionner
-- Récupération de l'heure
timenow = os.date("*t")
local heure = os.date("%H:%M")
if (heure = ['zenith'] - 2) then
Re: fermeture volet deux heures avant le zenith
Publié : 25 mars 2019, 01:23
par lmet
Salut,
De ce que j'ai pu lire
ici le zénith serait : (sunrise + sunset)/2
Ce qui donnerait :
Code : Tout sélectionner
sunrise = timeofday['SunriseInMinutes']
sunset = timeofday['SunsetInMinutes']
zenith = (sunrise + sunset) /2 -120
print ("Soleil au zenith - 2 heures : " .. string.sub(os.date("!%X",60*zenith), 1, 5))
J'obtiens 10:57 pour aujourd'hui qui correspond au zénith moins 2 heures mais c'est à vérifier…
Re: fermeture volet deux heures avant le zenith
Publié : 26 mars 2019, 18:54
par grdsek
super, merci pour ta réponse, effectivement ca parait logique d'additionner le sunrise et sunset et diviser par deux.
est ce que tu pourrais m'expliquer ta dernière ligne:
string.sub(os.date("!%X",60*zenith), 1, 5)
. Je suis un novice et je ne comprends pas tout...
merci d'avance
Re: fermeture volet deux heures avant le zenith
Publié : 27 mars 2019, 01:19
par lmet
Salut,
Je ne suis pas sûr que cette formule soit utilisée par la NASA

Peut-être est-ce suffisant pour une approche.
grdsek a écrit : 26 mars 2019, 18:54
est ce que tu pourrais m'expliquer ta dernière ligne: string.sub(os.date("!%X",60*zenith), 1, 5). Je suis un novice et je ne comprends pas tout...
merci d'avance
Afin de tenter de répondre à ta question :
Code : Tout sélectionner
zenith = os.date("!X",60*zenith) --> renvoie une chaine sous la forme "HH:MM:SS"
Voir
ici et/ou
là
Code : Tout sélectionner
string.sub (zenith,1,5) --> coupe la chaine du premier au cinquième caractère soit "HH:MM"
Voir
ici
@+
Re: fermeture volet deux heures avant le zenith
Publié : 07 avr. 2019, 09:11
par grdsek
un grand merci pour tes explications (pas toujours facile à trouver en français

).
Pour l'instant je triche un peu et cela fonctionne:
Code : Tout sélectionner
zenith = (sunrise + sunset) /2 -120
minutesnow = time.min + time.hour * 60
if minutesnow == zenith then
commandArray[#commandArray+1] = {['volet_salon_3'] = 'On'}
commandArray[#commandArray+1] = {['volet_salon_2'] = 'On'}
commandArray[#commandArray+1] = {['volet_salle_à_manger'] = 'On'}
commandArray[#commandArray+1] = {['volet_salon_3'] = 'Stop'}
commandArray[#commandArray+1] = {['volet_salon_2'] = 'Stop'}
commandArray[#commandArray+1] = {['volet_salle_à_manger'] = 'Stop'}
commandArray[#commandArray+1] = {['volet_salon_3'] = 'Stop'}
commandArray[#commandArray+1] = {['volet_salon_2'] = 'Stop'}
commandArray[#commandArray+1] = {['volet_salle_à_manger'] = 'Stop'}
le déclenchement de mon script se fait bien à l'heure voulue (2 heures avant le zenith), mais par contre, je galère avec mes commandArray. En effet, je peux enregistrer une position en descente pour mes volets grâce aux boutons centralis uno. Par contre, le volet doit être ouvert complètement (d'ou le 1er 'on'), et je dois appuyer deux fois sur le bouton stop pour déclencher le mouvement des volets (d'ou les deux 'stop'). Mais en réalité, les volets commencent leur descente mais s'arrêtent quasiment instantanément. (et si j'enlève une commande stop, ils ne descendent pas)
je continue mes tests, mais si tu as une idée...
Re: fermeture volet deux heures avant le zenith
Publié : 13 avr. 2019, 12:32
par grdsek
salut,
j'ai modifié mon script en mettant:
Code : Tout sélectionner
if minutesnow == zenith then
commandArray[#commandArray+1] = {['volet_salon_3'] = 'Off'}
commandArray[#commandArray+1] = {['volet_salon_2'] = 'Off'}
commandArray[#commandArray+1] = {['volet_salle_à_manger'] = 'Off'}
commandArray[#commandArray+1] = {['volet_salon_3'] = 'Stop AFTER 30'}
commandArray[#commandArray+1] = {['volet_salon_2'] = 'Stop AFTER 30'}
commandArray[#commandArray+1] = {['volet_salle_à_manger'] = 'Stop AFTER 30'}
commandArray[#commandArray+1] = {['volet_salon_3'] = 'Stop AFTER 32'}
commandArray[#commandArray+1] = {['volet_salon_2'] = 'Stop AFTER 32'}
commandArray[#commandArray+1] = {['volet_salle_à_manger'] = 'Stop AFTER 32'}
end
et maintenant cela semble fonctionner. En laissant 2s entre les deux commandes 'stop', le volet se ferme bien sur la position préprogrammée sur le bouton centralisée uno. Si je ne mets qu'une seconde, ça foire, le volet se bloque au bout d'une seconde. Je pense que 2s permettent de laisser le temps à domoticz de mettre à jour ses positions d'interrupteurs.
En espérant que cela puisse servir à d'autre...
