lumapu / ahoy

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

Feature Request: Hoymiles HMS 800W-2T Support for built-in DTUBI WiFi-Models #1189

Open T3mplate-wow opened 9 months ago

T3mplate-wow commented 9 months ago

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?

lumapu commented 9 months ago

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.

stefan123t commented 9 months ago

@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.

T3mplate-wow commented 9 months ago

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?

LukeTheMast3r commented 9 months ago

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

DennisOSRM commented 9 months ago

@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?

stefan123t commented 8 months ago

@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.

henkwiedig commented 8 months ago

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.

DennisOSRM commented 8 months ago

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.

stefan123t commented 8 months ago

. 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

DennisOSRM commented 8 months ago

Ea gibt einige Fortschritte und Erkenntnisse zu berichten:

T3mplate-wow commented 8 months ago

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?

DennisOSRM commented 8 months ago

Es geht auch im eigenen WLAN.

fsoelch commented 8 months ago

@DennisOSRM super cool, vielen Dank! kannst du schon absehen, wann du deinen Stand Committee kannst?

DennisOSRM commented 8 months ago

Sobald ich etwas Zeit habe. 😉 Ich denke am Wochenende sollte ich soweit sein.

lumapu commented 8 months ago

sehr cool was man hier so liest, bin sehr gespannt 😊

SOlangsam commented 8 months ago

Verfolge es ebenfalls schon einige Zeit und freue mich, wenn es soweit ist!

DennisOSRM commented 8 months ago

image

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.

DennisOSRM commented 8 months ago

Code ist hochgeladen: https://github.com/DennisOSRM/hms-mqtt-publisher

fsoelch commented 8 months ago

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: @.***>

ringelbaer commented 8 months ago

Funktioniert! Danke Dennis!

InScene commented 8 months ago

Klappt auch bei mir. Saubere Arbeit 👍 Vielen Dank @DennisOSRM

InScene commented 8 months ago

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

DennisOSRM commented 8 months ago

Sehr cool. Wie aktualisiert man die Version im Docker Image?

InScene commented 8 months ago

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.

InScene commented 8 months ago

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.

jogybaer0815 commented 8 months ago

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

InScene commented 8 months ago

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

T3mplate-wow commented 8 months ago

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.

jogybaer0815 commented 8 months ago

die Variable des MQTT_BROKER_PORT hast du angelegt?

T3mplate-wow commented 8 months ago

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

T3mplate-wow commented 7 months ago

keine Ahnung warum ich das Ticket geschlossen habe...

Leider sehe ich nach wie vor nichts in HomeAssistant. Im Mosquitto Log sehe ich zwar:

