Warum PHP in der Welt der Hardware? Wir räumen mit Klischees auf
\n\nWenn man „Embedded-Entwicklung“ hört, denkt man zuerst an C, Assembler oder vielleicht MicroPython. PHP? Eine Sprache fürs Web, die auf dem Server läuft und HTML generiert. Was hat das mit Mikrocontrollern, Sensoren und Firmware zu tun?
\n\nDie Antwort: mehr, als man denkt. PHP ist längst über den Status einer „Skriptsprache für Foren“ hinausgewachsen. Moderne Interpreter (ab PHP 7+) laufen auf ARM-Architekturen, und für Embedded-Umgebungen gibt es mehrere interessante Lösungen. Dieser Artikel ist kein akademischer Vortrag, sondern ein praxisnaher Leitfaden, wie PHP Ihnen in der Welt der eingebetteten Systeme helfen kann. Wir sehen uns reale Anwendungsfälle an, schreiben Code und prüfen, wo PHP wirklich praktisch ist.
\n\nWann ist PHP eine sinnvolle Wahl für Embedded?
\n\nVerwechseln Sie nicht „Mikrocontroller mit 2 KB RAM“ mit „Einplatinencomputer unter Linux“. PHP läuft nicht auf einem ATmega328P (Arduino Uno) – dafür gibt es C/C++. Aber wenn Ihr Gerät auf diesen Plattformen basiert:
\n- \n
- ESP32 (ESP-IDF oder ESP8266 mit RTOS); \n
- Raspberry Pi (oder Ähnliche mit Allwinner, Rockchip); \n
- OpenWrt-Routern mit MIPS/ARM; \n
- Industriellen Steuerungen unter Linux. \n
…dann kann PHP der ideale „Kleber“ zwischen Ihrer Hardware und der Außenwelt sein. Besonders, wenn Sie schnell ein Webinterface zur Gerätesteuerung bauen, Sensordaten parsen oder in die Cloud senden möchten.
\n\nWie starte ich PHP auf einem Mikrocontroller? Reale Optionen
\n\nEs gibt zwei Hauptansätze, die wir mit Codebeispielen beleuchten.
\n\n1. PHP auf dem ESP32 mit ESP-IDF (Native PHP)
\nJa, es gibt Projekte, die den PHP-Interpreter auf Bare-Metal-Mikrocontroller portieren. Das bekannteste ist PHP for ESP32 (ein experimenteller Fork). Eine abgespeckte Version ohne Multithreading, aber mit grundlegender Syntax, Arrays, Strings und GPIO.
\n\nBeispiel: Eine LED mit PHP auf dem ESP32 blinken lassen
\n<?php\n// Bibliothek für die Pin-Steuerung einbinden\nrequire "gpio.php";\n\n// GPIO2 (eingebaute LED auf vielen ESP32) als Ausgang konfigurieren\n$pin = new GPIO(2, GPIO::OUTPUT);\n\nwhile (true) {\n $pin->write(GPIO::HIGH);\n delay(1000); // 1 Sekunde\n $pin->write(GPIO::LOW);\n delay(1000);\n}\n?>\nDer Code kommt Ihnen bekannt vor, oder? Das ist kein Scherz – ein solches Projekt existiert auf GitHub. Die Leistung ist natürlich geringer als mit C, aber fürs Prototyping ist es hervorragend.
\n\n2. PHP als „Server-Zwischenschicht“ auf Linux-kompatiblen SBCs
\nDies ist das praktischste Szenario. Sie nehmen einen Raspberry Pi oder Orange Pi, installieren normales PHP (z. B. php8.3-cli) und nutzen es für:
- \n
- Auslesen von GPIO-Daten über
gpiododerwiringPi; \n - Arbeit mit I2C/SPI-Sensoren (Temperatur, Luftfeuchtigkeit, Druck); \n
- Erstellung einer REST-API zur Gerätesteuerung. \n
Beispiel: Temperatur vom DHT22 über PHP auf dem Raspberry Pi auslesen
\n<?php\n// Shell-Befehl zum Auslesen der Daten (über pigpio)\n$output = shell_exec('pigs in 17'); // GPIO17\nif ($output === false) {\n die("Fehler beim Lesen des Sensors");\n}\n\n// Parsen und ausgeben\n$data = explode(" ", trim($output));\n$humidity = $data[0] / 10;\n$temperature = $data[1] / 10;\n\necho "Temperatur: {$temperature}°C, Luftfeuchtigkeit: {$humidity}%\\n";\n?>\nSie können dies noch weiterführen und in einen Webserver einbetten:
\n<?php\n// api.php - einfacher REST-Endpunkt\nheader('Content-Type: application/json');\n\n$temperature = readSensor(); // Ihre Funktion\necho json_encode([\n 'status' => 'ok',\n 'temp' => $temperature,\n 'timestamp' => time()\n]);\n?>\nStarten mit: php -S 0.0.0.0:8080 api.php – schon haben Sie ein IoT-Gateway!