process-shell.ino
La classe Process est le shell à distance du croquis : cat /proc/loadavg donne la charge du Linux, la température du SoC complète le tableau. Le MCU surveille ainsi le système qui l'accompagne, en dix lignes.
Matériel requis
Une Arduino Yun (ATmega32U4 + Linux Linino sur Atheros AR9331, Wi-Fi et Ethernet, emplacement microSD). Aucun composant externe.
Câblage
Rien à câbler ; le moniteur série USB affiche les résultats.
Fonctionnement
runShellCommand exécute la commande dans le Linux via le démon bridge ; readString lit stdout jusqu'à la fin du processus. running() sert de barrière de synchronisation.
Exécution
Arduino IDE : sélectionne le port série pour téléverser, puis la carte Arduino Yun pour le moniteur. Côté Linux : ssh root@arduino.local (mot de passe de la distribution). L"app Yunwizard configure le réseau.
Variantes
runShellCommandAsynchronously + callback pour ne pas bloquer, ou écrire dans un fichier Linux avec FileIO pour journaliser.
process-shell.ino
// Process : le croquis lance une commande Linux et recupere la sortie.
#include <Bridge.h>
#include <Process.h>
void setup() {
Bridge.begin();
Serial.begin(9600);
while (!Serial);
}
void loop() {
Process charge;
charge.runShellCommand("cat /proc/loadavg");
String ligne = charge.readString(); // 1re ligne = charge 1/5/15 min
while (charge.running()); // attend la fin du flux
Serial.print("charge systeme : ");
Serial.println(ligne);
// Autre exemple : temperature du SoC (varie selon la distribution)
Process temp;
temp.runShellCommand("cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null");
String t = temp.readString();
while (temp.running());
if (t.length() > 4) {
Serial.print("SoC : ");
Serial.println(t.toFloat() / 1000.0);
}
delay(5000);
}