DIY Open Source Smart Home für 300€

Hi und danke für dein Interesse!
Damit du dir schnell einen Überblick verschaffen kannst, habe ich den bisherigen Stand von meinem Smart Home in einem Video zusammengefasst:

Videoüberblick zum DIY Open Source Smart Home für 300€

Wenn du dir selbst auch so etwas bauen willst, dann abonniere den Newsletter. Nur da bekommst du den Link zum ei23 Smart Home Installationsskript. Damit kannst du dir mit nur wenig Aufwand ein eigenen SmartHome Server installieren.
Aber auch wenn du dir nur eine Cloud für Zuhause einrichten willst, ist es damit möglich.


Im folgenden Video zeige ich dir wie du das Basissystem mit dem Skript installierst:

Video zum ei23 Smart Home Installationsskript


Im folgenden Video zeige ich wie du diverse 433Mhz Sensoren mit einem Raspberry Pi verbindest.
Dazu verwende ich einen RTL-SDR DVB-T Stick mit dem man Signale deutlich besser empfangen und aufbereiten kann, als mit billigen DIY Kits.

Video-Tutorial zu NodeRED, Grafana und 433Mhz Sensoren


Einkaufsliste
[Amazon-Partner Links – hier verdiene ich eine Provision auf deinen Einkauf, damit kannst du das Projekt unterstützen, ohne dass es dich mehr kostet. SPARTIPP und bessere Möglichkeit zur Unterstützung – siehe unten]

Links für 433Mhz Sensoren und die Anbindung an den Raspberry Pi

SPARTIPP und bessere Möglichkeit zur Unterstützung
Amazon ist ein Tummelbecken für Dropshipper, das heißt einige Produkte werden aus China einfach durchgeleitet und der Preis oftmals auf das 3-10 fache gesteigert, ohne Mehrwert für den Kunden.
Daher fühlt euch frei auch bei AliExpress und Ebay zu stöbern, da bekomme ich zwar keine Provision, aber Direktspenden oder Patreon helfen deutlich mehr:
Wenn du das also Projekt direkt unterstützen willst, kannst du das z.B. hier:
patreon.com/ei23
paypal.me/fxgli

 


 

Informationen zu der genutzten Software

Software auf dem Raspberry Pi:

  • NodeRED – Dient als Steuerungsprogramm. Endlich übersichtlich Programmieren, dennoch ist alles möglich. Ein fantastisches Programm! (nodered.org)
  • Grafana – zum Visualisieren von Daten (grafana.com)
  • HomeAssistant – Hausautomatisierungsoftware als Ergänzung zu NodeRED (home-assistant.io)
  • InfluxDB – eine speziell für Sensordaten geeignete Datenbank (Stichwort: zeitbasiertes Gruppieren) (influxdata.com)
  • Mosquitto – ein MQTT-Broker, wichtig für den Austausch von Daten zwischen Sensoren und NodeRED (mosquitto.org)
  • PiVPN – Einfach zu installierendes VPN (pivpn.io)
  • PiHole – Werbeblocker, Kindersicherung und DNS-Server (pi-hole.net)
  • NextCloudPi – die eigene Cloud (NextCloudPi im Docker)

Software für Heizungssteuerung (Viessmann Heizungen):

Software für DVB-T Stick:

Software zum Entwickeln:

  • VSCodium – Texteditor oder IDE
  • PlatformIO – Zum Entwickeln von Firmware für ESP8266, ESP32 und Arduino
  • Arduino IDE – Nutze ich auch noch ab und zu, gefällt mir als IDE aber nicht so.
  • Firefox – Ja! NodeRED und Grafana laufen im Browser und bitte nutzt Firefox. Chrome wäre Verrat!

Software für Steckdosen:


8 Antworten zu “DIY Open Source Smart Home für 300€”

  1. Felix sagt:

    Hi!
    Wenn du dich mit mir oder anderen über das Smart Home Projekt austauschen willst, kannst du das gerne auch hier tun.
    So bleiben wir unabhängig von den Software-Giganten.

    – ei23

  2. Andreas sagt:

    Hallo.
    Ich finde die Idee mit dem Installationsskript genial! Bisher habe ich eine Netzcloudpi-Instanz seit über einem Jahr am Laufen. Diese ist lokal sowie über einen DynDNS-Anbieter von extern erreichbar. Nun möchte ich auf einem neuen Pi4 mit 4GB RAM eine neueNetcloud-Instanz und alle anderen ebenfalls im Skript angebotenen Programme installieren, komme aber leider nicht vorwärts.
    Keine lokalen Geräte müssen Dual Stack laufen und brauchen eine IPv6-Adresse. Leider installiert das Skript das ei23-docker-default nur mit IPv4. Der Versuch nachträglich ein IPv6 anzulegen und die einzelnen Container dann in das neue Netzwerk zu überführen erzeugt das eigentliche Problem: Wenn der Pi ordentlich heruntergefahren wird und nach einiger Zeit neu gestartet wird, dann stürzt beim booten der DHCPCD ab und der Pi bekommt keine IP-Adresse (weder IPv4 oder IPv6) und ist somit nicht mehr per Netzwerk erreichbar. Eine feste IP-Adresse ist auch keine Lösung.
    Kannst Du das Skript vielleicht anpassen, sodass es das Docker-Netzwerk direkt als Dual-Stack anlegt? Danke für eine Hilfestellung

    • Felix sagt:

      Hi Andreas!
      Ui, ich muss zugeben: Mit der IPV6 Materie kenne ich mich noch nicht so gut aus.
      Ich hätte jetzt pauschal gedacht, dass die Programme auch beispielsweise analog unter http://[I:P:V:6]:8080/ zu erreichen sind, wie es auch mit http://I.P.V.4:8080/ klappt.
      Man könnte jeweils eigene IPs für jedes Programm vom DHCP anfordern, damit habe ich mich aber auch erstmal nicht weiter befasst, weil die Konfiguration über die Ports und auch die allgemeine Erreichbarkeit über die Startseite so einfacher zu realisieren ist.

      Um die Konfiguration vom Docker anpassbar und übersichtlich zu halten, habe ich alles in der ei23-docker/docker-compose.yml konfiguriert. Da kannst du ja mal schauen, ob sich für dich da vielleicht schon etwas für eine nachträgliche Konfiguration eines Dual-Stacks für IPV4 und IPV6 anbietet.
      Nach einer Änderung muss lediglich „cd ei23-docker; docker-compose up -d“ ausgeführt werden.
      Näheres zur docker-compose.yml gibt es hier https://docs.docker.com/compose/compose-file/

      Bei Gelegenheit werde ich mich dem Thema aber auch mal annehmen.

      Viele Grüße,
      Felix

  3. TIm sagt:

    Hallo Felix, erstmal riesen Lob an deine Mühen! So habe ich doch ein kleines Corona Projekt gefunden. Leider habe ich ein paar fragen weil ich mich erst vor ein paar tagen richtig reinfuchsen konnte :)!. Ich habe zu dem Homeassistant noch den Conbee Stick von DresdenElectronic angeschlossen sowie das Pi Hole in Benutzung. leider kann ich aus irgendeinem Grund nicht mehr auf Nextcloudpi zugreifen, die ich jetzt im nächsten schritt installieren wollte. Mit dem Befehl: cd ei23-docker; docker-compose up -d
    zeigt er mir folgende Fehlermeldung an:
    -bash: cd: ei23-docker: No such file or directory
    pihole is up-to-date
    openhab is up-to-date
    homeassistant is up-to-date
    motioneye is up-to-date
    Starting nextcloudpi …
    tasmoadmin is up-to-date
    portainer is up-to-date
    influxdb is up-to-date
    ei23 is up-to-date
    mosquitto is up-to-date
    Starting nextcloudpi … error

    ERROR: for nextcloudpi Cannot start service nextcloudpi: driver failed programming external connectivity on endpoint nextcloudpi (9179babe1e83500bc8c917d303b57fb5b18573ef648d38691af7b828dca4eafc): Error starting userland proxy: listen tcp 0.0.0.0:443: bind: address already in use

    ERROR: for nextcloudpi Cannot start service nextcloudpi: driver failed programming external connectivity on endpoint nextcloudpi (9179babe1e83500bc8c917d303b57fb5b18573ef648d38691af7b828dca4eafc): Error starting userland proxy: listen tcp 0.0.0.0:443: bind: address already in use
    ERROR: Encountered errors while bringing up the project.

    leider weiß ich jetzt grade nicht mehr wirklich weiter und hoffe auf deine Hilfe!

    Lg Tim

    • Felix sagt:

      Hi Tim,
      ich kann dir leider nur sagen woran es liegt, dass NextcloudPi nicht startet, dass steht nämlich in der Fehlermeldung:
      Port 443 ist in Benutzung
      Welches Programm das bei dir ist, kanm ich dir nicht sagen.
      Rufe dazu einfach mal https://ipvompi auf, vielleicht zeigt sich dann was.
      Ich hoffe das hilft dir weiter.

      Viele Grüße,
      Felix

  4. andreas sagt:

    Hallo Felix.
    Nach einigen weiteren Tests, habe ich nun folgendes update:
    Um die Container per IPv6 ansprechen zu können, muss IPv6 zuvor A) im Docker Config File aktiviert sein und B) das Docker-Netzwerk bzw. das docker-compose file für IPv6 konfiguriert sein.
    Mein getesteter Code zu A)
    sudo nano /etc/docker/daemon.json
    {
    „ipv6“: true,
    „fixed-cidr-v6“: „fd00:0:10::/80“
    }
    Note 1: Es muss ein /80 Netzwerk sein, sonst startet der Docker Daemon nicht.
    Note 2: das Netz „fd00:0:0:10::“ ist ein zufällig gewähltes Netz aus dem privaten Adressraum „fd00::“ analog zum privaten IPv4-Netz 10.0.0.0.

    Mein getesteter Code zu B)
    Anpassungen im docker-compose file:
    ==================================
    version: ‚2.4‘
    #War ursprünglich version: ‚3‘

    # networks ist komplett neu hinzugekommen
    # Die bridge ist Dual Stack (IPv4 und IPv6 und hat hinterher den Namen „ei23-docker_ipv6“.
    networks:
    ipv6:
    driver: bridge
    enable_ipv6: true
    ipam:
    driver: default
    config:
    – subnet: 172.16.0.0/24
    gateway: 172.16.0.1
    # 172.16.0.0 ist ein privates Netz
    – subnet: fd00:0:3::/64
    gateway: fd00:0:3::1
    # fd00:: ist ein privates Netz
    =================================
    Dann muss jeder Container, wlecher an der Bridge (und nicht am Host) hängen soll, noch folgende Zeilen im docker-yompose file bekommen:
    ================================
    networks:
    – ipv6
    ================================
    Dennoch ist NodeRED erst über IPv6 erreichbar, wenn man das config file (~/.node-red/settings.js) anpasst. Nach der Zeile „uiPort: process.env.PORT || 1880, muss foglendes hinzugefügt werden:

    Mein getetster Code:
    ===============================
    uiHost: ::,
    ===============================

    Nun sind bei mir alle Container per IPv6 und IPv4 erreichbar, jeweils mit den bereits bekannten Ports bzw. von der Startseite (egal ob via IPv4 oder IPv6 aufgerufen). Ein ping mit IPv4 oder IPv6 läuft auch zwischen den Containern in der gleichen Bridge.
    Note 3: Ich habe nexcloud und pihole ausserhalb des ei23-Skripts in separaten Docker-containern laufen, da ich diese extern ereichbar machen möchte und hierzu getrennte IPs haben möchte. Es geht sicherlich auch das docker-compose file anzupassen.

    • Felix sagt:

      Hallo Andreas,
      danke für deine Mühe und deinen Beitrag.
      An der /etc/docker/daemon.json musste ich auch bereits schrauben, weil wenn PiHole als DNS-Server eingetragen wird, werden Anfragen aus den Docker-Containern nicht mehr aufgelöst und gehen ins Leere.
      Ich teste deine Lösung für ipv6 bei Gelegenheit und Pflege es in das Skript mit ein.

  5. Andreas sagt:

    Das andere Problem war noch die Fehlermeldung von DHCPCD.
    „Connection lost to DHCPCD“ stand als Tooltip im tray neben der Uhr, an der Stelle wo sonst die Internet Connectivity angezeigt wird mit den zwei blauen Pfeilen.
    Hier habe ich einen Workaround gefunden.
    Note 1: Der läuft bei mir, wenn es woanders nicht läuft –> Es ist nur ein Workaround, die Ursache konnte ich weder identifizieren noch beseitigen.
    A) Automatischer Restart von DHCPCD in (/lib/systemd/system/dhcpcd.service) konfigurieren.
    Unter [Service] folgendes hinzufügen:
    Mein getesteter Code:
    ==============================
    RestartSec=5
    Restart=always
    ==============================

    B) Dafür sorgen, dass DHCPCD beim Starten auf mindestens eine IPv4 oder IPv6 wartet, bevor es in den Hintergrund forkt. Das sorgte bei mir zumindest dafür, dass der pi auch bei fehlgeschlagenem DHCP dennoch vom Netz erreichbar war (vermutlich solgange bis das DHCP lease abläuft).
    In (/etc/dhcpcd.conf) folgende Zeile hinzufügen:
    Mein getesteter code:
    ============================
    waitip 4 6
    ============================
    BTW: mein Pi4 läuft mit „2020-05-27-raspios-buster-full-armhf“.
    Wahrscheinlich löst sich mein Problem von selber in einer zukünfitgne OS-Version.

    Diese Einstellungen sowie der vorangegangene Post haben meine Probleme gelöst, jedoch: Alles ohne Gewähr ob es woanders auch läuft.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.