Einbruchschutz mit einer Anwesenheitssimulation.
Für jeden Schalter kann man ein internal Bit setzen. Wer sich ein wenig mit dem Code von Anwesenheitssimulation und Kommandosequenz vertraut gemacht hat hat auch gesehen, dass diese automatisch das internal bit gesetzt bekommen. Hier soll kurz erklärt werden was das genau ist. Dieses Verständnis ist für eigene Projekte unter Umständen nicht unwichtig.
Das internal Bit ist eines der Einstellungsbits eines KNXObjects. Somit gibt es für jedes KNXObject (und davon abgeleiteten Klassen) ein internal Bit. Standardmäßig wird dieses auf 0 (false) gesetzt. Das internal Bit legt fest ob der Arduino selbst der ausführende Aktor ist oder nicht. Wenn also der Arduino auf Schaltbefehle reagiert etc. dann handelt es sich um einen internen Schalter.
Ein interner Schalter reagiert anders "in das" KNX System als ein externer Schalter. Schaltet man einen externen Schalter um, so schreibt KNiXUino diesen Schaltbefehl einfach ins KNX und erwartet, dass der entsprechende Aktor darauf reagiert.
Schaltet KNiXUino aber einen internen Schalter um, so reicht es den Wert im Arduino zu ändern. Falls eine Status GA definiert ist, dann schreibt der KNiXUino eine Statusmeldung ins KNX, dass der Schaltvorgang erfolgreich war.
Ein interner Schalter ist die Anwesenheitssimulation, oder auch die CommandSequence. Die Anwesenheitssimulation selbst wird im KNiXuino ein- und ausgeschaltet. Es interessiert also nur den KNiXUino ob die Anwesenheitssimulation läuft oder nicht. Dass diese dann wiederum andere Schaltvorgaänge bei Lichtern auslöst hat damit nichts zu tun.
Fürs bessere Verständnis noch ein Beispiel:
Mein Bürolicht wird von einem KNX Schaltaktor geschalten. Der KNiXuino kann also das Bürolicht umschalten indem er eine KNX Meldung schickt. Wenn man jetzt buerolich.on() aufruft muss der KNiXuino eine Schaltaufforderung in den Bus schreiben, damit das der Schaltaktor ausführt. Das ist somit KEIN internes Licht. Somit darf auch das internal Bit NICHT gesetzt werden.
Angenommen man will bei seinen KNiXuino Basteleien eine Lampe bauen, die vom Arduino angesteuert wird. Das Lämpchen hängt also an einem Ausgangspin des Arduino. Wenn jetzt bastellaempchen.on() aufgerufen wird, so soll der KNiXuino keine Meldung ins KNX schicken. Er ist ja selber der Aktor der das Lämpchen bedient. Er soll einfach nur die Lampe einschalten. Sollte eine Status-GA definiert sein, dann schickt er danach eine Statusmeldung in den Bus, dass der Schlatvorgang tatsächlich erfolgt ist, genauso wie das der KNX-Schaltaktor macht.
Es gibt Methoden zum Setzen und Auslesen des Bits
void setInternalBit(boolean value) uint8_t getInternalBit()