Smart Home 2021

Diesen Artikel plane ich bereits seit einigen Jahren, aber irgendwie habe ich ihn nie geschrieben, weil es immer Pläne gab, es bei Gelegenheit mal wieder zu überarbeiten. Wenn es doch mal „kurz fertig“ war, dann fehlte die Zeit für einen Artikel. Nun habe ich endlich die Zeit gefunden etwas über mein Smart Home zu schreiben.

Überblick

Mein Smart Home nutze ich für die Steuerung von Lichtern, einigen Steckdosen, Heizung und unserem Rollo. Dazu hat es diverse Sensoren. Neben Temperatur und Luftfeuchtigkeit messe ich auch CO2, Feinstaub, Helligkeit und Lautstärke. Dazu habe ich auch Tür und Fensterkontakte und einen „Leak Sensor“ habe ich unter der Waschmaschine liegen für den Fall, dass dort irgendwas undicht ist. Gesteuert wird das ganze nicht nur über die Weboberfläche, sondern auch über diverse Schalter im Haus. Dabei habe ich mich bewusst gegen Sprachassistenten entschieden und setze wo ich kann auf offene Standards und Open Source Software.

Das Herz

Im Zentrum setze ich immer noch auf Home Assistant um alle Komponenten miteinander zu verbinden. Home Assistant läuft zusammen mit Mysql, Grafana, Influxdb und einen MQTT Broker auf einem virtuellen Server auf meinem Router. Zusätzlich habe ich einen Raspberry der über einen Phoscon ConBee 2 Stick diverse Zigbee Geräte steuert und über einer RaspiMatic Instanz Homematic Geräte anspricht. Ich habe eine Zeit lang auf einige Z-Wave Geräte gesetzt, doch die habe ich inzwischen ausgemustert.

Zigbee-Geräte

Leuchtmittel setzte ich fast nur von Philips Hue ein. Hauptsächlich sind das E27 Glühbirnen und LED Lightstrips. Ich habe auch einige E14 Glühbirnen von Tint im Einsatz. Ich habe auch zwei Osram PowerPlugs im Einsatz. Den ersten nutze ich für unsere ganzjährige „Weihnachtsbeleuchtung“ ein und den zweiten nutze ich, um den Bluetooth Musik Receiver für meine Stereoanlage bei Bedarf einzuschalten. Auch zwei Tür und Fensterkontakte, einen Feuchtigkeitsalarm und einen Vibrationssensor von Aqara habe ich im Einsatz. Beim Vibrationssensor suche ich aber noch nach einer sinnvollen Aufgabe. Ich habe auch ein Ikea Fyrtur Rollo im Einsatz. Ganz neu in der Zigbee Famile ist ein Danfoss Ally Thermostat, dass ich gerade ausprobiere. Zusätzlich setze ich auf Philips Hue und Ikea Zigbee Schalter, um die Geräte auch noch analog zu steuern.

Homematic-Geräte

Momentan habe ich drei Homematic Thermostate und drei Homematic Tür und Fensterkontakte im Einsatz. Generell empfinde ich die Homematic Software als sehr „Altmodisch und Unflexibel“, auch wenn ich sie über Home Assistant steuere. Deswegen arbeite ich bereits daran diese Geräte durch Zigbee Geräte zu ersetzen.

Alle anderen Geräte

Meine Lindy IPowerStrip 4 Steckerleiste schalte ich über SNMP und steuere damit PC, zweiten Monitor, Drucker und überwache den Stromverbrauch von all diesen Geräten und den Router und Smart Home Steuerungsgeräten. Dann habe ich eine Netatmo Wetterstation, die mir diverse Sensoren bietet. Da mir diese Station nicht genug Möglichkeiten bot und immer nur über den Umweg über das Internet alle 5 Minuten neue Werte liefert, habe ich eine eigene Wetterstation gebaut.

Die eigene Wetterstation

