Formation PUB420 : Système domotique DIY, 2020 Home Assistant

6.10 Ajuster la date et l'heure de Home Assistant


Pour connaître la date du système sous Home Assistant, ouvrez le terminal HassOS puis entrez la commande date.

Ceci affichera la date et l'heure selon le fuseau horaire configuré dans HassOS, peu importe le fuseau horaire configuré dans Home Assistant.

Résultat à l'écran

# date
Tue Feb 2 15:41:14 UTC 2021

La date et l'heure peuvent également être affichés dans l'interface Web de Home Assistant à l'aide d'une configuration time_date.

Cette fois, c'est le fuseau horaire de Home Assistant qui sera utilisé.

Capteur virtuel date and time

Si la date ou l'heure sont erronés

Avec une installation sur un Raspberry Pi, c'est un système de synchronisation avec un service NTP (protocole de diffusion du temps en réseau ou, en anglais, Network Time Protocol) qui assure que la date et l'heure du système correspondent à la réalité.

Ceci est nécessaire puisque le Raspberry Pi ne contient pas d'horloge en temps réel (RTC ou, en anglais, Real Time Clock).

Une horloge mal synchronisée peut poser toutes sortes de problèmes dans Home Assistant. Dans le pire des cas, c'est l'installation elle-même qui ne fonctionnera pas puisque le certificat SSL pour télécharger Home Assistant sera considéré invalide.

À preuve, un clic sur le point bleu dans l'écran Preparing Home Assistant affichera le log dans lequel on retrouvera notamment cette erreur : « Can't fetch Whoami data: Cannot connect to host whoami.home-assistant.io:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate is not yet valid (_ssl.c:1129)')] ».

Il faut donc faire le nécessaire pour synchroniser l'horloge correctement.

Ajustement manuel de la date et de l'heure

Puisque le système d'exploitation de Home Assistant n'est pas un Linux « régulier », les méthodes traditionnelles pour ajuster la date et l'heure ne fonctionnent pas toutes.

Fuseau horaire

Avant de tenter d'ajuster l'heure, il faut configurer le fuseau horaire du système d'exploitation.

Remarquez que si le fuseau horaire du système d'exploitation n'est pas le même que celui configuré dans Home Assistant, vous pourriez obtenir des résultats inconsistants dans Home Assistant.

La seule technique que j'ai trouvée pour configurer le fuseau horaire manuellement sous HassOS consiste à travailler avec la variable d'environnement TZ.

Attention : cette technique a une portée réduite. La commande date donnera le bon fuseau horaire mais avec timedatectl, le fuseau horaire demeurera inchangé.

Terminal HassOS

export TZ=America/Toronto

Notez que cette modification ne sera pas permanente sauf si vous entrez cette commande dans le fichier ~/.bashrc ou, plus globalement, dans le fichier /etc/environment.

Date et heure

Pour modifier la date et l'heure sous HassOS, la commande qui fonctionne est date.

Terminal HassOS

date -s "2022-10-17 08:50:00"

Notez que si vous tentez d'ajuster l'heure à l'aide de la commande timedatectl, vous obtiendrez le message « Failed to set time: Automatic time synchronization is enabled ».

Résultat à l'écran

# timedatectl set-time '2022-10-17 08:50:00'
Failed to set time: Automatic time synchronization is enabled

Synchronisation automatique

Home Assistant est conçu pour synchroniser l'heure automatiquement lors du démarrage. Si vous branchez un écran sur le Raspberry Pi, vous verrez le message « A start job is running for Wait Until Kernel Time Synchronized ».

Synchronisation heure pendant démarrage

Dans le cas où le système n'a pas réussi à synchroniser l'horloge à l'intérieur du délai de 1min 30s, la tâche sera abandonnée.

Failed to start Waint Until Kernel Time Synchronized

Le système pourra tout de même fonctionner mais son horloge interne n'aura pas la bonne date, ce qui pourrait entraver certaines fonctionnalités.

Ce problème est parfois dû à un problème d'accès internet.

À preuve, si vous regardez l'écran d'accueil de la console Home Assistant, vous pourriez constater qu'il n'y a aucune adresse IP sur le réseau câblé (eth0) ni sur le réseau Wi-Fi (wlan0).

Aucune adresse IP

Parfois, l'écran montre bien une adresse IP (par exemple une adresse IP statique) mais on sait que l'heure n'a pas pu être synchronisée quand on lance la commande journalctl dans le  terminal HassOS.

Terminal

journalctl

Le message « Timed out waiting for reply from 162.159.200.123:123 (time.cloudflare.com) » indique que l'horloge n'a pas pu être synchronisée à l'aide du service NTP en raison d'un problème d'accès au réseau.

Résultat à l'écran

homeassistant systemd-timesyncd[322]: Timed out waiting for reply from 162.159.200.123:123 (time.cloudflare.com).

Pour régler le problème, essayez de brancher le Pi au réseau à l'aide d'un câble RJ-45 puis redémarrez-le.

Notez que selon les configurations de votre réseau, l'ajout d'un serveur DNS pourrait être exigé. Si c'est le cas pour vous, il vous faudra ajouter une configuration à l'aide d'une clé USB ou encore éditer directement le fichier de configuration /etc/NetworkManager/system-connections/my-network à l'aide de l'éditeur vi.

Fichier network/my-network

[connection]
id=my-network
uuid=votre-uuid-ici

type=802-3-ethernet


[ipv4]
method=auto
dns=xxx.xxx.xxx.xxx;8.8.8.8;8.8.4.4;


[ipv6]
addr-gen-mode=stable-privacy
method=auto

Modifier le service NTP par défaut

Si vous avez des problèmes avec le service NTP par défaut, il est possible de le modifier comme suit.

À la racine d'une clé USB formatée en FAT32 nommée CONFIG (en majuscules), créez un fichier nommé timesyncd.conf.

Vous pouvez également éditer directement le fichier /etc/systemd/timesyncd.conf sur le Raspberry Pi.

Les valeurs utilisées par défaut par Home Assistant sont les suivantes :

Fichier timesyncd.conf

[Time]
NTP=time.cloudflare.com
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org

Modifiez-les pour utiliser un autre service NTP, par exemple :

Fichier timesyncd.conf

[Time]
NTP=time1.google.com time2.google.com time3.google.com
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org

Si vous avez utilisé une clé USB, branchez-la dans le Raspberry Pi.

Dans tous les cas, redémarrez le système pour que les modifications soient prises en compte.

La clé USB ne sera plus nécessaire après le redémarrage puisque son fichier timesyncd.conf aura été copié dans le dossier /etc/systemd.

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre