🛠 Linino en production : opkg, Python, cron et système de fichiers sous contrainte
Objetivos
Tratar la Tian como un verdadero pequeño servidor embebido bajo OpenWRT: instalar Python, escribir un script que consuma los datos del sketch, programarlo con cron y, sobre todo, respetar las restricciones de un sistema embebido con flash limitada — imagen base de solo lectura con overlay, espacio modesto, sin actualizaciones de seguridad. Este tutorial consolida todo el trabajo de Linux en la tarjeta.
Material
- 1 Arduino Tian configurada en red + SSH (tutoriales intermedios)
- Acceso opkg funcional (
opkg update) - Opcional: llave USB en el puerto USB host para descargar la flash interna. >
Procedimiento
# 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 &
En el lado del sketch de Arduino, una sola línea basta para publicar la medición:
Bridge.runShellCommand("echo " + String(analogRead(A0)) + " > /tmp/ldr.txt");
Verificación esperada
tail -f /root/ldr.csv muestra una línea por minuto con la época y el valor ADC. Prueba de robustez: reboot por SSH — tras el arranque, el logger se reinicia solo gracias a @reboot y el CSV continúa creciendo. df -h muestra la ocupación de la partición overlay: es su indicador de supervivencia.
Errores frecuentes
- Escribir el CSV permanentemente en la raíz: la flash interna es pequeña y existe desgaste; registre los datos en /tmp (volátil) con volcados periódicos, o monte una llave USB.
- Confundir /overlay y /tmp: tras un reinicio, todo lo que está en tmpfs ha desaparecido — diseñe la recuperación en consecuencia.
sysupgradeo restablecimiento de fábrica durante el despliegue: el overlay se borra, guarde sus scripts fuera de la tarjeta (git en el PC).- Python completo en 16 Mo de flash: la huella de opkg python3 es pesada; si falta espacio, un script BusyBox ash realiza el mismo trabajo. >
- Cron sin @reboot y sin supervisor: el logger muere en la primera excepción y nadie lo sabe; el try/except con err.log anterior es el mínimo estricto.
- Seguridad: plataforma retirada, sin parches — firewall saliente, red aislada, ningún puerto abierto hacia el exterior. Es un proyecto de aprendizaje, no un producto conectado.
Otros tutoriales para esta placa
- 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
Ejemplos de código para esta placa
clignotant-rest.inoArduinoconsole-bridge.inoArduinovaleurs-partagees.inoArduinoprocess-shell.inoArduinoserveur-json.inoArduinolecture-fichier.inoArduino