Um Leuchten oder Heizungen elektronisch zu steuern werden im einfachsten Fall Insel-Lösungen verwendet. Dies sind z.B. Leuchten mit Bewegungsmelder, Steckdosen mit Funkfernbedienung, Hausnummernbeleuchtungen mit Dämmerungssensor oder Termostate für Heizungen. Deutlich flexibler sind die System-Lösungen, bei denen sich mehrere Sensoren und Aktoren kombinieren lassen. FS20 von ELV ist eines dieser Systeme. Hier lassen sich beliebig viele Fernbedienungen, Dimmer, Schalter oder Ventile miteinander verbinden. Alles, was Befehle sendet, wird dabei Sender genannt. Alle Geräte, die Befehle ausführen, heißen Empfänger. Sender und Empfänger werden direkt miteinander verbunden. Drückt man eine Taste, geht z.B. das Licht im ganzen Raum an. In den Sendern werden alle Befehle programmiert und die Empfänger darauf angelernt. Für komplexere Zusammenhänge wird meistens eine Zentrale benötigt, die alle Schaltzustände kennt und damit flexibler die Empfänger steuern kann.
Zentrale
Für FS20 gibt es die FHZ-Zentralen. An einem angeschlossenen PC mit Windows-Programm stellt man ein, wie die Zentrale auf Eingänge reagieren soll. Die größten Probleme sind dabei erstens das Windows-Programm und zweitens, dass man für immer bei FS20 bleiben muss.
Mit dem USB CUL-Adapter kann jeder Rechner FS20-Signale empfangen und senden. Sehr gut geht das mit einem Raspberry Pi oder einem kleinen Server. Als Software wird in der Regel FHEM verwendet. Es handelt sich um extrem aufwändige Perl-Scripte, die massenweise Hausautomatisierungs-Systeme kennen und verbinden können. Auf Konfigurierbarkeit und Benutzerfreundlichkeit im täglichen Einsatz wurde dabei kaum Wert gelegt.
CUL_FS20
Als Ersatz für FHEM entwickelte ich CUL_FS20. Dies ist lediglich eine Klasse für node.js, die über den CUL-Adapter mit FS20-Geräten spricht. Ein kleines Script kann die Sender und Empfänger beliebig verknüpfen. Eine Webseite und weitere Funktionen lassen sich einfach ergänzen, denn dafür ist node.js gedacht. Ich habe mich dabei für Meteor entschieden, aber es geht auch genauso mit ExpressJS oder ohne Framework direkt in node.