2023-11-12 07:40:38: New connection from 10.0.0.45:53370 on port 1883. 2023-11-12 07:40:38: New client connected from 10.0.0.45:53370 as hms800wt2-mqtt-publisher (p2, c1, k5, u'mqtt-user’).

Aber trotzdem wird kein Device angelegt. Da sich der mqtt publisher aber offensichtlich anmeldet kann doch der einzige Grund sein, dass er keine Daten schickt. Oder? Hat jemand eine Idee wie ich Client seitig analysieren kann oder eine andere Idee?

T3mplate-wow commented 7 months ago

Gleiches Problem mittels des HA Hoymiles Wifi Addon: https://github.com/dominikandreas/hms-mqtt-publisher/tree/main/ha-hoymiles-wifi-addon

Plugin läuft, sagt das der Inverter Online ist, aber es taucht kein neues MQTT Device auf...

Das kann aber nichts damit zu tun haben, dass ich dem Wechselrichter den Internetzugang über die Fritz!Box weggenommen habe. Oder?

jogybaer0815 commented 7 months ago

Der Hoymiles muss zwingend im gleichen Netz (Wlan) laufen - ein Gastnetz kann keine Verbindung herstellen (ohne Hilfsmittel)

T3mplate-wow commented 7 months ago

Alle Geräte sind gemeinsam im „normalen“/ nicht Gastnetz

T3mplate-wow commented 7 months ago

Ich habe auf dem Mosquitto das Debugging eingeschaltet. Diese Kommunikation sehe ich:

2023-11-12 13:55:25: Received PINGREQ from hms800wt2-mqtt-publisher 2023-11-12 13:55:25: Sending PINGRESP to hms800wt2-mqtt-publisher 2023-11-12 13:55:30: Received PINGREQ from hms800wt2-mqtt-publisher 2023-11-12 13:55:30: Sending PINGRESP to hms800wt2-mqtt-publisher 2023-11-12 13:55:35: Received PINGREQ from hms800wt2-mqtt-publisher 2023-11-12 13:55:35: Sending PINGRESP to hms800wt2-mqtt-publisher 2023-11-12 13:55:36: Received SUBSCRIBE from hms800wt2-mqtt-publisher 2023-11-12 13:55:36: hms800wt2/pv_current_power (QoS 0) 2023-11-12 13:55:36: hms800wt2-mqtt-publisher 0 hms800wt2/pv_current_power 2023-11-12 13:55:36: Sending SUBACK to hms800wt2-mqtt-publisher 2023-11-12 13:55:36: Sending PUBLISH to hms800wt2-mqtt-publisher (d0, q0, r1, m0, 'hms800wt2/pv_current_power', ... (4 bytes)) 2023-11-12 13:55:36: Received PUBLISH from hms800wt2-mqtt-publisher (d0, q0, r1, m0, 'hms800wt2/pv_current_power', ... (4 bytes)) 2023-11-12 13:55:36: Sending PUBLISH to hms800wt2-mqtt-publisher (d0, q0, r0, m0, 'hms800wt2/pv_current_power', ... (4 bytes)) 2023-11-12 13:55:36: Received PUBLISH from hms800wt2-mqtt-publisher (d0, q0, r1, m0, 'hms800wt2/pv_daily_yield', ... (3 bytes)) 2023-11-12 13:55:40: Received PINGREQ from hms800wt2-mqtt-publisher 2023-11-12 13:55:40: Sending PINGRESP to hms800wt2-mqtt-publisher

Im Vergleich zu meinen anderen Geräten sind es relativ viele Kommunikationen und wenig Bytes. Aber einschätzen kann ich das nicht wirklich.

DennisOSRM commented 7 months ago

Sieht erstmal ok aus von der Menge der Nachrichten. Der Publisher sendet ca. alle 30 Sekunden ein Update und dazwischen kommen die Pings um die Verbindung zu MQTT offen zu halten.

lennart24 commented 7 months ago

Hi, erstmal Danke an Dennis, super Arbeit! Die Verbindung mit Homeassistant funktioniert bei mir und man bekommt ja eine echt schöne Übersicht:

image

Hatte mir das Tool noch um die Leistung und den Ertrag der beiden Module ergänzt, sowie die Netzfrequenz ergänzt.

Aber trotzdem wird kein Device angelegt. Da sich der mqtt publisher aber offensichtlich anmeldet kann doch der einzige Grund sein, dass er keine Daten schickt. Oder? Hat jemand eine Idee wie ich Client seitig analysieren kann oder eine andere Idee?

Für die Verbindung mit HA musste ich die Topics explizit abonnieren. Sollte in etwa so in der config aussehen:

sensor:
    - name: "Ertrag PV"
      state_topic: "hms800wt2/pv_daily_yield"
      device_class: "energy"
      unit_of_measurement: "Wh"
      state_class: "total_increasing"

Hast du das gemacht?

T3mplate-wow commented 7 months ago

Vielen Dank für den Hinweis. Das habe ich nicht gemacht bzw. musste ich das noch nie bei HomeAssistant. Gab es irgendwo einen Hinweis darauf? Ich habe jetzt folgendes in meiner configuration.yaml ergänzt:


mqtt:
  - sensor:
    - name: "Ertrag PV"
      state_topic: "hms800wt2/pv_daily_yield"
      device_class: "energy"
      unit_of_measurement: "Wh"
      state_class: "total_increasing"

Jetzt ist ein Sensor da mit einem Wert von 316Wh (ja nicht sehr viel). Mal schauen wie der sich ändert wenn morgen wieder die Sonne scheint. Vielen Dank schon einmal!

Edit: Habe auch noch den aktuellen Ertrag ergänzt. Mal schauen was da morgen passiert. Fingers crossed

DennisOSRM commented 7 months ago

erstmal Danke an Dennis, super Arbeit!

Vielen Dank, sehr gerne.

Die Verbindung mit Homeassistant funktioniert bei mir und man bekommt ja eine echt schöne Übersicht:

Sehr hübsch!

Hatte mir das Tool noch um die Leistung und den Ertrag der beiden Module ergänzt, sowie die Netzfrequenz ergänzt.

Kommt demnächst auch direkt ins tool. 😉

T3mplate-wow commented 7 months ago

Also mit dem Erstellen der mqtt devices in Home Assistant funktioniert das Ganze jetzt. Ich bin total begeistert. Viel häufiger als mit der Cloud. Toll.

Vielen Dank an alle für das Tool, das HomeAssistant Addon, den Docker und die Hilfe bei meinem Problem! Ich freue mich auch darauf, wenn noch das 2. Modul ergänzt wird.

3 Fragen die mir noch durch den Kopf gehen:

T3mplate-wow commented 7 months ago

Hi, erstmal Danke an Dennis, super Arbeit! Die Verbindung mit Homeassistant funktioniert bei mir und man bekommt ja eine echt schöne Übersicht: image Hatte mir das Tool noch um die Leistung und den Ertrag der beiden Module ergänzt, sowie die Netzfrequenz ergänzt.

Richtig cool. Wie berechnest du deinen aktuellen Stromverbrauch und deine Einspeiseanteil? Ich lese an meinem Stromzähler per Infrarot die Werte aus, was wegen der niedrigen Baudrate aber nur 1x alle 5 Minuten geht. Außerdem gibt meiner nur den Zählerstand aus und keinen Momentanwert (was alle 5 Minuten auch wenig Sinn ergibt). Ich berechne dann immer den Durchschnittsverbrauch der letzten 5 Minuten. Wie viel dann aber eingespeist wurde, bekomme ich nicht heraus.

Falls du das teilen willst, wäre ich auch an dem Code von deinem Energiedashboard interessiert.

DennisOSRM commented 7 months ago

Also mit dem Erstellen der mqtt devices in Home Assistant funktioniert das Ganze jetzt. Ich bin total begeistert. Viel häufiger als mit der Cloud. Toll.

👍🏽

Gute Frage, gerne drüben falls das hier offtopic ist.

  • Mein HomeAssistant Addon ist am Abend abgestürzt, als der Hoymiles auch weg war. Ist das bekannt oder soll ich dafür einen Bug einstellen? Ich habe den Watchdog jetzt bewusst deaktiviert gelassen um zu schauen, ob das wieder passiert.

Hast Du ne genauere Fehlermeldung?

  • Mein Hoymiles wechselt ständig von Offline zu Online. So 10 mal pro Stunde. Ist das mein WLAN was so schwankt oder ist das normal oder weder noch?

Entweder das WLAN oder Ertrag scheint schwach zu sein. Ich seh das bei starker Bewölkung zum Beispiel. Die Meldung kommt wenn die Netzwerkverbindung schwach ist.

lennart24 commented 7 months ago

Gab es irgendwo einen Hinweis darauf?

So richtig nicht. Bei der Ersteinrichtung von der MQTT Integration in HA gibt man einen "Discovery-Präfix" an (steht per default auf homeassistant). Automatisch werden wohl nur Topics, die unter diesem Präfix veröffentlicht werden abonniert. Alle anderen muss man wohl manuell abonnieren. Wie das geht steht dann in den Beispielen der Integration.

Kommt demnächst auch direkt ins tool. 😉

Ah super :) Dann werde ich wohl auch bald mal auf einen Docker-Container umstellen. Hätte auch schon ein Pull-Request erstellt, aber bis jetzt hatte ich das nur Quick&Dirty reingepatcht. Schön wäre es ja, wenn das Tool dynamisch erkennt, wie viele Eingänge der Wechselrichter hat - dann würde das evtl. auch mit den größeren Wechselrichtern laufen.

Mein Hoymiles wechselt ständig von Offline zu Online. So 10 mal pro Stunde. Ist das mein WLAN was so schwankt oder ist das normal oder weder noch?

Bei mir geht er eigentlich morgens online und abends offline. Kommt aber ja auch darauf an, wie bei dir die Ausrichtung und Verschattungssituation ist - wenn da zwischendurch die Leistung zu gering ist, kann der Wechselrichter auch mal ausgehen. Müsstest du mal schauen, ob die grüne LED noch blinkt, wenn er offline angezeigt wird.

Richtig cool. Wie berechnest du deinen aktuellen Stromverbrauch und deine Einspeiseanteil? Ich lese an meinem Stromzähler per Infrarot die Werte aus, was wegen der niedrigen Baudrate aber nur 1x alle 5 Minuten geht. Außerdem gibt meiner nur den Zählerstand aus und keinen Momentanwert (was alle 5 Minuten auch wenig Sinn ergibt). Ich berechne dann immer den Durchschnittsverbrauch der letzten 5 Minuten. Wie viel dann aber eingespeist wurde, bekomme ich nicht heraus.

Ich hab bei mir einen KNX-Energiezähler verbaut, der die Energie in beide Richtungen separat misst und auf den Bus schreibt. Die Werte lese ich einfach mit HA ein. Der Zählerstand ist ja schon der richtige Wert, den du für diese Diagramme brauchst. Die Balken sind ja einfach nur die Differenz zwischen dem Zählerstand am Ende und am Anfang einer Stunde. Hast du einen Zweirichtungszähler? Sonst wird das mit der Einspeisung wahrscheinlich nicht ohne zusätzliches Messgerät funktionieren. Bei einem Zweirichtungszähler müsstest du schauen, ob der dir über Infrarot auch den Zählerstand in Einspeiserichtung ausgibt. Die Diagramme erstellt HA von selbst, wenn man im Energiedashboard die ganzen Sensoren hinzufügt. Sieht bei mir so aus:

image

Auch der prognostizierte Ertrag wird automatisch errechnet, wenn man Ausrichtung, Standort und Peak-Leistung der Module angibt.

ckmde commented 7 months ago

Hallo Dennis,

funktioniert sehr gut. Danke. Benutze das jetzt an FHEM. Habe das ganze für mich etwas modifiziert. Dabei ist mir aufgefallen, dass die Protocol Buffers Definition der Seriennummer in RealData.proto nicht ganz passt.

message HMSStateResponse { bytes dtu_sn = 1; . . ist definitiv ein string dtu_sn = 1; und nicht bytes... Habe ich mir mit tcpdump angesehen. Damit hat man dann die korrekte Seriennummer auf HMSStateResponse.dtu_sn, so wie sie auch in der App und auf dem Inverter steht. Und da ich gerne Daten sammele habe ich die mqtt.rs erweitert um alle möglichen Sachen, wie die Netzspannung, Temperatur, Frequenz sowie die Daten der beiden PV Stränge wie Spannung, Strom etc. Falls das also Interessant ist, hier die geänderte publish Funktion. Spart dem einen oder anderen ggf. Tipparbeit. Erzeugt allerdings auch deutlich mehr Daten auf meinem FHEM Server. :-)

fn publish(&mut self, hms_state: &HMSStateResponse) {
    debug!("{hms_state}");

    let pv_current_power = hms_state.pv_current_power as f32 / 10.;
    let pv_daily_yield = hms_state.pv_daily_yield;
    let pv_grid_voltage = hms_state.inverter_state[0].grid_voltage as f32 / 10.;
    let pv_grid_freq = hms_state.inverter_state[0].grid_freq as f32 / 100.;
    let pv_grid_temperature = hms_state.inverter_state[0].temperature as f32 / 10.;
    let pv_port1_voltage = hms_state.port_state[0].pv_vol as f32 / 10.; 
    let pv_port1_curr = hms_state.port_state[0].pv_cur as f32 / 100.;
    let pv_port1_power = hms_state.port_state[0].pv_power as f32 / 10.;
    let pv_port1_energy = hms_state.port_state[0].pv_energy_total as f32 / 10.;
    let pv_port1_daily_yield = hms_state.port_state[0].pv_daily_yield as f32 / 10.;
    let pv_port2_voltage = hms_state.port_state[1].pv_vol as f32 / 10.; 
    let pv_port2_curr = hms_state.port_state[1].pv_cur as f32 / 100.;
    let pv_port2_power = hms_state.port_state[1].pv_power as f32 / 10.;
    let pv_port2_energy = hms_state.port_state[1].pv_energy_total as f32 / 10.;
    let pv_port2_daily_yield = hms_state.port_state[1].pv_daily_yield as f32 / 10.;
    self.client
        .subscribe("hms800wt2/pv_current_power", QoS::AtMostOnce)
        .unwrap();
    match self.client.publish(
        "hms800wt2/pv_current_power",
        QoS::AtMostOnce,
        true,
        pv_current_power.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }
    match self.client.publish(
        "hms800wt2/pv_daily_yield",
        QoS::AtMostOnce,
        true,
        pv_daily_yield.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }
    match self.client.publish(
        "hms800wt2/pv_grid_voltage",
        QoS::AtMostOnce,
        true,
        pv_grid_voltage.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }
    match self.client.publish(
        "hms800wt2/pv_grid_freq",
        QoS::AtMostOnce,
        true,
        pv_grid_freq.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }
    match self.client.publish(
        "hms800wt2/pv_inv_temperature",
        QoS::AtMostOnce,
        true,
        pv_grid_temperature.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }
    match self.client.publish(
        "hms800wt2/pv_port1_voltage",
        QoS::AtMostOnce,
        true,
        pv_port1_voltage.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }        
match self.client.publish(
        "hms800wt2/pv_port1_curr",
        QoS::AtMostOnce,
        true,
        pv_port1_curr.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }        
match self.client.publish(
        "hms800wt2/pv_port1_power",
        QoS::AtMostOnce,
        true,
        pv_port1_power.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }        
match self.client.publish(
        "hms800wt2/pv_port1_energy",
        QoS::AtMostOnce,
        true,
        pv_port1_energy.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }        
match self.client.publish(
        "hms800wt2/pv_port1_daily_yield",
        QoS::AtMostOnce,
        true,
        pv_port1_daily_yield.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }        
    match self.client.publish(
        "hms800wt2/pv_port2_voltage",
        QoS::AtMostOnce,
        true,
        pv_port2_voltage.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }        
match self.client.publish(
        "hms800wt2/pv_port2_curr",
        QoS::AtMostOnce,
        true,
        pv_port2_curr.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }        
match self.client.publish(
        "hms800wt2/pv_port2_power",
        QoS::AtMostOnce,
        true,
        pv_port2_power.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }        
match self.client.publish(
        "hms800wt2/pv_port2_energy",
        QoS::AtMostOnce,
        true,
        pv_port2_energy.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }        
match self.client.publish(
        "hms800wt2/pv_port2_daily_yield",
        QoS::AtMostOnce,
        true,
        pv_port2_daily_yield.to_string(),
    ) {
        Ok(_) => {}
        Err(e) => warn!("mqtt error: {e}"),
    }
}

}

DennisOSRM commented 7 months ago

Cool, danke für den Code. Sobald etwas Zeit ist, bau ich das ein.

jogybaer0815 commented 7 months ago

Test scheitert leider: 'dominikandreas/hms-mqtt-publisher-nightly' oder 'dominikandreas/hms-mqtt-publisher' findet Docker nicht. Bis 'dominikandreas/hms-mqtt-publis' werden die 2 Versionen gelistet, beim nächsten Buchstaben wird 'No results' angezeigt. Liegt das an den 2 Versionen mit und ohne "-nightly"? Ab dem 15. Buchstaben hat Docker Probleme mit den 2 Namens-Versionen. P.S. auch der direkte pull-Befehl führt auf Komandozeilenebene zu einer Fehlermeldung.

DennisOSRM commented 7 months ago

Benutz doch den build vom letzten Release in DockerHub: 'dennisosrm/hms-mqtt-publisher'.

jogybaer0815 commented 7 months ago

Danke. Der läuft ja auch, allerdings sind dort noch keine erweiterten Daten hinterlegt

Besteht das o.g. Problem bei Docker nur bei mir?

karstenatgit commented 7 months ago

Hallo zusammen, klingt super, was ihr hier macht :-) Ich bin gerade dabei, meine Anlage in Betrieb zu nehmen. Kann ich den Hoymiles eigentlich irgendwie in mein WLAN bekommen, ohne ihn in der HM-Cloud zu registrieren? Noch ist er jungfräulich und nur sein eigener Accesspoint läuft.

elBuffo166 commented 7 months ago

Kann ich den Hoymiles eigentlich irgendwie in mein WLAN bekommen, ohne ihn in der HM-Cloud zu registrieren? Noch ist er jungfräulich und nur sein eigener Accesspoint läuft.

Ja, das geht mit der Hoymiles Installer App.