Historie
wie alles anfing
Ja entstanden ist das alles rudimentär so 2010, als wir in eine neue Wohnung ziehen wollten. Allerdings wollte ich die ganze aus den 50ern stammende Elektroverkabelung neu haben und es kamen auch die ersten Smart Home Ideen auf. KNX war zu teuer aber mal sehen was es so Open Source gibt, Da stieß ich auf ein Projekt iSysBUS. Das basierte auf intelligenten Knoten die über den aus der KfZ Technik bekannten CAN Bus verbunden waren. Zu dieser Zeit gab es zwei fertige Knoten den DevNode und und den TopRailNode, passend in ein auf standard DIN Hutschiene montierbares Gehäuse. Ersterer hatte neben dem CAN Interface eine serielle Schnittstelle zur Kommunikation mit dem PC und letzter hatte 8 optronisch entkoppelte Eingänge (für Taster, Schalter etc.) sowie 8 ebenfalls optronische entkoppelte Ausgänge (zum schalten von Relais) und natürlich ein CAN Bus Interface.
Auf den Knoten war ein damals gängiger kleiner ATMega verbaut, die Software in C geschrieben. Auf der PC Seite war ein Java Programm über das die Knoten initialisiert wurden bzw. deren Konfiguration eingestellt werden konnte. Das System selbst lief ohne PC, da die Knoten selbst ihre Konfiguration im EEProm hatten, auch ein Softwareupdate vom PC über einen CAN Bootloader war möglich. Somit war jeder Knoten für sich weitgehend autark, zumindest soweit Eingang und Ausgang auf dem selben Knoten lwaren. Logischerweise konnten Eingänge via CAN Message auch Ausgänge ander Knoten gesteuert werden.
Für die beiden Knoten konnte man professionell gefertigte Platinen kaufen und selbst bestücken und in Betrieb nehmen. Leider gab es noch keinen geplanten Knoten der in eine 55er Unterputzdose passte. Mehr als ein fehlerhafter Prototyp wurde es auch nicht mehr. Auch die Betätigung durch modifierzierte reguläre Schalterteile war nicht ausgereift.
Da ich nicht warten konnte/wollte habe ich die Leitungen zu den Schalterdosen sternförmig verlegt. Wenn man eine hin und eine Rückleistung einplant, hat man trotz Stern einen Bus den CAN benötigt. Bis der Knoten für die 55er Dosen kam, konnte ich so direkt Schalter und Taster anschliessen und über die Eingänge die Relais für Licht, Rollos etc. schalten. So blieb es dann auch. Das Projekt schlief halbfertig ein. Die Software PC seitig in Java (ist eh nicht mein Ding) extrem Modular, extrem unübersichtlich, schlecht zu installieren, da nur innerhalb ECLIPSE lauffähig. Die C Software dto. Mager dokumentiert, total überkandidelt flexibel, modular. Trotz intensiven Bemühens kein Durchblick.
Aber lief über Jahre absolut stabil, das muss man anerkennen.
Die Idee
Dann war es mal wieder soweit, ein neuer Umzug stand an. Logischerweise sollte auch die neue Wohnung zum Smart Home werden. Diesmal aber besser.
Gesetzt waren CAN Bus (ich mag kein WLAN für solche Dinge), ebenso die Sternverkabelung. Eine zentrale Stelle an der alle Verbraucher Lampem und Rollos, ankommen und über Relais geschaltet werden können. Optinal/alternativ auch über elktronische Schalter bzw. Dimmer. .
Sonstige Hardware, Arduino Nanos, a günstig, klein, gut mit der Arduino IDE auf beliebiger Plattform zu programmieren sowie einen Raspberry PI als LAN/WLAN Anbindung.
Näheres zu Hardware
Hier hatte ich 2 Vorgaben.
a) günstig und vermutlich langfristig verfügbare Standardbaugruppen.
b) Open Source IDE
Da ich mit dem Arduinos schon einige kleine Projekt gemacht hatte und der Arduino Nano, sowohl sehr günstig ist und über ausreichend Schnittstellen und gut Softwareunterstützung vorhanden ist fiel de Wahl leicht. Ferner sollte alles so modular und flexibel wie möglich sein. Es entstanden in der Folge 3 Platinen.
"Node Basis", eine runde Platine die in die U-Putzdose passt und unten einen Sockel mit langen Beinen für den Arduinio hat sowie den Stecker zum CAN Bus und den DC-DC (12V > 5V) Wandler. Hinzu kommen der CAN Controller mit Quarz und der CAN Bustreiber (beides SMD) und Blockkondensatoren. Auf der Oberseite kann nun eine Huckpackplatine gesteckt werden die alle Arduino NANO Anschlüsse verfügbar hat. Somit eignet sich die Basisplatine auch als beliebiger CAN Knoten.
"Node Taater" eine ebenfalls runde Platine die eine U-Putzdose abdeckt und am Rand 4 Löcher wie die U-Putzdosen hat. Mit Sockeln auf der Unterseite kann diese auf die "Node Basis" gesteckt werden. Oben können wahlweise 4 oder 1 Standard 12mm Taster aufgebaut werden, zusätzlich ist ein I2C Anschluss für Display etc. vorhanden und es ist ein Anschluss für einen DHT 22 alternativ eine DS18B20. auch 4 2 farbige LEDs (mittels PWM dimmbar sind vorhanden. Gleichzeit betrieben werden können, die 4 Taster, die 4 (8 wenn man beide Farben rechnet) LEDs die i2c Schnittstelle und einer der Sensoren.
Ein entsprechende Abdeckung kommt aus dem 3D Drucker.
"Node Center" ist eine größere Platine mit 12V > 5V DC-DC Wandler 10 CAN Schnittstellen, via Portextender 32 I/O Kanälen einer RTC (I2C) einem Display Anschluss (I2C) und einem CAN Interface, Ein 2 CAN Interface mit Pegelwandlern 5V <-> 3,3V stellt die Verbindung zum PI her, der auch darüber mit 5V versorgt wird.
Es können bei Bedarf mehrere solcher Zentralen implementiert werden.
Käufliche Relaisplatinen schalten die Verbraucher.
Maximale Anzahl an knoten bei der aktuellen Adressierung 254, Gruppen können zusätzlich adressiert werden.
Ein RASPI ebenfalls als CAN Knoten bietet die Öffnung zur Außenwelt.
Schließlich kamen zusätzlich zum bestehenden Unterverteilet zwei weitere 3 reihige Unterverteiler hinzu, einer mit 32 Relais (4 8-fach Module) und einer für die Zentralpaltine, das 12V Netzteil und den RASPI.
Software Grundsätzliches
Wichtig war mir hier alles muss ohne WLAN funktionieren, Erweiterung sollen jedoch möglich sein.
Die Software für alle Konten ist identisch Unterschiede in Hardwareausstattung, d.h. Anzahl und Art Taster (auch verschiedene Schalter bzw. Umschalter wären möglich), Anzahl und Art der LEDs, der Sensoren, des Displays, RTC, Expander wird über eine im EEPROM liegende Tabelle gesteuert, Die Tabelle ist über den Bus modifizierbar. Somit muss nur ein Softwarestand gepflegt werden. Es können somit auch fertige programmierte Arduinos als Ersatzteil vorgehalten werden, denen nur noch die Node ID und die Konfiguration mitgeteilt werden muss. Programmerstellung und Programmierung der Arduinos erfolgt über die Arduino IDE. Inzwischen bin ich aber auf PlatformIO mit VSCode umgestiegen. Wesentlich flexibler, Code Completion und viel weitere Dinge die man sich als Entwickler von einer professionellen IDE wünscht.
Die CAN Schnittstelle auf dem RASPI wird mittels Python angesteuert. Es gibt weiter Pythonprogramme zu Auslesen als auch Schreiben der Konfiguration sowie der Node IDs, zum stellen der RTC, ein PING zum checken der Knoten etc. Weitere Python Programme können den Status der Knoten abfragen bzw. Funktionen starten. Somit ist über den PI die Verbindung zur Außenwelt, Intratnet, Internet, PC, Smartphone etc. möglich. über ein CAN MQTT Gateway erfolgt die Anbindung an den Homeassitant.
Durch die hervorragende Arbeit von Peter Müller cryCode.de, von dem ich auch schon gute Tips zu Anbindung des RASPI an den CAN Bus hatte, gibt es jetzt auch einen CAN Bootloader. Somit können ohne direkten Zugriff auf die Knoten vom RASPI aus via CAN neue Software Versionen aufgespielt werden.
Schaltpläne und Layouts gibt es hier zum Download