Aller au contenu

Driver ASCOM avec arduino nouvelle version!!


astrolivier

Messages recommandés

Dans le principe c'est ça, dans le SPIFFS de l'ESP32 tu peux mettre un fichier HTML+CSS et voir tes datas en direct si tu met ton ESP32 sur le réseau domestique en WIFI avec une IP propre.

Pour les drivers ASCOM qui se raccrochent dessus les  https://learn.microsoft.com/en-us/dotnet/api/system.net.httpwebrequest?view=net-8.0 sont les fonctions C qui vont bien.

Pour ma part j'ai séparé les éléments car souvent victime de la foudre estivale sur mon site ça évite une indisponibilité majeure en cas de pb j'ai divisé les pb ;) et les plateformes selon la taille du projet (ESP32, PI Zero, Xiao)

Bonne continuation.

 

Lien vers le commentaire
Partager sur d’autres sites

Merci beaucoup.

ESP32 reçus hier, je vais m'amuser :)

J'ai commencé à regarder cette hsitoire de HTML + CSS +firmware arduino en forme se server web.

Les données y'a pas de soucis.

Je vais essayer de créer une page web avec un affichage des données :) d'où l'utilisation de 3 fichiers json, un sera dédié à cela.

Mais ce ne sera clairement pas la priorité, donc on verra plus tard ^^

On va déjà refaire la partie ASCOM avec ce nouvel appareil.

 

Merci en  tout cas :)

Lien vers le commentaire
Partager sur d’autres sites

En complément tu peux trouver sur YT des tutos de Tommy Desrochers sur le SPIFFS de l'ESP32 et la gestion des pages web ça date un peu mais l'essentiel est là. Il y a un peu de java à manger aussi là dedans.

 

Tu peux aussi te créer des outils sympas avec python, je viens de terminer un générateur de config json  saisonnier pour le Cloud Sensor plus besoin de modifier le fichier source.

 

image.png.677348478cc7388c169fff117a433dca.png

Modifié par Raphael_OD
Lien vers le commentaire
Partager sur d’autres sites

Le 24/01/2024 à 07:31, Raphael_OD a dit :

En complément tu peux trouver sur YT des tutos de Tommy Desrochers sur le SPIFFS de l'ESP32 et la gestion des pages web ça date un peu mais l'essentiel est là. Il y a un peu de java à manger aussi là dedans.

 

Tu peux aussi te créer des outils sympas avec python, je viens de terminer un générateur de config json  saisonnier pour le Cloud Sensor plus besoin de modifier le fichier source.

 

image.png.677348478cc7388c169fff117a433dca.png

 

Bonjour,

 

Désolé de ne répondre que maintenant j'ai été un peu éloigné du forum.

J'avais regardé le tuto de Tommy (et pas que sur l'ESP32 ^^).

Je me suis en train de m'amuser avec les tutos de rapberryme.com comme celui ci:

https://www.raspberryme.com/serveur-web-esp32-afficher-les-lectures-des-capteurs-dans-les-jauges/

histoire d'apprendre à manipuler les fichiers.

J'ai crée un premier sketch qui me crée des graphiques sur la page index et il y a une autre qui renvoie la string nécessaire au driver ascom.

Mais je n'ai pas encore fait la modification du driver car il faut que je trouve le moyen de remplacer la partie connected pour ne pas écouter le port COM mais demandé une adresse ip et envoyer la requete sur l'ESP.

J'ai regardé ton message précédent où tu me donnes la référence.

Je n'ai juste pas eu le temps de faire cela.

 

Je reviendrais certainement te demander conseil d'ici quelques jours ^^

 

  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)
Le 26/01/2024 à 12:01, Raphael_OD a dit :

toujours bien de mettre les liens si toutefois d'autres se lancent. 👍

Aurais tu la gentillesse de partager ton code pour te connecter a l’esp32 avec le driver ascom?

j’ai suivi la video pour la creation du driver ascom wdroof:

 

je souhaite juste comparer la maniere de faire histoire d’en apprendre toujours plus ^^
le reste de la routine est deja faite :)

 

ps: comment interagis tu entre le driver, le firmware et ton logiciel pour les valeurs de k1, k2…

impressionnant :)

Modifié par astrolivier
Lien vers le commentaire
Partager sur d’autres sites

