Aller au contenu

Messages recommandés

Posté (modifié)

Bonjour, 

je viens de terminer deux drivers ASCOM en VB pour mon matériel personnel sur base d'arduino. Un pour le toit ouvrant (sur la base du "template" dôme), l'autre pour le Safety Monitor (plus simple).

Ma question est la suivante, si quelqu'un à de l'expérience là dessus, existe-t-il un moyen interfacer ASCOM vers un périphérique mais pas connecté en USB  ? 

Autrement dit ASCOM met il quelque part une classe à dispo pour faire des requêtes Client Serveur (du genre GET / PUT sur IP) je ne trouve rien sur leur site.

Merci de votre aide 

A+

 

 

Modifié par Raphael_OD
Posté

Bonjour,

j'ai aussi développé un driver ASCOM pour piloter la mise au point avec moteur pas à pas via une carte Arduino. Mais j'ai un interface utilisateur (clickodrome) en Java qui accède à la carte Arduino d'un côté et au driver Ascom de l'autre via un serveur TCP côté Java et un client TCP côté Ascom (dans le driver). Après avec Java on peut piloter ce qu'on veut et re-router les commandes (put-get) vers le driver Ascom.

Si ça peut te donner des idées.

 

Lionel

 

 

Posté

le client TCP dans le driver ASCOM est un développement perso ?  je suis intéressé,  je vais requêter des plateformes linux (tous les codes sont en place et dispo sur les IP dédiées) mais ça c'est un détail . Je veux juste que ASCOM puisse récupérer les datas nécessaires en TCP (Temp, HUM IR etc ...).

Posté

 

Oui c'est du code perso et depuis que ça marche bien je n'y aie pas retouché. J'ai encore les fichiers sources mais pas l'éditeur VB, la licence a expiré.

 

lionel

 

Posté

 

Oui, dans les deux sens mais l'action vient généralement des logiciels de prises de vues qui gèrent par exemple l'auto-focus. Les requêtes de positionnement du moteur sont envoyées au driver Ascom. C'est là que le client tcp intervient en re-routant la requête vers l'application Java qui elle a la connexion vers Arduino elle même pilotant le moteur. 

L'application Java permet beaucoup de souplesse entre Ascom, Aduino et divers matos non gérés par ascom. C'est en fait un hub logiciel. Bon c'est pas complètement trivial à coder...

 

lionel

Posté

Salut,

 

J'ai fait des drivers ASCOM pour divers périphériques maison (focuser, observing conditions, safety monitor). Ils passent tous par des requêtes API json HTTP vers les périphériques (certains en wifi, d'autres en ethernet). Dans tous les cas j'ai utilisé les librairies standard de connexion réseau (dans mon cas en C#).

 

