V5 - Module Météo - TimeZone

Bonjour,

Je commence à programmer des scénarios sur ma V5 en lien avec les heures de coucher et lever du soleil.

En convertissant les timestamp, je me rends compte que j’ai un décalage de 2h avec les heures réelles de lever/coucher du soleil.

Sur le site openweathermap, pour mes coordonnées, les heures affichées sont bonnes.
Les réglages de l’IPX sont bons (GMT+1, heure été/hiver automatique).

Ca ressemble très fortement à une histoire de timezone.
Quelqu’un a une idée ?

Merci.

Bonjour Mistoukwak,

est-ce que les heures affichées dans le widget météo sont justes?

Si oui c’est une erreur de conversion des TimeStamp
Si non c’est une erreur de saisie des coordonnées GPS.

Bonne journée

Bonjour @Grocrabe,

Merci pour ton retour.
image

Alors que :
image

Me donne : Résultat en date : 17/08/2024 08:43:23

Comme si le module météo ne prenait pas en compte la timezone.

Merci

quelles versions de FW et logiciel?

Uptodate ! :sweat_smile:

Re,

Je viens de me rendre compte que c’est la même chose sur ma V5 Atelier qui est toujours en 5.5.1

Bonjour,

J’ai passé un peu de temps pour comprendre.

Le module météo renvoie un Timestamp décalé de 2h.
J’ai essayé avec une autre localisation en GMT+7, c’est aussi décalé de 2h. Donc c’est pas une histoire de TimeZone.

En revanche, les widgets météo, afficheur de temps, IPX Clock sont tous bons et coordonnés.
L’IO Day/Night est bien reliée à la corélation de l’IPX Clock avec la variable affichée dans le widget sunrise/sunset.

En conclusion, le fonctionnement et les affichages sont bons au sein de l’IPX.
Mais il faut faire attention si on échange avec l’extérieur (script, node-red, etc…) ou si on fait des fonctions dessus car les valeurs brutes des timestamp en sortie du module sont NOK.

Peut être un point à faire remonter aux équipes techniques?

Je clos le sujet.
A+

Bonjour,
je pense que c’est l’heure d’été qui n’est pas appliquée au Timestamps de l’objet météo (sunrise, sunset) et que ces derniers sont corrigés dans le widget. Si c’est bien cela, c’est récupérable par une fonction et un calendrier en attendant une évolution éventuelle.
@Jeremy_GCE @Kevin_GCE
bonne journée

Bonjour,

Les timestamps des valeurs remontées par le module météo sont exprimées au GMT, or, en France, nous sommes en GMT+2 l’été et GMT +1 l’hiver. L’application de cet ajustement est effectivement appliqué par les widgets. En cas de l’utilisation de ces timestamps par une autre application, il faut effectivement penser à faire l’justement également.

bonjour Kévin,
ce qui pose problème c’est la mobilité des dates. une évolution est-elle envisageable ?
bonne journée

Je ne comprends pas, c’est à dire ?

je me réponds :blush:

Avec un objet calendrier « tous les jours à 02:30 », il est possible de programmer un push GET sur la V5 et traiter la réponse JSON dans un parser grâce à l’API http://worldtimeapi.org/api/timezone/Europe/Paris

La requête se lance après 02h00 car elle récupère les données réajustées du jour (le changement d’heure se fait à 02:00).

sa réponse JSON :

{
    "utc_offset": "+02:00",
    "timezone": "Europe/Paris",
    "day_of_week": 1,
    "day_of_year": 246,
    "datetime": "2024-09-02T11:34:04.082337+02:00",
    "utc_datetime": "2024-09-02T09:34:04.082337+00:00",
    "unixtime": 1725269644,
    "raw_offset": 3600,
    "week_number": 36,
    "dst": true,
    "abbreviation": "CEST",
    "dst_offset": 3600,
    "dst_from": "2024-03-31T01:00:00+00:00",
    "dst_until": "2024-10-27T01:00:00+00:00"
}

Le json contient « dst » true. Ce flag booléen signifie que nous sommes en heure d’été.
Il suffit alors de récupérer sa valeur dans une variable type IO.

Création du Parser Json :

Un objet preset fixera la valeur d’une variable analogique à 1 heure ou 2 heures (exprimées en secondes) selon l’état de l’IO puis une « Fonction » traitera alors l’information sur le timestamp du module Météo.

Voici le diagramme complet :

EDIT : www.timeapi.io est une autre API donnant le même niveau d’information.

  • passage à l’heure d’été : dernier dimanche de mars,
  • passage à l’heure d’hiver : dernier dimanche d’octobre.

Les dates sont mobiles, il est impossible de les calculer avec une IPX (il manque la fonction modulo).

Il nous faudrait donc au minimum une IO qui annonce le passage à l’heure d’été (on:été, off:hiver)

Mais la météo étant elle même une API tiers, pas trop de souci pour une solution basée sur le cloud en attendant l’éventuelle évolution.

Une autre solution :Timezonedb.com
Cette autre API fournit toutes les informations, y compris les dates de début (zoneStart) et de fin (zoneEnd) de l’heure d’été pour une zone donnée, sous forme de timestamps.
Il faut s’enregistrer pour obtenir une clé.

Configuration du push :
Méthode GET
Adresse : api.timezonedb.com
Port : 80
Auth mode : none
TLS : désactivé
Requête ON : /v2.1/get-time-zone?key=${apiKey}&format=json&by=zone&zone=Europe/Paris

Remplacez la chaine ${apiKey} par votre ApiKey obtenue sur Timezonedb.

Réponse de la requête :

