🛠 runShellCommandOnLinux : faire exécuter des commandes Linux depuis le sketch

Arduino Yún · intermediaire · IMG-yun-intermediaire-4-yun-runshellcommand-linux.svg — Yún en coupe conceptuelle : à gauche l'ATmega32U4 avec son croquis, flèche « Bridge /ttyATH0 » vers la droite représentant Linino OS (terminal # ping -c1), retour de la sortie vers le Moniteur série.

Objetivos

El superpoder de la Yún: el microcontrolador controla un Linux real. La biblioteca Process y su método runShellCommandOnLinux lanzan un comando shell en el AR9331 y devuelven la salida al sketch, línea por línea. Caso de estudio: probar la conectividad (ping), leer la hora del sistema, consultar sensores del sistema — todo aquello que un microcontrolador de 8 bits no sabe hacer.

Material

Código completo

// Lancer « ping » côté Linux et afficher le résultat dans le sketch.
#include <Bridge.h>
#include <Process.h>

void setup {
  Bridge.begin;
  Console.begin;
  while (!Console) { }   // patiente sur certains environnements

  // 1) Commande simple : connaître l'uptime de Linux
  Process uptime;
  uptime.runShellCommandOnLinux("uptime");
  Console.println(F("--- uptime ---"));
  while (uptime.available) {
    String ligne = uptime.readStringUntil('\n');
    Console.println(ligne);
  }

  // 2) Test de connectivité : ping 1 fois google.com, analyse du résultat
  Process ping;
  ping.begin("ping");
  ping.addParameter("-c");
  ping.addParameter("1");
  ping.addParameter("google.com");
  ping.runShellCommandOnLinux(ping);
  String sortie = ping.readString;
  bool enLigne = sortie.indexOf("bytes from") >= 0;
  Console.println(enLigne ? F("INTERNET: OK") : F("INTERNET: KO"));

  // 3) La valeur de retour d'une commande shell (code de sortie)
  Process test;
  int rc = test.runShellCommandOnLinux("ping -c 1 -W 2 1.1.1.1");
  Console.print(F("code retour ping 1.1.1.1 = ")); Console.println(rc);
}

void loop { }

Verificación esperada

El Monitor muestra la línea de uptime de Linino OS (promedios de carga), « INTERNET: OK » si la tarjeta tiene salida a la web, y el código de retorno del shell (0 = éxito, distinto de cero = fallo — la convención de Unix se transmite directamente). Desconecta el cable Ethernet / corta el WiFi: el ping pasa a KO y rc se vuelve distinto de cero. Tienes un microcontrolador que «piensa» con las herramientas de un SO.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales