Aller au contenu

Encore une station météo sous Ascom.... mais avec son petit plus!


Messages recommandés

Posté (modifié)

Update 5 du 10/08/2025: Voici la version finale de ce projet que vous pouvez telecharger ici: esp32AstroV6.1.3_finale.zip

PS: Ne pas oublier de renseigner correctement les champs SSID et Mot de passe dans l'onglet 'variablesWIFI' afind'éviter d'avoir à reflasher l'esp32 via le port USB!

 

Cette dernière update vise uniquement à modifier le comportement du programme en cas de défaillance d'un des capteurs. En effet, en cas de panne de l'un des composants, tout le programme tombe à l'eau, plus de visiblilité sur la page web, et cela sans savoir explicitement quel capteur est défaillant.

Avec cette update, si un capteur tombe en panne ou n'arrive pas à se connecter pour une raison ou une autre, alors il renvoi une indication (-999) sans affecter le comportement des autres capteurs.

Cela évite de bloquer tout le programme et permet en plus d'identifier quel capteur est défaillant simplement en visualisant la page web.

 

Ce projet touche à sa fin. Il me semble que ce projet est suffisament abouti, qu'il permet d'être modifié, upgradé etc... par qui conque le souhaite.

Ce projet m'a permis d'apprendre bien des choses, tant sur la programmation, le comportement de l'esp32, et tout un autre tas de choses.

 

En espérant que ce projet puisse servir à certains :)

 

Ne pas hésitez à venir poser des questions en cas de nécessité, je me ferai un plaisir d'aider.

 

Olivier

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

UPDATE 4 du 08/10/2025: Je vous propose une nouvelle version du firmware de l'esp32, que vous pouvez telecharger ici:

PS: Ne pas oublier de renseigner correctement les champs SSID et Mot de passe dans l'onglet 'variablesWIFI' afind'éviter d'avoir à reflasher l'esp32 via le port USB!

 

1) Reprise complète du mode de gestion de l'économie d'énergie. Malgré une nette amélioration je n'étais pas encore satisfait. J'ai donc encore poussé le vice un peu plus loin. Pour les capteurs BME280, MLX90614 et SHT3x, j'ai implémenté le mode sleep qu'ils permettent par le protocole i2c. Cela n'était pas implémenté au paravant. Cela implique que les capteurs sont réveillés uniquement lors de la lecture puis rééteints. Cela permet d'avoir une utilisation energetique que sur une phase de 100ms sur une période de 20s, ce qui a pour conséquence une énorme diminution de la consommation et donc une augmentation drastique de la durée de vie de la batterie. Seul le TSL2591 ne dispose pas de cette fonctionnalité. Pour pouvoir couper le capteur on peut simplement relier l'alimentation du capteur à une sortie de l'esp32 et de passer à l'état haut ou bas selon l'effet voulu. Je n'ai pas fait cette modification sur ma platine, donc si vous souhaitez faire cela, n'oubliez pas dans le code principal de supprimer le pin utilisé à la ligne 155, sinon la pin restera inutilisable puisque désactivée par défaut.

Par ailleurs, lorsque l'esp32 est en mode sleep, tous les websockets, MQTT et autres protocoles sont désactivés, améliorant encore la consommation inutiles dans ces phases là.

 

2) Implémentation de la sonde SHT3x. Le BME280, bien que permettant l'ensemble des mesures de température ambiante, pression, humidité et donc après calcul du point de rosée, je n'étais à l'aise de laisser ce capteur dans le bouclier exterieur. Un ami m'a donné une sonde SHT3x qui ne permet de connaitre que la température ambiante et l'humité, et donc après calcul du point de rosée. Cependant cette sonde est réellement faite pour aller en milieu "extérieur". J'ai donc déplacé le BME280 dans mon boitier "quasi étanche" pour mesurer la pression atmosphérique, et mis la SHT3x dans le bouclier. Si l'on ne dispose pas de ce capteur, il suffit de commenter la ligne au début du programme #define SHT, ainsi seul le BME280 sera utilisé.

Attention toutefois, les calculs intervanants avec le MLX90614 pour la detection de nuages utilisent en fonction de la sonde choisie, la température ambiante du BME280 ou du SHT3x et non celle du MLX90614. Cela car mon MLX90614 se trouve dans mon boitier "quasi étanche" et que cette valeur intervient directement dans le calcul de la présence de nuages. Dans le boitier la température qui grimpe la journée en cas de soleil fausse complètement les données. C'est un parti pris ici et chacun pourra modifier la température voulue puisque dans la gestion du MLX90614, la fonction de prise de température ambiante est implémentée. Il faudra alors simplement dans la fonction "updateSensorCache()"  du code principal modifiée la source ainsi que dans le fichier MLX90614.

 

3) Reprise du code pour la partie WebSocket. J'ai repris le code pour harmoniser les fonctions des gestions des valeurs entre les parties WEB, Websocket, MQTT et ASCOM. Cela est beaucoup plus cohérent. Pour la partie interface web, j'ai priviligié le Websocket. Cela permet une communication entre le serveur web et l'esp32 bilatérale sans délai. J'ai toutefois laissé la partie HTTP présente en tant que communication de secours. Ainsi, si pour une raison ou une autre le Websocket échoue, le HTTP prend le relai. Cela rend plus sécurisant l'utilisation notamment lors des sessions de nuits :)

 

4) Amélioration globale de la fonction anémomètre. J'avais parfois des bizarreries lors de la lecture du vent (par exemple des vitesses de vents à plus de 300 km/h alors qu'il n'y avait de vent chez moi!). J'ai donc renforcé drastiquement la partie concernant les mesures de la vitesse du vent. Ces étrangetés ne devraient donc plus survenir.

 

5) Calcul de la présence de nuages. Comme mentionné à plusieurs reprises, pour le calcul de la présence de nuages, je me suis complètement inspiré de l'approche faite par Lunatico avec le AAG Cloudwatcher. Ils donnent sur leur site toutes les formules et explications concernant les équations pour le calcul de la correction à appliquer à la tempéarature "brute" fournie par le capteur.

Je m'étais pour le moment contenter des constantes K1 à K5 même si sur la page web on pouvait renseigner ces valeurs. Toutefois, elles n'étaient donc pas utilisées dans le calcul. 

C'est maintenant chose faite.

par ailleurs, J'ai également implémenter le facteur qu'ils nomment T76 qui intervient de manière complètement transparente pour l'utilisateur, ajuster les coefficients en cas de "grand froid", donc quis'applique lorsque les températures ambiantes sont <-5°C.

 

6) Page WEB. Reprise du code pour accepter le nouveau format Websocket avec HTTP en secours.

J'ai également ajouter des champs sous les coefficients K1 à K7 pour pouvoir modifier à la volée les constantes tempéature ciel clair et température ciel couvert, intervenant dans le calcul du pourcentage de nuages.

 

Voilà, j'spère que cette nouvelle mouture vous conviendra. Je pense en rester là avec ce projet qui me semble pour le coup suffisament abouti. :)

 

je reste disponible ici pour échanger.

 

Amicalement.

 

Olivier

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

UPDATE 3 du 18/09/2025: Après avoir du lâché le projet durant plusieurs mois, j'ai pu reprendre le developpement de ma station météo spéciale ASTRO et Observatoire.

Le code original en V4 fonctionnait bien mais j'avais envie de l'améliorer sur plusieurs points. Cette version du code reste compatible avec le drriver ASCOM V2.

Vous pouvez telecharger le firmware ici:

Ne pas oublier de renseigner correctement les champs SSID et Mot de passe dans l'onglet 'parametreWIFI' afi nd'éviter d'avoir à reflasher l'esp32!

 

Voici la liste des principales évolutions du firmware: 

 

1) Modification de la partie firmware

- Ajout d'un mode DEBUG: Le fait d'avoir des Serial.print(ln) augmente la durée d'un tour de loop. Je voulais un système plus réactif. Une fois que tout est OK on peut supprimer les Serial en commentant la ligne //DEFINE DEGUG_MODE en haut du fichier *.ino. Cela fait gagner environ 50% de réactivité. Bien penser à le commenter quand tout est OK.

 

- Ajout d'un mode "simulation": Cela permet de tester le code et la page web en simulant des données sans que les capteurs ne soient physiquement connecté.

 

- Utilisation d'un MUTEX: Cela evite des écritures et lectures simultannées qui pourraient poser problème.

 

- Utilisation d'un cache pour les données: Toutes les données collectées sont stockées dans un cache. Le cache est par défaut remis à jour toutes les 20s. Ce sont les données dans le cache qui sont lues par la page web ou le driver ASCOM.

 

- Ajout du code nécessaire pour l'utilisation avec MQTT, donc pour ceux qui utilisent Home Assistant ou d'autres application MQTT.

 

- Ajout du code nécessaire pour l'utilisation de WebSocket: bien plus rapide pour la communication entre la page WEB et l'esp32.

 

- Modification du code pour les interruptions dans le comptage des 'ticks' intervenant dans le calcul du vent et de la pluviomètrie.

 

- Ajout d'un Watchdog: Redémarre l'ESP32 si le système se bloque (ex: boucle infinie, plantage logiciel).

 

- Utilisation d'un heartbeat: Maintien le système en vie en effectuant des tâches périodiques (ex: vérifier le WiFi, réinitialiser le watchdog, envoyer un signal de vie).

 

- Ajout d'une vérification de la mémoire: evite les fuites mémoire et évitera bien des plantages.

 

- Ajout d'un reboot systèmatique tous les 7 jours: Cela prends moins de 2s et permet la réinitialisation de tous les compteurs, notament pour millis().

 

- Amelioration du mode MODEM SLEEP : Le code a été remanié pour offrir une plus grande économie en terme energetique. Concretement, si aucune requete n'est reçue par l'esp32, alors il passe en mode éco. La puissance du wifi est mise au minium afin d'avoir la meilleure économie. Ce mode garde l'aventage de pouvoir reveiller instantanément l'esp32 si une requete est reçue. Complétement transparent pour l'utilisateur, cela préserve également les capteurs. Pour une meilleure réactivité, un cache de données avec le minimum est mis à jour. Cela permet au reveil d'avoir des données fraiches.

 

- Amélioration de la gestion du wifi: l'esp32 analyse les performances de la connexion au wifi et ajuste sa puissance de transmission / réception pour une fois de plus améliorer le coté energetique.

 

- Diverses modifications du code (liste non exhaustive!): suppression des Serial, modification des String pour utiliser des tableaux, ce qui est beaucoup plus efficace et évite des défragmentations, suppression des différents 'delay' pour utiliser du FreeRTO non bloquant, ajout de beaucoup de texte pour la compréhension et modification par d'autres personnes. Création d'un onglet utilisateur qui permet de modifier quelques paramètres. Attention, certains paramètres sont à ajuster dans les fichiers *cpp tels que les SSID, mot de passe...

 

- Améliortion de l'autonomie sur batterie + panneau solaire: Toutes les modifications apportées permettent, en plus de proteger les capteurs dans le temps, d'avoir une meilleure efficacité energetique. En comparant par rapport au code précédent, l'autonomie a été multipliée par 3. On ne peut pas faire mieux puisque le wifi doit rester actif en permanence pour pouvoir être le plus réactif. De ce fait on oublie les mode light sleep et deep sleep. 

A titre d'information, les estimations sont les suivantes: avec une batterie 3000mAh, un panneau solaire 5V 10W, on obtient: sur une période de 1 mois, avec une utilisation complète équivalente à 1 semaine, on obtiens une charge possible jusqu'à 350 Wh pour une consommation de 75 Wh. On est largement exedentaire et donc auto suffisant, même avec des journées courtes et couvertes.

 

2) Modification de la partie WEB:

- Refonte en partie de la page WEB: Nouvelle mise en page avec de nouvelles gauges, plus attractives à l'oeil. Modification du script pour utiliser le WebSocket au lieu d'une requête web.

 

- Meilleure gestion des coefficients K1 à K7 intervant dans le calcul de la température du ciel (présence de nuages).

 

image.thumb.png.7ac0e357c6ef94bd4c3531607167cade.png image.png.1f73a327c780ea1e613b8a811eae797f.pngimage.png.5bdd231d0e9a3a0332e43d9536b75be0.png

 

Ne pas hésiter à me dire si vous rencontrer un problème.

 

Amicalement.

 

Olivier

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

UPDATE 2 du 04/07/2024:  IMPORTANT: Si vous avez déjà installé l'ancienne version du driver ASCOM, il faut d'abord le désinstaller via l'utilitaire de desinstallation des programmes Windows.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

UPDATE 1 du 02/07/2024:

Pour répondre à la demande d'un astram du forum, j'ai repris une très grande partie du développement de ce projet.

La demande initiale était simple: ajouter la prise en charge d'un anémomètre, d'un pluviomètre et d'un détecteur de gouttes.

Le pluviomètre et l'anémomètre m'ont été chaleureusement offert par  le demandeur afin de pouvoir tester en vrai les différents codes.

Ces deux capteurs proviennent du site Lextronic:

- Le pluviomètre:

image.png.df41b56a0cabc97e1bf664b3f5ae2556.png

https://www.lextronic.fr/pluviometre-a-godet-27641.html

 

- l'anémomètre:

image.png.e4b23f9e07c4a01c38b2508a11cb44c1.png

https://www.lextronic.fr/anenometre-a-sortie-reed-27644.html

 

- Capteur de gouttes:

image.png.1a12aaad015a63f4cda2dcb78bb89197.png

 

 

1) Afin de me simplifier la vie, j'ai repris l'architecture du code de l'ESP32. J'avais initialement construit un firmware où tout était dans le même fichier.

J'ai du coup créé les fichiers .CPP et .h pour chaque capteur et chaque fonctionnalité.

image.png.c7f925526288cb20c97cc7c480e07574.png

 

Cela permet une maintenance plus facile et l'ajout de fonctionnalités plutôt facilement.

 

2) La mise à jour du firmware de l'ESP32 peut maintenant se faire via une mise à jour OTA (over ther air). Dans le cadre d'une station météo c'est plus pratique puisque dans de nombreux cas celle ci sera alimentée par un panneau solaire et donc bien loin du port USB.

Sur la page web qui affiche les données des divers capteurs, un bouton en haut de la page permets d'accéder à la page de mise à jour de l'ESP32.

Arès avoir sélectionner le fichier .bin crée par l'IDE arduino ou autre IDE, puis cliqué sur le bouton "Mise à jour", une barre de progression se remplie. Une fois fini un message de succès apparait pour confirmer l'upload. En cas d'erreur un autre message d'echec apparait.

Une fois le telechargement sur l'ESP32 terminé, un bouton "retour vers l'acceuil" apparait sous la barre de progression.

image.thumb.png.2488f276c5e85a9d649d1c40def3c418.png

image.png.06521000ba9846d46627cabce7549e7e.png

 

3) L'adresse IP fixe de l'ESP32 doit être renseignée dans le fichier "WIFI.cpp" et les SSID et mot de passe wifi doivent être renseignés dans le fichier "variablesWIFI.cpp".

Ces données sont utilisées dans le cas de la mise à jour par OTA mais aussi dans la gestion "cachée" des pages web.

Sans rentrer dans le détails cela permet de rendre dynamique les variables nécessaires afin que les infos utilisées dans l'ESP32 soient réutilisées par les pages web.

Cela évite d'avoir à modifier les fichier html pour y modifier les adresses IP. Tout est automatique dorénavant.

 

4) La gestion en économie d'énergie a été améliorée. Initialement il n'y avait pas de gestion d'énergie. Sur cette version, après 5 minutes d'inactivité, l'ESP32 se met en mode "Modem Sleep" (le WiFi et le Bluetooth sont donc désactivés). Ce n'est pas le mode d'économie le plus avancé (il aurait fallu pour cela mettre un "Deep Sleep") mais le "reveil" de l'ESP32 serait bien plus délicat.

Une activité est soit une requete de la page web soit une requete du driver NINA.

Donc, si aucune requête arrive à l'ESP32, celui ci rentre en "Modem Sleep". L'ESP32 arrête toutes les lectures des capteurs. Si une nouvelle requête est faite alors l'ESP32 reprends sa routine durant 5 minutes. A chaque nouvelle requête le timer de 5 minutes se remet à 0.

Cela garantie une économie d'énergie ceratine ainsi qu'une plus grande longévité des capteurs puisque, ce projet se destinant à une météo astro, il va de soit que les requêtes ne seront que peu fréquentes en cas d'inutilisation prolongée à cause de la météo ou tout autre évenement :).

 

5) NINA communique avec l'ESP32 grâce au driver MeteoESP32 Setup V2.exe que je joins dans ce post -> ajout des paramètres anémomètre et pluviomètre.

 

6) Je recommande de laisser la gestion du Safety Monitor à l'execllent driver "Environment Safety Monitor" ici: https://www.dehilster.info/astronomy/ascom_environment_safetymonitor.php

Cela permettra une gestion bien plus pointue sur cet aspect que mon premier driver joins ici. Je le laisse pour les gens curieux qui veulent voir comment est fait un driver ascom en utilisant le projet.

 

7) Mise à jour de la page index.html.

Couleurs retravaillées, ajout de la date et de l'heure, ajout du bouton pour la mise à jour par OTA, ajout de la version actuelle sur l'ESP32 en bas de page. Diverses modifications du code notamment pour integrer la gestion dynamique des adresses IP.

 

Pour tester le projet, je joins le fichier esp32AstroV4.0.0finale.zip

Il y a tous les codes dedans.

Pour la partie web j'utilise un IDE arduini 1.8.X car le plugin "sketch upload data" ne fonctionne pas avec les versions  2 et plus. Telechargement ici:https://github.com/me-no-dev/arduino-esp32fs-plugin/releases/

Pour les librairies il suffit de les récupérer depuis le gestionnaire de librairie de l'IDE.

 

Bien astronomiquement à vous,

 

Olivier

 

MeteoESP32 Setup V2.exe

 

Fin UPDATE 1 du 02/07/2024

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Bonjour à tous,

 

Voilà de cela plusieurs années j'ai fais un rêve. Construire un observatoire.
Pour y parvenir j'ai mis en route pleins de petits projets qui sont plus ou moins finis, le dernier grand pas étant l'abris en lui même..... arf.... un jour ^^

Mais à dire vrai, il y eu en parallèle du rêve de la conception d'un abris, la réflexion sur la facilité de la création d'un driver de type ASCOM.
Moi qui ne suis pas ingénieur, me lancer dans la programmation était sommes toute difficile.

Puis, quelques années plus tard, de petits modules facilement programmables sont apparus: les arduino. Aujourd'hui il existe énormément de variantes mais j'ai le plaisir de "jouer" avec cela depuis quelques années maintenant. Sans être expert, le langage C++ me fait un peu moins peur.

Encore loin de la création d'un projet ASCOM j'ai par la suite participé à divers projets et j'ai de mon coté personnalisé certains petits projets notamment sur INDI, le ASCOM Linuxien, qui m'ont permis de touché un peu au code HTML (le code pour la création de page web entre autre), javascript ou CSS.

Le temps passe, l'idée toujours en tête, mais voilà....une révolution a commencé il y a de cela quelques mois: l'IA générative. Pour les autres, ChatGPT.
Cet outil, oui oui c'est simplement un outil, permet de faire des choses remarquables, comme aider à la réalisation d'un driver ASCOM!!

Je m'explique: Il y a quelques années, j'avais réalisé un boitier météo pour Linux, basé sur une solution existante nommée Weatherradio.
Le principe est simple: un arduino sur lequel étaient branchés les capteurs suivants:
- un BME280 de chez Velleman: il s'agit d'un petit module permettant de connaitre la température ambiante, la pression atmosphérique, l'humidité relative, et par quelques petites formules, le point de rosée.
image.png.d0d55c0c4f3bcffd2c07e92010c69fa5.png

- un TLS2591 chinois: un capteur de luminosité (en lux) extrêmement sensible qui, par simple calcul, permet de connaitre la qualité d'un site, le fameux SQM. Je vous laisse aller voir sur le net, mais en gros, on peut facilement comparer deux sites en mesurant la "noirceur" du ciel.

image.png.746afbf01dda67b28f15d065d55e06ce.png


- un MLX90614 chinois: c'est un capteur de température infra rouge (les fameux thermomètres à distances pour enfant, ceux qui sont en rupture de stock depuis la COVID 19 😕 ), capteur qui permet donc de mesurer la température du ciel, et au moyen d'une formule tirée du boitier AAG Cloudwatcher, la quantité de nuages dans le ciel. En gros si le ciel est chaud c'est qu'il y a des nuages, s'i lest plus froid il n'y a pas de nuages et donc il fait beau. Bon c'est assez empirique mais après quelques réglages cela sera assez précis. J'y reviendrais.

image.png.dbb55b29498bc51bcc34e1da95fdc479.png


Ce petit monde donc était connecté à un petit arduino nano, qui est dans l'obligation d'être connecté à un port USB du pc pour communiquer toutes les mesures transmises.
Sans rentrer dans les détails, j'avais installé le firmware weatherradio dessus et tout allait bien.

Mais voilà, le temps est passé et la révolution en marche.
J'ai acheté un module arduino, enfin pas vraiment arduino, mais on va rester simple, qui s'appelle un ESP32.

image.png.9466e05c412d530723901c2527e83725.png

 

Petite carte électronique donc qui permet de faire la même chose que l'arduino nano, donc d'y connecter des capteurs, mais il offre surtout deux avantages supplémentaires en plus de sa puissance de calcul:
- il offre une connectivité sans fil, donc parfait pour le mettre loin de tout sur une petite batterie solaire (à venir),
- il offre une mémoire flash sur laquelle on peut y programmer un serveur web. Ca devient très intéressant.
Concrètement, que cela veut il dire:
Ce petit module permet d'installer à l’intérieur de sa mémoire différents fichiers (un peu comme sur un pc) et il peut par la sorte générer des pages internet. Pages que l'on peut visiter depuis n'importe quel périphérique disposant d'un accès internet et connecté sur le même réseau wifi que celui du module.
A partir de la, on peut afficher les valeurs des capteurs sur une page web.
Vous commencez à sentir le truc 8-)

Je me suis donc dit, si avec ce petit module si puissant, un peu d'IA qui offre une aide génialissime et beaucoup d'envie, je me lançais dans la création de mon premier driver ASCOM pour une station météo Astro.
Attention, ici je ne fais pas de suivi météo comme les stations du commerce, même si en réalité cela est tout à fait possible avec ce module ( quand je vous dit qu'il est puissant ce machin ^^)

Tout feu tout flamme, je me lance dedans.
ChatGPT offre une aide précieuse. On peut lui demander à peu près tout et j'avoue que sans cet outil je n'y serais surement pas arrivé. Il connait tous les langages de programmation et pour peu qu'on sache l'utiliser c'est extrêmement puissant.

Après plusieurs heures à triturer les codes C++ de l'arduino et C# d'ASCOM le résultat tombe.
Ça fonctionne aux petits oignons.

Donc, petit résumé de la chose:

J'ai un ESP32 sur lequel sont branchés plusieurs capteurs.
les valeurs mesurées sont renvoyées sur une page internet générée par l'ESP32.
Le driver ASCOM que j'ai conçu permet, via NINA par exemple, d'envoyer une requête internet (basiquement il ouvre une page internet sans que vous le voyez) et reçois les valeurs de la page web. Le drivers traite l'info et NINA affiche les valeurs.

nina.jpg.e799e4ee62ebc99c80f7e7a8731b8692.jpg


Enfin, dans un soucis d’esthétisme, j'ai crée une interface sur la page internet avec des petites gauges affichant les valeurs. Les valeurs sont rafraichies toutes les 10 secondes. On peut changer cela facilement dans le fichier script.js qui accompagne le code HTML de la page internet.
Mais ce que je souhaitais avant tout, c'était de pouvoir paramétrer quelques valeurs importantes que je vais exposer juste après, sans avoir besoin de rebrancher l'ESP32 à l'ordinateur et de renvoyer une mise à jour du firmware de l'ESP32.

pagewebesp32.jpg.94fd123c754612cef712303588ca3554.jpg


Petite explication.
Le module MLX90614, comme je l'évoquais plus tôt, est un module qui sert à mesurer la température d'une portion de ciel.
Si il y a des nuages ou non, la température mesurée (via le capteur infrarouge) va en être modifiée. Le but ici n'est pas d'expliquer comment cela fonctionne car cela alourdirait inutilement cette page déjà bien remplie ^^. Le truc, c'est que la valeur brute mesurée n'est a elle seule pas suffisante pour être pertinente.
Le fabriquant du boitier AAG cloudwatcher, qui dispose du même module, a mis en ligne dans sa notice les équations qui permettent de corriger la valeur mesurée par le capteur. En gros, à la valeur mesurée, on doit appliquer une correction que l'on va soustraire à la valeur brute. On obtiendra une valeur corrigée.
Le problème, c'est que cette correction peut varier en fonction des saisons. En gros, la valeur de correction à appliquer sera différente si on regarde la température du ciel en hiver ou en été.
L'équation qui génère la valeur de la correction est constituée de 7 coefficients sur lesquels ont peut agir.
On comprends dès lors que pour éviter de devoir modifier les valeurs des coefficients en dur dans le firmware de l'ESP32 et ne pas avoir à recharger le firmware tous les x temps, il me fallait trouver un autre moyen.
Et l'ESP32 permet cela assez facilement!!
J'ai créé un fichier dans la mémoire de l'ESP32 dans lequel sont stockés ces coefficients.
Ensuite, (merci ChatGPT) dans le code de la page web j'ai généré un formulaire dans lequel on peut à la volée donner de nouvelles valeurs aux différents coefficients. Ces valeurs sont donc stockées en dur sur l'ESP32 et elles ne seront ainsi pas perdues même après un reboot de l'ESP32 (panne d’électricité par exemple, ou batterie à plat ^^).
C'est donc depuis la page web générée par l'ESP32 que l'on peut modifier les valeurs facilement en fonction des saisons. Un vrai bonheur.

Voilà, je suis arrivé au terme de ce petit projet qui m'aura permis de toucher du doigt plusieurs domaines:
- l'apprentissage sur un module ESP32 que je ne connaissais mais que je vais réutiliser pour d'autres sujets que l'astro (pour 3€ les 2 modules sur Ali.... ce serait dommage de ne pas le faire),
- apprentissage de l'outil ChatGPT pour obtenir les résultats souhaités,
- apprentissage de divers langages: HTML, javascript, C# et d'autres!!
- démystification de la création d'un driver ASCOM que je croyais réservé à une élite d'ingénieur en informatique, du moins pour des projets simples :)

 

Petit plus!!! En plus d'un driver méteo je vous propose le driver Safety Monitor qui se connecte aussi sur le même module afin de savoir si les conditions météo sont favorables, mis à part le vent que je n'ai pas intégré.

 

Aussi, je vous propose de partager mon travail afin que chacun puisse soit s'y essayer ou s'en inspirer.

je fourni:

- l'executable du driver météo pour NINA en tant qu'ObservingConditions,

 

- l'executable du driver météo pour NINA en tant que Safety Monitor,

SafetyMonitorESP32 Setup.exe

-le firmware ESP32 avec son repetoire pour la partie WEB,

 

-les projets visual studio pour ceux qui veulent aller plus loin ou integrer de nouvelles fonctionnalités comme un anémomètre par exemple.

visual studio - MeteoESP32Driver.rar

visual studio - SafetyMonitorESP32.rar

 

Voilà, j'espère avoir pu partager avec vous quelques petits choses.
Je répondrais aux questions, s'il y en a,

A très vite

Olivier

 

@bemoBonjour, je sais que cela fais maintenant très très longtemps que j'avais promis ce driver!! il est enfin là... vaut mieux tard que jamais ^^

 

PS: Un grand merci aussi à @Raphael_OD et @Antiath sans qui je n'aurais tout bonnement pas essayer non plus!! des conseils avisés et utiles!!! un grand merci :)

 

Modifié par astrolivier
Ajout UPDATE 5 du 10/10/2025
  • J'aime 2
  • Merci / Quelle qualité! 9
  • 3 mois plus tard...
Posté

Bonjour et merci d'avoir partagé votre projet :-)

Pourriez vous préciser les librairies utilisées dans l'IDE d'arduino?

Car j'ai une erreur de compilation, qui provient peut etre du mauvais choix des librairies.

Quel ESP32 avez vous utilisé?

J'utilise un de marque uPsey (marque française). mais il y a aussi peut etre une incompatibilité.

 

Bonne continuation _

 

Jean

Posté (modifié)
il y a 46 minutes, jduffas a dit :

Je me réponds, il semblerait que le uPsey ESP32 ne soit pas compatible avec le code (ou inversement 😉)

Bonjour,

j'utilise un clone de Upesy et il n'y a pas de raison que cela ne fonctionne pas (Par ailleurs je m'inspire beaucoup de leur site pour certains codes!)

C'est un wroom devkit C acheté sur Ali.

En revanche j'ai remarqué récement que j'avais un problème de compilation, a priori avec une maj coté expressif....  lors de la compilation. Un -ret en trop par rapport à une ancienne verison.

 

En tout cas je suis en train de faire une nouvelle version qui inclus un anémomètre et un détecteur de pluie en plus suite à la demande d'un membre du fourm.

Ce code sera fonctionnel avec mon driver Safety Monitor mais aussi fonctionnel avec celui de "Environment Safety Monitor"

https://www.dehilster.info/astronomy/ascom_environment_safetymonitor.php

 

Le code est fini mais je dois attendre mon nouveau routeur wifi dual-band d'ici demain pour y connecter mon ESP (mon routeur actuel depuis début mai ne fonctionne qu'en 5Ghz) pour le tester.

 

Je peux lister l'ensemble des librairies mais au début du code il y a toutes les dépendances.

Les plus embetantes sont celles liées au serveur web car il existe plusieurs versions et il faut essayer.

 

N'hésitez pas à demander si je peux aider.

Modifié par astrolivier
Posté

Re-bonjour,

Effectivement, j'ai fait des tests, et c'est la librairie ESPAsynchWebServer qui bug avec le ESP32 de chez uPsey.

J'ai essayé d'autres libraries similaires, elle remontent aussi des erreurs lors de la compilation.

J'attends donc votre nouveau code, ...mais si il utilise la même librairie, ça ne marchera pas non plus, car les simples exemples des librairies plantent également.

Posté (modifié)

Bonjour,

 

J'ai réussi à faire fonctionner l'esp32, la page web s'affiche, les valeurs sont bonnes,

en revanche, dans NINA, toutes les valeurs restent à 0... il n'arrive pas à récupérer les valeurs sur la page web, j'ai pourtant bien rentré la bonne IP.

Une mise à jour de NINA pourrait elle être la cause de cela?

 

Ceci dit, j'ai modifié le programme du ESP32 afin de pouvoir y mettre les fichiers index.html etc.

J'ai remplacé SPIFFS par LittleFS.

 

C'est peut-être la raison du non fonctionnement dans N.I.N.A. ?

 

Je vous remercie.

 

Jean

Modifié par jduffas
Posté (modifié)

Bonsoir,

En entrant l'adresse IP/ascom dans un navigateur j'ai bien les valeurs :

T:21.92|C:nan|P:1017.76|H:48.66|D:10.56|L:94.60|N:87.00|S:0|Q:7.64

Je n'ai pas encore C car je n'ai pas encore reçu le capteur.

 

 

...Oups!

je viens de comprendre, c'est l'absence de capteur qui bloque le fonctionnement du driver ASCOM.

J'ai mis une valeur de 10.0 manuellement à C, et ça marche.

Donc je n'ai plus qu'à attendre l'arrivée du capteur.

 

Bonne journée _

 

Merci

Modifié par jduffas
Posté

@jduffas

Bonjour,

désolé pour le temps de réponse mais fin de semaine et weekend très chargé.

Heureux de voir que cela fonctionne pour vous.

Pour vous expliquer un peu pourquoi cela n'a pas foncitonné:

Lors de la création du driver j'avais installé les librairies json dans visual code mais sans aucun succès. Quelque soit la librairie utilisée cela ne fonctionnait pas. J'ai donc crée ma propre facon de créer le json.

Le seul hic c'est que pour que tout fonctionne il faut absolument que la chaine envoyé par la requette soit celle attendue par le driver.

 

Pouvez vous me dire quelle est la différence entre littleFS et SPIFFS.

 

Pour ma part je crée le fichier data et avec l'outil (qui ne fonctionne qu'avec IDE 1.8.x) upload sketch, ca se passe tout seul :)

Le nouveau code bientot disponible intègre un anémomètre ainsi qu'un pluviomètre.

Matériel dispo sur le site de Lextronic.

Posté

Bonjour,

Pas de problème, ça m'a laissé le temps de me débrouiller 😉 

LittleFS si je comprends bien est une bibliothèque plus récente, l'autre semble être obsolete.

J'utilise le dernier IDE, il m'a fallu charger une extension pour pouvoir uploader, mais l'extension SPIFFS n'était plus compatible.

voilà pourquoi je me suis tourné vers LittleFS.

en ce qui me concerne c'est surtout pour les nuages que votre projet m'intéresse, ...j'ai déjà noyé un ordinateur avec une petite pluie dans le var, une nuit en juillet...

depuis je déporte l'ordinateur à l'intérieur, et je vais donc utiliser votre logiciel pour que NINA coupe les alimentations et ferme le clapet du telescope en cas de nuages.

je verrai pour le vent et le pluviomètre, ...mais si il pleut, c'est qu'il est déjà trop tard 😉 

  • J'aime 1
Posté
Il y a 4 heures, jduffas a dit :

mais si il pleut, c'est qu'il est déjà trop tard 😉 

C’est ce que j’ai pensé en réalisant ce driver.

:)

pour LittleFS elle est certes plus récente mais ne rends pas l’autre obsolète.

Elle est plus âgée mais fonctionne très bien et est surtout compatible avec la version 1.8 de l’ide.

la grosse différence provient du fait que LittleFS est meilleur en cas de très forte sollicitations a sa mémoire mais dans notre cas ici c’est très peu utilisé, donc pas d’impact a ce niveau.

en tout cas je suis ravi que ce projet puisse vous aider.

 

Posté

si j'ai surtout utilisé LittleFS c'est parce je suis en  IDE 2.3.2 

J'ai plus qu'à mettre en boite, et oui, votre projet me sera très utile.

 

Merci encore pour votre aide 🙂 

  • J'aime 1
Posté
Le 11/06/2024 à 14:05, jduffas a dit :

si j'ai surtout utilisé LittleFS c'est parce je suis en  IDE 2.3.2 

J'ai plus qu'à mettre en boite, et oui, votre projet me sera très utile.

 

Merci encore pour votre aide 🙂 

Avec plaisir.

Bonne suite à vous :)

Posté

Top! je vais essayer votre nouvelle version, ce qui m'intéresse le plus est le mode veille et la mise à jour en OTA.

Le pluviomètre et l'anémomètre sont ils indispensable pour que le système fonctionne, ou peut on ne pas les mettre?

Je fonctionne effectivement avec deux petits panneaux solaires 5V, le fait de mettre en veille en journée permettra de mieux charger la batterie surtout en cas de manque de soleil 🙂 

 

Bonne journée!

 

Jean

Posté

J'ai tenté la mise à jour, sans les modules pluie et anemo, la page web fonctionne, mais pas le driver dans NINA.

Ce qui est étrange, c'est que j'ai l'impression qu'il me donne toujours la version 6.6 , ça n'était pas la version précédente?

Le driver ascom que vous avez mis est il bien le dernier?

Je ne vois pas de titre "vent" ni "pluie" apparaitre dans NINA... 

Posté
il y a 59 minutes, jduffas a dit :

J'ai tenté la mise à jour, sans les modules pluie et anemo, la page web fonctionne, mais pas le driver dans NINA.

Ce qui est étrange, c'est que j'ai l'impression qu'il me donne toujours la version 6.6 , ça n'était pas la version précédente?

Le driver ascom que vous avez mis est il bien le dernier?

Je ne vois pas de titre "vent" ni "pluie" apparaitre dans NINA... 

Bonjour,

 

oui l'utilisation de l'anémomètre et du pluviomètre sont nécessaires.

Si physiquement rien n'est branché alors les valeurs retournées seront normalement 0.

Le 6.6 vient de la version de la plateforme ascom et non du driver meteo. Je ne me rappelle plus honnetement l'avoir changé!

En revanche dans NINA vous devriez avoir les valeurs de pluie et de vent même si elles restent à 0.

Vous pouvez essayer celui joint à ce post.

Redites moi :)

Olivier

MeteoESP32 Setup.exe

Posté (modifié)

idem, voici la capture d'écran après la mise a jour du driver et le redémarrage de NINA :

Capture d'écran 2024-07-04 104647.png

 

quand à la ligne qui produit l'ESP32, la voici :

 

T:18.14|C:9.14|P:1013.19|H:56.71|D:9.37|L:5197.71|N:100.00|S:0|Q:3.29|V:0.00|R:0.0

 

à part les trois valeurs S V et R à 0 (mais n'est-ce pas ce qui remonte comme info quand il n'y a ni vent ni pluie?) le reste semble normal.

Modifié par jduffas
Posté (modifié)
il y a 22 minutes, jduffas a dit :

quand à la ligne qui produit l'ESP32, la voici :

 

T:18.14|C:9.14|P:1013.19|H:56.71|D:9.37|L:5197.71|N:100.00|S:0|Q:3.29|V:0.00|R:0.0

 

à part les trois valeurs S V et V à 0 (mais n'est-ce pas ce qui remonte comme info quand il n'y a ni vent ni pluie?) le reste semble normal.

 

La ligne produite par l'ESP32 est bien celle attendue.

Par contre NINA en effet n'indique pas ces valeurs. Je suis surpris car cela a fonctionner chez nous autres.

On dirait en effet que le driver n'est pas le bon.

 

par contre les valeurs à 0 alors que vous êtes bien connecté à l'ESP32 est étonnant.

J'avais eu un soucis identique il y a longtemps et le seul moyen que j'avais eu pour résoudre ce problème a été d'installer la partie ascom developper. Suite à cela tout à refonctionner de manière cohérente 😕

 

Je ne suis pas sur mon pc perso donc je n'ai pas l'executable de dispo maintenant mais je peux le fournir un peu plus tard dans la journée.

 

Olivier

Modifié par astrolivier
Posté (modifié)

pas de problème, je veux bien. j'installerai la partie développeur.

Ceci dit, y a t'il moyen de désinstaller le driver sans installer le nouveau. histoire de vérifier qu'il s'est bien désinstallé?

Modifié par jduffas
Posté

J'ai réussi,

 

Il suffisait de désinstaller le driver (l'ancien et le nouveau cohabitaient...) en passant par le "ajout et suppression de programmes de Windows.

 

Maintenant j'ai les bonnes valeurs qui s'affichent.

 

Merci 

 

  • J'aime 1
Posté
il y a 9 minutes, jduffas a dit :

J'ai réussi,

 

Il suffisait de désinstaller le driver (l'ancien et le nouveau cohabitaient...) en passant par le "ajout et suppression de programmes de Windows.

 

Maintenant j'ai les bonnes valeurs qui s'affichent.

 

Merci 

 

ah ok!!

oui je passe toujours pas "supprimer un programme" depuis le desisntalleur windows!

 

content de savoir que ca fonctionne :)

Posté

en fait, l'installer propose de désinstaller lui même l'ancien driver, mais en fait ça ne fonctionne pas.

donc oui, il faut le faire à la main 🙂

 

Posté (modifié)

PS: clarification: Quand je dis que l'utilisation de l'anémo et du pluvio sont nécessaires, je sous entends que je ne peux pas les retirer du code de l'ESP32 (avec un #ifdef pluvio par exemple), car la chaine de caractères utilisée par NINA attends cette valeur.

Donc on peut utiliser le driver sans ajouter l'anémo et le pluvio, juste que les les valeurs dans NINA et sur le web serveur resteront à 0.

On peut aussi forcer la mise à 0 dans le code pour ces deux valeurs dans la génération du JSON en mettant 0 au lieu des variables pluie et vent.

Le seul capteur obligatoire pour que l'ESP32 fonctionne est le BME280.

 

Olivier

il y a 3 minutes, jduffas a dit :

en fait, l'installer propose de désinstaller lui même l'ancien driver, mais en fait ça ne fonctionne pas.

donc oui, il faut le faire à la main 🙂

 

ok. J'avoue n'avoir jamais procédé ainsi.

l'installateur provenant des modules ascom developper je préfere ma méthode en passant toujours par celui de windows. :)

Modifié par astrolivier
Posté

En tout cas, bravo pour cette mise à jour qui améliore donc à priori son autonomie sur batterie.

Je n'ajouterai probablement pas les capteurs supplémentaires, ce qui ne pose donc aucun problème d'utilisation dans son état actuel :).

 

Petite question, vous dites que le wifi est mis en veille, je ne vois pas trop comment vu que pour se faire réveiller le module a forcement besoin d'être connecté au wifi... 

l'économie se fait sans doute sur les envois des valeurs qui sont arrêtées tant qu'il n'y a pas déconnexion au module?

et l'utilisation des capteurs est stoppée, mais ça, vous le dites déjà.

 

Bonne continuation et encore merci!

Posté (modifié)
il y a 15 minutes, jduffas a dit :

En tout cas, bravo pour cette mise à jour qui améliore donc à priori son autonomie sur batterie.

Je n'ajouterai probablement pas les capteurs supplémentaires, ce qui ne pose donc aucun problème d'utilisation dans son état actuel :).

 

Petite question, vous dites que le wifi est mis en veille, je ne vois pas trop comment vu que pour se faire réveiller le module a forcement besoin d'être connecté au wifi... 

l'économie se fait sans doute sur les envois des valeurs qui sont arrêtées tant qu'il n'y a pas déconnexion au module?

et l'utilisation des capteurs est stoppée, mais ça, vous le dites déjà.

 

Bonne continuation et encore merci!

Merci pour votre retour.

Le mode Modem sleep coupe l'antenne wifi ainsi que le bluetooth.

Une fonction dans l'ESP32 vérifie qu'aucune requêtes n'est reçu durant 5 min.

Une fois ce délai passé l'ESP32 rentre en mode modem sleep.

Dans la gestion du mode l'antenne wifi est desavtivé mais est régulièrement rallumée pour vérifier si des requêtes ont été reçues.

Il s'agit là d'un mode propre à l 'ESP32. Sans être totalement coupé, tout comme un courant hashé, la consommation sera bien moindre que si c'était toujours activé.

Un autre mode "Deep sleep" couperait intégralement l'ESP32 mais pour le réveiller il faudrait utiliser une source extérieur tel un bouton, donc nettement moins pratique.

Je vous invite à lire la page ici qui présente les différents modes :)

https://letmeknow.fr/fr/blog/142-tutoriel-les-sleep-modes-de-lesp32

 

Pour estimer le gain d'économie d'énergie, considérons un scénario courant où l'ESP32 passe 90% de son temps en veille et 10% en transmission de données.

Mode Normal:
Transmission de données (10% du temps): 200 mA
Veille active (90% du temps): 80 mA
Consommation moyenne: 0.1 * 200 mA + 0.9 * 80 mA = 98 mA
Mode Modem Sleep:
Transmission de données (10% du temps): 200 mA
Modem Sleep (90% du temps): 5 mA
Consommation moyenne: 0.1 * 200 mA + 0.9 * 5 mA = 24.5 mA

 

soit une économie d'environ 75%.

 

Egalement, le fait que les capteurs ne lancent pas de mesures lors de ce "sommeil" fait grandement économiser de la batterie.

 

Olivier

 

Modifié par astrolivier

Rejoignez la conversation !

Vous pouvez répondre maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous pour poster avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.