Browse Source

additional addressing example

pull/2/head
Martin Grill 3 years ago
parent
commit
c01a4aa3c9
  1. 36
      doc/hoymiles-format-description.txt

36
doc/hoymiles-format-description.txt

@ -69,8 +69,13 @@ Systemaufbau
Adressierung
============
Die Seriennummern der DTU und der WR werden intern wie folgt
als Adresse für die Kommunikation verwendet:
Die Seriennummern der DTU und der WR werden wie folgt in Adressen für die
Kommunikation verwendet:
Interne Kommunikation: Die meisten Datenpakete enthalten Quell- und
Zieladresse der jeweiligen Gesprächspartner. Hier werden 4-Byte-Adressen
verwendet, die direkt aus den letzten 8 Stellen der Seriennummer des
Wechselrichters bzw. der DTU gewonnen werden:
Beispiel: Seriennummer ....72818832
@ -78,12 +83,31 @@ Innerhalb der Pakete auf (C) wird daraus die 4-Byte-Adresse
0x72, 0x81, 0x88, 0x32 gebildet. Das ist die BCD-Darstellung
der letzen 8 Dezimalziffern.
Die zugehörige Shockburst Zieladresse ist dieselbe, aber
die Byte-Reihenfolge wird umgedreht, und eine 0x01 ergänzt
(Shockburst ist auf 5-Byte-Adressen eingestellt).
NRF24-Kommunikation: Die zugehörige Shockburst Zieladresse ist
ähnlich, aber die Byte-Reihenfolge wird umgedreht, und es wird ein 0x01-Byte
am Ende ergänzt (Shockburst ist auf 5-Byte-Adressen eingestellt).
Um eine Nachricht an das Gerät mit o.g. Seriennummer zu senden
lautet die Zieladresse also (0x32, 0x88, 0x81, 0x72, 0x01).
lautet die Shockburst-Zieladresse also (0x32, 0x88, 0x81, 0x72, 0x01).
Additional example, this time for inverter with serial number 99973104619:
The datasheet specifies the over-the-air packet format: "Most Significant Byte
(MSB) to the left" (cf figure 11)
Address := Byte_4, Byte_3, Byte_2, Byte_1, Byte_0 ("LSByte must be unique")
so 0x1946107301 results in
19 46 10 73 01 "on the wire"
Old-style NRF Libraries take uint64_t addresses. In this case, the correct
address to pass to the library would be (uint64_t)0x1946107301ULL.
https://nrf24.github.io actually wants uint8_t*, which makes more sense. Pass
it the bytes in the order the chip expects, i.e. MSB to LSB. In this case,
the correct sequence of bytes to pass to the library would be \x19\x46\x10\x73\x01.

Loading…
Cancel
Save