Node.js auf dem Raspberry Pi Zero W

Ich habe in der vergangenen Zeit häufig Node.js auf unterschiedlichen Raspberry Pi Versionen installieren müssen, zumeist um meine Hausautomatisierung voran zu treiben (z.B. mit NodeRED oder node-eq3ble). Aber jedes Mal schlage ich im Internet die nötigen Installationsschritte nach. Damit das zukünftig überflüssig wird, hier nun eine kurze Anleitung für (mich selbst und andere) Leidensgenossen.

Der Raspberry Pi Zero (W), der zuletzt zu meiner Infrastruktur dazu gekommen ist, setzt mit dem Broadcom BMC2835 auf denselben Prozessor wie die Vorgängermodelle A, B und B+. Beim RPi Zero ist der SingleCore standarmäßig auf 1GHz getaktet. Aufgrund der Prozessorwahl sind die *-linux-arm6l Builds von Node.js zu verwenden. Die Build von Nodesource, die man häufig in Installationsanleitungen findet, funktionieren nicht. Einen entsprechenden Hinweis bekommt man angezeigt, wenn man es trotzdem versucht.

Den notwendigen aktuellen Build bekommt man direkt bei Node.js im Code-Repository (beispielhaft für die Version 7.7.3). Die Installation ist dann ein Vierzeiler, mit dem das Paket heruntergeladen, entpackt und an seinen endgültigen Ort kopiert wird:

wget https://nodejs.org/dist/v7.7.3/node-v7.7.3-linux-armv6l.tar.gz
tar -xvf node-v7.7.3-linux-armv6l.tar.gz
cd node-v7.7.3-linux-armv6l
sudo cp -R * /usr/local/

Dass die Installation funktioniert hat, lässt sich mit den beiden Kommandos zur Versionsabfrage von Node.js und NPM überprüfen:

node -v
npm -v

 

 

Advertisements

Der Einstieg ins Smart Home – Installation des Razberry und Raspberry Pi

Zehn Millionen Exemplare des Raspberry Pi sind in vier Jahren verkauft worden. Zu verdanken ist das – neben dem geringen Preis – zu großen Teilen auch seiner Erweiterbarkeit und einfachen Handhabung. Das Razberry Zusatzmodul, das den generischen Mini-PC zu einem Z-Wave basierten Smart Home Controller macht, baut auf diesen Prinzipien auf: Der Hersteller liefert ein passendes Betriebssystem gleich mit und sorgt für einen fast konfigurationslosen Start.

Dies ist der zweite von vier Teilen zum Thema Smart Home mit Z-Wave. Links zu den anderen Teilen finden Sie am Schluss dieses Posts. Dieser Abschnitt richtet sich am ehesten an technisch versierte oder ambitionierte Leser.

Dank der Vorarbeiten sowohl auf Seiten der Raspberry Pi Foundation als auch bei Z-Wave.me ist die Installation sowohl des Raspberry Pi als auch des Z-Wave Moduls namens Razberry sehr einfach. Dass das Betriebssystem nicht standardmäßig von der Raspberry Pi Foundataion stammt, gerät zur Nebensache. Beim genauen Hinsehen erkennt man, dass es sich nur um eine erweiterte Version der Raspbian Linux Distribution handelt.

Bei den folgenden Anweisungen gehe ich davon aus, dass der Raspberry Pi unter Zuhilfenahme eines Windows PCs installiert wird. Kommt hingegen ein Linux oder Mac zum Einsatz, dann finden sich entsprechende Anleitungen hier.

Es existieren zwei alternative Wege, um mit der Installation zu starten. Wenn Sie auf der einen Seite bereits einen Raspberry Pi mit aufgespieltem Raspbian Betriebssystem haben, müssen Sie lediglich noch das Razberry Modul anbringen und die Software dazu installieren. Haben Sie stattdessen einen neuen Raspberry Pi und eine leere SD-Karte vor sich, dann rate ich Ihnen, gleich die Betriebssystem-Version von Z-Wave.me zu verwenden. Ersteres hat bei mir mit einem Raspberry Pi 2 einwandfrei funktioniert, letzteres mit dem Vorgängermodell (beide Model B).

Exkurs: Raspberry Pi Modelle

Das Modell spielt natürlich keine Rolle bei der Installation der Software. Sollten Sie aber vor der Wahl stehen, einen Raspberry Pi für Ihre Experimente mit Smart Home anzuschaffen, sind hier einige nützliche Hinweise:

Der Raspberry Pi 2 unterscheidet sich in einigen Belangen von seinem Vorgängermodell. Zum ersten im Format der verwendeten SD-Karte. In das neue Modell passen nur microSD Karten hinein, während das alte Modell noch Speicherkarte herkömmlicher Größe verwendet. Zum zweiten ist die Leistungsaufnahme des neuen Modells höher. Ich betreibe ihn mit einem Netzteil mit 2000mA, das alte hingegen mit lediglich 1000mA. Beide jedoch bei einer Spannung von 5 Volt. Prüfen Sie vorab die Leistungsdaten, wenn Sie beispielsweise ein Netzteil eines alten Handys verwenden wollen.

Der dritte, aber eher untergeordnete Unterschied besteht in der GPIO Schnittstelle. Den alten Modelle stehen insgesamt 26 Pins zur Verfügung (Dokumentation liegt hier), während der Pi 2 mit 40 Pins aufwartet (Dokumentation). Für das Razberry Modul macht das jedoch keinen Unterschied, da die Belegung der verwendeten zehn ersten Pins bei beiden Varianten identisch ist.

Die Z-Wave Software, der so genannte Z-Way-Server, läuft auf beiden Modellen. Mit dem Raspberry Pi 2 macht die Handhabung allerdings deutlich mehr Spaß, zumal deutlich mehr Power in dieser Hardware-Version steckt. Das macht sich besonders dann bemerkbar, wenn Sie die webbasierten Oberflächen zur Einrichtung Ihres Smart Home Netzwerks nutzen.

Anbei eine Liste mit Komponenten, die in meinen Tests zum Einsatz kamen:

Alternative 1: Installation des Raspberry Pi bei vorinstalliertem Raspbian

Gehen wir erst einmal davon aus, dass Sie mit Raspbian starten wollen, bevor Sie Razberry hinzufügen.

Wenn Sie noch kein Raspbian installiert haben, die aber noch vor dem Aufbau des Smart Homes tun wollen, nutzen Sie als Anleitung das Video „Getting Started with NOOBS“ von Carrie Anne Philbin. NOOBS ist der Name des Betriebssystem-Managers des Raspberry Pi, mit dem Sie neben Raspbian weitere kompatible Betriebssysteme wie Ubuntu installieren können. Windows 10 IoT läuft ebenso auf dem Raspberry Pi (2), ist aber noch nicht in NOOBS zu finden.

Sind Sie ein Fan stattdessen von Anleitungen in Textform? Die Raspberry Pi Foundation liefert diese frei Haus in Ihrer Dokumentation.

Ist Raspbian erst einmal lauffähig, fahren Sie den Mini-Rechner herunter, entfernen Sie das Stromkabel und drücken Sie das Razberry Modul auf die ersten 10 GPIO Pins. Das sind diejenigen, die am weitesten von den USB Ports entfernt sind. Das Modul sitzt dann richtig, wenn es nicht seitlich über die Hauptplatine hinausragt.

Raspberry Pi mit Razberry Modul im Gehäuse
Raspberry Pi mit Razberry Modul im Gehäuse

Das Razberry Modul wird vom Z-Way-Server angesprochen. Die Software gibt die Steuerungsbefehle über die passenden GPIO Pins an das Modul weiter. Allerdings umfasst das Programm noch mehr, nämlich mehrere webbasierte Benutzeroberflächen, darunter auch Versionen für mobile Endgeräte. Damit soll veranschaulicht werden, wie leicht die Programmierschnittstellen / APIs des Servers angesprochen werden können. Mehr dazu erfahren Sie in den weiteren Abschnitten dieser Artikel-Reihe.

Fahren Sie vorerst jedoch den Rechner mit aktiver Internetverbindung hoch, loggen sich wie gewohnt ein (Standarduser: pi, Passwort: raspberry) und nutzen Sie folgenden Befehl zur Installation

wget -q -O - razberry.z-wave.me/install | sudo bash

Wenn Sie lieber eine grafische Benutzeroberfläche nutzen, öffnen Sie diese optional mit dem Befehl startx. Bei der Installation des Z-Way-Servers wird Ihnen das aber nicht helfen, denn um obigen Befehl abzufeuern, brauchen Sie selbstverständlich wieder ein Terminalfenster.

Die gute Nachricht ist: dies der Punkt mit dem größten Nerdfaktor! Denn ist der Raspberry mit der Verarbeitung des obigen Befehls fertig – was einige Minuten und mehrere Bildschirmseiten mit vorbei fliegendem Text in Anspruch nehmen kann – sind die Komponenten installiert und eingerichtet. Nach einem erneuten Reboot sollten sie im Bootlog am Bildschirm einen Eintrag wie diesen sehen:

Z-Way-Server gestartet
Z-Way-Server gestartet

Neben der Erfolgsmeldung, dass der Z-Way-Server läuft, finden Sie auch eine IP-Adresse für Ihr lokales Netzwerk. Diese Adresse sollte konstant bleiben, damit Sie Ihren Server nicht ständig unter neuen Adressen suchen müssen. Ggf. müssen Sie Ihren Router entsprechend auf fixe IP-Vergabe konfigurieren (oder den Raspberry Pi nie wieder runter fahren). Notieren Sie sich die am besten die angezeigte IP-Adresse, denn diese werden Sie im nächsten Abschnitt zur Konfiguration noch einmal brauchen.

Alternative 2: Installation des Z-Way-Servers mit einem Image von z-wave.me

Haben Sie keinen lauffähigen Raspberry Pi, nutzen Sie am besten ein vorgefertigtes Image der nötigen Software inklusive Betriebssystem. Von Vorteil ist, dass Sie nach dem ersten Booten sofort zur Einrichtung des Smart Home Netzwerks schreiten können, ohne einen Umweg über ein Terminal wie bei Alternative 1 machen zu müssen. Der Nachteil an dieser Alternative ist: um bis dahin zu kommen, müssen Sie einige neue Tools auf Ihrem Windows-PC installiert und bedient haben.

Folgen Sie diesen einzelnen Schritten, die auch in der Dokumentation der Raspberry Pi Foundation beschrieben ist, um den Razberry zum Laufen zu bringen. Obiges Video aus der Alternative 1 gibt Ihnen zur Not Hilfestellung:

  1. Formattierung der SD-Karte mit Hilfe des Tools SD Formatter von http://www.sdcard.org [Aus der Download Sektion]. Dadurch werden alle Inhalte der SD-Karte unwiderbringlich gelöscht.
  2. Download des Razberry Betriebssystems unter http://razberry.z-wave.me/ [Aus der Download Sektion]. Das Betriebssystem liegt als einzelne Image-Datei vor, die zuerst entpackt und dann übertragen werden muss.
  3. Übertragen des Betriebssystem-Images auf die SD-Karte mit dem Tool Win32 Disk Imager von Sourceforge. Das Kopieren der Datei nimmt einige Minuten in Anspruch. Achten Sie darauf, das Tool als Administrator auszuführen, um einen fehlerfreien Vorgang zu gewährleisten.

Ist die Software erst einmal auf der SD-Karte, schieben Sie diese in den passenden Schacht des Pi, schließen die Kabel an und Booten Sie den Rechner. Sobald der Prompt zum Login erscheint, sehen Sie sich die letzten Lognachrichten davor an. Nicht nur, dass dort eine Nachricht zum erfolgreichen Start des Z-Way-Servers erscheinen sollte, sondern auch eine so genannte Access-ID und ein Passwort.

Diese Daten sind dafür da, von außerhalb Ihres WLAN auf den Server zuzugreifen. Merken Sie sich diese Daten und die angezeigte IP-Adresse also am besten für später.

Passwort ändern – zur eigenen Sicherheit

Welche der beiden alternativen Installationswege Sie auch gewählt haben, Sie sollten nun einen funktionierenden Z-Way-Server haben. Geben Sie als Test in die Adresszeile Ihres Browsers http://*ihre-lokale-ip*:8083 ein. Es sollte eine Weboberfläche erscheinen und keine Fehlermeldung. Über diese Oberfläche werden wir im Weiteren die Aktoren wie Thermostate, Schalter und Sensoren bedienen.
Vorher sollten Sie jedoch noch das Passwort für den Fernzugriff über find.zwave.me abändern. Das initiale Passwort wurde Ihnen beim Booten nach der Installation in der Kommandozeile angezeigt. Um dies auf einen anderen Wert zu setzen, öffnen Sie einen Browser und gehen zu http://*ihre-lokale-ip*:8084. Zu sehen ist die ID Ihres Razberry und ein Eingabefeld für das Passwort. In meinem ersten Versuch war ich aufgeschmissen, bis ich merkte, dass der mitgelieferte Raspbery Pi Standardbrowser Midori den Submit-Button für das Formular zur Passwort-Änderung nicht anzeigte. Letztlich habe ich einen alternativen Browser installieren müssen, um mein Passwort zu ändern:

Nächste Schritte

Als nächstes steht die Konfiguration des Z-Wave Netzwerks an. Alle Aktoren müssen mit den Controller verbunden werden. Zudem lässt sich das Smart Home alternativ über eine Android oder iOS App im WLAN bedienen. Diesen Themen widmen wir uns im dritten und nächsten Abschnitt.

  1. Der Einstieg ins Smart Home – Hausautomatisierung mit Z-Wave
  2. Installation des Razberry und Raspberry Pi
  3. Aufbau des Z-Wave Netzwerks und Zugriff
  4. Erweiterungen – Apps und Automatisierung

Hinweis: Deutsche Tastatur für den Raspberry Pi

Wenn Sie Besitzer einer deutschen QWERTZ-Tastatur sind, werden Sie bereits beim Einloggen mit dem Passwort raspberry gemerkt haben, dass der Raspberry Pi standardmäßig auf ein englisches Tastaturlayout eingestellt ist. Dies können Sie sofort nach dem ersten Booten beheben. Eine Anleitung in Form eines Youtube-Videos finden Sie hier:

Der Einstieg ins Smart Home – Aufbau des Z-Wave Netzwerks

Mit dem installierten Raspberry Pi /Razberry als Controller aus dem vorigen Abschnitt sind weitere Programmierkenntnisse nicht mehr vonnöten, um das Smart Home einzurichten. Stattdessen rückt die Planung und Aufbau der Komponenten in den Vordergrund. Meiner Erfahrung nach der spannendste Teil der Arbeit: Welche Komponenten sind notwendig, um den verfolgten Anwendungsfall umzusetzen. Wie sichert man sein Eigenheim ab? Wie verhindere ich, dass meine Dachfenster bei Regen automatisch aufgehen? Und vor allem: Wie bringe ich fertig, die Kaffeemaschine beim Klingeln meines Weckers loslaufen zu lassen?

Während die Instruktionen in den vorigen Teilen sehr spezifisch auf den Raspberry Pi als Controller bezogen haben, ist der Großteil dieses Abschnitts davon unabhängig. Die Art und Weise, wie die Komponenten des Smart Homes interagieren, sind so oder ähnlich auch auf andere Produkte anzuwenden.

Netzwerk-Grundlagen

Ein Z-Wave Netzwerk besteht aus einer zentralen Schalteinheit, dem so genannten Controller – in unserem Fall der Raspberry Pi -, und einer Vielzahl von Komponenten wie Thermostaten, Schaltern, Sensoren, Lampen etc. Die Kompontenen werden im Smart Home Sprachgebrauch als Aktoren bezeichnet. Die Aktoren bekommen ihre Anweisungen vom Controller, alles über das Z-Wave Funkprotokoll. Außerdem sind weitere statische oder portable Controller im Netzwerk möglich. Alle Komponenten des Netzwerks bilden dabei ein so genanntes vermaschtes Netz. Das bedeutet im Endeffekt: ein Befehl vom Controller kann auch indirekt bei einem Aktoren ankommen – auch wenn diese aufgrund ihrer Entfernung oder baulich bedingt keinen Funkkontakt haben. Ein Signal vom Controller wird dazu von verschiedenen Komponenten an andere weitergeleitet bzw. an ihr Ziel geroutet, wenn es nicht für ihn bestimmt ist.