je te dis ça dans le WE ...pour le httpwebrequest...

pour les valeurs K1 etc ... c'est un programme python et une interface avec dearpygui qui génère un json au bon endroit que le pgm principal du mlx relit après un reboot du Pi Zero.

Ça peut se faire aussi en php avec une if web sur le Pi directement etc ...

J'ai expérimenté pas mal de plateformes, au final ESP32 et Pi Zero sont devenus des choix qui s'imposaient car je suis à 50km de mon observatoire

Modifié par Raphael_OD
Lien vers le commentaire
Partager sur d’autres sites

 Public ReadOnly Property IsSafe() As Boolean Implements ISafetyMonitor.IsSafe

     Get
         url = SafetyMonitor.url
         Dim request As HttpWebRequest
         Dim response As HttpWebResponse = Nothing
         request = DirectCast(WebRequest.Create("http://" & url), HttpWebRequest)
         
         response = DirectCast(request.GetResponse(), HttpWebResponse)
         Dim reader = New StreamReader(response.GetResponseStream())
         Dim rawresp As String
         rawresp = reader.ReadToEnd()
         
		 Dim jsonObj As JObject = JObject.Parse(rawresp)
         Dim status = jsonObj.GetValue("Safety").ToString()

         
         If status = "safe" Then
             Return True
         Else
             Return False
         End If
     End Get
 End Property

 

Voici le bout de code en VB qui récupère, sur l'IP de mon  Pi Zero les données du fichier mlx_1_.json , j'ai deux capteurs mlx un orienté vers les flux d'ouest et un au Nord, ce sont les deux zones d'où peuvent débarquer les nuages. Je ne peux pas te détailler tout le code car ce dernier m'envoie aussi des SMS d'alerte dès que Isafe()=False par une sous fonction.

 

Sur un PI il faut donner des droits correctement pour que tu puisse lire le fichier, sur un ESP32 c'est quasi la même tu enregistres ton json dans le SPIFFS /data par exemple.

Chaque plateforme ses avantages et inconvénients pour dvper quelque chose de pratique et fiable.

 

Je pense que ton interrogation est aussi sur le connecteur ASCOM je suppose voici le mien en VB

 

image.png.63ac326225275e8f0d43e7c94148c2bb.png

 

La fenêtre Ascom me sert juste à entrer l'IP et le chemin du fichier json  du cloudsensor afin de le connecter, quand je clique sur OK 

le code de cette sous fonction est passé

 

Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
 If TextBox1.Text = "" Then
     SafetyMonitor.url = "ip par defaut/mlx_1_.json"
 Else
     SafetyMonitor.url = TextBox1.Text
 End If
    Me.DialogResult = System.Windows.Forms.DialogResult.OK
    Me.Close()
End Sub

 

Attention aux fonctions spécifiques du VB.net comme Me.close qui ferme la fenêtre courante.

 

 

 

 

 

Modifié par Raphael_OD
Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Un grand merci.

Avec toutes ces infos je devrais m’en sortir ^^
je ne suis pas encore la de faire un programme python!! Apres c++ il m’a fallu apprivoiser le C#, le html, le javascript entre autre!! Pour les saisons je vais tenter en auto avec les coefficients k6 et k7 dans la variable de correction de température dédié justement au changement de saisons! A voir!!

je vais regarder cela la semaine prochaine :)

encore merci

Modifié par astrolivier
  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Le 28/01/2024 à 10:15, Raphael_OD a dit :

Tu iras vite vers python 😄🤣

Developper ses propres drivers et matos c'est hyper enrichissant.

Bon code ...à suivre.

👍

en effet c'est ultra enrichissant :)

 

je n'hésiterai pas à poster ici la progression :).

 

Un grand merci.

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

@Raphael_OD @Antiath

Bonjour,

 

je viens de finir l'écriture du driver ASCOM pour la partie wifi de l'ESP32 avec son server web.

Pour le moment le projet s'arrête à la diffusion d'une page web rafraichie lorsque l'on recharge la page. Il ne s'agit pas la de faire de la météorologie avec des graphiques avec des données enregistrées dans une base de données mais plutôt comme la possibilité de voir visuellement les conditions quand on a envie sans que cela interfère dans la nuit avec le driver ASCOM.

Ce n'est pas une station météo au sens propre donc.

