stats-systeme.ino
El sketch hace de sysadmin: free, ip y uptime corren por el lado Linux y suben línea a línea al monitor serie. Útil para vigilar una placa guardada en un armario, sin pantalla ni ssh.
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; basta un monitor serie.
Funcionamiento
runShellCommand + available/readStringUntil consume el flujo stdout a medida que llega. Las órdenes alternativas (ip o ifconfig) cubren las diferencias entre distribuciones.
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
Enviar las líneas a una pantalla I2C conectada al MCU, o disparar un LED de alerta si "free" muestra la memoria agotada.
stats-systeme.ino
// Process en mode ligne : streamer la sortie d'une commande Linux.
#include <Bridge.h>
#include <Process.h>
void setup() {
Bridge.begin();
Serial.begin(9600);
while (!Serial);
}
void afficher(const char *titre, const char *cmd) {
Serial.print("== ");
Serial.println(titre);
Process p;
p.runShellCommand(cmd);
while (p.available() > 0) {
String ligne = p.readStringUntil('
');
if (ligne.length()) Serial.println(ligne);
}
while (p.running());
Serial.println();
}
void loop() {
afficher("memoire", "free -m | head -3");
afficher("ip", "ip -brief addr 2>/dev/null || ifconfig | grep 'inet '");
afficher("uptime", "uptime");
delay(15000);
}
// La sortie arrive ligne par ligne : parfait pour un petit
// tableau de bord serie sans parser tout le bloc.