Manche Aktoren eines Z-Wave Netzwerks sind direkt mit dem Stromnetz verbunden, z.B. Aufsteckdosen oder Unterputz-Module für Lichtschalter. Viele Aktoren besitzen jedoch eine Batterie, etwa Heizungsthermostate oder Sensoren. Vergewissern Sie sich also regelmäßig, ob die Komponenten noch funktionieren. Dies können Sie übrigens auch über die Web-Oberfläche des Controllers tun: Aktoren, die mehrfach nicht erreichbar waren, werden entsprechend gekennzeichnet.
Das Fähigkeiten, Signale im Netzwerk weiterzuleiten oder zu routen, hängt dabei auch von der Tatsache ab, woher eine Komponente seinen Strom bezieht. Batterie-gestützte Komponenten nehmen im Netzwerk weniger Funktionen war (im wesentlichen das Weiterleiten), Komponenten am Stromnetz unterstützen entsprechend mehr Funktionen. Zudem befinden sich Aktoren mit Batterien in der Regel in einem stromsparenden Schlafmodus und werden in definierten Intervallen oder bei bestimmten Ereignissen aktiv. Nach dem Erwachen und der Abarbeitung seiner Aufgabe (z.B. das Vermelden der Temperatur), verfällt der Aktor wieder in den Schlafmodus. Dieses Verhalten lässt sich pro Aktor einstellen. Und natürlich gilt: je häufiger ein Aktor aufwacht, desto mehr Strom verbraucht er und desto kürzer ist seine Batterie-Lebensdauer.

Inklusion

Die Aufnahme eines Aktors ins Netzwerk wird als Inklusion bezeichnet. Der Prozess der Inklusion kann sich je nach Aktor unterscheiden und ist in der jeweiligen Bedienungsanleitung beschrieben. Es kann sein, dass Sie z.B. bei einer Aufsteck-Steckdose lediglich auf einen Schalter klicken müssen. Bei Unterputz-Schaltern und -Dimmern, die in herkömmliche Lichtschalter in der Wand eingebaut werden, reicht in der Regel das Betätigen des Lichtschalters selbst. Sensoren, gerade diejenigen, die Wert auf Optik legen, müssen ggf. aufgeschraubt werden, um den Schalter für die Inklusion zu finden.

Egal, wie der Aktor dazu gebracht werden kann, sich ins Smart Home zu inkludieren: Ihr Controller muss sich gleichzeitig in einem speziellen Inklusions-Modus befinden und bereit sein, neue Aktoren ins Netzwerk aufzunehmen. Diesen Modus starten und beenden Sie über die Software – so auch bei unserem Aufbau mit dem Raspberry Pi – oder alternativ über einen Knopf am Controller. In den meisten Fällen beendet sich der Inklusionsmodus des Controllers aus Gründen der Sicherheit selbst nach einer gewissen Zeitspanne.

In allen Fällen gilt: Erst den Controller in den Inklusions-Modus versetzen, damit er nach neuen Aktoren sucht. Danach den Aktor mit einem Klick auf den jeweiligen Schalter dazu bringen, sich beim Controller anzumelden. Manchmal wird die erfolgreiche Inklusion vom Aktor angezeigt, z.B. über eine LED oder eine entsprechende Anzeige im Display (so etwa bei Heizungsthermostaten). Dieser Prozess funktioniert in dem Testaufbau mit dem Rasperry Pi makellos und geht schnell von der Hand, sobald man erst einmal bei neuen Aktoren den Inklusions-Schalter gefunden hat.

Die Benutzer-Oberfläche(n) des Z-Way Servers

Die Inklusion und Verwaltung der Aktoren in unserem Z-Wave Beispiel wird über eine Web-Oberfläche erledigt. Dafür umfasst der Z-Way Server auch einen Webserver, dessen Einstiegsseite Sie unter http://*ihre-lokale-ip*:8083 erreichen. Statt einer einheitlichen Verwaltungsoberfläche sind gleich mehrere vorhanden, die man alternativ verwenden kann. Unter anderem gibt es eine Oberfläche, die speziell für die Anzeige auf Mobiltelefonen angepasst ist.

Auswahl der Benutzeroberflächen

Die Vielzahl an Oberflächen mag beim unbedarften Anwender erst einmal für Verwirrung bis Verärgerung sorgen, weil es den Einstieg erschwert. Wer sich im Einzelhandel einen Smart Home Controller kauft, wird darauf eine komfortable  und vor allem einheitliche Benutzeroberfläche erwarten. An dieser Stelle zeigt sich, dass die Z-Way-Anwendungen vornehmlich für Demonstrationszwecke gemacht ist. Der Hersteller weist in seinen Dokumentationen explizit auf die Existenz einer REST-Programmierschnittstelle hin, die man über eigene Web-Anwendungen ansprechen kann. Die vorhandenen Oberflächen sollen demnach nicht der Weisheit letzter Schluss sein, sondern vielmehr ein Ansporn, aufbauend auf den Schnittstellen eigene Anwendungen zu erstellen und zu vermarkten. Unter anderem ermöglichen die Schnittstellen auch mobile Anwendungen für Android und iOS – mehr dazu später.

Mein Rat: Obwohl die BlueUI (Old Expert UI) einen älteren Stand hat als die Expert UI, gefällt sie mir persönlich besser. Folglich nutze ich sie für die folgenden Instruktionen. Wenn Ihnen die Lust fehlt, alle Oberflächen zu testen, nutzen Sie einfach die einfach zu handhabende BlueUI im Einsteiger-Modus. Sobald Sie sich darin zurecht finden und mehr Funktionalität benötigen, wechseln Sie in den Experten-Modus. Mit der BlueUI können Sie unter anderem:

  • Aktoren ins Netzwerk aufnehmen oder daraus entfernen
  • Aktoren benennen und deren individuelle Einstellungen der Aktoren verwalten
  • Einen Grundriss Ihres Hauses / Ihrer Wohnung hochladen und „Zonen“, z.B. einzelne Zimmer, einrichten
  • Aktoren einzelnen Zonen zuorden.

Die Home Automation UI Oberfläche eignet sich allerdings eher dafür, Regeln zu erstellen, die Abläufe im Netzwerk verwalten. Damit werden also die Ergebnisse und die Fähigkeiten von Aktoren logisch verknüpft. Zum Beispiel: Der Sensor A liefert die Information, dass die Helligkeit unter 100 Lux gefallen ist. Daraufhin werden die Lampen im Raum eingeschaltet.

Da der Raspberry Pi in Ihr lokales Netzwerk eingebunden ist, können Sie die Bedien-Oberflächen auch über einen anderen PC im gleichen Netzwerk nutzen, z.B. von Ihrem normalen Laptop oder Tablet aus.

Testaufbau

Die Inklusion der Testaktoren geht immer von der BlueUI aus. Unter dem Menüpunkt „Network/Netzwerk“ findet sich die Schaltfläche „(Re-)include device“. Der aktivierter Inklusions-Modus bleibt nach dem Klick auf die Schaltfläche 20 Sekunden bestehen. Lesen Sie also zuerst in der Bedienungsanleitung eines Aktors nach, wie die Inklusion im Einzelfall vonstatten geht. Bei Aktoren, die über das Haus verteilt sind, lohnt sich ein Laptop oder ein Tablet, auf dem die BlueUI gestartet wird. Bei den Geräten im Testaufbau läuft die Inklusion wie folgt ab:

1. Der Düwi IP20 hat einen Schalter an der Vorderseite. Also: In die Steckdose stecken, Inklusion über BlueUI starten, Knopf auf dem Düwi IP20 drücken. Erfolg wird über LED vermeldet.
2. Der Danfoss Thermostat hat eine Batterie. Es wird empfohlen, den Thermostat erst am Heizkörper anuzbringen und zu justieren. Die Steuerung erfolgt über 3 Knöpfe und ein monochromes Display an der Vorderseite. Die Inklusion nach der Installation des Thermostats wieder über die BlueUI starten, danach den Schalter am Thermostat betätigen. Es erscheint eine Anzeige im Display bei Erfolg des Prozesses, die die Verbindung anzeigt.
3. Der Fibaro Sensor läuft ebenfalls über eine Batterie. Der Inklusionsschalter ist im Inneren des Gehäuses. Also nach dem Einlegen der Batterie nicht zuschrauben. Die Inklusion wieder ausgehend von der Web-Oberfläche starten und über den Schalter am Sensor bestätigen. Der Erfolg wird über ein Blinken der LED vermeldet.

Nach der Inklusion sind die Geräte in der Oberfläche unter dem Menüpunkt „Devices configuration/Gerätekonfiguration“ zu finden. Jedes Gerät hat seine eigenen Einstellungsparameter. Direkt nach der Inklusion stehen diese nicht unbedingt sofort zur Verfügung. Die Details (NIF) lassen sich aus einer Online-Datenbank für Z-Wave Geräte per Knopfdruck herunterladen. Gleichzeitig mit den Spezifikationen kommt dankenswerterweise in der Regel ein Bild des Geräts mit. Wenn Sie gleichzeitig mehrere Geräte in einem Rutsch ins Netzwerk aufnehmen, sind diese standardmäßig als Device1, Device2, etc. benannt. Erst durch das Herunterladen der Spezifikationen mit Bild gibt sich ein Gerät manchmal als solches zu erkennen. Einfacher wird die Sache jedoch nicht, wenn Sie am Stück ein Dutzend gleichartige Steckdosen am Netzwerk anmelden. Da hilft nur, die Geräte einzeln aufzunehmen und gleich zu benennen, wenn man nicht im Nachhinein mit einer Schreibtischlampe von Steckdose zu Steckdose gehen will, um durch Ein-/Ausschalten zu prüfen, welche Dose welchem Eintrag in der Web-Oberfläche entspricht.

Aktoren auslesen und steuern

Sind alle Aktoren aufgenommen, lassen sie sich unter dem Menüpunkt „Device control/Gerätesteuerung“ ansprechen. Bei Sensoren wie dem Fibaro sieht man die einzelnen Werte wie Temperatur, Helligkeit und die Aktivität des Bewegungssensors. Diese Werte lassen sich nicht über die Oberfläche beeinflussen, nur regelmäßig oder per Knopfdruck auslesen. Die Temperatur eines Thermostats und der Status einer Steckdose lassen sich natürlich neu setzen.

Für Bedienkomfort des Smart Home sorgen mobile Anwendungen. In den Stores von Google und Apple finden sich Z-Way Apps für die Smartphone Betriebssysteme. Zur Konfiguration genügt die Eingabe der IP Adresse des Raspberry PI sowie Login und Passwort des Z-Way Servers (siehe voriger Abschnitt), schon lassen sich die Aktoren des Netzwerks steuern und Sensorwerte auslesen. Die Apps sind erstaunlich gut und funktionieren einwandfrei.

Z-Way Android App
Z-Way Android App
  1. Einstieg – Hausautomatisierung mit Z-Wave
  2. Installation des Razberry und Raspberry Pi
  3. Aufbau eines Z-Wave Netzwerks
  4. Erweiterungen – Apps und Automatisierung

CouchDB reif für die Produktion

Die Freigabe der Version 0.11.0 markiert den Meilenstein zur Produktionsreife von CouchDB. Das Release wird als „feature-freeze“ bezeichnet und ist als Release Candidate für die anstehende Version 1.0 zu verstehen.

Damit tut neben MongoDB ein zweiter NoSQL Vertreter Ende März einen weiteren Schritt Richtung Produktion. MongoDB 1.4 kam am 26.03.2010.

Der Download von CouchDB 0.11.0 steht für Unix im Apache Incubator unter http://couchdb.apache.org/downloads.html zur Verfügung und ist unter der Apache License 2.0 zu haben. Das Installationspaket für Windows ist zwar etwas versteckt, findet sich wie sein Vorgänger aber hier – die Lizenz ist selbstverständlich die gleiche.

MySQL Performance bei INNER Join vs. OUTER Join

