Listing 5
Temperatur: ${execi 600 python getTemp.py}
Luftfeuchte: ${execi 600 python getHum.py}
Damit das Anzeigeprogramm beim Systemstart automatisch den Dienst antritt, binden Sie es in die jeweilige Autostartkonfiguration des Desktops ein. Optional kopieren Sie eine passende Schriftart [18] in das System-Font-Verzeichnis und installieren sie mit fc-cache -v.

Abbildung 3: Die Feed-Daten des Temperatursensors erscheinen zu guter Letzt im Conky-Widget, hier mit der Konfiguration »Simple Conky«.
Schalten übers Dashboard
Der Programmcode für das Adafruit-Huzzah-Board aus Listing 1 und die Schaltung in Abbildung 1 enthalten bereits eine Funktion, um Nachrichten vom Dashboard zu empfangen. Das macht es einfach, Aktionen auf dem IoT-Gerät auszulösen: Die LED an GPIO13 steuert ein Event-Handler, der Nachrichten aus einem Feed empfängt. Das Beispiel zeigt einen auf den Namen LED getauften Feed.
Das Dashboard in Abbildung 4 erstellen Sie über Dashboard | Actions | Create a New Dashboard. Anschließend fügen Sie diesem Dashboard mit einem Klick auf das blaue Plus-Symbol einen neuen Block hinzu. Haben Sie den Toggle-Button ausgewählt und ihn mit dem LED-Feed verknüpft, erzeugen Sie den Block über Create Block. Das Dashboard enthält neben dem Schalter für die LED zusätzlich ein Liniendiagramm, um Temperatur und Feuchtigkeitswerte darzustellen.

Abbildung 4: Das Dashboard zeigt die Daten aus dem Feed nicht nur an, IoT-Geräte lassen sich darüber auch steuern.
Klicken Sie schließlich im Dashboard auf den Toggle-Button, bemerkt das Sensorboard dies und steuert die LED entsprechend. Dafür leitet die Funktion led->onMessage(); in Listing 1 eingehende Benachrichtigungen an die Funktion handleMsg() weiter. Die wertet den Inhalt der Nachricht aus und schaltet die LED entsprechend.
Fazit
Open-Hardware-Plattformen wie Arduino und Adafruit senken die Hürden für kreative IoT-Projekte erheblich. Das Adafruit-IO-API macht es nun besonders einfach, netzwerkfähige Sensoren mit Web-Dashboards zu verschränken und über das Internet zu steuern. Schon wenige Skriptzeilen genügen, um die Resultate in Anwendungen auf dem Linux-Desktop einzubinden.
Dabei gelangen nicht einfach nur Messdaten zur Anzeige. Bestimmte Systemwerte wie CPU- und Speicherauslastung oder die Ausgaben von Anwendungen können gezielt Events auf der IoT-Hardware triggern. Dann erscheinen Textausgaben auf externen Displays oder beeinflussen vordefinierte Events weitere vernetzte Hardware wie etwa eine Hue-Beleuchtung oder Wifi-Steckdosen.
Der Autor
Marcus Nasarek ist Linux seit Langem treu und schwer begeistert von Scripting, Ruby und Projekten mit dem Raspberry Pi.
Glossar
- MQTT
-
Message Queuing Telemetry Transport. Offenes Client/Server-Protokoll zur Übertragung von Telemetriedaten zwischen Geräten auch in beschränkten Netzwerken und bei hoher Latenz. Ursprünglich bei IBM entwickelt, wird MQTT seit 2013 bei OASIS als IoT-Protokoll standardisiert.
Infos
- Smart-Home-Hack: https://www.forbes.com/sites/kashmirhill/2013/07/26/smart-homes-hack/
- Arduino: https://www.arduino.cc
- Adafruit Industries: https://www.adafruit.com
- Arduino Yún: https://www.arduino.cc/en/Main/ArduinoBoardYun
- Node-MCU: http://nodemcu.com/index_en.html
- Raspberry Pi Zero W: https://www.raspberrypi.org/products/pi-zero-w/
- Adafruit-IO-API: http://io.adafruit.com
- REST: https://de.wikipedia.org/wiki/Representational_State_Transfer
- Adafruit-IO-REST-API-Dokumentation: https://io.adafruit.com/api/docs/
- Adafruit-IO-Node.js-Server: https://github.com/adafruit/adafruit-io-node
- Adafruit Huzzah: https://www.adafruit.com/product/2471
- Conky: https://github.com/brndnmtthws/conky
- Arduino-IDE: https://www.arduino.cc/en/Main/Software
- Adafruit Huzzah in der Arduino-IDE: https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/using-arduino-ide
- Argos-Plugin: https://github.com/p-e-w/argos
- KDE Plasma Widget Development: https://techbase.kde.org/Development/Tutorials/Plasma5/QML2/GettingStarted
- Simple Conky: http://custom-linux.deviantart.com/art/Simple-Conky-454759768
- Ostrich Sans: https://github.com/theleagueof/ostrich-sans






