From c01a4aa3c980be4ee737372e513837fc424ec8da Mon Sep 17 00:00:00 2001 From: Martin Grill Date: Sun, 27 Mar 2022 22:51:37 +0200 Subject: [PATCH] additional addressing example --- doc/hoymiles-format-description.txt | 36 ++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/doc/hoymiles-format-description.txt b/doc/hoymiles-format-description.txt index 3123ae3f..7f4e78a5 100644 --- a/doc/hoymiles-format-description.txt +++ b/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.