stats-systeme.ino

Arduino Yún · Archivo : stats-systeme.ino · Lenguaje : Arduino · Uso : Afficher les statistiques réseau du Linux sur le moniteur

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.

← Volver a la ficha