connexions des donnees - arthur-expeditions/pypilot-workbook-fr GitHub Wiki

Il existe deux types différents de connexions de données dans pypilot :

  • Les connexions internes
  • Les connexions externes

Connexions de données internes

Auparavant, lorsque nous avons parlé des quatre interfaces utilisateur, nous avons mentionné ce système de tableau noir, que tous les modules logiciels de pypilot utilisaient pour la communication interne et qui était utilisé par les interfaces pour interagir avec le système pypilot. Parlons un peu plus de ce système, puis oublions-le.

Si vous regardez sous le capot, ce système de tableau noir est composé d'un pypilotServer et d'un pypilotClient. Entre les modules logiciels, une communication interprocessus est utilisée ; entre les interfaces utilisateurs et pypilotServer, c'est une connexion JSON TCP socket sur le port 23322. Les données stockées dans pypilotServer sont à la fois volatiles et persistantes : elles contiennent des valeurs d'assiette et de cap qui changent à 10 Hz, mais aussi des éléments de configuration qui sont presque fixes. Le pypilotServer stocke les valeurs périodiquement dans un fichier, c'est ainsi qu'elles survivent aux redémarrages.

Pour ceux qui ont utilisé ou étudié pypilot auparavant, ce mécanisme s'appelait signalk et il communiquait sur un port différent. Cela a été modifié quelque part en 2020, entre pypilot 1.x et 2.x, et c'est pourquoi les anciens clients de l'interface utilisateur ne fonctionneront plus avec un nouveau pypilotServer, et vice versa.

Mais pour conclure cette partie : ce mécanisme est uniquement utilisé pour échanger des données entre les modules logiciels de pypilot en interne et pour le fonctionnement de l'interface utilisateur. C'est un système pypilot fermé et il n'est pas censé être utilisé ailleurs.

Données externes

Les connexions de données externes concernent les données nautiques, comme le cap, les angles de vent, la vitesse, etc. Pour faciliter la compréhension, pensez aux données NMEA. Pypilot peut utiliser, ou consommer des données, mais il peut aussi en produire.

Données produites par pypilot :

  • Cap magnétique
  • Tangage
  • Gîte
  • Autres

Données consommées par pypilot :

  • Relèvement du waypoint
  • Erreur de croisement
  • Angle du vent apparent
  • Vitesse au sol
  • Vitesse du vent apparent.

Au minimum, pypilot peut se contenter de consommer ou de produire aucune donnée. Il peut simplement maintenir le bateau sur un cap en utilisant le compas de son propre IMU.

Les informations de cap magnétique, de tangage et de gîte que l'IMU produit pourraient être utiles à d'autres consommateurs sur le bateau, elles peuvent donc être mises à disposition.

Les données nautiques consommées par pypilot ont déjà été abordées dans le texte précédent, elles concernent les modes de pilotage automatique 'GPS/Track', 'Wind' et 'True Wind'. Si vous fournissez ces données à pypilot, ces modes de pilotage automatique deviennent disponibles et vous pouvez les sélectionner dans l'interface utilisateur.

Connexions des données externes

Les données externes peuvent être transférées de 2 façons :

  • messages NMEA0183
  • messages SignalK

Messages NMEA0183

Les messages NMEA0183 sont traités par :

  • le port TCP 20220
  • les interfaces série

Le port TCP 20220 fournit et consomme des messages NMEA. Faites simplement un telnet sur ce port et vous verrez ce que cela signifie :

pi@openplotter:~ $ telnet localhost 20220
Connecté à localhost.
$APXDR,A,1.743,D,PTCH*7A
$APXDR,A,0.277,D,ROLL*6B
$APHDM,21.297,M*0C

Dans l'extrait ci-dessus, on peut voir comment on reçoit de pypilot le tangage, le roulis et le cap magnétique.

On peut également envoyer des données NMEA0183 sur le port 20220. Les messages suivants sont reconnus :

  • APB (relèvement du waypoint et erreur de croisement)
  • WMV (angle du vent apparent et vitesse du vent apparent)
  • RMC (vitesse par rapport au sol, lat/lon, et horodatage gps)
  • RSA (angle du gouvernail)

Pour le mode de pilotage automatique GPS/Track, Pypilot a besoin des messages APB. Pour le vent apparent, il a besoin des messages WMV. Et enfin pour le vent réel, les messages WMV et RMC sont utilisés.

Pour interfacer ces messages NMEA vers et depuis pypilot, vous pouvez configurer votre multiplexeur à cet effet. Il existe plusieurs options : utiliser un multiplexeur matériel, OpenCPN Data Connections, kplex ou signalk.

Une option spéciale est la case à cocher Forward NMEA dans le plugin OpenCPN pypilot. Si vous la cochez, toutes ces phrases NMEA sont automatiquement synchronisées entre OpenCPN et pypilot. Aucune question n'est posée. C'est très bien, maintenant vous connaissez le contexte, n'est-ce pas ?

Les interfaces série consomment également des messages NMEA. Par exemple, vous pouvez brancher une clé NMEA0183-to-USB sur votre machine, reliée une girouette. Le noyau linux l'enregistrera comme une interface série et pypilot la scannera, la sondera en 4800 et 38400 bauds, puis utilisera ses informations. Ceci s'applique également à l'interface UART native si elle est libre. Pour ce qui est de fournir des messages NMEA sur des interfaces série, cela ne semble pas être fait.

Messages SignalK

Dans un premier temps, établir ces connexions de données externes avec des messages NMEA sur le port TCP 20220 était la seule option. Récemment, une option plus moderne est devenue disponible : il s'agit de signalk. Je vous expliquerai plus tard ce qu'est signalk, mais si vous l'avez configuré correctement, toute la communication des données nautiques est automatiquement prise en charge. Du point de vue de pypilot, c'est une configuration zéro. Du point de vue de signalk, vous devez vous assurer que mdns est activé dans les paramètres du serveur et vous devez approuver la demande d'accès dans le menu de sécurité de signalk.


Les étapes >>>