{
{
    "status": "OK",
    "message": "",
    "countryCode": "FR",
    "countryName": "France",
    "zoneName": "Europe/Paris",
    "abbreviation": "CEST",
    "gmtOffset": 7200,
    "dst": 1,
    "zoneStart": 1680303600,
    "zoneEnd": 1698548400,
    "nextAbbreviation": "CET",
    "timestamp": 1693640400,
    "formatted": "2024-09-02 11:00:00"
}

Pour la programmation, il faut alors comparer les timestamps fournis dans la réponse avec l’horloge de l’ipx.
Il faut par conséquent récupérer les paramètres zoneStart et zoneEnd dans des analogiques 32 bits grâce à un objet Parser.

L’avantage de cette API, c’est qu’il suffit d’exécuter la requête une seule fois par an, ce qui réduit considérablement les risques liés à l’indisponibilité du cloud, contrairement à l’API précédente qui doit être exécutée quotidiennement après 02:00 du matin.

Bonjour,

Je crois que j’ai reussi à créer le push (sans plus de conviction que ca mais on verra demain )

est-ce que j’ai quelque chose à faire pour que le déclenchement de mes volets (basé sur le plug-in météo dans scenario ) se fasse maintenant aux heures planifiés initialement ou dois-je aussi faire:

Pour la programmation, il faut alors comparer les timestamps fournis dans la réponse avec l’horloge de l’ipx.
Il faut par conséquent récupérer les paramètres zoneStart et zoneEnd dans des analogiques 32 bits grâce à un objet Parser.

L’avantage de cette API, c’est qu’il suffit d’exécuter la requête une seule fois par an, ce qui réduit considérablement les risques liés à l’indisponibilité du cloud, contrairement à l’API précédente qui doit être exécutée quotidiennement après 02:00 du matin.

si je dois faire ce que vous décrivez, est ce qu’il serait possible de détailler les étapes avec des captures parce que la je suis largé

(au départ je faisais juste une maj moi je voulais embeter personne :slight_smile: )

Bon bah ça ne fonctionne pas…
Est ce que je peux trouver un tuto quelque part ?
Ou votre concours peut être ??
A vot bon :heart:
Bonne soirée ! Merci

Je crois que j’ai compris:
Avant le Bug (qui va bientôt fêter son anniversaire d’ailleurs…)
pour faire un déclenchement il fallait:

utiliser le plug-in météo pour lui demander si c’était le jour ou la nuit il répondait et on pouvait déclencher l’action.

Avec le contournement:
1-"push"J’appelle un service (fonction push) pour lui demander si c’est l’été ou l’hiver.
2-« parse »+"variable+"preset"Si c’est l’été alors j’ajoute 2heures, si c’est l’hiver alors j’ajoute 1h à l’heure qui est renvoyée par le plug-in météo
3-J’ai un « preset » qui fait cette addition et qui me donne l’heure corrigée du lever.
4-J’ai un autre « preset » qui me donne l’heure corrigée du coucher.
5-Un fois que j’ai ca je dois modifier mes scénarios existant et maintenant demander est-ce que l’heure de l’IPX est égale à l’heure de coucher/lever corrigé pour obtenir la bonne commande

Maintenant pour chaque étape:

1-J’appelle un service (fonction push) pour lui demander si c’est l’été ou l’hiver.

Citation
ne autre solution :Timezonedb.com
Cette autre API fournit toutes les informations, y compris les dates de début (zoneStart) et de fin (zoneEnd) de l’heure d’été pour une zone donnée, sous forme de timestamps.
Il faut s’enregistrer pour obtenir une clé.

Configuration du push :
Méthode GET
Adresse : api.timezonedb.com
Port : 80
Auth mode : none
TLS : désactivé
Requête ON : /v2.1/get-time-zone?key=${apiKey}&format=json&by=zone&zone=Europe/Paris

Remplacez la chaine ${apiKey} par votre ApiKey obtenue sur Timezonedb.

2-Si c’est l’été alors j’ajoute 2heures, si c’est l’hiver alors j’ajoute 1h à l’heure qui est renvoyée par le plug-in météo.

Création du Parse Json :

Un objet preset fixera la valeur d’une variable analogique à 1 heure ou 2 heures (exprimées en secondes) selon l’état de l’IO puis une « Fonction » traitera alors l’information sur le timestamp du module Météo.

(Etant donné que le lien entre le parse et le preset n’était pas clair j’ai utilisé l’éditeur de lien)

3-J’ai une fonction qui fait cette addition et qui me sort l’heure corrigée du lever.

pour ce faire je dois récupérer l’ID de la valeur sunrise de mon plug-in météo:


dans mon cas, pour appeler la valeur du lever de soleil du plug-in météo, j’utilise
$327688$
et pour appeler le temps à ajouter, je vais récupérer la valeur de mon preset:

dans mon cas:
$262153$

pour ca: j’additionne l’heure donnée par le plug-in météo à ce que me donne le preset


comme chacun à des variables différentes moi je met:

$327688$ + $262153$

4-J’ai un autre preset qui me donne l’heure corrigée du coucher.

pareil, je récupère l’heure du module météo:

$327689$

ce qui doit vous donner quelque chose comme:
$327689$ + $262153$

5-Maintenant je dois modifier mes scénarios existant et demander est-ce que l’heure de l’IPX est égale à l’heure de coucher/lever corrigé pour juste savoir si c’est la nuit pour pas

devient:

on dit la même chose?.(désolé ca va pas tres vite chez moi )

Bonjour Clément,
oui, c’est exactement cela.
image

Par sécurité, au lieu de l’opérateur ==, j’utiliserais >=
Bonne journée

Happy bugsday to youuuuuu :musical_notes: :tada: :rofl:

bon bah ca ne fontionne pas : je pense qu’il y a un problème avec les fonctions parce que quand je demande l’affichage des fonctions sur le dashboard, il me retroune 0 alors que je devris avoir la veulr en seconde calculée n’est ce pas?pour le résultat des fonction lever et couché


on est bien d’accord que le nom de la variable du plugin météo se nomme bien:

Coucher

et que la synthaxe c’est bien:

$Coucher$ + $UTC OFFSET$
?
quelle galere ce truc, le temps que j’y passe m’agace un peu, heureusement que vous etes la