Eigenes Smart Home System programmieren

Hi, ich träume schon länger davon, mein eigenes Smart Home zu programmieren. Ich finde Home Assistant toll, mich stören aber auch einige Dinge.

Allem voran stört mich, dass HA in Python programmiert ist und das Gesamtsystem generell aus einem Sammelsurium von verschiedenen Projekten und Programmiersprachen besteht. Das erfordert, je nach Funktionsumfang, ein immer leistungsfähigeres System.

Vielen mag das egal sein, weil sie sowieso mit Kanonen auf Spatzen schießen und einen Nuc oder ähnliches mit weiteren Diensten einrichten. Mir wäre ein schlankes und effizientes System aber lieber, das auch noch auf einem Raspberry Pi 3 oder sogar kleiner (Pi Zero) immer noch effizient läuft.

Ich spiele deshalb mit dem Gedanken, ein einfaches kleines Smart Home Projekt in Rust zu starten. Ziel ist es nicht, den vollen Funktionsumfang von Home Assistant abzubilden. Ich möchte mich vielmehr auf einige Kernfunktionen konzentrieren und dabei mehr Wert auf Effizienz und Stabilität legen. Das System soll auf einer möglichst kleinen Platform autonom laufen und vor allem für die Grundfunktionen im Haus zuständig sein wie Licht schalten und Heizung steuern, weniger für Dinge wie Solaranlage und E-Auto.

Das selbst so ein kleines System ein riesiges Projekt wird ist mir klar. Es gibt dutzende oder hunderte Protokolle und zig Tausend Geräte. Ich fange deshalb mit dem an, was zur Verfügung habe.

Ich werde anfangs Mosquitto und Z2M verwenden, aber mittelfristig soll auch das ersetzt werden. Beginnen werde ich aber ohne Zigbee sondern nur mit Wifi Geräten (Shelly, ESPhome, Wiz…)

Worüber ich mir noch nicht ganz im Klaren bin ist, wie ich am besten Automatisierungen erstelle. So wie es in HA gelöst ist finde ich nur bedingt optimal, habe bisher aber auch noch keine bessere Idee. Vorschläge werden gern entgegen genommen.

Bis die ersten Codezeilen geschrieben werden, vergehen noch ein paar Tage. Ich will mich zuerst mit einigen Kerntechnologien auseinandersetzen, zB MQTT. Ich werde das Protokoll denke ich als Schnittstelle zu HA nutzen, um es da integrieren zu können und nach und nach einzelne Funktionen portieren.

Mein HA läuft derzeit auf einem Odroid N2+, also quasi ein Home Assistant Blue, mit dem Mosquitto Broker und Z2M. Das verwende ich erstmal als Brücke zu ZigBee.

So, erstmal meinen geistige Dünnschiss in Worte gefasst. Wer seinen Senf dazugeben will ist herzlich eingeladen.

Naja ich glaube sehr viele haben HA auf einem Raspberry am laufen wo das voll ausreicht. Aber anstatt das Rad neu zu erfinden, wäre dann nicht ioBroker eher was für dich?

1 „Gefällt mir“

Ich weiß nicht, wie viele Ressourcen ioBroker braucht. Ich weiß nicht, ob das auf einem Pi zero brauchbar läuft. Aber ich verfolge ein anderes Ziel.

Ich möchte auch kein Rad neu erfinden. Nur etwas anders konstruieren. Außerdem programmiere ich gern.

Ich will auch (mein) HA nicht ersetzen. Den Funktionsumfang kann ich nichtmal im Ansatz erreichen. Ich sehe es erstmal als Ergänzung. Ziel ist es irgendwann, dass einfache Automatisierungen ohne HA laufen. Erstmal mit Wlan Geräten und “virtuellen” Sensoren wie Zeit

Mein System läuft nach wie vor entspannt auf einem Pi 4 und einer SD Karte. Und das seit Jahren. :wink:
Kann also die Not nicht ganz nachvollziehen.

Auf einem Pi Zero ein vernünftiges System zum laufen zu bekommen, halte ich jedoch für sehr ambitioniert.

Ich bin sehr gespannt wie weit Du kommst.

1 „Gefällt mir“

Rust ist halt um ein Vielfaches schneller als Python.

Mag sein, dass meine Idee hirnrissig ist, aber ich möchte es trotzdem probieren.

Was mir bei HA nicht so gefällt ist Yaml und Jinja in Kombination. Ich möchte ausschließlich eine Scriptsprache für Automatisierungen verwenden.

@Rustasian meine Empfehlung für dich wäre, deine Rust Kenntnisse und Ambitionen so einzusetzen bzw. dir zu überlegen, wie du dich in ein bestehendes SW System einbringen kannst.
Welche Schnittstelle(n) kannst du nutzen, um ein Modul in Rust zu implementieren, das nicht nur für dich einen Mehrwert darstellt. Versuche zB. Automatisierungen nach deinen Vorstellungen umzusetzen, ohne dafür gleich ein neues Eco System zu benötigen.
Welche Informationen benötigst du dafür? Wie kannst du an diese Info rankommen? Wie kannst du die Ergebnisse der Automatisierung wieder an das Eco System übergeben?
Oder zB. wenn dir die yml Dateien “nicht so gefallen”: implementiere in Rust einen Converter in ein json (?) Format und auch den Weg zurück, sowie einen hilfreichen Editor für zB. Automatisierungen.
Dabei wird dich die Community sicherlich untersützten.

2 „Gefällt mir“

@noschvie danke für deine Ratschläge. Mir ist klar, welchen Umfang meine Idee hat und ich bin realistisch genug um zu behaupten, dass ich vielleicht nie ein lauffähiges System haben werde. Aber es ist wie beim Lotto: wer es nicht versucht wird auch nie etwas erreichen.

Spaß beiseite: mir schwirren einfach ein paar Ideen und Vorstellungen im Kopf herum, die ich zumindest mal ausprobieren möchte. Und ich möchte mein Wissen zu bestimmen Technologien ausbauen, angefangen mit MQTT. Und so ein Smart Home ist eine nette Spielwiese dafür.

Mich dabei in ein vorhandenes System einklinken macht IMHO mehr Arbeit als von 0 anzufangen und sich auf da eigentliche Ziel zu konzentrieren. Mein erstes Ziel ist es, mit MQTT zu arbeiten. Dazu nutze ich erstmal einen vorhandenen Broker. Der Rest kommt dann nach und nach.