„Taster schaltet Lampe“
Dies ist die zentrale Sichtweise bei CAN@home. Diese beruht auf dem Grundsatz: „Auslöser (Quelle) benachrichtigt aktiv den Aktor (Ziel)“. Das bedeutet es gibt eine ereignisausgelöste und zielgerichtete Kommunikation.
Dies unterscheidet sich grundlegend von der Philosophie, wie sie z.B. im Auto verwendet wird. Dort heisst es: „Das Innenlicht reagiert auf den Zustandswechsel des Türkontakts“ oder ausführlicher: „Der Türkontakt verschickt regelmäßig seinen Zustand. Wer sich dafür (und vor allem für einen Flankenwechsel) interessiert, muss das selbst herausfinden“.
Was im Auto aufgrund der klar begrenzten Teilnehmer/Funktionen so noch sinnvoll funktioniert, stößt in der erweiterbaren Hausautomation auf Probleme. Bei Verbau eines neuen Lichtschalters beispielsweise, müssten alle Lampen neu konfiguriert werden, die darauf reagieren sollen. Umgekehrt ist es einfacher, dem neuen Lichtschalter die Lampen mitzuteilen, die er bei Tastendruck informieren soll. (Nicht zuletzt erleichtert dies auch die Protokollierung und die Fehlersuche am Bus bzw. das Debuggen der Applikationen, da nicht nur Zustände zyklisch übertragen werden, sondern Kommandos für konkrete Aktionen auf dem Bus sichtbar sind).
Zusätzlich zur gerichteten Kommunikation im Ereignisfall, gibt es zyklische Kommunikation, mit der die Applikationen alle Busteilnehmer über ihren Status informieren (Broadcastkommunikation). Ein Thermometer berichtet dabei z.B. regelmäßig über seine gemessene Temperatur „Es ist 20°C warm draußen“, der Dimmer teilt mit, dass er momentan eingeschaltet ist usw.. Dies erlaubt einer Visualisierung fortlaufend auf dem aktuellen Stand zu sein, ohne alle Teilnehmer ständig nach aktuellen Werten zu befragen.
Übrigens, alle Applikationen sind natürlich an einem CAN-Knoten angeschlossen, der die Kommunikation abwickelt und die Hardware bedient. Dennoch tritt dieser bei der Betrachtung der einzelnen Parameter und Funktionen der Applikation in den Hintergrund, denn der Knoten soll transparent sein. Deshalb gilt der Grundsatz „Taster schaltet Lampe“ und nicht „Taster2 an Knoten4 schaltet Lampe1 an Knoten3“.