Machine de travail IoT
installation de Ubuntu server 64 bits sur Rpy 3/4
- Pour graver la carte micro-SD utiliser le logiciel Rpy-imager à https://www.raspberrypi.com/software/ (multi-OS..)
- Prendre la version de Ubuntu Server (version testée 21.10) (22.04LTS) Le travail a été réalisé à partir de l'article du site de Ubuntu à https://ubuntu.com/tutorials/how-to-install-ubuntu-on-your-raspberry-pi#4-boot-ubuntu-server
1.0 Préparation matérielle
Boot sur clé USB pour plus de confort.. de rapidité, de quantité mémoire, etc... La procédure est la suivante
- modifier la Rom de votre Raspberry pour activer le boot sur USB.. attention cette étape demande de faire une carte SD et de regler le fichier "config.txt" Ce travail est inspiré de l'article https://raspberry-pi.fr/boot-raspberry-pi-usb/
- installation de l'OS sur une clé USB (v3 de préference pour la Rpy4), boot de la Raspberry, puis verifier que le dhcp filaire de votre LAN est OK (inspiré de https://ubuntu.com/tutorials/how-to-install-ubuntu-on-your-raspberry-pi#4-boot-ubuntu-server ) attention suivante l'OS, la commande est différente, nous la proposons pour Windows
arp -a | findstr b8-27-eb
- La suite du travail est faite avec le ssh sur la Raspberry...
1.1 configuration initiale
- au 1er démarrage, changement du mot de passe par defaut : ubuntu / par : iutseMP2022 (iutSEmp2022)
- réaliser les mises à jours des paquets puis redémarrer
sudo apt update
sudo apt upgrade -y
sudo reboot
- installation du francais pour l'I18N
sudo apt autoremove --purge -y
sudo locale-gen fr_FR
sudo locale-gen fr_FR.UTF-8
sudo update-locale LANG=fr_FR.UTF-8 LANGUAGE=fr_FR
sudo update-locale
sudo locale-gen --purge
sudo timedatectl set-timezone Europe/Paris
sudo reboot
proxy-cache
au sein de UJM... accès au proxy.. en ajoutant au fihier d'environnement (remarque : ne fonctionne pas avec snap.. )
sudo nano /etc/environment
avec les lignes suivantes à la fin du fichier
http_proxy="http://cache.univ-st-etienne.fr:3128/"
https_proxy="http://cache.univ-st-etienne.fr:3128/"
ftp_proxy="http://cache.univ-st-etienne.fr:3128/"
no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
HTTP_PROXY="http://cache.univ-st-etienne.fr:3128/"
HTTPS_PROXY="http://cache.univ-st-etienne.fr:3128/"
FTP_PROXY="http://cache.univ-st-etienne.fr:3128/"
NO_PROXY="localhost,127.0.0.1"
- voir aussi pour apt...
- pour la mise à jour de l'heure, le port de ntp ne passe pas le proxy donc il faut contourner : gestion du ntp... voir https://linuxhint.com/how-to-use-timedatectl-ubuntu/ et utiliser la commande
sudo timedatectl set-ntp true
penser aussi à modifier le fichier de configuration
sudo nano /etc/systemd/timesyncd.conf
pour ajouter le ntp de UJM avec la ligne en fin de fichier
FallbackNTP=ntp.univ-st-etienne.fr
puis redémarrer... et vérifier que le ntp a bien été activé (commande date )
1.2 Wifi
avec le snap wifi-ap
Ubuntu propose un snap qui fonctionne simplement, et pour l'installer, voir les consignes à https://snapcraft.io/install/wifi-ap/ubuntu
sudo snap install wifi-ap
les informations de configuration sont dans le fichier config du snap
cat /var/snap/wifi-ap/current/config
sudo wifi-ap.config get
et pour modifier l'ensemble des paramètres, et finalement récupérer la clé WIFI, utiliser les commandes suivantes
sudo wifi-ap.config set wifi.channel=2
sudo wifi-ap.config set wifi.country-code=FR
sudo wifi-ap.config set wifi.ssid=ubuntuMP
sudo wifi-ap.config get wifi.security-passphrase
donc SSID = ubuntuMP et pass = qjyWU5yEWjTdyVng et penser à faire un reboot !
avec le snap de NM : NetworkManager
!! cette partie n'est pas opérationnelle !! et seule la solution 1 fonctionne; elle est inspirée de l'usage de l'outil de virtualisation de Ubuntu snap présent dans les dépots snapcraft.io avec celui dédié au point d'accès avec utilisation du network manager à https://snapcraft.io/nm-wifi-hotspot
- installation
sudo snap install nm-wifi-hotspot --edge
- configuration avec les commandes
sudo snap set nm-wifi-hotspot ssid="ubuntuMP"
sudo snap set nm-wifi-hotspot psk="qjyWU5yEWjTdyVng"
en ligne de commande
!! cette partie n'est pas opérationnelle !! seule la solution précedente fonctionne; elle est inspirée du lien https://linuxconfig.org/ubuntu-20-04-connect-to-wifi-from-command-line et pour commencer il est bien de vérifier la présence des fichiers de configuration
ls /sys/class/net
ls /etc/netplan/
ensuite éditer le fichier
sudo nano /etc/netplan/50-cloud-init.yaml
et ajouter à la suite les lignes
wifis:
wlan0:
optional: true
access-points:
"ubuntuMP":
password: "qjyWU5yEWjTdyVng"
dhcp4: true
puis redémarrer les services réseau
sudo netplan --debug apply
1.3 MQTT server
pour mosquitto de la fondation Eclipse https://mosquitto.org/
- installation via les paquets, puis création d'un fichier de configuration personnalisé
sudo apt install net-tools -y
sudo apt install mosquitto mosquitto-clients -y
cd /etc/mosquitto/conf.d
sudo nano /etc/mosquitto/conf.d/iot.conf
pour ajouter les lignes suivantes qui autorisent l'accès via toutes les interfaces réseau
listener 1883
password_file /etc/mosquitto/conf.d/passwd
- puis ajout d'un user, avec le mot de passe iutseMP2022
sudo mosquitto_passwd -c /etc/mosquitto/conf.d/passwd iutmp
- redémarrer le service, et tester pour vérifier le user/passwd
sudo systemctl restart mosquitto.service
systemctl status mosquitto.service
mosquitto_pub -t sensors/temperature -m 32 -q 1 -r --username iutmp --pw iutseMP2022
mosquitto_sub -t '#' --username iutmp --pw iutseMP2022 --remove-retained --retained-only
1.4 Nodered
Installation : méthode rapide
simplement avec l'outil de virtualisation de Ubuntu snap en version edge en écoute sur le port 1880... cf https://snapcraft.io/node-red
sudo snap install node-red --edge
Les fichiers de configuration, flows, etc.. sont dans le dossier /var/snap/node-red/current
- pour ajouter des outils dans la palette et créer des flows, cf nodered tutoriel
- pour visualiser les fichiers de cette configuration : flows, etc...
ls -al /var/snap/node-red/current/
Installation : méthode classique
Elle est précisée dans la documentation pour un systeme Linux ou raspberry à https://nodered.org/docs/getting-started/raspberrypi
sudo apt install -y build-essential git curl
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
Ensuite il est demandé de lancer la procédure de configuration de l'initialisation avec
Exécution
lancer l'accès au service sur l'URL ip-server:1880
1.5 Influxdb2
installation rapide
Pour installer la version edge du dépot snap, le serveur est en écoute port 8086.. cf https://snapcraft.io/influxdb pour la ligne de commande :
sudo snap install influxdb --edge
installation dans OS
voir ce qui est un peu plus complet à influxdb
- Pour la configuration et l'utilisation (depuis la version 2) via le frontal web...
1.6 Grafana
Super outil de dataviz.. le site officiel à https://grafana.com/oss/ et pour la derniere version stable (8..) le dépot snap officiel à https://snapcraft.io/grafana-8-u ce qui permet de l'installer avec une seule commande
sudo snap install grafana-8-u
Utiliser le frontal web pour l'utiliser !! mais il n'est ouvert qu'en local sur le port 3125.. donc à configurer
1.7 Bilan
Les fichiers de configuration pour les services installés via les dépots "snap", visualiser les dossiers associés, et pour les ports en écoute via udp et tcp, les 2 commandes :
ls -al /var/snap/
netstat -antu
- services de type network
| service | port | protocole |
|---|---|---|
| node-red | 1880 | http |
| influxdb2 | 8086 | http |
| mosquitto | 1883 | mqtt |
| grafana | 3125 | http |