Meine Wetterstation setzt auf einen ESP32 Microcontroller. Ich nutze folgende Bauteile für die folgenden Aufgaben:

  • BH1750 Lichtsensor für die Messung der Helligkeit
  • BME680 Sensor für die Messung von Luftdruck und einen Raumluftqualitätsindex
  • SCD30 Sensor für die Messung des CO2 Gehalt in der Luft
  • SDS011 Sensor für die Messung von Feinstaubwerten
  • MAX9814 Sound Sensor für die Messung der Lautstärke
  • 3400 RF Transmitter und Receiver für die Steuerung einiger „alter“ 433 Mhz Schalter und Steckdosen (im Moment nicht mehr im Einsatz)

Die Daten der Wetterstation werden einmal auf einem E-Ink Display direkt ausgegeben und zusätzlich über MQTT an Home Assistant weitergeleitet.

Automatismen

Natürlich ist ein Smart Home ohne Automatismen nicht wirklich smart. Ich habe einige Routinen, die mir den Alltag durchaus erleichtern. Dazu gehören nicht nur Lichtschalter, die gleichzeitig mehrere Räume schalten können, oder die „Master“ Fernbedienung meiner Freundin, mit der sie vom Bett aus, das Rollo hoch und herunterfahren und gleichzeitig das Licht im ganzem Haus ausschalten oder nur im Schlafzimmer gedimmt ein und ausschalten kann, sondern auch einige selbstständige Schaltautomatiken:

  • Die Steckerleiste meines PCs erkennt selbstständig, wenn der PC nicht mehr genutzt wird und schaltet ihn und die Stereoanlage ab.
  • Wird die Außentür geöffnet, schaltet sich das Licht im Flur ein und nach 4 Minuten wieder aus
  • Das Rollo öffnet sich werktags morgens automatisch
  • Alle Heizungen regeln sich herunter, sobald ein Fenster geöffnet wird und regeln sich wieder hoch, sobald alle Fenster wieder zu sind
  • Es gibt diverse Discord und HTML 5 Popup Nachrichten, zum Beispiel, wenn die Luftqualität im Wohnzimmer sehr niedrig ist, gibt es einen Hinweis, dass gelüftet werden sollte.
  • Auch bei leeren Batterien, gibt es eine Benachrichtigung in der Home Assistant Webapp und in einem Discord Channel.
  • Unsere Weihnachtsbeleuchtung schaltet sich zu bestimmten Zeiten selbst ein und wieder aus
  • Eine Regel, die das Licht am Schreibtisch automatisch einschaltet, wenn der PC mit dem zweiten Monitor läuft und es sehr dunkel im Raum ist, wird zurzeit gerade getestet

Ersetzte Komponenten und Zukunftspläne

Lange Zeit habe ich auch auf Z-Wave Geräte gesetzt. Dort war allerdings bei den Thermostaten ein großes Delay, bis Änderungen übernommen wurden. Auch die Installation von Z-Wave war zu dem damaligen Zeitpunkt ziemlich aufwändig, weshalb ich es durch Homematic Geräte ersetzt habe. Zu dem damaligen Zeitpunkt gab es keine Zigbee Thermostate. Gleichzeitig bin ich allerdings von einer Philips Hue Bridge zum Phoscon Conbee II Stick gewechselt, um meine Zigbee Geräte zu verwalten. Phoscon bot gegenüber der Hue Bridge die Möglichkeit einzelne Zigbee Schalter mit eigenen Funktionen zu belegen. Die wenigen 433-Mhz Geräte, die ich im Einsatz habe, arbeiten leider nicht immer ganz zuverlässig. Das liegt auch daran, dass meine Wetterstation, die das Signal verarbeitet, keine Signale annimmt, während sie ihren E-Ink Display neu bespielt. So kann das Schalten eines Schalters gelegentlich verloren gehen. Da die Signale auch je nach Schalter mehrfach gesendet werden, kann man über diese Schalter keine Toggle Funktion abbilden. Deswegen habe ich diese Schalter zum großen Teil bereits ersetzt. Dazu habe ich gerade Telegram (weil der Messenger mir unsympathisch ist) durch Discord und HMTL 5 Push Benachrichtigungen ersetzt.

