domotique:retro-ingenierie_d_une_station_meteo
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| domotique:retro-ingenierie_d_une_station_meteo [03/08/2019 21:25] – Température antoineve | domotique:retro-ingenierie_d_une_station_meteo [20/10/2019 15:22] (Version actuelle) – Alecto antoineve | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ~~DISCUSSION~~ | ||
| + | |||
| + | {{ : | ||
| + | |||
| ====== Rétro-ingénierie d'une station météo ====== | ====== Rétro-ingénierie d'une station météo ====== | ||
| - | //TL;DR// : Le code est disponible sur GitHub | + | Cette station météo, "Otio WH5100" |
| + | |||
| + | //TL;DR// : Le code est disponible sur mon repo git : https://git.antoineve.me/Otio_WH5100/ | ||
| ===== Le signal radio ===== | ===== Le signal radio ===== | ||
| Ligne 113: | Ligne 119: | ||
| </ | </ | ||
| - | {{ : | + | {{ : |
| J'ai ensuite rapproché les relevés bruts avec les données affichées sur le terminal météo fourni. | J'ai ensuite rapproché les relevés bruts avec les données affichées sur le terminal météo fourni. | ||
| Ligne 150: | Ligne 156: | ||
| ==== Température ==== | ==== Température ==== | ||
| Pour la température, | Pour la température, | ||
| - | (e.g. *[00] {79}* fe bc **64 74** bc 02 04 21 d4 f2, ici ``0x64`` et ``0x74``). | + | (e.g. '' |
| L' | L' | ||
| Ligne 182: | Ligne 188: | ||
| J'ai également remarqué que l' | J'ai également remarqué que l' | ||
| permettant d' | permettant d' | ||
| + | |||
| + | ==== Humidité ==== | ||
| + | |||
| + | Pour l' | ||
| + | On voit bien sur la courbe des relevés la relation qu'ont la température et l' | ||
| + | L' | ||
| + | La relation est donc très simple : y = 0.5 * x. | ||
| + | C'est à dire que la valeur de l' | ||
| + | |||
| + | En python : | ||
| + | |||
| + | <code pycon> | ||
| + | >>> | ||
| + | | ||
| + | ... | ||
| + | >>> | ||
| + | 94 | ||
| + | </ | ||
| + | |||
| + | ==== Anémomètre ==== | ||
| + | |||
| + | La station météo renvoie deux paramètres pour le vent : une moyenne (ou médiane ?) | ||
| + | et le maximum (ce qui correspond aux rafales). | ||
| + | Ceux-ci sont portés sur les octets 6 et 7. | ||
| + | L' | ||
| + | |||
| + | <code pycon> | ||
| + | >>> | ||
| + | >>> | ||
| + | >>> | ||
| + | >>> | ||
| + | >>> | ||
| + | (0.61264343715451175, | ||
| + | >>> | ||
| + | 0.0009343564466014815 | ||
| + | >>> | ||
| + | </ | ||
| + | |||
| + | J'ai essayé avec les différentes configuration : km/h, mph, knots (nœuds), ... | ||
| + | Jamais d' | ||
| + | Certainement une erreur à cause d' | ||
| + | |||
| + | La fonction est donc : | ||
| + | |||
| + | <code pycon> | ||
| + | >>> | ||
| + | ... return round((0.61264343715451175*data-0.018142655636458116), | ||
| + | ... | ||
| + | >>> | ||
| + | 55.1 | ||
| + | </ | ||
| + | |||
| + | ==== Pluviomètre ==== | ||
| + | Pour le pluviomètre, | ||
| + | il faut ajouter 0,3 mm de pluie. La donnée est codée sur 1 octet, le 8ème de la transmission, | ||
| + | Il faut pouvoir gérer cette situation. Pour plus de facilité, je stocke la valeur dans un fichier temporaire. | ||
| + | |||
| + | <code python> | ||
| + | def rain(raw): | ||
| + | | ||
| + | try: | ||
| + | with open("/ | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | if old_rain is None: | ||
| + | with open("/ | ||
| + | | ||
| + | | ||
| + | if current > old_rain: | ||
| + | res = round(float(current-old_rain)*0.3, | ||
| + | with open("/ | ||
| + | | ||
| + | else: | ||
| + | if (current+255)-old_rain < 254: | ||
| + | res = round(float((current+255)-old_rain)*0.3, | ||
| + | with open("/ | ||
| + | | ||
| + | else: | ||
| + | res = 0 | ||
| + | | ||
| + | </ | ||
domotique/retro-ingenierie_d_une_station_meteo.1564867509.txt · Dernière modification : de antoineve
