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 Tian (Microchip SAM3X8E + Linux TianOS sur Atheros AR9344, double port USB, Ethernet et Wi-Fi). 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 avec la carte Arduino Tian : téléversement par le port USB « Native ». Côté Linux : ssh root@arduino.local. La bibliothèque Bridge est identique à celle de la Yun.
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);
}