Pour le moment seuls les visuels sur quelques paramètres sont présents sur la page web. Cela est facilement modifiable par des personnes qui souhaiterait en changer.

Cela ressemble à ceci:

image.png.c5b7710f6c9ed01dc6fd3eb93247c490.png

 

Le driver ascom envoie une requete sur l'ESP32 et l'ESP32 lui répond l'ensemble des valeurs en format json.

 

Dans NINA nous obtenons le même résultat que si nous étions connecté par port COM.

image.png.777baf585203020279bedb10f341f895.png

 

Je vais continuer a bosser un peu sur l'aspect visuel de la page web et faire un autre driver en Safety qui récupérera la valeur safe ou non sur le même fichier json :)

Une fois tout cela fait je publierai les fichiers dans l'espace logiciel du forum principal.

 

Je vais aussi voir pour appréhender python et voir comment gérer cette histoire de k1 K2 etc... sans avoir à recompiler à chaque fois le firmware de l'ESP32!!

je vais potasser ca même si j'avoue que je suis encore loin du compte :)

 

En tout cas gros progrès pour moi, un amusement mais surtout une petite fierté d'avoir réussi ç faire tout cela.

Clairement sans votre aide cela aurait été impossible donc un grand merci.

 

PS: si tu veux me dire comment un programme python peut envoyer des valeurs à un firmware arduino sans passer par un pi (je souhaite être le plus basique possible dans ma boite étanche) je suis preneur :D

 

Olivier

Modifié par astrolivier
ajout du PS
Lien vers le commentaire
Partager sur d’autres sites

J'ai ajouté une option sur la page de l'ESP32 pour modifier en live les valeurs de K1 à K7. En rafraichissant la page on voit les nouvelles valeurs à droites qui sont enregistrées en dur dans le SPIFFS afin de les avoir en dur si jamais l'ESP32 doit rebooter :)

C'est pas du python mais ca reste toujours plus facile que de re uploader le firmware :)

image.png.6e9b0738f1982685ffed6c7a3f8fde50.png

  • Merci / Quelle qualité! 1
Lien vers le commentaire
Partager sur d’autres sites

C'est du beau boulot ! Si tout est stable et fonctionnel c'est une solution très propre...tu peux dans l'arborescence du SPIFFS rajouter un dossier /config pour que le formulaire soit indépendant de ta page d'affichage.

Le MLX pour moi est sur un PiZero j'ai donc accès à pas mal de fonctionnalités pour dev en Python Php etc. et un shell Linux.

Mon SQM est un un ESP32 avec la même philosophie que ci dessus et une page avec une glissière pour modder le gain.

A+

 

Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, Raphael_OD a dit :

C'est du beau boulot ! Si tout est stable et fonctionnel c'est une solution très propre...tu peux dans l'arborescence du SPIFFS rajouter un dossier /config pour que le formulaire soit indépendant de ta page d'affichage.

Le MLX pour moi est sur un PiZero j'ai donc accès à pas mal de fonctionnalités pour dev en Python Php etc. et un shell Linux.

Mon SQM est un un ESP32 avec la même philosophie que ci dessus et une page avec une glissière pour modder le gain.

A+

 

Merci. J'ai pas mal galérer mais à la fin le code est pas si compliqué.

J'ai juste du passer par beaucoup d'étapes d'apprentissage et je ne suis qu'au balbutiment ^^ 

J'ai mis en oeuvre le driver ascom en parallèlle avec la page web ouverte et fais des modifs en live. Tout est très stable. pas de bug rencontré.  exactement ce que j'attendais. Dans le moniteur série je peux voir les nouvelles valeurs je K1 a K7 prisent en compte.

Pour créer un dossier conf je n'y ai pas pensé. 

Je viens de modifier le code pour le faire, c'est pas bête du tout ça :) 

j'ai ajouté la fonction de création du dossier config

C'est sur que le fait que le MLX soit sur un pi augmente le champs des possibilités.

Mais dans mon cas je souhaite alimenter ce boitier étanche d'élétricien avec un petit panneau solaire 5V 250 mAh et une petite batterie. D'où être passé par cette solution ^^

Je dois encore ajouter la fonction du SQM. Il s'agit d'un simple calcul qui convertit les lux et dans mon code le gain est automatique. J'ai le code dans un autre firmware que je n'ai pas encore mis ici.

 

  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

@Raphael_OD

Salut, j'ai un problème, peut être arriveras tu à m'aider:

J'ai fini mon driver et tout fonctionne bien en mode debug.

J'ai même rajouté le SQM.

Comme tout est fonctionnel je me dis que je vais créer l'installateur.

Dans VS je passe de debug à release, et je génère la solution.

Je lance ensuite le script generator et renseigne les différents champs.

Une fois fini Inno s'ouvre et je build la solution.

J'obtiens un beau fichier exe.

Dans VS je nettoie la solution puis je réinstalle proprement le driver à l'aide de l'executable.

Je lance NINA et me connecte à mon ESP32, sauf que la aucune valeur ne fonctionne, tout reste à 0.

Tu aurais une idée? je n'ai eu aucun message de bug ou autre 😕

 

Lien vers le commentaire
Partager sur d’autres sites

il y a 5 minutes, astrolivier a dit :

Dans VS je passe de debug à release, et je génère la solution.

Pas compris l'utilité de ça, le nettoyage pas le mode release ou debug ça c'est ok

il y a 5 minutes, astrolivier a dit :

e lance NINA et me connecte à mon ESP32, sauf que la aucune valeur ne fonctionne, tout reste à 0.

Le log ASCOM et le log NINA devrait signifier quelque chose

 

NINA va se connecter si le driver est propre, ce qui à l'air d'être ton cas mais tes variables sont elles au format attendues par NINA

Attention aussi à la compile 32 ou 64bits
 

Quand tu compiles le src avec VS pas de problème avec NINA je suppose, c'est juste un pb de création des fichiers exe

Modifié par Raphael_OD
Lien vers le commentaire
Partager sur d’autres sites

il y a 45 minutes, Raphael_OD a dit :

Pas compris l'utilité de ça, le nettoyage pas le mode release ou debug ça c'est ok

Le log ASCOM et le log NINA devrait signifier quelque chose

En effet, je ne sais pas pourquoi je fais cela, histoire de faire les choses dans l'ordre, même si inutile ^^

 

il y a 46 minutes, Raphael_OD a dit :

Le log ASCOM et le log NINA devrait signifier quelque chose

J'ai regardé mais il ne semble pas y avoir de soucis. Je vais mettre plus de log.

 

il y a 47 minutes, Raphael_OD a dit :

NINA va se connecter si le driver est propre, ce qui à l'air d'être ton cas mais tes variables sont elles au format attendues par NINA

Attention aussi à la compile 32 ou 64bits

Ba disons qu'en mode debug en effet toutes les valeurs sont reconnues. Et avec la verison arduino nano que j'avais faite pas de soucis.

je comple en x64 et dans les propriétés de la solution j'avais mis aussi x64 (un conseil de antiath à la 1ere page) car lorsque je me connecté NINA refusait et tout à fonctionné après le passage en x64 (et mon pc est en x64 core I5 12400);

je ne vois pas comment essayer autrement.

il y a 50 minutes, Raphael_OD a dit :

Quand tu compiles le src avec VS pas de problème avec NINA je suppose, c'est juste un pb de création des fichiers exe

j'avoue ne pas avoir compris la phrase. Qu'entends tu par src? Si après l'installation de l'executable je regenere un debug les valeurs reviennent.

Pour la création du driver exe je suis la tuto de la vidéo sur WDRoof que j'ai posté à la page 1.

 

Je pense aussi que c'est l'exe qui se fait mal mais je ne sais pas trop.

Je vais voir pour mettre plus de log dans la trace on

Lien vers le commentaire
Partager sur d’autres sites

il y a 25 minutes, Raphael_OD a dit :

src fichier source pardon déformation professionnelle 😅

 

Je ne compile que comme dit plus haut j'ai eu que des problèmes autrement ...

Je ne suis pas sur de comprendre.

tu veux bien me dire comment tu procèdes de ton coté?

Lien vers le commentaire
Partager sur d’autres sites

Petit edit: sur la première version avec le nano j’avais deja un problème de ce type la. Seulement c’était apparu pendant le debug.

je vais essayer en remplaçant les points par des virgules, sait on jamais 😕

Lien vers le commentaire
Partager sur d’autres sites

il y a 17 minutes, Raphael_OD a dit :

Ascom Inno Setup (driver installer generator)  puis Inno setup avec le fichier iss généré.