Momentan bin ich dabei, die Türkontakte und die Thermostate auf Zigbee umzustellen und Homematic langsam auszumustern. Homematic hat mich nach einem Raspberry Update schon einmal im Stich gelassen und ist auch so schnell überfordert, wenn es mehrere Signale gleichzeitig über Home Assistant geschickt bekommt. Da mir dieses System auf dem Raspberry in Kombination mit Home Assistant etwas zu wackelig ist, wird es ersetzt. Damit wechsle ich zum größten Teil auf Zigbee Komponenten für mein Smart Home. Ob ich damit weiterhin gut fahre, berichte ich beim nächsten Smart Home Blogeintrag.

Bachelorarbeit

Heute möchte ich euch meine Bachelorarbeit vorstellen. Das Thema ist: „Modellierung relationaler Datenstrukturen mit Hilfe der Graphendatenbank Neo4J“. Die Idee für dieses Thema ist in meinem Nebenjob entstanden. Ein Tool, welches beim Erstellen des relationalen Datenmodells immer mehr Probleme machte und deshalb abgelöst werden sollte, war der Ausgangspunkt. Dazu sollte das Datenmodell als Graph dargestellt werden, um später Analysemöglichkeiten über Graphalgorithmen zu ermöglichen. Daher habe ich in meiner Bachelorarbeit ein Programm geschrieben, welches ein relationales Datenbankmodell in eine Graphendatenbank (Neo4J) übertragen, bearbeiten und wieder in ein SQL-Skript exportieren kann.

Mein Arbeitgeber war auch sehr unterstützend, weshalb ich die Bachelorarbeit ohne Sperrvermerk schreiben und gleichzeitig auch den Quellcode meines Programmes unter eine MIT-Lizenz stellen durfte. Deshalb kann ich beides hier veröffentlichen.

Die Bachelorarbeit kann HIER gelesen werden.
Der Quellcode kann HIER heruntergeladen werden.

Dadurch, dass ich meine Bachelorarbeit mit meinem Nebenjob vereint habe, hatte ich den Vorteil, dass ich nicht so viele Verpflichtungen außerhalb dieses Projektes in der Zeit hatte. Wäre das nicht der Fall gewesen, wäre diese Zeit wohl wesentlich hektischer verlaufen und die Arbeit wäre auch nicht ganz so gut geworden.

Für die Bachelorarbeit und –kolloquium gab es jeweils eine 1,3 als Note. Damit bin ich auch mehr als zufrieden. Diese bestandene Prüfung bedeutet übrigens auch, dass ich mein Bachelor Studium erfolgreich beendet habe. Aber dazu in einen anderen Blogeintrag mehr.

Was ich auch sehr schön an diesem Projekt finde, ist die Tatsache, dass es vermutlich nicht wieder in einer Schublade verschwindet, sondern bei meiner Firma eingesetzt werden soll. Deshalb bin ich zur Zeit auch am Weiterentwickeln der Software. Selbst wenn dies nicht der Fall ist, kann sich jeder, der dieses Projekt fortführen möchte, den Code einfach herunterladen und da weitermachen wo ich ich aufgehört habe. Deshalb war mir der Open-Source Aspekt beim Erstellen dieser Software recht wichtig. Zudem kann ich dieses Projekt auch als ein Beispielprojekt bei Bewerbungsgesprächen nutzen, was auch kein zu unterschätzender Vorteil ist.

Zum Schluss noch ein großes Danke an all die Personen, die mich bei diesem Projekt unterstützt haben!

Smart Home Umsetzung Part II

Es ist so weit, ich habe wieder etwas an meiner Smart Home Lösung gewerkelt. (Konzept) (Part I)

Home AssistantArduino NodeMCU

Ich habe meinen Arduino durch einen NodeMCU ausgetauscht, welchen ich aber auch über die Arduino IDE programmiere. Der NodeMCU hat um einiges mehr Speicherplatz und Rechenpower, welche mir größere Software erlaubt. Zudem kann ich ihn über W-Lan anbinden, was es mir möglich macht, ihn auch weiter weg von einem Switch einzusetzen. Man kann ihn zudem direkt auf ein Steckboard setzen und er kostet nur 4€. Zudem würde ich den Arduino gerne für ein Robotic Projekt nutzen über das ich bei Gelegenheit noch einmal schreibe. Ich habe den NodeMCU zusätzlich um einen Helligkeitssensor erweitert. Meinen ursprünglich geplanten Klatsch Sensor, habe ich verworfen, da Frido, unser Hund beim Klatschen angelaufen kommt.

NodeMCU Smart HomePhilips Hue

Eigentlich wollte ich es vermeiden Philips Hue zu kaufen, da diese ziemlich teuer sind. Trotzdem habe ich mir jetzt eine Basis, 3 bunte Lampen, 3 Dimmschalter, eine einfache Dimmlampe und eine Osram Lightify E14 Lampe gekauft. Alles lässt sich problemlos über die Hue Bridge betreiben. Die Hue Bridge lässt sich zudem einwandfrei mit Home Assistant verbinden. Man kann auch über Home Assistant die Farbe der Lampe einstellen und die einzelnen Lampen dimmen. Die Dimmschalter von Philips funktionieren zudem sehr gut und sind praktisch zu bedienen.

433 MHz

Ich habe mir drei Doppelschalter, einen Fensterkontakt und einen Bewegungsmelder gekauft, welche 433 MHz einsetzen. Die Schalter verwende ich als Lichtschalter für die Philips Hue Lampen. Die Reichweite dieser Schalter ist leider sehr begrenzt und sie senden erst ein Signal aus, was ich nicht wirklich verarbeiten kann. Deshalb reagieren diese Schalter nur mit einer kleinen Verzögerung. Einer der drei Schalter kann gar nicht von meinem NodeMCU verarbeitet werden, was den Schalter für mich praktisch nutzlos macht. Der Fensterkontakt klebt bei mir an der Tür. Dort sendet er ein Signal wenn die Tür geöffnet wird, allerdings nicht, wenn sie geschlossen wird. Trotzdem lässt sich in Kombination mit Home Assistant sehr gut das Licht im Flur anschalten, wenn die Tür sich nach Sonnenuntergang öffnet.

Steckerleiste

Ich habe eine Lindy IPower Strip 4 als Steckerleiste für meinen PC. Leider habe ich die Version 1, welche kein IPv6 beherrscht und zudem nur die Stromstärke misst. Mithilfe von dem Ampere Wert kann ich mir zwar einen ungefähren Watt Verbrauch ausrechnen und sehen wie viel Last auf der Steckerleiste liegt. Das reicht zwar aus, um den Stromverbrauch ungefähr zu schätzen, allerdings hätte ich es gerne genauer gehabt, da einige Berechnungen in Grafana nicht so richtig Sinn ergeben mit einem von Ampere aus umgerechneten Wert. Die neue Version, die knapp 3 Monate nachdem ich die alte Version gekauft hatte, herauskam, hat genau diese Schwächen nicht. Diese Steckerleiste ist allerdings zu teuer, um sie ein zweites Mal zu kaufen. Ansonsten funktioniert die Steckerleiste sehr gut. Ich kann sie einwandfrei über SNMP mit Home Assistant schalten und den Ampere Wert auslesen.

Grafana

Smart Home Umsetzung Part I

Da ich im Moment gerade freie Zeit habe, habe ich mich etwas weiter mit meinen Smart Home Überlegungen auseinandergesetzt.

Home Assistant, Influx DB und Grafana

Auf meinem Raspberry habe ich Home Assistant, einen SNMP Client und Mosquitto installiert. Das funktionierte soweit einwandfrei und die einzelnen Komponenten spielen auch gut miteinander zusammen. Um Grafana und Influx DB auf den Raspberry zu installieren, musste ich etwas mehr Aufwand in Kauf nehmen. Es gelang mir mithilfe der Informationen, die ich auf einem Blog fand. Home Assistant bekommt über SNMP und über MQTT zurzeit die meisten Daten. Um den Datendurchsatz des Switches, den ich habe, zu überwachen, lese ich ifInOctes und ifOutOctets über SNMP aus. Diese Werte sind aber ziemlich kryptisch und sagen mir so nicht viel. Deshalb habe ich mir die benutzte Bandweite mit folgender Query in Grafana visualisieren lassen (Quelle) :

SELECT 8 * derivative(mean("value"),1s) AS "value" FROM "sensor.network_in"  WHERE  $timeFilter GROUP BY time($interval) fill(none)

Damit wurden mir dann einfache lesbare Grafen generiert:

Grafana Network Traffic SNMP

Arduino

Ich nutze einen Arduino Uno mit Ethernet Shield. Zusätzlich habe ich einen 433 MHz Sender und Empfänger, einen DHT11 Temperatur- und Luftfeuchtigkeitssenor und einen DS18B20 Temperaturfühler an das Arduino angeschlossen. Der Datenaustausch mit Home Assistant erfolgt über das MQTT Protokoll (Ich nutzte diese Implementation). Auch das Empfangen von Befehlen funktioniert über MQTT einwandfrei.

Arduino 433 MHz

Intertechno Funksteckdose ITLR-3500T mit Arduino mit 433 MHz steuern:

Ich nutze dafür die RCSwitch Library. Hierbei hatte ich lange Probleme. Die Funksteckdose wolle meine Signale nie akzeptieren und reagierte nicht. Ich habe sogar getestet, ob meine Hardware überhaupt in Ordnung ist. Nachdem ich eine Weile recherchiert hatte und schließlich einfach Codes ausprobiert habe, habe ich schließlich einen funktionierenden Befehl für die Steckdose gefunden.

#define INTERTECH_ON  "00000000000101010001010101010100" 
#define INTERTECH_OFF "00000000000101010001010001010100"
void switchOn(void){
  mySwitch.send(INTERTECH_ON);
}

void switchOff(void){
  mySwitch.send(INTERTECH_OFF);
}

Damit gelang es mir, die Funksteckdose anzusteuern.

Seacon 2015

logo-sub-title-2015Die Seacon ist eine Konferenz / Messe für für ITler in
Unternehmen deren  Kernthemen: Software-Engineering und -Architektur sind. Sie fand am  ƒ 7. – 8. Mai im Radisson Blu in Hamburg statt. Sie ist in mehrere „Tracks“ unterteilt (Softwarearchitektur / Technologie, Prozesse/Anforderungen, Management /Führung) und hat Fachvorträge und interaktive Formate, wie OpenSpaces & Pecha Kuchas.

Nachdem ich eine Mail über die FH bekam, in der Karten für die Seacon verlost wurden, nahm ich einfach mal auf gut Glück teil. Ein paar Tage später kam eine Mail, dass ich ausgelost wurde und auf die Seacon gehen durfte (Normalerweise kostet eine Karte wohl ~1600€).  Weiterlesen

Spiel: My Little Pony ärgere dich nicht!

maedn_mylittlepony

Seit geraumer Zeit programmiere ich an einem „Mensch ärgere dich nicht“ Klon für den PC.  Das läuft soweit auch ganz gut: menschliche Spieler können schon gegen sich oder den Computer spielen. Ein paar Regeln stehen auch zur Auswahl. Ein Netzwerkmodus ist in der Entwicklung (die grundlegende Verbindung funktioniert). Im Großen und Ganzen ist das Projekt also schon vorzeigbar.

Mein Bruder brachte ich mich auf die Idee, in meinem Spiel eine „Eigene Bilder“ Unterstützung zu programmieren. Ich fand die Idee klasse, weshalb ich das jetzt auch umgesetzt habe. Da ich gerade meine Ponyphase habe, habe ich als Beispiel Skin natürlich eine My Little Pony Fanedition programmiert (siehe Bild). Also meinen kleinen Schwestern gefällt es.

Wer es selber testen will kann die aktuelle Beta mit My Little Pony Skin (Haken bei System > Eigene Bilder setzten) gerne downloaden. Für Verbesserungsvorschläge bin ich jederzeit offen.
Spielvoraussetzungen sind Win Vista/7 oder .net Framework 3.5.