Piloter une station météorologique avec une Raspberry Pi3 (image ENS-IFÈ) et participer au réseau OpenMetEdu (optionnel)

L'image repose sur le travail de l'utilisateur drtyhlpr consultable ici : rpi23-gen-image et sur le logiciel libre weewx. Les modifications effectuées pour les besoins du projet se trouvent sur le site g-vidal et les instructions pour construire soi-même l'image sont sur mon blog.

Motivations

Le projet "Météo et Climat, tremplin pour l'enseignement des sciences" se développe selon trois axes principaux pour atteindre les objectifs fixés :

  • Un volet d'accompagnement de l'utilisation de microcapteurs météorologiques pour enseigner le codage et le traitement de mesures météorologiques
  • Un volet d'accompagnement de la mise en oeuvre d'une station météorologique du commerce dans un établissement scolaire puis du partage des données sur un territoire local, régional, national ou international dans le réseau OpenMetEdu
  • Un volet de formation / autoformation des formateurs et des enseignants sur la météorologie et les sciences du climat.

Ces trois axes concourrent d'une part à la stimulation de l'appétence pour les sciences des jeunes et d'autre part à la généralisation de l'utilisation de la météorologie et des sciences du climat dans l'enseignement secondaire. Ce second objectif étant en ligne avec l'article 12 de l'accord de Paris sur le changement climatique.

Ce document s'intéresse à la mise en oeuvre d'une station météorologique de la façon la plus simple possible en utilisant une Raspberry Pi3 et une station météorologique (TFA Meteotime Duo dans notre exemple mais toutes les stations météo connues par le logiciel Weewx sont éligibles en modifiant seulement le nom de la station dans le fichier de configuration). Outre l'eploitation locale de la station météo ce document s'intéresse aussi au partage des données dans un cadre de données ouvertes (opendata).


Remerciements

  • Rectorat de Lyon en particulier Mme Corinne benucci Déléguée académique du numérique
  • Grand Lyon Métropole Mme Nathalie Vernus-Prost Administrateur général des données
  • DSI du Rectorat de Lyon en particulier M. Stéphane Vigo
  • DSI du Grand Lyon
  • Carole Larose, Éric le Jan et Charles-Henri Eyraud

Sommaire

  1. Principes de construction de l'image de la Raspberry Pi3

    a. Contraintes liées à l'organisation des établissements partenaires

    b. Contraintes liées à la sécurité

    c. Contraintes logicielles

  2. Récupération et installation de l'image sur une microSD

    a.Utilisation d'une distribution "live" de linux comme ordinateur de support

    b. Préparation de la micro-SD

    c. Téléchargement de l'image mise à disposition

    d. Préparation de la micro-SD

  3. Configuration de l'image AVANT l'insertion dans la RaspberryPi

    a. Complément de la configuration réseau

    b. Complément de la configuration du pare-feu

    c. Complément de la configuration des connexions à distance

    d. Complément de la configuration de la base de données

    e. Complément de la configuration du logiciel Weewx


Téléchargements

  1. logiciel weewx
  2. Scripts modifiés de création de l'image
  3. SD Card Formatter)
  4. Raspberry Pi3 Weewx
  5. Win32Disk
  6. Sites des images "bbootables" live-debian

Les systèmes pour Raspberry Pi proposées ici sont issues du projet "Météo climat tremplin pour l'enseignement des sciences" et à ce titre ont été construits pour répondre aux exigences du projet. Cela induit quelques particularités énumérées ci-dessous qui correspondent aux choix de configuration effectués. Tout usager peut sans problème s'accomoder de ces choix mais il est parfaitement possible pour un utilisateur plus avancé d'utiliser ce document comme trame et de modifier les choix effectués sans altérer le caractère opérationnel des outils fournis, il est cependant nécessaire d'avoir des connaissances en GNU/linux pour maîtriser certaines modifications de configuration. La description de l'utilisation des images se trouve au paragraphe 2.

1. Principes de construction de l'image de la Raspberry Pi3

Le processus de construction de l'image pour raspberryPi3 est détaillé dans cet article du blog qui décrit la démarche suivie et permet à un usager avancé de construire une image ex-nihilo avec des préférences différentes de celle du projet Tremplin. L'image proposée possède des particularités dans trois domaines : * L'adressage en IP fixe reprenant les caractériqtiques des établissements partenaires * L'existence d'un pare-feu un peu plus développé du fait de l'exposition des données par cette machine * Une installation et pré-configuration du logiciel weewx pour piloter la station météorologique