Ba c’est ce que je fais 😕

je vais essayer ce soir.

c’est enfin le weekend

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

re, je ne me rappelle plus quand j'ai compilé pour le nano cela avait fonctionner aussitot.

Bon, j'ai un problème de tracelog: En mode debug le fichier trace bien tout et dedans je vois chaque variable avec sa valeur.

en mode debug:

image.png.dbafceea27cba949e2097fc86c6a2857.png

 

Après création de l'exe et test je n'ai plus que des "connected" et sans valeurs.... comprends pas.

 

par contre je n'ai pas l'arborescence comme toi: Project\bin\x64\releases 

Moi je n'ai que Project\bin\releases 

 

ma config:

image.png.1f40210f90991d6e72d87ed33e56764b.png

Après avoir générer la release j'ouvre le generateur de script:

image.png.e0b496235026016ef72b4708e3c3863f.png

Inno s'est ouvert et je clique sur compile:

image.png.7132dd6bcd5ae2e730242fb5ccd66d2a.png

 

Dans le repertoire j'obtiens ceci avec l'exe créer dedans:

image.png.d294ddae923a97b62f65093fbf00a41d.png

ensuite dans VS 2019 je clique sur nettoyer la solution en mode release et je recommence en mode debug afin que dans NINA  aucune trace du driver n'existe.

J'installe l'exe et j'ai toujours  des valeurs à 0:

image.png.543802604f51d5e6ece5713e56188a2a.png

 

Et le fichier log en cours d'execution:

image.thumb.png.ded8dbb762f4a8631341e3ffa5b60f35.png

ObservingConditionsDriver.cs

Modifié par astrolivier
driver mis en PJ
Lien vers le commentaire
Partager sur d’autres sites

Je vais recréer complètement un nouveau driver en utilisant le code actuel mais mon log une fois l'exe crée et différent de celui en mode debug. J'ai par exemple créé un logmessage pour afficher la requête web juste après le "connection to esp32" et affiche http://192.168.1.100/ascom. Cela fonctionne en mode debug mais n'apparait pas dans le log après installation de l'exécutable ...

 

Il doit y avoir quelque chose qui m'échappe.

refaire ne devrais pas prendre énormément de temps :)

Lien vers le commentaire
Partager sur d’autres sites

il y a 33 minutes, Raphael_OD a dit :

Le message concernant NewtonSoftJson...tu as bien integré dans ta compilation et tes dépendances ?

Hmmm j’avoue que je ne sais pas trop.

Je l’ai mis dans using en haut du driver mais VS m’a dit que c’etait inutile.

donc je l’ai supprimé, mais avec ou sans meme pb.

il faudrait que je regarde ou pour savoir cela?

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Bonjour à @Raphael_OD et aux autres,

 

je reviens avec de bonnes nouvelles.

Concernant la désérialisation du JSON, j'ai absolument tout essayé sans succès. Le debug fonctionnait avec la librairie json.net mais cela ne fonctionnait pas en mode release.

J'ai du coup essayé avec Newtonsoft.json mais là rien ne fonctionnait.

Bon, après avoir essayé jusqu'à 4h du matin sans succès samedi soir j'ai décidé de revenir aux sources!! je réalise moi même la désérialisation!

J'intègre les bases de mon tout premier code en port COM mais avec des requetes HTTP.

J'intègre un timer et je test!!

le restultat tant attendu s'affiche, et même avec le fichier exe fraichement créé!! que du bonheur!!!

 

Me voilà arrivé au terme de ce driver qui va en appeler d'autres dans pas longtemps ^^

 

Je vais faire quelques petits ajustements (surtout esthéthiques) de la page web. Je vais aussi revoir le code arduino pour qu'il soit plus clair au coummun des mortels et pas juste à son concepteur ^^.

Je dois aussi verifier que l'ajustement des constantes K1 a K7 sur la page web en cours d'utilisation du driver ne pose pas de soucis -> MAJ: j'ai vérifié, c'est OK les constantes peuvent être modifiées à la volée même avec NINA en cours d'execution!! ca c'est cool :), merci le JSON.

Je publierai alors une version définitive :)

 

Un grand merci pour tous vos précieux conseils

 

Modifié par astrolivier
ajout détails suite différents tests
Lien vers le commentaire
Partager sur d’autres sites

  • 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.