process-shell.ino
La clase Process es el shell remoto del sketch: cat /proc/loadavg da la carga del Linux y la temperatura del SoC completa el cuadro. El MCU supervisa el sistema que lo acompaña, en diez líneas.
Hardware
Un Arduino Tian (Microchip SAM3X8E + Linux TianOS sobre un Atheros AR9344, doble USB, Ethernet y Wi-Fi). Ningún componente externo.
Cableado
Nada que cablear; el monitor serie USB muestra los resultados.
Funcionamiento
runShellCommand ejecuta la orden en el Linux vía el demonio bridge; readString lee stdout hasta el fin del proceso. running() sirve de barrera de sincronización.
Ejecución
Arduino IDE con la placa Arduino Tian: grabado por el puerto USB « Native ». Por el lado Linux: ssh root@arduino.local. La librería Bridge es idéntica a la del Yun.
Variantes
runShellCommandAsynchronously + callback para no bloquear, o escribir en un archivo Linux con FileIO para registrar.
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);
}