Mon ami Goulven FK1UW, responsable du relais du Mont Do FK8ZHA, m’a contacté pour me dire que sa station météo était hors service suite aux intempéries qu’ils ont subis en Nouvelle Calédonie.
Je lui ai donc proposé une alternative, c’est ceque que je vous partage dans cet article.
Beaucoup d’Oms utilisent la météo des aéroports pour les relais, cela fonctionne très bien.
Toutefois la solution de OpenWeather propose plus de site météo et un contenu de données plus important.
Les prérequis:
- Un compte sur Open Weather et une API active.
- Un relais ou hotspot qui fonctionne avec SvxLink.
- Une connection Internet sur site.
- Modification du fichier Logic.tcl
- Ajout d’un script Python
- bibliothèque de sons https://github.com/F8ASB/fr_FR_Agnes
Création d’un compte sur Open Weather:
Rien de compliqué, il suffit de se rendre sur le site, cliquer en haut à droite sur le site Sign In et remplir le formulaire.
Mettre le statut en actif le numéro sur la gauche sera à intégrer dans un script.
La version gratuite permet d’avoir 60 interrogations par minute avec des informations limitées. Ces dernières sont largement suffisante pour une application relais.
Je vous invite à aller sur le lien suivant pour voir les tarifs et options.
Script Python:
Nous allons maintenant créer un script pour aller récupérer les informations sur l’API en Python. Le format du fichier peut etre en XML ou JSON.
J’ai choisi de prendre JSON.
Voila à quoi ressemble le fichier brute reçu:
{‘coord’: {‘lon’: 6.7167, ‘lat’: 48.0167}, ‘weather’: [{‘id’: 501, ‘main’: ‘Rain’, ‘description’: ‘moderate rain’, ‘icon’: ’10d’}], ‘base’: ‘stations’, ‘main’: {‘temp’: 22.97, ‘feels_like’: 23.28, ‘temp_min’: 19.45, ‘temp_max’: 22.97, ‘pressure’: 1014, ‘humidity’: 75, ‘sea_level’: 1014, ‘grnd_level’: 966}, ‘visibility’: 10000, ‘wind’: {‘speed’: 1.53, ‘deg’: 2, ‘gust’: 1.66}, ‘rain’: {‘1h’: 1.78}, ‘clouds’: {‘all’: 97}, ‘dt’: 1661609109, ‘sys’: {‘type’: 1, ‘id’: 6596, ‘country’: ‘FR’, ‘sunrise’: 1661575450, ‘sunset’: 1661624743}, ‘timezone’: 7200, ‘id’: 6445778, ‘name’: ‘Vagney’, ‘cod’: 200}
Ci-dessous le script à utiliser:
Disponible sur GitHub https://github.com/F8ASB/meteo-relais
Vous avez juste à remplacer “votre code API” par ce que vous fourni le portail OpenWeather.
Pour ma part, j’ai positionné le script dans le dossier /home/SVXCARD/meteo-relais.py
Libre à vous de le mettre où vous le souhaitez, prenez soin de bien noter le chemin car on en aura besoin juste après.
Vous pouvez lancer le script en manuel afin de verifier le bon fonctionnement.
Vous devriez avoir en retour:
22.9/19.4/22.9/1014/75/2/112.5
température/tempmini/tempmaxi/pression/humidité/ventDirection/ventVitesse
Il est nécessaire maintenant d’intégrer le code DTMF et la récupération des données dans SvxLink avec le traitement pour la synthèse vocale.
Modification Logic.tcl
Nous allons éditer le fichier Logic.tcl qui peut etre situé dans le dossier /usr/share/svxlink/events.d/ ou /usr/share/svxlink/events.d/local/
Disponible sur GitHub https://github.com/F8ASB/meteo-relais
Copier/coller le code juste au dessus de Executed when the SvxLink software is started.
Changez le chemin du script python si nécessaire à la ligne 9.
Il sera nécessaire d’avoir les sons correspondants au chemin du fichier audio, dans le cas contraire des erreurs apparaitront
Intégration code dtmf:
Il nous reste plus qu’a créer un code dtmf, dans l’exemple le code est 18# pour appeler la fonction.
En regardant le log de SvxLink vous verrez apparaitre les informations.
Vidéo de démonstration:
Conclusion:
Cet article peut également être utilisé pour un hotspot, dès qu’un système fonctionne sous SvxLink il sera compatible. Il peut être nécessaire de télécharger les fichiers sons afin d’être sûre de les avoir tous.
Disponible sur Github.
Un article précédent présente l’installation d’une station météo sur le site d’un relais et son adaptation sur SvxLink.