Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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.

Posté(e)

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 ....

Posté(e)

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.

Posté(e)

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

Posté(e)

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.

Posté(e)

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 ???

Posté(e)

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:

Posté(e)

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
Posté(e)

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
Posté(e)

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?

Posté(e)

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. :(

Posté(e)

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
×
×
  • Créer...