🛠 Vivre côté Linux : SSH, opkg, Python et routes Lua personnalisées

Arduino Yún · avance · IMG-yun-avance-8-yun-opkg-python-lua-linux.svg — terminal SSH sur la Yún (prompt root@arduino) : commandes opkg install python, ls /usr/lib/lua, éditeur vi ; en arrière-plan la Yún et son stockage interne 32 Mo + slot microSD.

Objectifs

Traiter la Yún comme un vrai mini-serveur embarqué : se connecter en SSH, gérer les paquets avec opkg (le gestionnaire de paquets d'OpenWrt), installer Python, et créer une route REST personnalisée en Lua servie par le démon RPC — le même mécanisme que les routes /arduino officielles. Vous écrirez du code qui tourne sur l'AR9331, sans jamais toucher au 32U4.

Matériel

Session complète

# 1) Connexion (mot de passe root par défaut : yun)
ssh root@arduino.local

# 2) Inventaire système
cat /proc/cpuinfo | head -5      # AR9331 MIPS 24Kc
df -h                            # ~32 Mo de flash, dont ~10 Mo utilisables !
free                             # 64 Mo de RAM DDR2

# 3) Gestion de paquets (OpenWrt)
opkg update
opkg list | grep python          # python est gros ; python-light existe
opkg install python-light py-pycurl

# 4) Script Python côté Linux — il peut parler au Bridge via HTTP local
cat > /root/temperature.py << 'EOF'
import urllib.request, time
while True:
    v = urllib.request.urlopen(
        "http://localhost/data/get/pot").read.decode.strip
    print("pot =", v)
    time.sleep(2)
EOF
python /root/temperature.py &

# 5) Route REST personnalisée : /cgi.d... en fait via luci-rpc en Lua
#    Fichier /usr/lib/lua/temperature.lua :
#      module("temperature", package.seeall)
#      function get
#        return { valeur = 42, unité = "degC" }
#      end
#    Exposée par /cgi-bin/rpc.lua/temperature/get (selon la version de Linino OS).

Côté 32U4, rien ne change : le sketch et vos scripts Linux cohabitent sur le même Bridge et le même data store /data — c'est toute la puissance de l'architecture.

Vérification attendue

opkg -v répond, python -V affiche la version installée, votre script Python lit les clés /data publiées par le sketch (localhost, aucune config réseau). La route Lua renvoie du JSON dans le navigateur. Vérifiez l'espace : df -h avant/après chaque opkg install — c'est LA contrainte de la Yún.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels