🛠 Linino en production : opkg, Python, cron et système de fichiers sous contrainte
Objectifs
Traiter la Tian comme un vrai petit serveur embarqué sous OpenWRT : installer Python, écrire un script qui consomme les données du croquis, le planifier avec cron, et surtout respecter les contraintes d'un système embarqué à flash limitée — image de base en lecture seule avec overlay, espace modeste, pas de mises à jour de sécurité. Ce tuto consolide tout le chantier Linux de la carte.
Matériel
- 1 Arduino Tian configurée réseau + SSH (tutos intermédiaires)
- Accès opkg fonctionnel (
opkg update) - Optionnel : clé USB sur le port USB host pour décharger la flash interne. >
Procédure
# 1) Outillage
opkg update
opkg install python3 curl
# 2) Script logger : lit la dernière valeur publiée par le croquis
# (le croquis écrit via le Bridge dans /tmp/ldr.txt côté Linux),
# et l'archive en CSV horodaté.
cat > /root/logger.py << 'EOF'
import time, os
while True:
try:
with open('/tmp/ldr.txt') as f:
v = f.read.strip
with open('/root/ldr.csv', 'a') as out:
out.write('%s,%s\n' % (int(time.time), v))
except Exception as e:
with open('/root/err.log', 'a') as err:
err.write(repr(e) + '\n')
time.sleep(60)
EOF
# 3) Planification : redémarre le logger à chaque boot
crontab -e
# @reboot python3 /root/logger.py &
Côté croquis Arduino, une ligne suffit à publier la mesure :
Bridge.runShellCommand("echo " + String(analogRead(A0)) + " > /tmp/ldr.txt");
Vérification attendue
tail -f /root/ldr.csv fait défiler une ligne par minute avec epoch et valeur ADC. Test de robustesse : reboot côté SSH — après le boot, le logger repart seul grâce à @reboot et le CSV continue de grossir. df -h montre l'occupation de la partition overlay : c'est votre jauge de survie.
Erreurs fréquentes
- Écrire le CSV sur la racine en permanence : la flash interne est petite et l'usure existe ; journalisez sur /tmp (volatile) avec des vidanges périodiques, ou montez une clé USB.
- Confondre /overlay et /tmp : après un reboot, tout ce qui est sur tmpfs a disparu — concevoir la reprise en conséquence.
sysupgradeou reset d'usine en plein déploiement : l'overlay est effacé, sauvegardez vos scripts hors carte (git sur le PC).- Python complet sur 16 Mo de flash : l'empreinte d'opkg python3 est lourde ; si la place manque, un script BusyBox ash fait le même travail. >
- Cron sans @reboot et sans superviseur : le logger meurt à la première exception et personne ne le sait ; le try/except avec err.log ci-dessus est le strict minimum.
- Sécurité : plateforme retirée, pas de correctifs — firewall sortant, réseau isolé, aucun port ouvert vers l'extérieur. C'est un projet d'apprentissage, pas un produit connecté.
Autres tutoriels pour cette carte
- Découvrir l'Arduino Tian : un microcontrôleur et un vrai Linux sur la même carte
- Bouton et LED sur les GPIO de la Tian : les bases côté SAMD21
- Lire un capteur avec l'ADC 12 bits du SAMD21
- Le Bridge : faire exécuter des commandes Linux depuis le croquis
- Configurer le WiFi et piloter Linino en SSH
- Télémétrie : pousser une mesure du capteur vers le réseau
Exemples de code pour cette carte
clignotant-rest.inoArduinoconsole-bridge.inoArduinovaleurs-partagees.inoArduinoprocess-shell.inoArduinoserveur-json.inoArduinolecture-fichier.inoArduino