Einstieg in WebIOPi

© UrosZunic, 123RF

Ab ins Netz

Mithilfe von WebIOPi verwandeln Sie den Raspberry Pi in eine vielseitige Schaltzentrale für das Internet der Dinge.

README

Das WebIOPi-Framework bietet eine webbasierte Schnittstelle für das Ansteuern von Geräten und Auslesen von Sensoren über den GPIO-Port des Raspberry Pi. Die entsprechenden Funktionen lassen sich auch in maßgeschneiderten Webapps nutzen, die Sie zudem mit Python-Code erweitern dürfen.

Die Möglichkeit, aus dem Internet auf den Raspberry Pi und auf an ihn angeschlossene Geräte zuzugreifen, eröffnet ganz neue kreative Perspektiven. Man könnte dazu zwar auch ein maßgeschneidertes, webbasiertes Interface selbst entwickeln, doch es spricht einiges dafür, stattdessen zu WebIOPi [1] zu greifen. Dessen Entwickler Erik Ptak preist sein auf Python basierendes Framework für das Ansteuern der GPIO-Schnittstelle via Web als "Schweizer Messer für das IoT" an. Um WebIOPi auszureizen, sind zwar einige Tricks notwendig, doch damit lassen sich auf recht einfache Weise nützliche Webapps zusammenstricken.

WebIOPi einrichten

Zur Installation laden Sie den aktuellen Tarball von der Projekt-Webseite herunter und entpacken ihn. Dann wechseln Sie in das dabei neu entstandene Verzeichnis und rufen dort das Installer-Skript auf (Listing 1). Anschließend rufen Sie WebIOPi entweder händisch mit dem Befehl sudo /etc/init.d/webiopi start auf oder binden es über das Kommando sudo update-rc.d webiopi defaults direkt in den Boot-Vorgang ein, sodass es nach jedem Neustart des RasPi automatisch bereitsteht.

Listing 1

 

$ tar xvf tar xvzf WebIOPi-0.7.0.tar.gz
$ cd WebIOPi-0.7.0
$ sudo ./setup.sh

Sobald WebIOPi läuft, erreichen Sie seine Bedienoberfläche unter http://RasPi-IP:8000, wobei Sie RasPi-IP durch die tatsächliche IP-Adresse des Raspberry Pi in Ihrem Netz ersetzen. Melden Sie sich als Benutzer webiopi mit dem vorgegebenen Passwort raspberry an. Es empfiehlt sich, Letzteres umgehend zu ändern (siehe Kasten "WebIOPi-Passwort ändern"). Nach der Anmeldung erscheint eine Webseite mit Links zu den Funktionsbereichen von WebIOPi. Ein Klick auf GPIO Header führt Sie in eine einfache Webapp, mit der Sie die GPIO-Pins des RasPi ansteuern können (Abbildung 1).

Abbildung 1: Die Benutzeroberfläche von WebIOPi präsentiert sich sehr schlicht.

WebIOPi-Passwort ändern

Ist Ihr RasPi aus dem Internet erreichbar, dann sollten Sie schnellstens das Vorgabepasswort ändern. Dazu rufen Sie sudo webiopi-passwd auf, geben als Benutzername webiopi an und vergeben ein neues Passwort. Bei Bedarf ersetzen Sie das vorgegebene Konto webiopi durch ein anderes, indem Sie einen anderen Benutzernamen und ein Passwort dazu angeben. Nach jeder Änderung starten Sie WebIOPi mit dem Befehl sudo /etc/init.d/webiopi restart neu, damit die neuen Einstellungen greifen.

Angesteuert

In dieser Webapp schalten Sie einzelne GPIO-Pins ein beziehungsweise aus, indem Sie auf den entsprechenden Schalter klicken. Das lässt sich freilich erst austesten, sobald etwas am fraglichen Pin hängt. Schließen Sie also, wie in Abbildung 2 zu sehen, eine LED und einen 2700-Ohm-Widerstand an die 3,3V- und GPIO-25-Pins des RasPi an. Sobald Sie jetzt im Webinterface den Schalter zu GPIO 25 anklicken, ändert sich dessen Status von IN auf OUT und die LED leuchtet auf. Ein erneuert Klick setzt den Status zurück und schaltet die LED wieder aus.

Abbildung 2: Der Aufbau für einen einfachen Funktionstest mit WebIOPi.

Haben Sie WebIOPi zum Laufen gebracht, können Sie als Nächstes darangehen, eine simple Webapp zu erstellen, die auf Knopfdruck den LED-Status umschaltet. Dazu erstellen Sie eine neue Textdatei, in die Sie den Code aus Listing 2 eingeben und die Sie als index.html im Verzeichnis /home/pi/project/html ablegen. Die beiden Hauptbestandteile dieser Webseite lassen sich auch mit rudimentären HTML- und Javascript-Kenntnissen unschwer identifizieren: Der Javascript-Code enthält eine Funktion, die einen Schalter für die Kontrolle des GPIO-Pins 25 definiert; ein CSS-Stylesheet spezifiziert das Aussehen dieses Schalters.

Listing 2

 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>WebIOPi | LED Control</title>
  <script type="text/javascript" src="/webiopi.js"></script>
  <script type="text/javascript">
  webiopi().ready(function() {
    var button = webiopi().createGPIOButton(25, "LED");
    $("#controls").append(button);
    webiopi().refreshGPIO(true);
  });
  </script>
  <style type="text/css">
    button {
      display: block;
      margin: 5px 5px 5px 5px;
      width: 105px;
      height: 45px;
      font-size: 24pt;
      font-weight: bold;
      color: white;
    }
  </style>
</head>
<body>
  <div id="controls" align="center"></div>
</body>
</html>

Jetzt gilt es, WebIOPi das Verzeichnis /home/pi/project/html als Document-Root unterzuschieben. Dazu öffnen Sie die Datei /etc/webiopi/config in einem beliebigen Texteditor und fügen ihr im Abschnitt [HTTP] folgende Zeile hinzu:

doc-root = /home/pi/project/html

Anschließend starten Sie WebIOPi über das Kommando sudo /etc/init.d/webiopi restart neu. Sobald Sie jetzt im Browser WebIOPi aufrufen, erscheint Ihre neue Webapp und Sie können per Knopfdruck die LED ein- und ausschalten.

Neben den in Listing 2 verwendeten Parametern id und label kennt die Funktion webiopi().createButton einen weiteren optionalen Parameter, über den Sie dem Schalter eine auszuführende Funktion übergeben können. Auf diesem Weg lässt sich die Webapp auch für die Bedienung des in einem früheren Artikel (auch auf der Heft-DVD) bereits beschriebenen Transistorschalters anpassen [2]. Wie Sie sich erinnern, schaltete dort ein einfaches Python-Skript den Transistorschalter jede halbe Sekunde um. Um es aufzurufen, mussten Sie den entsprechenden Befehl entweder eintippen oder den RasPi so konfigurieren, dass er das Skript beim Start ausführte.

Dank WebIOPi ersetzen Sie das Python-Skript jetzt durch eine simple Webapp, in der das Ganze per Knopfdruck funktioniert. Dafür verwenden Sie den Code aus Listing 2 als Schablone und ersetzen lediglich den Javascript-Codeblock durch jenen aus Listing 3. Letzterer ähnelt seinem Vorgänger weitgehend, nutzt aber diesmal die bereits angesprochene Möglichkeit, webiopi().createButton eine zusätzliche Funktion mitzugeben – hier heißt sie outputSequence.

Listing 3

 

<script type="text/javascript">
  webiopi().ready(function() {
    var content, button;
    content = $("#content");
    button = webiopi().createButton("trigger", "Trigger!", outputSequence);
    content.append(button);
  });
  function outputSequence() {
    var sequence = "01"
    webiopi().outputSequence(25, 500, sequence, sequenceCallback);
  }
  function sequenceCallback(gpio, data) {
    alert("Triggered on GPIO" + gpio);
  }
</script>

Diese Funktion kümmert sich um zweierlei: Zum einen definiert sie eine Signalsequenz, zum anderen gibt sie diese in einem definierten Intervall (500 ms) auf einen bestimmten GPIO-Pin (25) aus. Die Sequenz ("01") schaltet also alle halbe Sekunde den Pin an ("1") beziehungsweise ab ("0"). Der letzte Parameter im Aufruf von webiopi().outputSequence, die Funktion sequenceCallback, sorgt für die Anzeige einer Meldung, die als Bestätigung dafür dient, dass der Code erfolgreich ausgeführt wurde.

Bauen Sie nun gemäß dem Schaltplan in Abbildung 3 den Transistorschalter auf und verwenden Sie die Webapp, um ihn anzusteuern. Im bereits erwähnten Artikel diente er dazu, den Auslöser einer analogen Spiegelreflexkamera zu bedienen; er lässt sich aber auch für viele andere Zwecke einsetzen.

Abbildung 3: Der Schaltplan für den Transistorschalter.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

04/2019
TV & Multimedia

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Finger weg

    Ein Temperatursensor verrät, ob Sie einen Gegenstand gefahrlos berühren dürfen. Beim Messen brauchen Sie dabei noch nicht einmal Kontakt zum Objekt.

  • Aus einer Hand

    Um einen Mikrocontroller zu programmieren, genügt ein Raspberry Pi. Wir zeigen, was Sie dazu noch benötigen.

  • Im Gleichtakt

    Synchronisierte Live-Loops und selbst erstellte Funktionen helfen dabei, Sonic Pi wie ein Live-Instrument zu spielen.

  • Mach mal

    Das Ftduino-Modul schlägt die Brücke zu Fischertechnik und ermöglicht es unter anderem, einen Drei-Achsen-Roboter anzusteuern.

  • Eleganter Diener

    Jeden Morgen dieselben Handgriffe, um zu sehen, ob die S-Bahn fährt und wie das Wetter wird? Ein cleverer Infoscreen auf RasPi-Basis automatisiert den Vorgang.

  • Bienenflüsterer

    Bienenzüchter, die ihre Völker besser kennenlernen möchten, müssen die fleißigen Insekten nicht pausenlos stören. Mit einem Raspberry Pi und verschiedenen Sensoren überwachen sie Temperatur, Luftfeuchtigkeit und bald auch das Gewicht des Bienenstocks.

  • Beerige Musik

    Für echten Hi-Fi-Sound braucht es mehr als einen kleinen Bluetooth-Brüllwürfel. Mit Volumio und einem Raspberry Pi rüsten Sie Ihre klassische Hi-Fi-Anlage mit smarten Funktionen auf.

  • Ton ab!

    Auf den ersten Blick erscheint der RasPi zu schwachbrüstig für den Betrieb leistungshungriger DAW-Software. Doch der Schein trügt.

  • Himbeer-TV

    Der DVB TV µHAT rüstet den Raspberry Pi mit einem DVB-T/T2-Tuner auf. Die deutsche TV-Landschaft schränkt dessen Möglichkeiten allerdings ein.

  • Git à la RasPi

    Mit wenigen Handgriffen zum Git-Hoster: Die dezentrale Arbeitsweise von Git erleichtert in Kombination mit der Netzwerkfähigkeit des RasPi das Verwalten von Quellcode.