lumapu / ahoy

Various tools, examples, and documentation for communicating with Hoymiles microinverters
https://ahoydtu.de
Other
953 stars 224 forks source link

Wrong DTU_RADIO_ID in config_override_example.h #292

Closed zeropage-io closed 2 years ago

zeropage-io commented 2 years ago

The DTU_RADIO_ID in config_override_example.h is set to 0x1234567802ULL while the, supposedly correct, DTU_RADIO_ID in config.h ist 0x1234567801ULL.

This was giving me a very, very, very, very hard time to get Ahoy up and running since I used config_override.h based on the example file and with a, supposedly wrong, DTU_RADIO_ID of 0x1234567802ULL I never got a connection to my HM inverter.

I suppose that the config_override is seldomly used, but this should be corrected ASAP to spare other people the pain I went through to finally solve this puzzle.

lumapu commented 2 years ago

thank you for figuring this out and sharing your result

stefan123t commented 2 years ago

Thanks we rectified this for one of the users in the chat but didnt notice that it was proposed by a faulty config_override_example.h

@lumapu we should instead add a comment stating that it NEEDS to end with 01ULL. Thanks

zeropage-io commented 2 years ago

@lumapu @stefan123t You're welcome! Glad I could be of help for this great project.

Short recap of my rocky road trip: I started with a D1 Mini Pro. Did everything as described. But no connection to the inverter. I double checked the wirings. Triple checked. Quadruple checked. Switched all cables. Changed Pins for IRQ, CS, and CE a dozen times. Switched to another nRF PCB. Compiled and uploaded using Atom/platformio, then VSC/platformio, and even the Arduino IDE which requires some minor adjustments to get it up and running. Everything to no avail. I even ordered D1 Mini boards though I didn't really believed that it shouldn't work with a Mini Pro. But of course, it didn't work with the D1 Mini neither ... After all this trial and error my final conclusion was that the inverter must be defective and I was close to getting in touch with the dealer. Really don't know how I stumbled over this nasty little "2" in the config_override_example.h. But hey! What a tremendous flash of joy as I saw the first frames coming in!😃

stefan123t commented 2 years ago

Das Problem wurde bereits hier im Forum beschrieben https://www.mikrocontroller.net/topic/525778?page=2#7015145

Die WR und DTUs verwenden immer 01ULL als Endung / pipe:

Die Seriennummer muss in dem define umgekehrt angegeben werden. An meinem Beispiel: WR1 = xxxx73104619 WR2 = xxxx73104439 Und im Byte 5 der Adresse die 01 nicht vergessen.

#define DUMMY_RADIO_ID ((uint64_t)0xDEADBEEF01ULL) 
#define WR1_RADIO_ID ((uint64_t)0x1946107301ULL) // 0x1946107301ULL = WR1
#define WR2_RADIO_ID ((uint64_t)0x3944107301ULL) // 0x3944107301ULL = WR2
#define DTU_RADIO_ID ((uint64_t)0x1234567801ULL)
DanielR92 commented 2 years ago

Habe es mal im "config_override_example.h" auch angepasst... Kann dieses Issue eigentlich dann geclosed werden?

zeropage-io commented 2 years ago

Habe es mal im "config_override_example.h" auch angepasst... Kann dieses Issue eigentlich dann geclosed werden?

Ich weiß nicht genau, was @stefan123t mit seinem letzten Kommentar genau sagen wollte, aber sobald die config_override_example.h im Repo aktualisiert wurde, ist das Problem aus meiner Sicht gelöst.

stefan123t commented 2 years ago

@DanielR92 danke für die Korrektur. Wie gesagt sollte mE noch ein Kommentar dahinter / davor der darauf hinweist:

// the ending 01ULL NEEDS to remain unmodified!
stefan123t commented 2 years ago

Offenbar verwenden ja sowohl DTU als auch alle WR die Pipe 01ULL. @DanielR92 wäre es mit der Pipe 01ULL möglich alle Antworten aller WR zu bekommen, z.B. bei einem BROADCAST ?

DanielR92 commented 2 years ago

Das müsste man testen, aber nur das ich dich korrekt verstehe:

Du möchtestes alle Pipes ungefähr so haben:

Standard: 07:36:17.582 > pipe 0 (closed) bound = 0xe7e7e7e7e7 07:36:17.585 > pipe 1 ( open ) bound = 0x1234567801 07:36:17.589 > pipe 2 (closed) bound = 0xc3 07:36:17.591 > pipe 3 (closed) bound = 0xc4 07:36:17.593 > pipe 4 (closed) bound = 0xc5 07:36:17.596 > pipe 5 (closed) bound = 0xc6

Broadcast: 07:36:17.582 > pipe 0 (closed) bound = 0xe7e7e7e7e7 07:36:17.585 > pipe 1 ( open ) bound = 0x1234567801 07:36:17.589 > pipe 2 (open ) bound = 0xc01 07:36:17.591 > pipe 3 (open ) bound = 0xc01 07:36:17.593 > pipe 4 (open ) bound = 0xc01 07:36:17.596 > pipe 5 (open ) bound = 0xc01

DanielR92 commented 2 years ago

PR ist raus @stefan123t danke :)

stefan123t commented 2 years ago

@DanielR92 danke für die Änderung so sollte es "narrensicher" sein. Kann ja nicht jeder den kompletten Forumthread durchlesen oder im Chat nachfragen bevor er die DTU ID ändert: +1 ist halt echt verlockend an der Stelle!

DanielR92 commented 2 years ago

Close?

elias-lange commented 2 years ago

Stumbled over the same problem. Would be great if the fix is merged in the main branch soon.