stats-systeme.ino

Arduino Tian (id: tian) · 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 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.

← Volver a la ficha