Temperaturen

Mit den bisher genutzten Datentypen (Bit und Byte) kann man sehr viel machen. Dennoch bietet KNX mehr. Es können auch recht komplizierte Daten übertragen werden. Für die meisten ist eine Umwandlung etc. nötig um in lesbarem Format genützt zu werden. Für die wichtigsten dieser Typen stellt daher die KNiXuino Library Klassen zur Verfügung.

Vermutlich der am häufigsten benützte Datentyp im KNX, der länger als ein Byte ist sind wohl die Temperaturen. Temperaturen werden als 2 Byte Werte übertragen. Nachdem man für vernünftige Temperaturangaben Nachkommastellen und negative Zahlen benötigt hat man eine Umrechnung entwickelt, die in 2 Byte ausreichend genaue Werte in einem ausreichend großen Intervall bietet. So sind Temperaturen von -670000 bis 670000 mit einer Genauigkeit von 0,01 Grad möglich, was selbst für sehr spezielle Ansprüche ausreicht. (Wohlgemerkt gibt es noch einige weitere Datentypen für Temperaturen, die aber vermutlich kein Gerät der Welt nützt. Die KNX Foundation war sehr fleißig mit Datentypdefinitionen...)

Nachdem die Konvertierung von diesem 2 Byte Wert zu einer Gleitkommazahl bzw. umgekehrt nicht gerade intuitiv abläuft haben wir eine Tochterklasse von KNXObject gebastelt (KNXTemperature), die diese Funktionen zur Verfügung stellt.


#include <Arduino.h>

#include "KNXConnection.h"
#include "KNXObjectDefinitions.h"
#include "KNXTemperature.h"


KNXTemperature temp(ga(4,3,0));

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

void loop() {
}

void serialEvent()
{
  char ch = Serial.read();

  if (ch == 'b') temp.setFloat(43.63);
  if (ch == 's') Serial.println(temp.getFloat());
  if (ch == 'r') temp.print();
  if (ch == 'l') Serial.println("----------------------------");

} // end keyboardInput  


  


  


Man kann also über Eingabe von "b" den Wert auf die Temperatur von 43.63 setzen. Mit "r" wird der 2 Byte Wert ausgegeben, der wenig aussagt. Mit "s" wird der Float Wert ausgegeben.

Werte aus dem KNX auf der angegebenen Gruppenadresse werden gelesen. Auf der GA (4/3/0) sendet ein Raumthermostat von mir in regelmäßigen Abständen. Wenn ich also über "b" der Wert auf 43.63 setze, bleibt dieser Wert so lange so, bis das Raumthermostat wieder einen aktuelleren Wert schickt. Außerdem wird die Heizung über den Stellantrieb zurückgedreht, weil es 43,63 Grad für eine ausreichend hohe Zimmertemperatur hält....