Séisme sur le thème Blechertown : il peut trembler maintenant février 26, 2021 Depuis quelques temps j’ai mis en avant le thème de Weewx Belchertown Theme et je viens de le mettre à jour. En effet, j’avais rajouté la partie « séisme » et l’utilisation de l’API du site https://renass.unistra.fr/fr/zones/ le site national d’information sur la sismicité de la France. Mais voila que depuis une semaine l’API a changé d’url et des options ont été rajoutées. (c’était prévu !) Présentation de l’URL : Si vous désirez faire une recherche c’est par ici : https://api.franceseisme.fr/fr/search , ensuite il suffit de saisir différents paramètres et vous vous trouverez avec une belle url longue comme le bras : https://api.franceseisme.fr/fr/search/results?start_date=2021-02-26&end_date=2021-02-26&maximal_latitude=&minimal_longitude=47.82&maximal_longitude=&minimal_latitude=-3.42&limit=&offset=&order_by=descending_time&minimal_magnitude=&maximal_magnitude=&minimal_depth=&maximal_depth=&event_id=&event_type_earthquake=false&event_type_quarry+blast=false&event_type_explosion=false&event_type_induced=false&event_type_outside+of+network+interest=false&event_type_landslide=false&event_type_rockslide=false&event_type_other+event=false&event_type_sonic+boom=false&event_type_nuclear+explosion=false&event_type_chemical+explosion=false&event_type_building+collapse=false on se retrouve avec des champs comme : &start_date=2021-02-26 &end_date=2021-02-26 &maximal_latitude= &minimal_longitude=47.82 &maximal_longitude= &minimal_latitude=-3.42 &limit= &offset= &order_by=descending_time &minimal_magnitude= &maximal_magnitude= &minimal_depth= &maximal_depth= &event_id= &event_type_earthquake=false &event_type_quarry+blast=false &event_type_explosion=false &event_type_induced=false &event_type_outside+of+network+interest=false &event_type_landslide=false &event_type_rockslide=false &event_type_other+event=false &event_type_sonic+boom=false &event_type_nuclear+explosion=false &event_type_chemical+explosion=false &event_type_building+collapse=false Les champs que nous utiliserons seront la latitude (mini et maxi) , la longitude (mini et maxi) , la magnitude (mini) , le format JSON Comment intégrer ceci au template Belchertown ? Tout le mérite revient à norecords, https://github.com/norecords, sa station météo est ici : https://meteo.correns.org/ Il faut avant tout le remercier. il a forké le thème Belchertown pour pouvoir y insérer les séismes de France. le fichier à modifier est « belchertown.py » et il se trouve « normalement » sous /usr/share/weewx/user/, donc attention aux mises à jour futures ! L’url utilisée : https://api.franceseisme.fr/fdsnws/event/1/query?format=json&eventid=fr2021fwqzae et surtout l’url retenue : https://api.franceseisme.fr/fdsnws/event/1/query?eventtype=earthquake&minmagnitude=2&minlatitude=%.2f&minlongitude=%.2f&maxlatitude=%.2f&maxlongitude=%.2f&format=json&limit=1&orderby=time L’auteur a fixé la magnitude mini à 2 (en dessous ce n’est pas significatif) et ensuite il faut calculer les deux valeurs mini et maxi de la lattitude et de la longitude. comme ceci d’après son auteur : # Calculate min/max lat adn min/max long. https://stackoverflow.com/a/23118314 lat = float(latitude) long = float(longitude) radiusInKm = int(earthquake_maxradiuskm) kmInLongitudeDegree = 111.320 * cos( lat / 180.0 * pi) deltaLat = radiusInKm / 111.1 deltaLong = radiusInKm / kmInLongitudeDegree minLat = lat - deltaLat maxLat = lat + deltaLat minLong = long - deltaLong maxLong = long + deltaLong il faudra donc rajouter la bibliothèque « pi » au niveau de l’import : from math import asin, atan2, cos, degrees, pi, radians, sin, sqrt Un autre souci également c’est au niveau du parsing du fichier Json récupéré : il y a une description en Français ET en anglais (pareil pour l’url) : Voici un exemple de fichier Json généré : // 20210226185544 // https://meteo-pontscorff.fr/data-weewx/FROGGIT/belchertown/json/earthquake.json { "features": [ { "geometry": { "coordinates": [ -2.817246199, 47.69209671, -4.665725708 ], "type": "Point" }, "id": "fr2021fvalxz", "properties": { "automatic": false, "description": { "en": "Earthquake of magnitude 2.8, near of Vannes", "fr": "Tremblement de terre de magnitude 2.8, proche de Vannes" }, "mag": 2.760723648, "magType": "MLv", "time": "2021-02-17T19:31:55.331990Z", "type": "earthquake", "url": { "en": "https://renass.unistra.fr/en/events/fr2021fvalxz", "fr": "https://renass.unistra.fr/fr/evenements/fr2021fvalxz" } }, "type": "Feature" } ], "type": "FeatureCollection" } il faudra modifier une autre partie ( la partie pour le « parsing ») : # Calculate min/max latitude and min/max longitude from radius and station location. https://stackoverflow.com/a/23118314 lat = float(latitude) long = float(longitude) radiusInKm = int(earthquake_maxradiuskm) ... ... if match("fr_.*", system_locale): equrl = eqdata["features"][0]["properties"]["url"]["fr"] eqplace = eqdata["features"][0]["properties"]["description"]["fr"] else: equrl = eqdata["features"][0]["properties"]["url"]["en"] eqplace = eqdata["features"][0]["properties"]["description"]["en"] ... ... Une fois tout ceci modifié et bien renseigné dans le fichier ,il n’est pas nécessaire de redemarrer le service de Weewx. En effet une simple génération de rapports et le tour est joué (Attention toutefois au fichier Json généré au préalable , supprimez-le !) #wee_reports --config=/etc/weewx/weewx.conf Conclusion Merci encore à Norecords pour ces modifications ! Ca marche du Tonnerre ! Navigation de l’article Un nouveau thème (ou skin) le BelchertownCustomisation du Thème Belchertown : On peut encore faire plus !