KNiXuino Objects - was kann das

Im letzten Tutorial haben wir direkt in den KNX Bus an eine Gruppenadresse geschrieben. Jetzt lernst du die KNX Objekte kennen. Objekte setzt man ein sobald man den Schaltzustand eines KNX Devices kennen will. Schreibt man also nur Werte ins KNX, reicht es das wie im letzten Tutorial direkt zu machen. Will man aber auf Zustände reagieren, dann legt man ein Objekt an, von dem dann der aktzuelle Zustand bekannt ist. Am besten du probierst gleich den folgenden Sketch aus.

#include "elapsedMillis.h"
#include "KNXConnection_SIMKNX_raw.h"
#include "KNXBasicObjectTypes.h"
KNXConnection_SIMKNX_raw* knx = new KNXConnection_SIMKNX_raw();  
KNXBit* eg_buero = new KNXBit(0xA01, 0xA02);

void setup() {
  Serial.begin(9600);
  Serial.println("Ready ! ");
}

void loop() {
   knx->doIt();
}

void serialEvent()
{
  char ch = Serial.read();
  if (ch == 's') eg_buero->print();
  if (ch == '0') eg_buero->off();
  if (ch == '1') eg_buero->on();
} // end keyboardInput

Erklärung

Vieles ist bekannt. Wir inkludieren aber auch die Datei "KNXBasicObjectTypes". Hier werden die wichtigsten Objekte zur Verfügung gestellt.

Neben der KNX Connection, die wir schon kennen, legen wir ein Objekt vom Typ KNXBit an. Ein Bit Objekt ist jedes Objekt, das 2 Schaltzustände kennt. (0/1, ein/aus, rauf/runter usw.) Ich definiere meinen altbekannten Bürolichtschalter. Beim Anlegen des Objekts gibt man gleich die GA des Lichts an. Weiters kann man auch die Statusadresse angeben, auf der der Schaltaktor Statusmeldungen zurückschickt. Bit Objekte sind die am häufigsten verwendeten. Man kann ganze Häuser damit steuern...

loop: Im Loop hab ich die Zeile knx->doIt() hinzugefügt. doIt ist die Loop Methode, in der alles erledigt wird, was so regelmäßig erledigt gehört. (z.B. schauen ob eine Meldung über den Bus reingekommen ist und entsprechend Objekte aktualisieren etc.) Diesen Aufruf wird man also meistens im Loop haben. Damit ist auch Sichergestellt, dass unser Bürolicht immer aktuell ist. (Also auch, wenn es über den echten Lichtschalter ein- oder ausgeschaltet wird, weiss der KNiXuino wie der aktuelle Status ist.

serialEvent: Wir schrieben hier nicht mehr direkt in den Bus sondern schalten über unser BitObjekt ein oder aus. Die Methode print gibt am Serial Monitor den Status des Objekts aus.

Probiere es aus. Bei EIngabe von "s" im Serial Monitor sollte immer der aktuelle Status des Lichts ausgegeben werden, egal ob du es über den KNiXuino oder einen Lichtschalter eingeschaltet hast.