Neues HomeMatic Device: Unterschied zwischen den Versionen

Aus FHEMWiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
In diesem Artikel wird beschrieben, wie man ein vollständig neues HomeMatic-Device erzeugt und in das HomeMatic System einbindet. Dazu wird als grundlegende Software die [[HomeMatic_Asksin_Library | AskSin Library]] verwendet, die das Protokoll '''BidCos''' der HomeMatic-Devices implementiert.
In diesem Artikel wird beschrieben, wie man ein vollständig neues HomeMatic-Device erzeugt und in das HomeMatic System einbindet. Dazu wird als grundlegende Software die [[HomeMatic_Asksin_Library | AskSin Library]] verwendet, die das Protokoll '''BidCos''' der HomeMatic-Devices implementiert. Zur Abgrenzung von HomeMatic und zur Vermeidung von Urheberrechtsprobleme wird für ein solches Gerät die Kategoriebezeichnung ''HomeBrew'' verwendet


=Device=
Ein Device ist ein physikalisches Gerät mit folgenden Attributen
* einer Model Id, dies ist ein 2-Byte Code, der den Gerätetyp eindeutig kennzeichnet. Da die originalen HomeMatic-Devices niedrige Werte für die Model ID besitzen, sind für eigene Devices der Serie HomeBrew andere Werte zu verwenden, siehe dazu die Kategorieseite [[Kategorie:HomeBrew]].
* einer HomeMatic Id (HM Id), dies ist ein 3-Byte Code, der das Gerät im Netzwerk eindeutig identifiziert.
* einer Seriennummer (Serial Id), dies ist ein 10-Byte Code
** Zu klären: Zusammenhang zwischen SM Id ??
Diese Daten werden in der folgenden Datenstruktur in der Datei '''Register.h''' deklariert:
#include <AskSinMain.h>
//-- settings of HM device for HM class -----------------------------------------------------------------------------------
const uint8_t devParam[] PROGMEM = {
/* Firmware version 1 byte */  0x15, // don't know for what it is good for
/* Model ID     2 byte */  0xF2, 0x01, // model ID, describes HM hardware. we should use high values due to HM starts from 0
/* Serial ID      10 byte */  'P','A','H','0','0','0','2','0','1','4', // serial ID, needed for pairing
/* Sub Type ID      1 byte */  0x10, // not needed for FHEM, it's something like a group ID
/* Device Info      3 byte */  0x01, 0x01, 0x00 // describes device, not completely clear yet. includes amount of channels
};
HM::s_devParm dParm = {
/* device HM ID    3 byte */ {0xFE, 0xED, 0x04},         // very important, must be unique. identifier for the device in the network
/* send retries    1 byte */  3, // how often a string should be send out until we get an answer
/* send timeout    2 byte */  700, // time out for ACK handling
/* pointer to serial      */  devParam,
};
'''Warum hier die komplexe Struktur mit pointer ?


[[Kategorie:HomeBrew]]
[[Kategorie:HomeBrew]]
[[Kategorie:HomeMatic Components]]
[[Kategorie:HomeMatic Components]]

Aktuelle Version vom 20. September 2014, 20:58 Uhr

In diesem Artikel wird beschrieben, wie man ein vollständig neues HomeMatic-Device erzeugt und in das HomeMatic System einbindet. Dazu wird als grundlegende Software die AskSin Library verwendet, die das Protokoll BidCos der HomeMatic-Devices implementiert. Zur Abgrenzung von HomeMatic und zur Vermeidung von Urheberrechtsprobleme wird für ein solches Gerät die Kategoriebezeichnung HomeBrew verwendet

Device

Ein Device ist ein physikalisches Gerät mit folgenden Attributen

  • einer Model Id, dies ist ein 2-Byte Code, der den Gerätetyp eindeutig kennzeichnet. Da die originalen HomeMatic-Devices niedrige Werte für die Model ID besitzen, sind für eigene Devices der Serie HomeBrew andere Werte zu verwenden, siehe dazu die Kategorieseite.
  • einer HomeMatic Id (HM Id), dies ist ein 3-Byte Code, der das Gerät im Netzwerk eindeutig identifiziert.
  • einer Seriennummer (Serial Id), dies ist ein 10-Byte Code
    • Zu klären: Zusammenhang zwischen SM Id ??

Diese Daten werden in der folgenden Datenstruktur in der Datei Register.h deklariert:

#include <AskSinMain.h>
//-- settings of HM device for HM class -----------------------------------------------------------------------------------
const uint8_t devParam[] PROGMEM = {
/* Firmware version 1 byte */  0x15,					// don't know for what it is good for
/* Model ID	    2 byte */  0xF2, 0x01,				// model ID, describes HM hardware. we should use high values due to HM starts from 0
/* Serial ID       10 byte */  'P','A','H','0','0','0','2','0','1','4', // serial ID, needed for pairing
/* Sub Type ID      1 byte */  0x10,					// not needed for FHEM, it's something like a group ID
/* Device Info      3 byte */  0x01, 0x01, 0x00			// describes device, not completely clear yet. includes amount of channels
};
HM::s_devParm dParm = {
/* device HM ID     3 byte */ {0xFE, 0xED, 0x04},		        // very important, must be unique. identifier for the device in the network
/* send retries     1 byte */  3,					// how often a string should be send out until we get an answer
/* send timeout     2 byte */  700,					// time out for ACK handling
/* pointer to serial       */  devParam,
};

Warum hier die komplexe Struktur mit pointer ?