Tout simplement, quand tu fais une requête au driver ASCOM, il va charger les données (observing conditions vers un CloudWatcher ou vers un équivalent perso, j'ai les 2) ou passer l'ordre (pour le focuser vers un montage maison commandé par un raspberry pi) par HTTP. Quand c'est possible les réponses sont mises dans un cache histoire de ne pas surcharger le périphérique avec des tonnes de requêtes (genre le observing conditions qui ne pas pas changer 10 fois par seconde). En fait dans le cas du observing conditions, les requêtes sont faites vers plusieurs périphériques auxiliaires (une station météo maison sur raspberry, une station d'un voisin pour le vent que je n'ai pas, etc). Tu es juste limité par ton imagination.

 

Quel est ton probleme exactement?

 

Posté (modifié)

Hello cedric

Je ne trouve aucun exemple concret sur le net juste des drivers compilés voilà mon pb. J'ai un Cloudwatcher opérationel qui envoie ses datas sur un RPI via un arduino. J'ai effleuré REST ASCOM mais ?????

De là tout est bien empaqueté sous linux pour les graphes la visu, les seuils.

En gros mes données sont disponibles, stockées (sqlite) sur l'IP du serveur. Comment faire le lien avec ASCOM.

En Port sériel pas de pb par contre c'est bon le CW le Safety mon, le toit roulant. Mais bon dans l'abri j'aimerai éviter des câbles USB bien peu fiables sur des périphériques majeurs en distant.

Je code en VB2017 Community.

 

Modifié par Raphael_OD
Posté

Ok. Je ne peux pas te donner de code VB, la dernière fois que je l'ai utilise c’était en 1994. Par contre, voila en principe quoi faire:

* Cote raspberry:

- Il te faut une API. Ca peut être un truc tout simple genre une page web que tu lis a partir de ton driver ASCOM, ou une vraie API json.  Le json ne mange pas de pain et ça peut être utile plus tard, donc tu peux faire une page qui t'affiche du json en PHP sur le raspberry a partir des données dans ta bse sqlite 5 minutes.  Tu peux utiliser autre chose que PHP (perl, python), utilise ce que tu as utilise pour tes graphes.

 

* Cote ASCOM

- Il faut que tu installes la plateforme de développement ASCOM. Ca te donnera toutes les librairies utiles et toutes les interfaces des drivers avec des exemples.

- Ensuite, quand ton driver reçoit une demande, il va devoir aller charger la page json du raspberry par HTTP (tu dois pouvoir trouver plein d'exemples de ça sur le net).

 

Si vraiment tu es perdu, fais l'API, donne-moi le format, et je peux te faire un driver SafetyMonitor rapidos en C#.

 

Posté

OK pour le RPI JSON je vois comment le faire.

ASCOM dev est installé j'ai fait mon driver de toit.

JSON vers Vb je dois encore creuser...mais ok sur le principe je voulais le cheminement technique va on dit dire ...le code reste le code.

Quand tu dis ton driver reçoit une demande par exemple dans le Driver ASCOM j'ai une function par exemple 

 

Region "ISafetyMonitor Implementation"
    Public ReadOnly Property IsSafe() As Boolean Implements ISafetyMonitor.IsSafe
        Get
            TL.LogMessage("IsSafe Get", "True")
            Return True
        End Get
    End Property

 

J'implémente ici tout le code de requête http --> JSON ?

Si c'est ça pour moi c'est plus clair. Il suffit que toute les 10 min mon JSON soit actualisé sur le serveur PI

Merci de me consacrer du temps cédric.

Posté

Oui c'est la qu'il te faut l'information du raspberry. Apres l'appel a TL.LogMessage il te faut faire une requête pour récupérer les informations de ton raspberry. Tu peux aussi récupérer d'autres informations importantes. Dans mon cas, je vérifie qu'il ne pleut pas, qu'il n'y a pas trop de vent, que le toit est ouvert, que le système a accès a internet (je suis soit en vrai remote, soit en remote dans mon jardin, donc perte d'internet peut être un probleme et je préfère tout arrêter), etc.

 

Il te faudra du cache pour éviter de faire des tonnes de requêtes lentes. Certains programmes vont demander le statut du SafetyMonitor toutes les secondes.

Posté
il y a 39 minutes, cedric_r a dit :

Oui c'est la qu'il te faut l'information du raspberry. Apres l'appel a TL.LogMessage il te faut faire une requête pour récupérer les informations de ton raspberry. Tu peux aussi récupérer d'autres informations importantes. Dans mon cas, je vérifie qu'il ne pleut pas, qu'il n'y a pas trop de vent, que le toit est ouvert, que le système a accès a internet (je suis soit en vrai remote, soit en remote dans mon jardin, donc perte d'internet peut être un probleme et je préfère tout arrêter), etc.

 

Il te faudra du cache pour éviter de faire des tonnes de requêtes lentes. Certains programmes vont demander le statut du SafetyMonitor toutes les secondes.

Beaucoup de chinois pour moi sur cette page :be:

mais ce que tu décris dans ce message est exactement ce que j'aimerais faire :)

 

J'ai un Raspberry Pi pour la camera allsky, je viens d'y installer un anémomètre, et bientôt j'y installerai un détecteur de pluie.

Le toit est contrôlé par un arduino branché sur l'ordinateur, la monture est déjà sous ASCOM

Je suis à 99% du temps en remote, mais là je commence à avoir tout ce qu'il faut pour automatiser la gestion de l'observatoire.

 

Le seul problème est pour interfacer tout ça, j'avais commencé à écrire un driver ASCOM pour le toit dans Visual Studio 2017, après avoir installé tout le kit de développeur,

mais j'avais des erreurs bizarres et j'avais fini par laisser tomber...

 

 

Est-ce que ça serait possible de voir ton code pour le toit Raphael ?

 

 

Posté (modifié)

Xili, je n'ai fait que implémenter la lecture d'une donnée série dans les fonction OpenShutter et Closeshutter. Ces fonctions envoient un code à l'arduino en données série.

 

Public Sub OpenShutter() Implements IDomeV2.OpenShutter
        TL.LogMessage("OpenShutter", "Shutter has been opened")
        objSerial.Transmit("O")
        domeShutterState = True
    End Sub

Sous SGP ça fonctionne très bien.

Les tutos de Tom How sont très bien faits et fonctionnent avec VB2017 sur le site ASCOM dev.

 

 

Modifié par Raphael_OD
Posté (modifié)
Il y a 16 heures, cedric_r a dit :

Oui c'est la qu'il te faut l'information du raspberry. Apres l'appel a TL.LogMessage il te faut faire une requête pour récupérer les informations de ton raspberry. Tu peux aussi récupérer d'autres informations importantes. Dans mon cas, je vérifie qu'il ne pleut pas, qu'il n'y a pas trop de vent, que le toit est ouvert, que le système a accès a internet (je suis soit en vrai remote, soit en remote dans mon jardin, donc perte d'internet peut être un probleme et je préfère tout arrêter), etc.

 

Il te faudra du cache pour éviter de faire des tonnes de requêtes lentes. Certains programmes vont demander le statut du SafetyMonitor toutes les secondes.

Quand tu parles de cache tu veux dire prévoir cela en programmation  là va falloir que je creuse sérieusement je n'ai pas la culture MS .NET la dessus ?

J'ai ça en tête sur mon RPI générer un fichier JSON de données que j'appelle en VB par une http request puis je parse les données j'ai bon ?

le statut du Safety Monitor je vais demander sur le forum SGP quel est le délai d'actualisation...

Pour la perte de connexion, j'ai prévu un relais contrôlé par GSM (4G) pour au moins fermer le toit en mode forcé...

Merci !

Modifié par Raphael_OD
Posté

C'est ça tu as la bonne idée. 

 

Pour le cache, pas besoin de quelque chose de compliqué, garde juste les valeurs dans des variables et réactualise-les ment toutes les minutes. 

Posté (modifié)

Hello, 

 

bon j'ai avancé en VB.NET  et le driver me récupère correctement le paramètre Safe dont a besoin l'application (SGP, ou autre compatible ASCOM) 

j'ai mis en place un script sur mon RPi qui par cron actualise un fichier json toutes les min. C'est un peu touffu mais ça marche.

le json me récupère quelques autres data comme suit.
{"date":"2019-02-19 14:32:56","ambient":13.79,"object":13.49,"status":UnSafe,"cover":Cloudy}

Le Park Telescope et Toit fonctionne sur la table avec Sequence Generator Pro, il me reste quelques sécurités à poser dans le code en cas indisponibilité réseau. 

 

Pour le driver "Observing Condition", je pense faire de même en m'appuyant sur aussi une extraction et un JSON. Le RPI reste central et l'arduino s'occupe du "hardware".

 

As tu procédé de même ?

 

Dernière question comment peut on ajouter un controle personnalisé sur une feuille dans le driver afin de régler quelques seuils. Notamment le calcul différentiel sur le capteur Tempé IR. J'ai tenté mais ça ne marche pas terrible ;)

 

A+

R@ph

 

PS : xili contacte moi en MP si tu as un bout de code pour commencer ;)

 

 

 

Modifié par Raphael_OD
Posté

Oui j'ai fait comme ça. Dans mon cas il y a plusieurs pi impliqués et quelques sources extérieures (par exemple pour le vent). 

 

C'est le pi central qui récupère toutes les informations qui fait les calculs du genre température ambiante-ciel. 

 

Les seuils sont gérés par mon programme de contrôle de télescope (ccdciel) pour ObservingConditions. Par exemple en cas de nuages il pause les photos. 

 

Dans le cas du SafetyMonitor, le booléen est généré par le driver ascom lui-même en function des données qu'il reçoit du driver ObservingConditions (donc le programme client se connecte au driver ascom qui lui-même se connecte à l'autre driver ascom), et de quelques choses en plus (par exemple vérification de l'accès à internet). 

Posté

Oui, tout passe en string, mais elles sont converties en double dans l'application cliente et la c'est important que les 2 cotés utilisent soit le point soit la virgule. Il est bien possible que ça soit différent.

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.