© Liashko/Shutterstock.com
Heimautomatisierung mit Tinkerforge - Teil 2

Der IoT-Wetterfrosch


Ambitionierten Bastlern eröffnen sich in Zeiten des Internet of Things immer mehr Möglichkeiten, kleine, aber feine Projekte zu realisieren. Gerade im Bereich Home Automa­tion existiert ein attraktives Angebot von preisgünstigen Mikrocontrollerbausätzen, die einen schnellen Einstieg in die faszinierende Welt des IoT erlauben. Im ersten Teil unserer Serie haben wir uns die Grundlagen der Baukastenelemente von Tinkerforge angesehen. In Teil zwei werden wir die Plattform um den Raspberry Pi erweitern und beginnen, das Thema der Persistenz zu beleuchten.

Die Erläuterung von Grundbegriffen und Grundlagen der Tinkerforge-Bausteine diente vor allem der einfachen Auswertung der Sensorelemente mithilfe des Java-API. In diesem Zusammenhang konnten wir uns mit einem simplen System.out begnügen. Jetzt werden wir die Plattform erweitern, indem wir einen Raspberry Pi mit Java 8 und den Tinkerforge-Diensten ausstatten. Aber beginnen wir zunächst mit der weiteren Abstraktion der physikalischen Sensoren.

Abstraktion der Sensoren

Die ersten Schritte mit den Tinkerforge-Sensoren sind recht einfach. Um die weitere Verwendung ein wenig komfortabler zu gestalten, werden wir uns ansehen, wie man das API erweitern kann und damit die Implementierung der Elemente weiter abstrahiert.

Wie also kann man die Tinkerforge-Elemente weiter kapseln? Wir beginnen mit der Definition einer Klasse TinkerForgeSensor. In ihr sind die Attribute zur eindeutigen Identifikation vorhanden. Dabei handelt es sich um die UID des Master Bricks, die UID des Sensors und des Bricklet Types. Ebenfalls ist die Instanz des Sensors und der Verbindung jeweils selbst als Attribut vorhanden. Die Implementierung des Interface Runnable sorgt dafür, dass wir den Sensor später einem Thread zur Verfügung stellen können. Der Ablauf hier ist recht einfach. Bei der Erzeugung werden die notwendigen Parameter übergeben. Sobald die Methode run() aufgerufen wird, wird die abstrakte Methode initBricklet() aufgerufen (Listing 1).

Listing 1

public abstract class TinkerForgeSensor<T extends Device> implements Runnable { protected String UID; protected int callbackPeriod; protected int port; protected String host; protected IPConnection ipcon = new IPConnection(); public T bricklet; public String masterUID; public String brickletUID; public String brickletType; public TinkerForgeSensor(final String UID, int callbackPeriod, int port, String host) { this.UID = UID; this.callbackPeriod = callbackPeriod; this.port = port; this.host =...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang