Hallo Java-Gemeinde!
Ich möchte ein Funkprotokoll in Java auswerten und die Informationen weitersenden.
Hierfür möchte ich vorher eine UML erstellen, damit ich eine Übersicht habe, was soll wie programmiert werden.
Leider bin ich hier sehr neu und was die "best practice" aller Klassen Interfaces, abstrahieren, ... ist, bitte ich um Mithilfe.
Ich möchte das EnOcean Protokoll auswerten und die einzelnen Informationen weitersenden.
Der Protokollaufbau ist hier einzusehen: http://www.enocean.com/esp
Die Protokolltypen sind hier einzusehen: http://www.enocean-alliance.org/eep/
Zusammenfassung in Kürze:
1. Ich bekomme die EnOcean Telegramme als Byte Array von einer anderen Klasse
2. Es gibt ESP2.0 und ESP3.0. Aktuell wird nur ESP3.0 ausgewertet
3. Die Pakete werden in einzelne Informationen zerlegt:
a. Sync. Byte
b. Data Length
c. Optional Length
d. Packet Type
e. CRC8H
f. Data
g. Optional Data
h. CRC8D
d. Packet Typen:
0 Reserviert
1 Radio telegram (aktuell nur dieser Typ wird implementiert)
2 Response to any packet
3 Radio subtelegram
... usw
f. Data Je nach Packet Typ (d.) sind die Data Werte unterschiedlich zu interpretieren. Wir gehen von einem Radio Type aus (= 0x01 Wert bei d.).
data 1. Byte = RORG:
RORG Typen:
RPS F6 Repeated Switch Communication
1BS D5 1 Byte Communication
4BS A5 4 Byte Communication
VLD D2 Variable Length Data
MSC D1 Manufacturer Specific Communication
... usw
Zu jedem Telegram muss man noch händisch angeben, um was es sich handelt.
Hierzu fügt man zu RORG noch FUNC und TYPE hinzu.
Alle drei sind im EnOcean festgelegt und statisch:
Und je nach Type(RORG,FUNC,TYPE) muss man die Daten unterschiedlich lesen.
Enocean hat dann auch für die Typen unterschieliche Enum:
pressed
not pressed
open
close
Temperatur
CO2
... usw
Am Ende habe ich ein Object, das durch
RORG
FUNC
TYPE
definiert ist.
Wie bringe ich das nun in eine Struktur?
Ansatz:
Es gibt mal eine EnOcean Klasse. Diese ist abstrakt
Dann gibt es für jeden Telegram Type eine Subklasse(??) aus der EnOcean.
Ein Interface für die Subklassen, die die Methoden und Attribute definiert.
Denn je nach Telegram Type muss ich den Inhalt gesondert lesen
Es gibt einen Listener(Raw Daten annehmen), einen Worker(Raw Daten zerlegen und auswerten) und einen Sender(ausgewerte Objekte zurückgeben)?
Für Hilfe wäre ich sehr dankbar.
Liebe Grüße
Ich möchte ein Funkprotokoll in Java auswerten und die Informationen weitersenden.
Hierfür möchte ich vorher eine UML erstellen, damit ich eine Übersicht habe, was soll wie programmiert werden.
Leider bin ich hier sehr neu und was die "best practice" aller Klassen Interfaces, abstrahieren, ... ist, bitte ich um Mithilfe.
Ich möchte das EnOcean Protokoll auswerten und die einzelnen Informationen weitersenden.
Der Protokollaufbau ist hier einzusehen: http://www.enocean.com/esp
Die Protokolltypen sind hier einzusehen: http://www.enocean-alliance.org/eep/
Zusammenfassung in Kürze:
1. Ich bekomme die EnOcean Telegramme als Byte Array von einer anderen Klasse
2. Es gibt ESP2.0 und ESP3.0. Aktuell wird nur ESP3.0 ausgewertet
3. Die Pakete werden in einzelne Informationen zerlegt:
a. Sync. Byte
b. Data Length
c. Optional Length
d. Packet Type
e. CRC8H
f. Data
g. Optional Data
h. CRC8D
d. Packet Typen:
0 Reserviert
1 Radio telegram (aktuell nur dieser Typ wird implementiert)
2 Response to any packet
3 Radio subtelegram
... usw
f. Data Je nach Packet Typ (d.) sind die Data Werte unterschiedlich zu interpretieren. Wir gehen von einem Radio Type aus (= 0x01 Wert bei d.).
data 1. Byte = RORG:
RORG Typen:
RPS F6 Repeated Switch Communication
1BS D5 1 Byte Communication
4BS A5 4 Byte Communication
VLD D2 Variable Length Data
MSC D1 Manufacturer Specific Communication
... usw
Zu jedem Telegram muss man noch händisch angeben, um was es sich handelt.
Hierzu fügt man zu RORG noch FUNC und TYPE hinzu.
Alle drei sind im EnOcean festgelegt und statisch:
Und je nach Type(RORG,FUNC,TYPE) muss man die Daten unterschiedlich lesen.
Enocean hat dann auch für die Typen unterschieliche Enum:
pressed
not pressed
open
close
Temperatur
CO2
... usw
Am Ende habe ich ein Object, das durch
RORG
FUNC
TYPE
definiert ist.
Wie bringe ich das nun in eine Struktur?
Ansatz:
Es gibt mal eine EnOcean Klasse. Diese ist abstrakt
Dann gibt es für jeden Telegram Type eine Subklasse(??) aus der EnOcean.
Ein Interface für die Subklassen, die die Methoden und Attribute definiert.
Denn je nach Telegram Type muss ich den Inhalt gesondert lesen
Es gibt einen Listener(Raw Daten annehmen), einen Worker(Raw Daten zerlegen und auswerten) und einen Sender(ausgewerte Objekte zurückgeben)?
Für Hilfe wäre ich sehr dankbar.
Liebe Grüße