Aller au contenu
franckg16

Heure De Levé Et Couché Du Soleil

Recommended Posts

Ma HC2 me donnent des valeurs qui ne correspondent pas à  ma position géographique (France / région parisienne) pour les valeurs de levé et couché de soleil.

Les lignes :
fibaro:debug(fibaro:getValue(1, "sunriseHour"));
fibaro:debug(fibaro:getValue(1, "sunsetHour"));
donnent ces résultats :
[DEBUG] 10:15:45: 05:27
[DEBUG] 10:15:45: 20:31
 
au lieu de (à  ce jour) :
06:36 

21:15

 

Mes paramètres sont correctes dans Configuration / Situation géographique : Fuseau Horaire, latitude et longitude.

 

Merci de votre aide

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans fuseau horaire, tu as quoi ?

Moi j'ai: Europe/Paris

Partager ce message


Lien à poster
Partager sur d’autres sites

a ta place, j'ouvrirais un ticket auprès de fibaro.

Partager ce message


Lien à poster
Partager sur d’autres sites

je viens de m'apercevoir hier soir que moi aussi, mes variables sunset et sunrise ne se mettent plus àjour.

j'ai aujourd'hui sunset à21:47 et sunrise à06:044.

même après redémarrage de le box, cela ne se met pas a jour.

je me demande si cela ne vient pas de la derniere mise a jour.

Partager ce message


Lien à poster
Partager sur d’autres sites

un certain temps après le reboot de la box, les paramètres se sont mis àjour.

il va falloir que je suive l'évolution de ces paramètres de près, afin de savoir ce qui les a bloqué.

affaire àsuivre ....

Partager ce message


Lien à poster
Partager sur d’autres sites

http://<adresse ip de ta hc2>/api/devices/1

 

et si tu regarde tu va trouver "sunriseHour":"06:05","sunsetHour":"21:19"

Partager ce message


Lien à poster
Partager sur d’autres sites

De mémoire cette valeur est remise àjour toutes les 30mn, je propose donc d'attendre 30mn après avoir redémarrer mais j'y crois pas du tout.

Partager ce message


Lien à poster
Partager sur d’autres sites

pour moi, le redémarrage de la box fait que cela fonctionne de nouveau.

je viens de regarder ce matin et les valeurs ont bien été mises àjour : 21:03 et 06:43

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour ma part, je n'avais pas renseigné la latitude et longitude dans Configuratiion --> Situation Géographique.

Seulement après avoir correctement mis à  jour ces paramètres, les heures de levé et couché du soleil étaient toujours incorrectes, d'où l'ouverture de ce post.

J'ai écrit au support Fibaro qui m'a expliqué qu'il faut simplement attendre plusieurs heures afin que la HC2 se synchronise. Effectivement le lendemain (et aussi après un redémarrage il me semble), les heures étaient correctes.

Partager ce message


Lien à poster
Partager sur d’autres sites

J'avais une vingtaine de mn de décalage et après reboot c'est juste.

Il faut déjà  une scène pour faire un reset de l'horloge qui a une certaine dérive, il va falloir faire de même pour le couché du soleil !!! :( 

 

C'est pas beau Fibaro ???

Partager ce message


Lien à poster
Partager sur d’autres sites

<no comment>

 

 

Edit : code modifié pour prendre en compte le décalage horaire précisé par Barelle ICI

post-339-0-42784100-1471350207_thumb.png

Sun(rise-set).vfib

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Maitre,

 

suis au boulot, peux pas importer..tu peux mettre le code stp ? pour l'apprentissage du noob en code ;-)

oui je sais..suis un boulet :2: :2:

Partager ce message


Lien à poster
Partager sur d’autres sites

Cela ne va pas mettre à  jour les données de fibaro mais juste mettre les heures ... les vrais de vrais dans un VD.
 
Ci dessous le code du main loop.

if (not SunTools) then
	
  SunTools = {
  
		decalage = 2,
    	daylightsavings = true,
    	lat = 0,
    	long = 0,

		getLatLong = function(Self) 
      		if (Self.lat == 0 or Self.long == 0) then
    			HC2 = Net.FHttp("127.0.0.1", 11111)
        		response = HC2:GET("/api/settings/location")
				response = json.decode(response)      
        		Self.lat = response.latitude
        		Self.long = response.longitude
        		fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblLatLong.value", Self.lat .. "/" .. Self.long)
        	end
		end,
    
    	getData = function(Self)
      		    HC2 = Net.FHttp("api.sunrise-sunset.org")
      			response = HC2:GET("/json?lat="..Self.lat.."&lng=".. Self.long)
				response = json.decode(response)      
      			local rise = Self:toHour(response.results.sunrise)
      			local set = Self:toHour(response.results.sunset)
      			local duree = response.results.day_length
    			fibaro:debug(response.results.sunrise .. " -> " .. rise)
    			fibaro:debug(response.results.sunset .. " -> " .. set)
      			fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblSunrise.value", rise)
      			fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblSunset.value", set)
      			fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblLength.value", duree)
      	end,
    
    	toHour = function(Self, s)
      			local pattern = "(%d+)%d+)%d+) (%a+)"
      			local h,m,s,am = s:match(pattern)
      			local decalage = Self.decalage
      			if (Self.daylightsavings and not os.date("*t", os.time()).isdst) then
        			decalage = decalage - 1
        		end
      			h = h + decalage
      			if (am == "PM") then 
        			h = h + 12 
      			end
      			if (h > 23) then h = 0 end
      			return h .. ":" .. m .. ":" .. s
      	end,
  }
end

if (not instance) then
    instance = { lastrun = 0, every = 1 }
  	fibaro:debug("first run")
end

SunTools:getLatLong()

diff = os.date("*t", os.difftime(os.time(), instance.lastrun))
if (diff.hour > instance.every) then
	SunTools:getData()  
  	instance.lastrun = os.time()
end




.

.

Edit : code modifié pour prendre en compte le décalage horaire précisé par Barelle ICI

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

top !! 

 

Ca m'inquiète maitre, je commence a comprendre des lignes..c'est vraiment pas bon,ca doit etre le soleil ;-)

mais tout ca ne me vient pas encore à  l'idee lol

les patterns faut vraiment que j'y mette ;-)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est pas le soleil mais le pastis

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Je ne suis pourtant pas en mode pétanque ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir,

C'est bien ça mes latitudes et longitudes n'étaient pas bonnes!!

J'ai mis àjour puis attendu.

Et ça marche!!

Super

Merci àtous.

PS: par contre le tableau (de Steven)j'y piges rien!! Comment ça marche?

Partager ce message


Lien à poster
Partager sur d’autres sites

Steven, l'homme qui sort les VDs plus vite que son ombre !!! :60:

 

Bravo, mais c'est quand même triste de devoir compenser les défaillances de Fibaro. :(

Partager ce message


Lien à poster
Partager sur d’autres sites

Bravo Steven, cela marche au poil...

 

Pour éviter de devoir mettre à  jour la variable decalage à  chaque changement d'heure, je te propose d'insérer dans la fonction "toHour" le code suivant après la déclaration "local h,m,s,am = s:match(pattern)"

if (maintenant.isdst) then
    Self.decalage = 2; -- Heure d'été
else
    Self.decalage = 1; -- Heure d'hiver
end

étant entendu que cela est valable pour la France métropolitaine, puisque cela ne prend pas en compte le fuseau horaire.

 

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

×