1.a Contraintes liées à l'organisation des établissements partenaires

L'objectif de mise en commun de données entre établissements scolaires et avec le territoire de la métropole lyonnaise a requis une concertation et une collaboration avancée des 3 entités. Les dispositions suivantes ont été prises: * mise en place d'VLAN dédié aux activités de ce projet (il pourra être réutilisé pour d'autres projets pédagogiques et de science participative) * attribution d'une IP fixe dont l'adresse est fixée par la DSI du tectorat de Lyon * Mise en place de ports de communication et de redirection sur ces ports pour gérer les flux d'échange de données La configuration de la raspberry impose l'utilisation d'une IP fixe et ne permet pas le DHCP

1.a Contraintes liées à la sécurité

La Raspberry Pi sert de trait d'union entre la station météorologique, les classes, les enseignants l'IFÉ ENS de Lyon et le Grand Lyon métropole. De plus les données mesurées peuvent être exposées sur le web par la station. cet ensemble de fonctions requiert un peu d'attention pour la protection des données et la protection de la machine elle-même. Il a été convenu de mettre en place un pare-feu aussi précis et maîtrisé que possible, pour faciliter la manipulation de ce pare-feu le logiciel firehol a été utilisé car il permet de réaliser des filtrages assez avancés par l'intermédiaire d'un fichier de configuration _relativement intelligible_La configuration proposée : * ouvre seulement les ports sélectionnés à un ensemble limité de machines du réseau validées * ne permet d'accéder qu'à une partie des services disponibles sur la machine

1.a Contraintes logicielles

Outre les choix logiciels réalisés lors de la création de l'image (cf. cet article du blog) il a été décidé de piloter la station météorologique à l'aide du logiciel weewx. La station la plus répandue dans les collèges ainsi que le matériel financé par le GrandLyon est la station météo TFA Meteotime Duo c'est elle qui a été utilisée pour réaliser et tester les configurations. Le logiciel fonctionne par défaut avec la base sqlite installée par défaut dans les distributions GNU/linux et cela a été conservé. Weewx propose aussi des pré-configurations pour une base mariadb locale et à distance, ces deux possibilités sont roposées dans la configuration.

2. Récupération et installation de l'image sur une microSD

L'image proposée est homologue de celles proposées sur les sites raspbian, noobs, etc... Elle doit donc être téléchargée et copiée sur une micro-SD qui sera ensuite insérée dans la RaspberryPi. Afin de faciliter les interventions sur le système d'exploitation de la RaspberryPIi (GNU/linux) nous proposons dans un premier chapitre d'utiliser une distribution "debian live" sur une clef USB qui fonctionne sans l'altérer sur tout ordinateur disposant d'un port USB et d'une connexion filaire (on ne peut pas garantir que toutes les cartes WIFI fonctionnent à cause de logiciels propriétaires imposés par les constructeurs qui ne peuvent pas être intégrés dans la distribution libre de linux et doivent être chargés individuellement par les udagers depuis le réseau pour activer le wifi).

2.a Utilisation d'une distribution "live" de linux comme ordinateur de support

Pour éditer les fichiers de configuration de la future Raspberry Pi afin de fournir les paramètres propres au réseau où elle sera installée il est possible de démarrer son ordinateur avec un ssytème d'exploitation identique à celui de la raspberry sans l'installer ni toucher quoi que ce soit de son ordinateur en utilisant une distribution dite "live" téléchargée sur une clef USB. La procédure est décrite dans de nombreux sites, nous ne la reproduirons pas nous fournirons quelques précisions ou astuces. Il est possible de faire cette procédure avec une raspberry opérationnelle connectée au réseau et à un écran/clavier/souris.

Télécharger une image iso depuis le site live-debian. (plusieurs variantes sont proposées, elles sont équivalentes d'un point de vue formel mais proposent des interfaces variées que vous pouvez choisir en fonction de vos goûts (lxde et xfce sont les plus légères, gnome est la version standard et kde la plus riche).

Copier avec la commande dd if=debian-live-9.1.0-amd64-gnome.iso of= /dev/sd? bs=8M sous GNU/linux ou en utilisant l'outil win32Disk (cf. Ce blog pour plus de détails si besoin).

En bootant sur cette clef vous disposez maintenant d'un ordinateur GNU/linux totalement opérationnel qui va vous permettre d'explorer la carte SD qui servira de système à la Raspbery Pi et d'éditer tous les fichiers nécessaires avec l'éditeur simple gedit, comme les fichiers sont des fichiers de configuration du système il faut utiliser la commande privilégiée sudo :

sudo gedit nom du fichier

Lancer un explorateur de fichiers de puis le menu en haut à gauche et parcourir la hiérarchie des fichiers de la SD jusqu'au fichier souhaité (le chemin est donné dans les paragraphes ci-dessous), glisser déposer le fichier depuis l'explorateur de fichiers jusqu'à l'éditeur gedit. Pour vérifier le nom d'un fichier (et son chemin absolu) il est possible d'afficher dans le navigateur de fichiers les propriétés du fichier choisi.

2.b Préparation de la micro-SD

Si vous souhaitez utiliser une carte SD préformatée pour la RaspberryPi, il faut tout de même la formater. L'image est de grande taille et pour la copier il est souhaitable mais non obligatoire d'utiliser un logiciel spécialisé comme bmaptools.

Formater la SD linux

Il est toujours prudent de "nettoyer" sa micro SD et de la formater proprement avant de commencer. Sous GNU/linux la commande pour faire ce travail est gparted qui propose une interface graphique et votre SD devrait apparaître spontanément sous un nom de type mmcblk? dans le menu déroulant. Attention, cette commande est extrêmement puissante, veillez bien à traiter uniquement votre SD (et surtout pas tout autre disque ou partition.). Formater votre SD en type fat32 avec une seule partition sur toute la surface disponible.

sudo gparted

À l'aide des menus déroulants effacer les partitions s'il en existe, puis sélectionner toute la surface qui doit apparaître en un seul bloc et ajouter une partition primaire type fat32. Exécuter l'opération et quitter gparted.

Formater la SD (autre OS)

Windows ne reconnait pas et ne sait pas traiter les systèmes de fichiers ext4, il est donc nécessaire d'installer sur votre ordinateur un logiciel fournissant cette fonctionnalité, par exemple SD Card Formatter) voir image ci-dessous.

SD Card Formatter

2.c Téléchargement de l'image mise à disposition

L'image raspberry PI3 se trouve sur le serveur de media du projet tremplin des Sciences. Les chiffres YYYY-MM-DD représentent la date de création à paramétrer en fonction de ce qui est disponible en ligne pour obtenir ce numéro se connecter avec un navigateur web à l'adresse Raspberry Pi3 http://mediaserv.climatetmeteo.fr/images/RaspBerry/DebianStretchPi3. Pour télécharger l'image il suffit de copier coller le nom de l'image dans la barre d'adresse et le téléchargement sera lancé, ou alors utiliser la commande linux wget ou curl.

wget http://mediaserv.climatetmeteo.fr/images/RaspBerry/DebianStretchPi3/YYYY-MM-DD-debStretchW-Pub.bmap 
wget http://mediaserv.climatetmeteo.fr/images/RaspBerry/DebianStretchPi3/YYYY-MM-DD-debStretchW-Pub.img.xz  

2.d Préparation de la micro-SD

Copier l'image téléchargée sur la microSD (linux)

L'image est en format compressé (.xz), si on utilise l'outil bmaptool proposé ici il n'est pas nécessaire de la décompresser pour la copier on utilise donc :

  • le fichier avec l'extension bmap qui est un fichier de configuration permettant une copie accélérée par l'utilitaire bmap-tool (ce fichier est inutile si vous utilisez un sytème d'exploitation moins puissant ne sachant pas exploiter le descriptif de l'image)

  • l'image compressée proprement dite (de l'ordre de 7.5Go) avec l'extension .img.xz

L'utilitaire bmap-tools utilise la description de l'image et raccourcit le temps nécessaire en ne copiant pas les blocs vides et en optimisant la taille des blocs copiés. Ci-dessous exemple de trace de la copie.

sudo bmaptool copy --bmap YYYY-MM-DD-debStretchW-Pub.bmap YYYY-MM-DD-debStretchW-Pub.img.xz /dev/mmcblk0

bmaptool: info: block map format version 2.0
bmaptool: info: 1843200 blocks of size 4096 (7.0 GiB), mapped 1814528 blocks (6.9 GiB or 98.4%)
bmaptool: info: copying image '2017-08-02-debStretchW-Pub.img.xz' to block device '/dev/mmcblk0' using bmap file '2017-08-02-debStretchW-Pub.bmap'
bmaptool: info: 100% copied
bmaptool: info: synchronizing '/dev/mmcblk0'
bmaptool: info: copying time: 9m 27.0s, copying speed 12.5 MiB/sec

Copier l'image téléchargée sur la microSD (autre OS)

Sous windows la manipulation d'images ISO n'est pas non plus possible en standard , télécharger le logiciel Win32Disk puis l'utiliser pour recopier l'image téléchargée sur la carte SD (voir image ci-dessous):

Logiciel Win32diskmanager

Redimensionner la taille utilisable à la taille de la micro SD (optionnel)

L'image n'occupe que la place nécessaire à contenir le système et les fichiers de base (avec un peu de marge pour les étourdis...), il est souhaitable dès que possible d'augmenter la taille de la partition à la taille totale de la microSD pour avoir plus de place pour les données. Suivant vos habitudes et votre maîtrise vous pouvez si vous le souhaitez créer plusieurs partitions à ce moment (Ne vous engagez pas sur la création de plusieurs partitions si vous ne savez pas le faire car il faudra aussi modifier le fichier de configuration du système /etc/fstab en conséquence pour que cela fontionne). Pour redimensionner la partition deux procédures sont possibles :

En utilisant une autre machine linux

On utilise une fois de plus gparted toujours avec les mêmes recommandations de prudence. Utiliser les menus pour étendre la taille de la partition ext4 à tout l'espace disponible sur le support.

sudo gparted

Dans certains cas des problème peuvent apparaître avec des SD redimensionnées avec gparted (vous trouverez sur le web une abondante littérature sur les performances et les faiblesses des différentes micro-SD si vous n'avez pas choisi une SD "bas de game" vous ne devriez pas être concernés par ces problèmes, mais ... on ne sait jamais). Dans d'autre cas la version de gparted un peu trop ancienne ne gère pas le paramètre metadata_csum et ne parvient pas à redimensionner la partition racine. Dans ces deux cas gparted est inutilisable et la solution ci-dessus est inaplicable et la solution ci-dessous utilisant la Raspberry Pi est obligatoire.

Pour éviter d'utiliser gparted et l'ordinateur tiers il est possible de redimensionner la partition racine directement sur la Raspberry Pi fonctionnant avec la nouvelle image. Pour cela une fois la Raspberry Pi opérationnelle et démarrée utiliser la commande

sudo fdisk /dev/mmcblk0
  • Taper m pour voir la liste des commandes (juste pour information)
  • Taper p pour voir la liste des partitions disponibles, normalement il y en deux

    • une FAT : /dev/mmcblk0p1 * 2048 133119 131072 64M c W95 FAT32 (LBA)
    • une linux : /dev/mmcblk0p2 133120 62517247 62384128 29,8G 83 Linux
  • Taper ensuite

    • d puis
    • 2 puis
    • n puis
    • p puis
    • 2 puis
    • accepter les valeurs par défaut qui correspondent à la taille effectivement disponible sur la cartes SD et écrire N pour "remove signature",
    • pour finir taper w.

Taper ensuite sudo reboot puis :

sudo resize2fs /dev/mmcblk0p2
sudo reboot

Après ce second redémarrage la racine du système occupe maintenant la totalité de l'espace disponible sur la SD.

3. Configuration de l'image AVANT l'insertion dans la RaspberryPi

Les choix et contraintes exposés dans le premier chapitre ont conduit a proposer une image qui ne peut pas démarrer directement afin de permettre à l'usager de compléter la configuration en fonctions des paramètres de son environnement personnel. Pour terminer cette configuration il est nécessaire de se munir :

  • Des paramètres réseau
    • adresse IP fixe de la RaspBerry
    • adresse de la passerelle du réseau sur lequel elle sera installée
    • adresse du DNS du réseau sur lequel elle sera installée
    • adresse MAC de la Raspberry (optionnel seulement si elle est déjà connue)
  • Des paramètres du pare-feu
    • adresses des machines ou plages de machines qui seront autorisées à se connecter à la Raspberry station Météo
    • ports qui devront être ouverts pour laisser passer des informations
  • Des paramètres du serveur de connection sécurisée à distance (ssh)
    • port utilisé pour les connections à distance
  • Des paramètres de la base de données
    • port utilisé par la base locale mariadb
    • nom de l'utilisateur local de la base
    • mot de passe de l'utilisateur de la base
  • Des paramètres de la station
    • localisation de la station
    • choix de la base utilisée
    • port utilisé
    • utilisateur
    • mot de passe

Notre objectif est de modifier les paramètres de ces fichiers en fonction de votre configuration locale. Seule la modification des paramètres réseau est impérative pour pouvoir se connecter à la Raspberry Pi depuis une autre machine, les autres modifications sont toutefois nécessaires pour mettre en oeuvre le pare-feu, filtrer les connections entrantes, utiliser la base de données et exploiter la station météo.Dans chacun des paragraphes suivants le fichier à modifier est repéré en début de paragraphe puis les modifications à effectuer selon que l'on appartient ou pas au réseau OpenMetEdu sont précisées. Pour modifier ces paramètres il faut pouvoir éditer les fichiers directement à partir de la micro-SD;

  • pour les usagers GNU/linux cela ne pose aucun problème la micro-SD apparaissant dans la liste des disques durs diponibles. Il est nécessaire de se connecter en administrtaeur pour parvenir à éditer les fichiers.
  • pour les usagers d'autres systèmes il faut pouvoir accéder à la partition de type ext4 qu'utilise la raspberry plusieurs solutions sont pssibles
    • utiliser un GNU/linux installé dans une virtualbox
    • utiliser une clef USB Live GNU/linux
    • .../...

3.a Complément de la configuration réseau

Dans la configuration par défaut téléchargée le fichier de configuration permettant l'accès au réseau se trouve à l'adresse /etc/systemd/network/50-wired.network.

Pour un utilisateur extérieur

les lignes suivantes sont à modifier :

Name=enx*

On doit ici remplacer la valeur enx* par la vraie valeur de l'identifiant de l'interface réseau filaire, cependant cette modification n'est pas obligatoire à ce stade car l'utilisation de * permet d'accepter toutes les interfaces disponibles et n'entrave pas la connexion au réseau toutefois lors de la première connexion de la RaspberryPi il faudra impérativement attribuer la bonne valeur. Pour obtenir le nom de l'interface, depuis un terminal de la Raspberry Pi taper ip token qui fournira la liste des interfaces connues; l'interface filaire n'est pas wlan0.

DNS=***.***.***.***

On doit fournir ici l'adresse IP du serveur de nom de domaines du réseau sur lequel sera connectée la Raspberry. Address=***.***.***.***/** Cette valeur contient l'adresse I fixe choisie pour la raspberry (et enregistrée dans le routeur) ainsi que la taille du sous-réseau alloué après le "/" sous la forme d'un nombre à deux chiffres. La taille est donnée en puissance de 2 par différence à 32, par exemple pour un sous réseau de 256 adresses cela nous donne 256=2^8 32-8 =24 n=24; pour un sous réseau de 16 adresses cela nous donne 16=2^4 32-4 =28 n=28; pour attribuer un sous-réseau avec une seule adresse n=32.

Gateway=***.***.***.***

On doit fournir ici l'adresse IP de la passerelle du réseau sur lequel sera connectée la Raspberry.

Pour un enseignant membre du projet "Tremplin des sciences"

Pour le projet les rectorats ont fixé le sous-réseau sur lequel sera déployée la raspberry du projer OpenMetEdu, il n'y a aucune modification à effectuer sur les adresses IP de ce fichier, toutefois lors de la première connexion de la RaspberryPi il faudra impérativement depuis un éditeur en ligne de la Raspberry Pi (jed par exemple sudo jed /etc/systemd/network/50-wired.network) attribuer la bonne valeurde l'interface réseau. Pour obtenir le nom de l'interface, depuis un terminal de la Raspberry Pi taper ip token qui fournira la liste des interfaces connues; l'interface filaire n'est pas wlan0 c'est celle qui devraoit commencer par enx.

3.b Complément de la configuration du pare-feu

Dans la configuration par défaut proposée en ligne le fichier de configuration permettant l'accès au réseau se trouve à l'adresse /etc/firehol/firehol.conf. Pour des raisons de sécurité (la raspberry devra être accessible depuis l'extérieur) il est recommandé de mettre en place un pare-feu, nous proposons l'utilisation de l'outil firehol qui permet de construire un pare-feu avec un fichier de configuration relaticement "intelligible". Toutefois la mise en place d'un pare-feu reste facultative et l'exploitation se fait aux risques et périls de l'usager. Dans la version proposée dans l'image en ligne le pare-feu est totalement transparent et ne filtre aucun échange. La ligne FIREHOL_LOG_PREFIX="firehol: " permet de préfixer toutes les alertes envotées par le pare-feu. Les modifications qu'il est possible d'effectuer sont proposées dans le paragraphe suivant.

Pour un utilisateur extérieur

La première partie de la configuration conssite à fermer l'accès libre fourni par les lignes suivantes il suffit de rajouter un # au début des lignes de commande qui deviennent alors des commentaires inactifs comme indiqué ci-dessous. Attention si on s'arrête après cette manipulation ou si la modification n'est pas correcte, plus aucun accès n'est possible il faut alors éditer à nouveau la SD sur une autre machine. Quoiqu'il en soit il faut absolument ajouter au moins une partie des commandes proposées ci-après; notamment si on modifie le port de connexion d'entrée en ssh il est impératif de décommenter la ligne server ci-dessous ou alors réaliser la configuration complète exposée plus loin.

# Accept all client traffic on any interface
# Accept some servers on given ports
#server_ssh_ports="tcp/****"

#interface any world
#   client all accept
#   server "icmp netbios_ns ssh" accept

La seconde partie de la configuration coniste à configurer les adresses IP qui auront le droit de psser le pare-feu et de se connecter à la Raspberry. les lignes ne commençant pas par # sont les seules actives. vous noterez donc Par défaut nous proposons de permettre le passage depuis l'IFÉ ENS de Lyon; c'est évidemment facultatif mais cela nous est très utile pour la création des images et la ligne persiste, il est possible de la supprimer sans risque.

# Configure AUthorized IPs
# IFE-ENS de Lyon
ENS_IFE="140.77.87.0/22 140.77.180.0/22"

Il est logique de permettre un accès depuis le même réseau sur lequel se trouve la raspberry, la configuration ci-dessous propose soit de rajouter une IP unique ***.***.***.*** soit une plage d'IPs ***.***.***.***/** soit les deux. Il n'est pas souhaitable de permettre des connections directes depuis l'extérieur hormis pour du secours ou des activités de maintenance, une IP est proposée ici. Il suffit, une fois les # de début de ligne enlevés, de remplacer les *** par les numéros de l'adresse IP souhaitée. La dernière ligne de ce bloc permet de regrouper toutes les adresses IP aui auront les mêmes privilèges (voir plus bas.

# Intenal IPs
INTERN="***.***.***.*** ***.***.***.***/**"
# Rescue
RESCUE=***.***.***.***

known_ips="${ENS_IFE} ${INTERN} ${RESCUE}"

Il est ensuite nécessaire de renseigner l'adresse publique de la raspberry sur son sous-réseau local, celle qui reçoit le traffic depuis le routeur ou la passerelle.Comme ci-dessus remplacer les *** par les numéros de l'adresse IP souhaitée. raspiW

public_ip=***.***.***.***

Une fois les adresses IP déclarées il est important de choisir les services et les échanges qui seront permis pour chacune des adresses recensées. Le bloc ci-dessous recense l'ensemble des services qui seront contrôlés soit lorsque la Raspberry est "serveur", soit lorsqu'elle est "client". Un certain nombre de services sont proposés par défaut, décommenter les lignes correspondant aux services quevous souhaitez activer. Dans le cadre du projet tremplin des ports particuliers ont été choisis et la possibilité de les paramétrer a été préservée ici; remplacer les ***** par les valeurs des ports choisis.

# Configure client and server
server_http_ports="tcp/**** tcp/****:****"
server_https_ports="tcp/****"
server_ssh_ports="tcp/****"
server_ftp_ports="tcp/****"
client_http_ports="default"

# Open mysql port **** 
server_mysql_ports="tcp/****"
#

La commande ci dessous ne devrait pas être touchée hormis la suppression des # en début de ligne, elle permet d'activer la possibilité d'échanges pour les machines avec privilèges considérées. Il est aussi nécessaire de remplacer les **** par le nom de l'interface réseau filaire utilisée.

ipv4 interface enx*********** KnownMachines src "${known_ips}" dst ${public_ip}
   policy reject
   protection strong
   server "icmp ssh http https mysql netbios_ns" accept
   client all accept

La commande ci dessous ne devrait pas être touchée hormis la suppression des # en début de ligne, elle permet d'activer la possibilité d'échanges pour les machines sans privilège considérées. Il est aussi nécessaire de remplacer les **** par le nom de l'interface réseau filaire utilisée.

ipv4 interface enx*********** restOfTheNet src not "${UNROUTABLE_IPS} ${known_ips}" dst  ${public_ip}
   policy reject
   protection strong
   server "icmp http netbios_ns" accept
   client all accept

Pour un enseignant membre du projet "Tremplin des sciences"

Les modifications de ce fichier requièrent votre plus grande attention car vous devez impérativement entrer les paramètres concernant votre établissement qui ne peuvent évidemment pas être introduits de façon générique (ils sont connus de votre établissement et du rectorat). Un certain nombre de préconfigurations ont cependant été effectuées mais nous ne disposons pas des adresses IP internes des établissements; chaque partenaire doit systématiquement veiller à ce que les adresses IP et les noms des interfaces réseau soient correctes. Les éléments suivants sont à activer :

  • remplacer les *** par les valeurs correctes dans les noms d'interface enx*****
  • remplacer les plages IP INTERN="***.***.***.***/** ***.***.***.***/**" par les valeurs correspondant à votre établissement réseau pédagogique, administration... une séquence ***.***.***.***/** par plage IP; ne pas toucher à la plage présente sur cette ligne qui autorise le rectorat...Merci de préserver un accès depuis l'ENS pour permettre des actions à distance de la part du pilotage du projet.
  • ajouter une adresse IP de secours qui peut être votre adresse personnelle ou une adresse sûre depuis laquelle vous pourrez vous connecter à la RAspberry Pi en cas d'urgence

En cas de problème insoluble lié au pare-feu et seulement dans ce cas et de façon temmporaire il est possible de réduire le niveau de filtrage en commentant (avec un # en début de ligne) toutes les lignes sauf :

version 6

server_ssh_ports="tcp/****"

interface any world
       client all accept
        server "icmp netbios_ns ssh" accept

FIREHOL_LOG_PREFIX="firehol: "

3.c Complément de la configuration des connexions à distance

Dans la configuration par défaut téléchargée le fichier de configuration permettant l'accès au réseau se trouve à l'adresse /etc/ssh/sshd_config, la modification du port de connexion via le protocole ssh entraîne nécessairement la modification du fichier de configuration du pare-feu comme indiqué ci-dessus.

Pour un utilisateur extérieur

Il n'est pas nécessaire, au moins dans un premier temps, de modifier le port d'entrée via ssh et dans ce cas la connection se fait sur le port 22 par défaut, le pare-feu est directement opérationnel et il est possible de seconnecter directement dès que le pare-feu est configuré en utilisant les valeurs par défaut.

#Port 22
#Port ****
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

Pour un enseignant membre du projet "Tremplin des sciences"

Le port sélectionné est celui qui est utilisé dans l'académie de Lyon (vous pouvez vérifier qu'il correspond à celui ouvert dans le pare-feu), des images localisées seront réalisées au fur et à mesure de la communication de ces informations par les rectorats. L'authentification par mot de passe est autorisée mais il vous est recommandé de créer des clefs ssh pour vous permettre de vous connecter de façon mieux sécuriser et interdire dans ce fichier l'utilisation des mots de passe.

3.d Complément de la configuration de la base de données

Dans la configuration par défaut téléchargée le fichier de configuration permettant l'accès au réseau se trouve à l'adresse /etc/mysql/mariadb.conf.d/50-server.cnf

Pour un utilisateur extérieur

L'image est configurée pour servir sur le port par défaut 3306 des bases mysql/mariadb

Pour un enseignant membre du projet "Tremplin des sciences"

L'image est pré-configurée pour servir sur le port choisi avec le rectorat de Lyon

3.e Complément de la configuration du logiciel Weewx

Dans la configuration par défaut téléchargée le fichier de configuration permettant l'accès au réseau se trouve à l'adresse /etc/weewx/weewx.conf. Ce fichier de configuration requiert une attention toute particulière. En effet au premier démarrage le logiciel crée tout le biotope dont il a besoin pour fonctionner et cette construction se fait automatiquement en utilisant exclusivement les paramètres de weewx.conf. Toute base construite à partir d'un paramètre ne pourra être modifiée qu'avec difficulté et le changement d'un paramètre dans weewx.conf pendant l'exploitation risque fort d'entraîner des anomalies d'écriture et des dysfonctionnements multiples et variés. Plusieurs éléments ont été pré-configurés sans toutefois supprimer la configuration par défaut.

  • Les paramètres de la [Station] : localisation, latitude, longitude, altitude, station_type
  • [TE923] détails sur le type de station : model
  • Les unités dans [StdReport]/[[StandardReport]]/[[[Units]]]/[[[[Groups]]]] passés en SI
  • Le flux de données permettant d'afficher des valeurs [StdReport] / data_binding (cette valeur doit ABSOLUMENT être la même que celle qui est fournie plus bas dans le paragraphe [DataBindings]
  • Le mode de stockage en unités SI [StdConvert]
  • Les valeurs des extrema [StdQC]/[[MinMax]]
  • La base de données cible [StdArchive]
  • Les paramètres de connexion à la base de donées [DataBindings]/[[wx_binding]] - [[wx_mariadbextern_binding]] - [[wx_mariadblocal_binding]]
  • Les bases de données disponibles [Databases]/[[archive_sqlite]] - [[archive_mysql]] - [[archive_mysql_local]]
  • Les types de bases de données disponibles [DatabaseTypes]/[[SQLite]] - [[MySQL]] - [[LocMySQL]]

Le logiciel weewx est lancé par le user weewx qui est un "user ordinaire" qui n'a pas les droits suffisants pour accéder à la station météo via l'USB. L'image est configurée pour octroyer ces droits pour la station TFA Meteotime Duo qui a servi pour les tests. Pour permettrede gérer une autre station il faut : * Trouver les identifiants idVendor and idProduct avec l'instruction lsusb:

lsusb
Bus 001 Device 004: ID 1130:6801 Tenx Technology, Inc. 
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Dans ce cas (TFA Meteotime Duo) idVendor=1130 and idProduct=6801 Puis ajouter un fichier rules dans /etc/udev/rules.d/ dans cet exemple 50-weewx.rules

cat /etc/udev/rules.d/50-weewx.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="1130", ATTR{idProduct}=="6801", ACTION=="add", GROUP="weewx", MODE="0664"

Pour que le service soit assuré par l'utilisateur weewx il faut que le fichier /etc/systemd/system/weewx.serviceait la forme suivante :

# systemd configuration for weewx

[Unit]
Description=weewx weather system
Requires=time-sync.target
After=time-sync.target
RequiresMountsFor=/home

[Service]
ExecStart=/usr/bin/weewxd --daemon --pidfile=/var/run/weewx/weewx.pid /etc/weewx/weewx.conf
ExecReload=/bin/kill -HUP $MAINPID
Type=simple
RuntimeDirectory=weewx
PIDFile=/var/run/weewx/weewx.pid
User=weewx
Group=weewx

[Install]
WantedBy=multi-user.target

Le logiciel ne peut-être connecté qu'à une seule base l'éventuelle synchronisation des données doit être faite sous la responsabilité de l'usager ou du gestionnaire de projet. Le fait qu'une seule base de données ne soit connue par weewx est la raison pour laquelle tous les paramètres data_binding de weewx.conf doivent être coordonnés (dans le cas général identiques).

Pour un utilisateur extérieur

Les paramètres de la station et détails sur le type de station doivent être fournis par tous les usagers, on pourra s'aider de la documentation de weewx. Par défaut le stockage sera effectué dans la base locale, il est nécessaire de configurer le login et mot de passe. Pour changer cette configuration modifier la base de données cible dans le paragraphe [StdArchive], pour fournir les données à une base à distante différente de celle du projet tremplin identifier la base et fournir les paramètres de connexion dans [[MySQL]].

Pour un enseignant membre du projet "Tremplin des sciences"

L'image est préconfigurée pour alimenter la bae de données du projet Tremplin. Il est toutefois nécessaire de renseigner de renseigner les informations générales sur la station : [Station] : localisation, latitude, longitude, altitude ; le type est positionné sur la TFA distribuée par le projet. TOutes les informations suivantes vous sont communiquées par le pilotage du projet pour que vos données aboutissent dans la bonne base au sein du projet et du Grand Lyon Métropole. * [Databases]/[[archive_mysql]]/database_name * [DatabaseTypes]/[[MySQL]]/user - password

Avec ces informations l'archivage des données s'effectuera sur la base de données du projet.

Affichage des données en temps réel sur le serveur

Les données sont affichables en temps réel sur le serveur sur le port choisi par le projet, elle sont aussi affichées sur le serveur dès que l'espace de réception des données est configuré sur stationsdata.climatetmeteo.fr.


Webographie

  1. Site principal Raspberry Pi
  2. Scripts de création de l'image
  3. Scripts modifiés de création de l'image
  4. Site du logiciel weewx
  5. Documentation weewx
  6. firehol
  7. le site météo Villarzel
  8. Construire une image live avec persistence
  9. construire une image multiboot

Commentaires