🛠 Linino en production : opkg, Python, cron et système de fichiers sous contrainte

Arduino Tian (id: tian) · avance · Schéma : IMG-tian-avance-3-tian-openwrt-terrain-cron-python.svg — Arduino Tian en boîtier DIN avec antenne WiFi extérieure, terminal Linux montrant « crontab -e » et « python3 logger.py », icône flash 16 Mo avec jauge de remplissage.

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

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

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales