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.