Bei der Universenerstellung mit Business Object kam neulich die Frage nach dem Performancetuning auf, speziell in Bezug auf die verwendeten Joins. Zitat meines BO-erfahrenen Kollegen war: „Die Datenbank freut sich jedes Mal, wenn sie einen INNER Join statt OUTER Join machen darf.“.  Eine Google-Suche zu dem Thema ergab wenig quantifizierbare, valide Ergebnisse, also habe ich zuhause eine eigene Testreihe gestartet.

Mein Setup:

  • MySQL 5.4.2 Beta
  • Employees Datenbank, mit vervielfachter employees-Tabelle auf 10 Millionen Datensätze

Als Testabfrage dient ein Self-Join der Tabelle employees, der für OUTER und INNER Joins jeweils an fett gedruckter Stelle angepasst wird:

SELECT o.first_name, i.last_name
FROM employees o
{LEFT OUTER | INNER} JOIN employees i ON o.emp_no = i.emp_no
WHERE o.last_name =  'Sichman';

Die WHERE Klausel ist lediglich eingebaut, um die Ergebnismenge zu verkleinern. Als Ergebnis zeigt sich, dass der INNER Join in diesem Fall deutlich schneller ist (Durchschnittswerte nach 10 Iterationen mit FLUSH Statements, Angaben in Sekunden):

Jointyp Zeit in Sekunden
INNER JOIN 4.20
OUTER JOIN 12.17

By the way: Der Teufel steckt hier wie auch in obigem Business Objects Fall im Detail. Zeigt die WHERE Klausel auf die i-Tabelle, wird der Vorteil des INNER Join gegenüber dem OUTER Join dadurch zunichte gemacht – beide Anfragen haben fast identische Laufzeiten von über einer Minute.

No .htaccess Redirect: mein erstes WordPress Plugin

Man kennt sein CMS erst dann so richtig, wenn man selber Teile oder Plugins dafür programmiert hat. Mit „No .htaccess Redirect“ schlage ich demnach zwei Fliegen mit einer Klappe: Mein CMS und ich lernen uns kennen und ich bekomme endlich Menschen lesbare und Suchmaschinen freundliche URLs für Posts.

Die Tatsache, dass ich mit meinem Webpaket wenig Spektakuläres in Richtung .htaccess ausrichten kann, lässt meine Blog-URLs so aussehen:

http://stefan-reimers.de/?p=154

Nichtssagend, uninteressant für Suchmaschinen und letztlich unbrauchbar für mein Google Analytics und Co. Da wäre ein Link wie

http://stefan-reimers.de/blog/no-htaccess-redirect-mein-erstes-wordpress-plugin.php

doch viel schöner.

Eine einfache und verständliche Anleitung zum Erstellen eigener Plugins findet sich im WordPress Codex. Die Lektüre bedarf keiner fünf Minuten. Weiterführende Links zur Plugin API inklusive einer Liste aller Anknüpfpunkte (Hooks) in das WordPress System befinden sich ebenfalls auf der Seite.

Und dann kann es auch schon losgehen: Das Plugin soll bei jedem Erstellen, Ändern oder Löschen eines Posts eine Datei in einem bestimmten Verzeichnis anlegen bzw. aktualisieren oder entfernen. Inhalt dieser Datei ist lediglich ein Forward auf den eigentlichen Post-URI, nur dass diese Linkdatei einen sprechenden Namen bekommt. Als Namen verwende ich beispielsweise den „Post Slug“, der in WordPress unter dem Namen „post_name“ firmiert. Darüber hinaus muss bei Ausgabe aller Permalinks auf die URL der Linkdatei umgelenkt werden. Die Hooks dazu sehen wie folgt aus:

add_action('edit_post','no_htaccess_renew');
add_action('delete_post','no_htaccess_delete');
add_filter('post_link','no_htaccess_link');

Die Action-Hooks sorgen dafür, dass bei jedem Drücken des Save, Publish oder Delete Buttons für Posts die Linkdateien verwaltet werden. Der Filter-Hook überschreibt die Links. Das Anlegen und Löschen der Dateien ist für PHP Geübte dann reine Formsache. Beispielhaft hier die Funktion no_htaccess_delete:

function no_htaccess_delete($post_ID){
//creation of post object
$mypost = get_post($post_ID, ARRAY_A);
//delete file
@unlink($mypost['post_name'].".php");
return $post_ID;
}