dimanche 22 février 2015

FlightSimPanels, des boutons de commandes c'est bien; mais avec des instruments de bord, c'est encore mieux !

FlightSimPanel :


Ca y est, j'ai chopé la cockpitose. Pas sûr que j'en guérisse.
Effectivement, en utilisant mon premier prototype (cf article cockpit-maison-pour-xplane ), il m'est vite devenu désagréable de devoir regarder deux tableaux de bord en même temps; le virtuel et le réel. En baissant dans xplane le tableau de bord, je me suis dit : OK, c'est ça qu'il me faut.



Ainsi, je me suis en mis en tête de trouver une solution 'cheap and fun' consistant à déporter les instruments (badin, vario, altimètre, etc ) sur un autre écran, ou une tablette, que je fixerai au milieu du cockpit réel.

Pour déporter sur un autre écran les instruments d'Xplane, il existe à ma connaissance deux solutions possible. Soit créer un tableau de bord Xplane et l'affiché avec le logiciel sur un autre écran. Soit utiliser FlightSimPanel.


Grâce à la discussion  "Déporter les instruments de vol sur un autre écran" et de l'expérience de Daniel_L du forum d'x-plane, j'ai pu constater qu'il existe un projet nommé FlightSimPanel.



Flight Simulator Panels, conçu par Davide Alberto Molin est basé sur la technologie node.js. Cette technologie permet de créer des applications 'temps réel' qui peuvent être directement jouées depuis un navigateur internet. Oui, vous avez bien lu; tout ce qui possède un écran et est connecté à un réseau peut donc faire office d'affichage d'instrument pour xplane.

Et bien allons-y !

Pré-requis : en ce qui me concerne, je suis sur un ordinateur ayant comme système d'exploitation Linux basé sur la distribution Ubuntu 14.04 LTS. Pour les autres OS grand public tels que Windows ou Mac, la solution devrait également fonctionner.
Avoir installer le client 'Git' pour télécharger les sources du programme avec l'instruction éponyme.


Installation de NodeJs


Il nous faut donc installer NodeJS. pour cela, il faut suivre les instructions de la documentation fournie sur le site : https://github.com/nodesource/distributions. (pour Windows ou Mac, aller plutôt là : http://nodejs.org/download/ )

Les instructions consistent en :
- ajouter un nouveau dépôt dans les dépôts de paquets Apt pour avoir la 'version' la plus récente de nodeJs.
- installer nodeJs via le gestionnaire de paquets 'aptitude'.
- installer le gestionnaire de paquets nodesJS : NPM. noter que 'npm' est déjà présent en installant nodeJs mais il faut absolument le mettre à jour en faisant la commande : sudo npm install npm -g.

En ce qui me concerne l'installation s'est bien passée.
voici un résumé des commandes shell :
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo aptitude update
sudo apt-get install nodejs
sudo npm install npm -g


Installation de FlightSimPanel :

Il faut 'télécharger' les sources du programme de Davide Alberto Molin. Pour comprendre ce que l'on fait, lire également la documentation : https://github.com/dmolin/flightSimPanels.
Ainsi, créons un répertoire 'FlightSimPanel' pour y mettre les sources.
mkdir flightSimPanels
cd flightSimPanels
git clone https://github.com/dmolin/flightSimPanels.git
Ensuite, allons dans le répertoire flightsimPanel créé par git et compilons à la sauce NodeJs le programme :
cd flightSimPanels
npm install

puis installons le module nodeJs requis par FlightSimPanel :
sudo npm install -g grunt-cli

Paramétrage réseau dans Xplane :


Lancer Xplane, puis aller dans le menu : 'Settings' -> 'Data Input/Output'
Dans l'onglet  'réseau' : adresse localhost : 127.0.0.1, port 49100

Dans l'onglet 'Data', cocher les première colonnes des items x,x,x,x,x,x :





Lancement du programme FlightSimPanel:


Et maintenant, y'a plus qu'à voir si cela fonctionne. Ouvrir un terminal et se placer dans le répertoire de flightSimPanel :
cd /...../...../...../FlightSimPanel
puis taper
grunt
ou bien, si l'on veut se passer de grunt ( car il ne fait que vérifier le code avec jshint, ..enfin d'après ce que j'ai cru comprendre en lisant le fichier Gruntfile.js ), taper

nodejs ./src/server

Une fois le nodejs lancé et le serveur en route, il ne reste plus qu'a se connecter au serveur depuis n'importe quel appareil en tapant l'adresse suivit par le numéro de port d'écoute (ici le port 3000).
Pour connaitre l'adresse de votre serveur, regarder ce que retourne la commande ifconfig (ou ipcondif sous windows). Ou encore l'indication fourni par xplane visible dans 'Settings' -> 'Data Input/Output'.


Exemple de connexion depuis le même poste hébergeant le serveur nodejs   :  http://localhost:3000/


Pour aller plus loin :

petit tour dans les arcanes du code source de FlightSimPanel ....

Dans les sources du programme fourni par Davide Alberto Molin. le repertoire "datarefs" nous fournis une information importante concernant les options à mettre en oeuvre dans Xplane au niveau 'Settings' -> 'Data Input/Output', onglet 'data'. En effet, dans ce répertoire 'datarefs' se trouvent des répertoires nommés par des numéros qui correspondent aux numéros de ligne des 'data' à cocher dans xplane.

Le "point d'entrée" du programme est le fichier 'server.js' situé à la racine du répertoire source 'src'. Dans ce fichier, l'on retrouve le numéro de port sur lequel se connecter pour recevoir les données d'xplane, à savoir dans notre cas le port numéro 49100. Et aussi le port sur lequel les clients web viennent se connecter, à savoir le port numéro 3000. Donc si ces numéros de ports ne conviennent pas, libre à chacun de nous de les changer.

Taille des instruments : pour gérer la taille des instruments, il faut modifier le fichier src/public/stylesheets.
dans la section '.gauge', modifier les valeurs des pourcentages affectées aux paramètres 'width', 'min-width', ...

exemple:
.gauge {
    float: left;
    /*
    width: 310px;
    height: 310px;
    margin-right: 20px;
    */
    width: 20%;
    min-width: 100px;
    margin-right: 1%;
    padding: 1px;
    position: relative;
    overflow: hidden;
}

(remarque: le texte placé entre les marques /* et */ n'a pas d'influence sur le programme puisque ces marques sont des marques de commentaire.)


Idée pour la suite :

Ce serait très intéressant de pouvoir créer 3 pages web.
Une page web pour les instruments de pilotage (vitesse, horizon, alti, bille, vario).
Une page web pour les instruments de navigation (VOR, ADF, affichage freq radio et nav)
Une page pour les paramètres moteur (compte tour, pression essence, pression huile, température...)

Ainsi, avec trois périphériques (tablette, smartphone, ...) on aurait tous les instruments à disposition, regrouper par famille et les écrans pourraient être placer où bon nous semble.
Bref va falloir se retrousser les manches....