Seite 1 von 2

Device-ID - wie stelle ich die Eineindeutigkeit sicher ?

Verfasst: 10.01.2019, 10:05
von firefox_i
Hallo zusammen,
irgendwie hab ich grade nen Knoten im Hirn... :mrgreen:

In den Sketches sind ja 2 Dinge, die immer eineindeutig sein müssen:
- Device-Serial
- Device ID

Hab ich das richtig verstanden, dass ich das hart codiere und für mehrere Geräte dann auch unterschiedliche Stände flashen muss?

Ich frag mal ganz naiv:
Muss da jedes für sich eineindeutig sein oder nur die Kombi aus beidem?
Dass man die Infos aus einem Seriennummernchip nimmt geht nicht und das dann zur Laufzeit ermittelt?

Sorry wenn das ne blöde Frage sein sollte, einfach ignorieren.

Re: Device-ID - wie stelle ich die Eineindeutigkeit sicher ?

Verfasst: 10.01.2019, 10:39
von harvey
Hi,

ja, richtig verstanden, müssen immer beide unterschiedlich sein, da sie an verschiedenen Stellen verwendet werden.
Siehe auch "sketch-anpassen-und-flashen" auf den Dokuseiten.

Dabei wird die Device-ID (3 Byte HEX) für die Kommunikation über den CC1101 verwendet. Ist also eine Adresse im
"Funknetzwerk", welches die CCU und die Geräte verwenden. Identische ID == Adressen sind hier eine
echt schlechte Idee.
Historisch bevorzugt EQ3 "niedrige" Device-IDs, Eigenbauten eher "höhere" Ids. Muss man selbst verwalten, eine
übergeordnete Verwaltung ala DENIC oder EthernetVendorsMacs gibt es nicht. Alle angelernten Geräte haben diese IDs
in einer Konfigurationsdatei in der CCU.

Die Device-Serial ist ein 10 stelliger Text, der in eigentlich allen Stellen in der WebGUI und weiteren Tools
verwendet wird. Ein sinnvoller Text macht die Verwendung des Gerätes leichter. Es ist aber auch denkbar,
etwa einen Teil (4 Zeichen) vorzugeben und die Device-ID als Zeichen zu verwenden.

Also aus ID "0xA5A537" und Prefix "SENS" würde dann "SENSA5A537". Das bleibt aber jedem selbst überlassen.

ciao
Harvey

Re: Device-ID - wie stelle ich die Eineindeutigkeit sicher ?

Verfasst: 10.01.2019, 11:02
von firefox_i
Hallo Harvey,
okay danke für die Erklärung, dann hatte ich das ja richtig verstanden.

Weiß jemand wie diese Device-IDs bei EQ3 vergeben werden ?
Ist ja im Endeffekt ein 24 bit-Wert und da ist bei 16 Mios ja Ende.

Gruß
S.

Re: Device-ID - wie stelle ich die Eineindeutigkeit sicher ?

Verfasst: 10.01.2019, 11:10
von jp112sdl
Hier ist es noch ein bisschen in bunt erklärt: https://asksinpp.de/Grundlagen/02_softw ... nd-flashen
firefox_i hat geschrieben:
10.01.2019, 11:02
Weiß jemand wie diese Device-IDs bei EQ3 vergeben werden ?
Bei mir beginnt die Adresse für das Gerät mit der kleinsten Seriennummer (KEQ...) mit 0x22....
Das neueste Gerät (OEQ...) mit 0x56
Alles dazwischen hat was mit 0x4...

Ist vielleicht tatsächlich nur eine laufende Nummerierung.

Re: Device-ID - wie stelle ich die Eineindeutigkeit sicher ?

Verfasst: 10.01.2019, 11:23
von firefox_i
Hallo Jerome,
danke für die Info.

Gibt es / gab es denn mal Ansätze diese beiden Werte (Device-ID und Serial) zur Laufzeit zu ermitteln oder war das bisher immer hart codiert?

Ich denke mich dunkel dran zu erinnern, dass da mal jemand mit nem 644-er was mit dessen Unique-ID gemacht hat.

S.

Re: Device-ID - wie stelle ich die Eineindeutigkeit sicher ?

Verfasst: 10.01.2019, 11:27
von jp112sdl
Es gibt nicht nur den Ansatz - das ist sogar fertig implementiert: USE_HW_SERIAL

Funktioniert jedoch nicht mit dem 328P, weil dieser dieses Feature nicht besitzt.

Re: Device-ID - wie stelle ich die Eineindeutigkeit sicher ?

Verfasst: 10.01.2019, 13:01
von firefox_i
Schade....
da könnt man doch eventuell über ein externes SPI EEPROM mit einer Unique ID was basteln oder ist das bescheuert ?

S.

Re: Device-ID - wie stelle ich die Eineindeutigkeit sicher ?

Verfasst: 10.01.2019, 13:27
von jp112sdl
Man könnte auch einen DS2401 nehmen.
Weiß nicht, ob sich der Aufwand lohnt...

Ich habe es mir angewöhnt, bei mehreren Geräten desselben Typs nur die letzte Stelle zu inkrementieren, und die ersten 2 Bytes nehme ich aus dem Device Model. Das letzte Byte ist auch gleichzeitig das Ende der Seriennummer.

Beim HM-WDS40-TH-I bspw.:

- Gerät 1:

Code: Alles auswählen

const struct DeviceInfo PROGMEM devinfo = {
  {0x00, 0x3f, 0x01},     // Device ID
  "JPTH40I001",           // Device Serial
  {0x00, 0x3f},           // Device Model
  ...
};
- Gerät 2:

Code: Alles auswählen

const struct DeviceInfo PROGMEM devinfo = {
  {0x00, 0x3f, 0x02},     // Device ID
  "JPTH40I002",           // Device Serial
  {0x00, 0x3f},           // Device Model
  ...
};
Die Seriennummer selbst drucke ich mit nem Dymo aufs Gerät außen drauf.

In der WebUI sehe ich auch ganz fix, welches die nächste freie Nummer ist, wenn ich nach nem halben Jahr mal noch einen weiteren WDS40 einbinden möchte.

Re: Device-ID - wie stelle ich die Eineindeutigkeit sicher ?

Verfasst: 10.01.2019, 13:30
von firefox_i
Hi Jerome,
okay...vom Aufwand her natürlich eher oversized da hast Du recht....

Und nachdem ich nicht vorhabe, das Teil OTA zu flashen...okay hast recht: ich bleib beim hardcodieren ;-)

Re: Device-ID - wie stelle ich die Eineindeutigkeit sicher ?

Verfasst: 10.01.2019, 13:39
von papa
Beim OTA kannst Du Dir beim Bootloader erstellen zufällige ID & Srial erzeugen lassen. Da ist die Wahrscheinlichkeit auch eher gering, dass Du eine 2x erwischst.