eigenes SmartHome mit AVM, D-Link IP-Camera, mibi Thermometern & youless Smartmeter

  • Nach nun zweijährigem Produktivbetrieb veröffentliche ich meine eigenes gebastelte Smarthome-Lösung. Ziel war es, rein IP-gesteuert und cloud-unabhängig (!) mehrere Services einbinden zu können. Zwecks Plattformunabhängigkeit wurde auf eine Webseite mit jQuery Mobile gesetzt (geht auch auf dem PC und nicht nur am Handy/Tablet).



    Features:

    - Heizungssteuerung (primitiv)
    - Überwachungskameras
    - Bewässerungsanlage
    - Stromverbrauchsmessungen (gesamtes Haus und einzelne Verbraucher)
    - Zimmertemperaturen
    - Wetter



    Im Detail:


    Die Geräte (siehe Gerätschaften) sind alle per Portfreigabe [ja, steinigt mich] in der Fritzbox eingebunden und über zwei dynamische DNS Dienste (MyFritz und DynDNS) erreichbar.


    Die Heizungssteuerung erfolgt "manuell". Über Temperatursensoren (Fußbodenvorlauf, -rücklauf, Solarspeicher Oben, Solarspeicher Mitte) am mibi-Thermometer sowie in den DECT200-Steckdosen in einzelnen Zimmern, kann ich den Heizbedarf beurteilen. Eine Wetter-API von wetter.com verrät mir zudem die zu erwartende Höchst- und Tiefstemperatur zuhause und so kann ich abschätzen, ob es sich überhaupt lohnt die Heizung ein- oder auszuschalten. ( Zu einem späteren Zeitpunkt kann man dies automatisieren. )
    Ich schalte dann die Heizung über eine schaltbare DECT200 Steckdose hart ein oder aus. Hier ist eine robuste Heizung vonnöten, denn viele Geräte gehen dann in einen zu quittierenden Fehlermodus oder fordern sogar die Eingabe einer Service-PIN an. Bei meiner Fröling P4 Pellet funktioniert dies leider nicht mit dem als Option lieferbaren Touch-Bedienpanel, weswegen ich die klassische Menüführung mit LCD nutze. Die überlebt alle Resets. Der Absperrschieber schließt sicher batteriegestützt und die Restwärme überhitzt nicht die Wärmetauscher. Außerdem sollten die Solarkreiskumpen an einem separaten Stromkreis hängen (um den Solarspeicher natürlich weiter zu befüllen)! Dieses Setup ist sicher individuell.


    Die Kameras von D-Link ab 200,- sind wohl die einzigen Consumer-Produkte die stabil im 24/7-Betrieb laufen und ein fehlerfreies Rest-Interface bieten. Andere Produkte von Edimax, Digitus, Rollei, etc. habe ich schon durch. Untauglich. Ein Freund von mir setzt Instar erfolgreich ein. Die Kamera-Bilder werden auf ein NAS gespeichert und sind durchsuchbar; gleichzeit werden sie als Live-Bild oder Live-Stream in der Oberfläche abrufbar gemacht.


    Einzelne Stromverbraucher sind messbar dank DECT200-Dosen. Das gesamte Haus wird über einen Youless LS-110 "gemessen". Ein tolles Gerät, das sowohl die klassischen Ferraris-Zähler (große schwarze Kästen mit Dreischeibe) als auch die Impulssignale von modernen SmartMetern unterstützt. Sprich, kein herausgeworfenes Geld im Falle eines Upgrades (oder gesetzgeberischen Zwangsupgrades).
    Die Werte lasse ich auslesen und durch die Google Chart API schön als klickbares SVG visualisieren. Von der Arbeit aus habe ich dann schon mal fragend meine Frau zuhause angerufen, ob sie sich jetzt wohl gerade einen Kaffee macht :P Mit der Zeit lernt man die gerätetypische Verbrauchsanstiege ;)


    Die Bewässerungsanlage habe ich hier (http://www.roboter-forum.com/s…npumpe-amp-Versenkregnern ) beschrieben.


    In der Küche steht ein ausrangiertes Tablet, welches permanent bestromt wird in einer Tablet-Halterung. Die Display-Auszeit ist auf unendlich gestellt und die Oberfläche aktualisiert sich periodisch selbst. Ein netter Hingucker für alle Eckdaten. Wenn wer an der Haustür klingelt, tippen meine Kinder auf das Bildchen und sehen den Livestream der vorderen Kamera.




    Programmierung:

    PHP, Javascript, AHA-Schnittstelle, JSON- und XML-Restful-Interfaces. Alles in jQueryMobile zusammengeführt. Details auf Anfrage.



    Sicherheitsmechanismen:


    - zwei parallele DynDNS-Dienste in der Oberfläche zur Auswahl verfügbar, falls mal einer ausfällt
    - Gude 1102 Watchdog überwacht Fritzbox, tätigt ggf. automatische Reset per TCP-Probing und erlaubt manuellen Remote-Neustart
    - Firewall & Co. aus der Fritzbox



    Gerätschaften:


    - AVM Fritzbox mit Smarthome Funktion
    - AVM DECT200 mess- und schaltbare Steckdosen
    - D-Link DCS 2331 HD Kamera
    - Fröling P4 Pelletofen ohne Touchpanel (!)
    - mibi Temperatursensor
    - Youless LS110 SmartMeter
    - Gude 1102 Zwischenstecker



    smarthome2.jpg
    (Tablet-Ansicht)



    smarthome.png
    (Handy-Ansicht)


    smarthome3.jpg
    (Verbrauchsdiagramm)



    Fazit:


    Täglich im Einsatz, vergleichsweise billig, sauber dokumentierte und gepflegte Basis von AVM. Geil :D
    Leider sind für diesen Ansatz kleine Programmierkenntnisse in PHP und Javascript sowie Netzwerktechnik erforderlich.

  • Das sieht nach ziemlich viel individueller Programmierung aus oder denkst Du, das System wäre auch leicht auf andere Umgebungen portierbar?


    Warum setzt du auf Portfreigaben und nicht auf VPN? Das wäre nach meiner Einschätzung sicherer. Auf den Standardports laufen doch recht viele Angriffe von außen, das wäre mir für eine Heimsteuerung ein wenig zu kritisch.


    Toll finde ich, dass es unabhängig von irgendwelchen Cloud-Lösungen ist.

  • me2 : Es ist grundsätzlich individuell (soweit man jQueryMobile-Doku-Copy&Paste individuell nennen kann ;) ) programmiert, aber auch leicht portierbar, falls die Infrastruktur sämtliche Sensordaten per JSON/XML oder sonstigem Restful-Interface ausliefert. Die GUI holt sich einfach per AJAX / Javascript die Werte von einem PHP-Script, welches als Proxy fungiert. Hier ließe sich mit etwas Liebe eine einwandfreie Abstraktionsschicht mit Hersteller- und Geräte-API-klassen einziehen. Und vollkommen richtig, VPN wäre sicherer.

  • Danke, das klingt für mich trotzdem kompliziert :-)


    Zum Glück kann ich bislang für mich persönlich keinen großen Mehrwert eines "Smart Homes" feststellen, als Spielwiese wäre es aber durchaus interessant. Nur bei meinen Kenntnissen im Programmieren wäre ich wahrscheinlich über die offenen Ports in 2 oder 3 Minuten gehackt :-)

  • Beim Thema Sicherheit habe ich einen Zielkonflikt: Ich suche Flexibilität (Aufrufbarkeit von überall bzw. jedem internetfähigen Endgerät) und gleichzeitig einen gewissen Mindestschutz für meine Heimgeräte.


    VPN (hier IPsec) wäre das Mittel der Wahl und sehr leicht auf der Fritzbox aktivierbar. Jedoch rufen meine Frau und ich das "SmartHome" mal vom Handy, mal vom Arbeitsplatz, mal am heimischen Fernseher auf. Nicht all diese Geräte können VPN/IPsec und zudem würde dann i.d.R. der gesamte Netzverkehr über mein Zuhause geroutet, was ich in der Arbeit vielleicht garnicht möchte nur um nebenbei zu sehen, wer vor der Haustür steht....


    Lösungsansätze:
    - für einzelne Zugriffsgeräte könnte man vielleicht konfigurierbare VPN-Clients finden, welche nur bestimmte Zugriffe (IP-/DNS-Einträge) übers VPN/IPsec routen und den Rest des Verkehrs unverschlüsselt über den lokalen DHCP-gegebenen Gateway leiten. Das ist jetzt aber nix für mein Handy, meine Frau... Kennt da jemand entsprechende IPsec-Clients für Windows und Android?
    - mit mittlerem Aufwand könnte man einen Root-Server außerhalb des eigenen Heimnetzes mieten (oder sogar einen dedizierten Server in ein WLAN-Gastnetz der Fritzbox stellen), welcher sich per VPN/IPsec verbindet und dann als Proxy fungiert. Hier stellt sich die Frage was ist sicherer: Ein eigenes gewarteter Server, der gehackt werden kann, über welchen dann der Zugriff ins Heimnetz besteht oder ein Gerät eines Herstellers, welches eine Zeit lang mit Patches versorgt wird und gehackt werden kann, wovon aus dann Zugriff ins Heimnetz erlangt werden kann? Ich behaupte, beides ist gleich unsicher und ich persönlich bin wartungsfauler/minder erfahren im "Hardening eine OS", weswegen ich einen bekannten Hersteller bevorzuge, welcher unter Zugzwang steht, Updates bereitzustellen...


    Seht ihr andere Lösungsansätze?

  • Mit Android verbindest du dich am besten über VpnCilla mit der Fritzbox (https://play.google.com/store/…il.mjm4456.vpncilla&hl=de) Ich verwende das seit Jahren und die Verbindung ist sehr stabil und Wiederverbinden nach Trennung (z.B. wegen schlechter Mobilfunkabdeckung) funktioniert hervorragend.


    Für Windows Desktop wirst du kaum um die AVM-Lösung "FritzFernzugang" herumkommen. Das Programm wirkt veraltet und ich bin nicht sonderlich zufrieden damit, aber es funktioniert zumindest meistens (https://avm.de/service/vpn/pra…nrichten-fritzfernzugang/ )
    Edit: soweit ich mich erinnere kann man für die Verbindung auswählen, ob dann der gesamte Traffic über VPN laufen soll oder nur der Teil, der das entfernte VPN betrifft.


    FürWindows 10 auf dem Smartphone sieht die Situation wohl ziemlich schlecht aus. Jedenfalls entnehme ich das z.B. diesem Forum: https://www.administrator.de/f…-m%C3%B6glich-281043.html


    Für den TV brauchst du doch kein VPN, weil er sich im gleichen Netzwerk befindet wie die Fritzbox, oder?


    Einen externen Server als Proxy würde ich nicht verwenden. Wenn du weiterhin mit offenen Ports leben willst (oder musst), dann solltest du zumindest exotische Ports verwenden, die beim Scannen meist ausgeklammert sind. Für den Zugang auf mein NAS verwende ich (für Leute, denen ich VPN nicht zumuten kann) z.B. den Port 39876 und leite ihn in der Portfreigabe der Fritzbox auf den eigentlichen Zielport um (z.B. 443). Das klappt eigentlich sehr gut, denn seitdem habe ich keine fremden Einloggversuche mehr auf mein NAS registriert. Von außen musst du dann natürlich den Port 39876 aufrufen und landest dank Fritze auf dem vom Dienst verwendeten echten Port.

  • Ich verwende auch untypische Highports fürs Forwarding. Kannst du bei den genannten VPN-Clients selektiv für eine paar bestimmte IPs oder DNS-Einträge den VPN-Kanal anschalten und für den Rest die Verschlüsselung/das Routing aus lassen?

  • Da habe ich mich nicht mit beschäftigt. Beim FritzFernzugang konnte man irgendwo ein Häkchen setzen "Gesamten Netzwerkverkehr über VPN leiten" (oder so ählich). An mehr Einstellmöglichkeiten kann ich mich nicht erinnern. Bei VpnCilla gibt es schon mehr Einstellmöglichkeiten, aber die meisten Parameter sagen mir nichts. Ich bin froh, wenn es funktioniert :-)