Device-ID - wie stelle ich die Eineindeutigkeit sicher ?

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

Antworten
firefox_i
Beiträge: 110
Registriert: 04.10.2018, 19:07

Device-ID - wie stelle ich die Eineindeutigkeit sicher ?

Beitrag von firefox_i » 10.01.2019, 10:05

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.
Gruß Sven

Produktivsytem mit CCU2, knapp 60 Geräte, Visu per HPCL; Automatisierung einer Praxis bzgl. Überwachung, Heizung usw.
Experimentalsystem mit Raspi B3+, dort aktuell dran eigene Sensoren zu bauen (Serverschranküberwachung)

Hardwareentwickler und bisschen Ahnung von Programmierung.

harvey
Beiträge: 88
Registriert: 01.12.2013, 13:19

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

Beitrag von harvey » 10.01.2019, 10:39

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
Homematic raspberrymatic, iobroker, Asksinpp und Arduinos - rund 40 Geräte

firefox_i
Beiträge: 110
Registriert: 04.10.2018, 19:07

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

Beitrag von firefox_i » 10.01.2019, 11:02

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.
Gruß Sven

Produktivsytem mit CCU2, knapp 60 Geräte, Visu per HPCL; Automatisierung einer Praxis bzgl. Überwachung, Heizung usw.
Experimentalsystem mit Raspi B3+, dort aktuell dran eigene Sensoren zu bauen (Serverschranküberwachung)

Hardwareentwickler und bisschen Ahnung von Programmierung.

jp112sdl
Beiträge: 3218
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 25 Mal
Danksagung erhalten: 49 Mal
Kontaktdaten:

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

Beitrag von jp112sdl » 10.01.2019, 11:10

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.

VG,
Jérôme

firefox_i
Beiträge: 110
Registriert: 04.10.2018, 19:07

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

Beitrag von firefox_i » 10.01.2019, 11:23

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.
Gruß Sven

Produktivsytem mit CCU2, knapp 60 Geräte, Visu per HPCL; Automatisierung einer Praxis bzgl. Überwachung, Heizung usw.
Experimentalsystem mit Raspi B3+, dort aktuell dran eigene Sensoren zu bauen (Serverschranküberwachung)

Hardwareentwickler und bisschen Ahnung von Programmierung.

jp112sdl
Beiträge: 3218
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 25 Mal
Danksagung erhalten: 49 Mal
Kontaktdaten:

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

Beitrag von jp112sdl » 10.01.2019, 11:27

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.

VG,
Jérôme

firefox_i
Beiträge: 110
Registriert: 04.10.2018, 19:07

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

Beitrag von firefox_i » 10.01.2019, 13:01

Schade....
da könnt man doch eventuell über ein externes SPI EEPROM mit einer Unique ID was basteln oder ist das bescheuert ?

S.
Gruß Sven

Produktivsytem mit CCU2, knapp 60 Geräte, Visu per HPCL; Automatisierung einer Praxis bzgl. Überwachung, Heizung usw.
Experimentalsystem mit Raspi B3+, dort aktuell dran eigene Sensoren zu bauen (Serverschranküberwachung)

Hardwareentwickler und bisschen Ahnung von Programmierung.

jp112sdl
Beiträge: 3218
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 25 Mal
Danksagung erhalten: 49 Mal
Kontaktdaten:

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

Beitrag von jp112sdl » 10.01.2019, 13:27

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.

VG,
Jérôme

firefox_i
Beiträge: 110
Registriert: 04.10.2018, 19:07

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

Beitrag von firefox_i » 10.01.2019, 13:30

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 ;-)
Gruß Sven

Produktivsytem mit CCU2, knapp 60 Geräte, Visu per HPCL; Automatisierung einer Praxis bzgl. Überwachung, Heizung usw.
Experimentalsystem mit Raspi B3+, dort aktuell dran eigene Sensoren zu bauen (Serverschranküberwachung)

Hardwareentwickler und bisschen Ahnung von Programmierung.

papa
Beiträge: 340
Registriert: 22.05.2018, 10:23
Danksagung erhalten: 7 Mal

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

Beitrag von papa » 10.01.2019, 13:39

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.
Anfragen zur AskSin++ werden nur im Forum beantwortet

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“