ahoy
ahoy copied to clipboard
Feature Request: Hoymiles HMS 800W-2T Support for built-in DTUBI WiFi-Models
Hey, I am one of the „lucky“ guys who bought a HMS 800W-2T. This is the one with included wifi. I am wondering if this device is not compatible to a DTU anymore (because of the WIFI) or if this is just not tested. Or does anybody know if there is any other way to get the data out without the cloud?
for now this inverter is not supported. Only the inverters with NRF or CMT radio are supported. We did no reengineering on the wifi variants until now.
@lumapu I would like to disagree, we just traced the first communication between the App and the DTUBI (built in DTU) of one of the WiFi models. It is basically everything already in the NetProtocol.c/.h files of the original Hoymiles DTU Pro Source code from gitee. You can look up the details of the various NetProtocol packets received / sent by the DTU from / back to the APP/Cloud in the files InformationData.pb.c/.h and/or APPInformationDate.pb.c/.h
@T3mplate-wow but it will definitely take several months before we can provide the same support as with the other already supported communication for Gen2 (MI) and Gen3 (HM) NRF24L01+-based models as well as the Gen3 (HMS/HMT) CMT2300A-based RF models. The HMS-800W-2T models with the built in WiFi DTUBI are a completely different protocol for us. We will have to implement at least a couple of those NetworkCommands which are listed in the above source code.
Thanks for the fast answer. Do you already know: Can this be solved completely in software with this model or will special hardware also be necessary? Will this protocol be able to be queried more frequently or, like the cloud, only every 15 minutes?
Hallo, würde mich dieser Anforderung anschließen. Habe mir auch einen HMS800W-2T gekauft. Hier wurde ja die HMS Serie aufgeführt. Da ich neu in der Materie bin, habe ich das mit neuem Protokoll usw. natürlich nicht gewusst. Habe nach einiger Frustration endlich alles zum laufen gebracht (ahoy auf ESP32 & CMT2300A) um dann bei der Inverter Seriennummern-Eingabe festzustellen, dass diese nicht akzeptiert wird. Startet bei mir mit 141 ....
Hoffe Ihr habt bald mal Zeit das zu implementieren. :) Solange wird gewartet.! In der Zwischenzeit wäre cool wenn Ihr einen Kommentar für die 2T Serie in der Kompatibilitätsliste einbauen könntet. Aber dennoch: Respekt was Ihr bis jetzt alles geschafft habt. Sieht alles mega gut aus.! Grüße
Hello, would join this requirement. I also bought a HMS800W-2T. Here, yes, the HMS series was listed. Being new to the matter, I of course didn't know about the new protocol etc. After some frustration I finally got everything running (ahoy on ESP32 & CMT2300A) only to find out that the inverter serial number is not accepted. Starts with me with 141 ....
Hope you have time to implement this soon. :) We will wait until then! In the meantime it would be cool if you could add a comment for the 2T series in the compatibility list. But still: respect what you have done so far. Everything looks mega good! Greetings
@lumapu I would like to disagree, we just traced the first communication between the App and the DTUBI (built in DTU) of one of the WiFi models. It is basically everything already in the NetProtocol.c/.h files of the original Hoymiles DTU Pro Source code from gitee.
You can look up the details of the various NetProtocol packets received / sent by the DTU from / back to the APP/Cloud in the files InformationData.pb.c/.h and/or APPInformationDate.pb.c/.h
@stefan123t Would you mind sharing the trace?
@DennisOSRM das Trace file von @PaeserBastelstube findet sich hier im Discord #hms-wifi-serie Kanal https://discord.com/channels/984173303147155506/1149770941283442698/1156496177882202182 Interessant sind auch die Infos die @jarekin und ich aus der S-Miles Installer App extrahieren konnten. Einfach mal die angepinnten Nachrichten im Kanal durchlesen.
Please have a look here https://github.com/henkwiedig/Hoymiles-DTU-Proto These are working POCs for a HMS-800W-2T via the internal Inverter WLAN.
The protobuf message definitions are language agnostic.
Danke für den Link zum Discord Channel und zum PoC. Das ist echt super hilfreich. Ich hatte am Wochenende angefangen einen Prototypen eines MQTT publishers für den HMS-800W-T2 (in Rust) zu coden. Bin aber irgendwie an den CRCs hängen geblieben. Wenn ich etwas funktionierendes habe, dann poste ich den Link hier.
. Bin aber irgendwie an den CRCs hängen geblieben.
Dazu mal bitte ins Protokol Wiki schauen… sollten CRC8 und CRC16/ModBus sein. Die passenden Polynome sollten dort bzw im Code bereits dokumentiert sein.
https://github.com/lumapu/ahoy/wiki/Protocol#welche-pr%C3%BCfsummen-crc--cyclic-redundancy-check-gibt-es-und-%C3%BCber-welchen-teil-der-nachrichten-werden-sie-gebildet
Ea gibt einige Fortschritte und Erkenntnisse zu berichten:
- Ich habe einen funktionierenden Prototypen, der jede Sekunde die Last-, und Leistungswerte auslesen kann.
- Das Response Protobuf für den HMS-800w-T2 scheint etwas speziell zu sein. Es passt zu keinem der bekannten proto files, wenn ich nichts übersehen habe. Ich habe das aber reverse engineered und kann ca. 2/3 der Felder direkt zu ordnen. Alle wichtigen Informationen (aktuelle Leistung, Stromstärke, Netzfrequenz, Tempera, usw) sind für jeden Port dabei. Das müsste schon die meisten Anwendungsfälle abdecken.
- Die Kodierung der Seriennummer des Inverters ist etwas unerwartet. Der Inverter liefert einen Int64, der als hex Darstellung der Seriennummer wie auf dem Aufkleber auf dem Gerät entspricht. Beispiel: Response liefert 4660, was hexadezimal 0x1234 entspricht und 1234 ist dann die Nummer auf dem Aufkleber. Für die Seriennummer der DTU wird das anders gemacht. Da wird die Nummer als Ascii-String kodiert.
- Zeitstempel werden als 32 bit epoch behandelt. Damit gibt es eine gute Chance, dass in 15 Jahren beim Overflow die Firmware nicht mehr richtig mit Zeit umgehen kann. Das ist bei neuen Geräten durchaus noch während der zu erwartenden Lebensdauer.
- Es ist möglich den Inverter mit fehlerhaften Requests in einen Zustand zu bekommen, aus dem man nur mit Neustart des Geräts herauskommt.
Wow. Richtig cool. Ist schon klar wie eine Einbindung in die eigene Infrastruktur aussehen kann? Wenn ich es richtig verstehe muss man sich mit dem Access Point des WR verbinden. Brauchst man zwingend einen ESP dazwischen oder geht es auch mit WR direkt im eigenen WLAN?
Es geht auch im eigenen WLAN.
@DennisOSRM super cool, vielen Dank! kannst du schon absehen, wann du deinen Stand Committee kannst?
Sobald ich etwas Zeit habe. 😉 Ich denke am Wochenende sollte ich soweit sein.
sehr cool was man hier so liest, bin sehr gespannt 😊
Verfolge es ebenfalls schon einige Zeit und freue mich, wenn es soweit ist!
Hatte es auch schon an anderer Stelle gepostet, aber der Vollständigkeit halber noch mal hier: man sieht wie der Code übersetzt und das Tool gestartet wird. Im Hintergrund updatet die MQTT Instanz von meinem iobroker direkt nach dem Start.
Das sollte 'ne Idee geben, wie das Tool funktioniert. Ich polier es noch ein wenig und lad es wohl morgen bei github hoch.
Code ist hochgeladen: https://github.com/DennisOSRM/hms-mqtt-publisher
Hallo Dennis,
super cool, vielen Dank! Sobald die Sonne morgen den Wechselrichter wieder weckt werde ich mal testen ob es bei mir auch klappt :)
Ganz lieben Dank!
Florian
-----Original message----- From: Dennis @.> Sent: Thursday November 2nd, 2023 17:46 To: lumapu/ahoy @.> Cc: fsoelch @.>; Comment @.> Subject: Re: [lumapu/ahoy] Feature Request: Hoymiles HMS 800W-2T Support for built-in DTUBI WiFi-Models (Issue #1189)
Code ist hochgeladen: https://github.com/DennisOSRM/hms-mqtt-publisher
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>
Funktioniert! Danke Dennis!
Klappt auch bei mir. Saubere Arbeit 👍 Vielen Dank @DennisOSRM
Ich war so frei und habe das ganze mal in ein Docker Image gepackt. Das macht es manchen vielleicht einfacher dieses zu nutzen. Ihr findet es auf Docker Hub. Einfach beim starten die Variablen setzten: https://hub.docker.com/r/29012019/hms-mqtt-publisher
Sehr cool. Wie aktualisiert man die Version im Docker Image?
Sehr cool. Wie aktualisiert man die Version im Docker Image?
Leider muss ich dann immer eine neue Version bauen und hochladen. Wenn das automatisch bauen können soll, dann wird es kompliziert wegen der Credentials/Keys/Passwörter von git. Man müsste dann diese irgendwie mitgeben. Das war mir jetzt zu kompliziert. Darum ist es eine fertig gebaute Variante.
Aktuell ist es auch nur für amd64 Plattformen. Ich versuche gerade auch ein multibuild, sodass es auch auf einen Raspberry Pi lauffähig ist.
Ich habe das Docker Image jetzt neu fertig erstellt und es läuft auf meinem Raspberry Pi. Habe es unter der selben Version nochmal hochgeladen.
Danke für das Docker image. Läuft zuverlässig. Sobald mehr Parameter verfügbar sich, um sie in z.B. Iobroker zu verwenden, sparen die neuen Wechselrichter sogar Hardware ein. Mir persönlich fehlt jetzt nur noch die Möglichkeit des 'Power Adjusments' per mqtt
Danke für das Docker image. Läuft zuverlässig. Sobald mehr Parameter verfügbar sich, um sie in z.B. Iobroker zu verwenden, sparen die neuen Wechselrichter sogar Hardware ein. Mir persönlich fehlt jetzt nur noch die Möglichkeit des 'Power Adjusments' per mqtt
Wir haben das ganze jetzt im original GitHub Repository eingebaut. Es werden jetzt automatisch neue Release als Image veröffentlicht. Man findet es unter folgender Adresse.
https://hub.docker.com/r/dennisosrm/hms-mqtt-publisher
Meine minimalen Docker Kenntnisse scheinen nicht zu reichen. Weiß jemand was ich falsch mache? Ich habe eine Docker-Compose Datei erstellt:
version: '3' services: hms-mqtt-publisher: image: 29012019/hms-mqtt-publisher ports: - "1883:1883" - "9001:9001" environment: INVERTER_HOST: 10.0.0.218 MQTT_BROKER_HOST: 10.0.0.59 MQTT_USERNAME: mqtt-user MQTT_PASSWORD: Passwort
Wenn ich das dann mittels "docker compose up“ starte bekomme ich:
hms-mqtt-publisher-hms-mqtt-publisher-1 | 2023-11-11T15:12:17 [INFO] - inverter: 10.0.0.218, mqtt broker 10.0.0.59 hms-mqtt-publisher-hms-mqtt-publisher-1 | 2023-11-11T15:12:26 [INFO] - Inverter is Online
Aber bei meinem HomeAssistant kommt kein neues MQTT Gerät an.
die Variable des MQTT_BROKER_PORT hast du angelegt?
Oh man. Das hätte ich auch mal so versuchen können. Ich ging wegen Standardport bzw. der Doku davon aus, dass die optional ist. Leider reicht die Sonne heute nicht mehr. Wird morgen getestet