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 Yun (ATmega32U4 + Linux Linino sobre un Atheros AR9331, Wi-Fi y Ethernet, ranura microSD). 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: selecciona el puerto serie para grabar y luego la placa Arduino Yun para el monitor. Por el lado Linux: ssh root@arduino.local (contraseña de la distribución). La app Yunwizard configura la red.
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.