IDM Wärmepumpe einlesen

Überwachung der Solaranlage per eMail oder Pushover und Steuerung von Geräten mit Smart Home Zentralen. PV-Überschuss Steuerung verbunden mit Geräten und Tasmota Firmware. Wallbox Steuerungen und API Schnittstelle, über die Daten in die Solaranzeigen Datenbanken geschrieben und gelesen werden können. Alles, was man für Steuerungsaufgaben benötigt.

Moderator: Ulrich

bul13
Beiträge: 19
Registriert: Do 16. Mai 2024, 22:27
Danksagung erhalten: 1 Mal

IDM Wärmepumpe einlesen

Beitrag von bul13 »

Hallo,
ich habe die "weishaupt_wp.php" genommen und diese etwas umgebaut, dass meine IDM WP Aero SLM6-17 in die Solaranzeige integriert wird. Das hat auch soweit gut funktioniert, da die Schnittstelle Modbus TCP und der Port 502 ist. Es kommen damit auch viele Daten richtig an. Nur bei den Temperaturen spielen diese verrückt.
Im Anhang sende ich einen Auszug aus dem Grafana-Dashboard wie diese ausschauen.
Temperaturen IDM.jpg
Ich lese derzeit absichtlich nur die Rohwerte ein, aber diese schwanken in einem Bereich von +/- 20.000 obwohl die Temperaturen auf der WP selbst absolut konstant sind. Lt. Modbus Register der WP werden diese als "Float" gesendet (ab Seite 13). Habe ich da einen Fehler in meinem Programmcode irgendwo eingebaut. Im Anhang noch die umgebaute PHP-Datei und die Modbus-Registerdatei der WP.
Kann jemand dazu sachdienliche Hinweise geben? Danke schon mal im Voraus!
lg Helmut
Dateianhänge
ma_de_812170_Modbus TCP_Navigator 2.0.pdf
(1.43 MiB) 210-mal heruntergeladen
IDM_Aero_SLM6-17.php
(22.16 KiB) 95-mal heruntergeladen

Benutzeravatar
Ulrich
Administrator
Beiträge: 6320
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 159 Mal
Danksagung erhalten: 933 Mal

Re: IDM Wärmepumpe einlesen

Beitrag von Ulrich »

Wenn es sich um eine Float Zahl handelt, versuche es bitte einmal mit folgender Funktion:

xxx = $funktionen->hex2float($Ergebnis["Wert"]);
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]

bul13
Beiträge: 19
Registriert: Do 16. Mai 2024, 22:27
Danksagung erhalten: 1 Mal

Re: IDM Wärmepumpe einlesen

Beitrag von bul13 »

Hallo Ulrich,
danke für die schnelle Hilfe. Leider hat der hex2float kein für mich brauchbares Ergebnis gebracht. Es wurde mir ein Wert von 5746874958E-39 ausgespuckt. Zumindest kann ich das Ergebnis nicht wirklich deuten.
Auch mit hex2float32, hex2float64 und _hex2float kam nichts brauchbares heraus.

Ich habe mir dann die Rückgabewerte von "modbus_tcp_lesen" angeschaut.
11.07. 20:39:45 -Register 03e8
11.07. 20:39:45 -RawDaten 0087000000050104021550
11.07. 20:39:45 -Transaction 0087
11.07. 20:39:45 -Protocol 0000
11.07. 20:39:45 -Länge 0005
11.07. 20:39:45 -Adresse 01
11.07. 20:39:45 -Befehl 04
11.07. 20:39:45 -DatenLänge 2
11.07. 20:39:45 -Wert 1550

Dabei ist mir Datenlänge 2 aufgefallen. Kann es sein, dass der Rückgabewert aus mehreren Teilen besteht? Hast du dahingehend Erfahrung bei anderen Projekten sammeln können?

lg Helmut

Benutzeravatar
Ulrich
Administrator
Beiträge: 6320
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 159 Mal
Danksagung erhalten: 933 Mal

Re: IDM Wärmepumpe einlesen

Beitrag von Ulrich »

Kann es sein, dass das Ergebnis ganz einfach 15,5 °C ist?

Also:
Temperatur = ( $Ergebnis["Wert"]/100 );
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]

bul13
Beiträge: 19
Registriert: Do 16. Mai 2024, 22:27
Danksagung erhalten: 1 Mal

Re: IDM Wärmepumpe einlesen

Beitrag von bul13 »

Hallo Ulrich,
ich bin inzwischen draufgekommen, dass der Rückgabewert aus 2x Word besteht. Das Lower-Word beinhaltet anscheinend den tatsächlichen Wert und der kommt tatsächlich immer konstant daher.
Ich habe jetzt nur das Problem, dass ich den Wert richtig interpretiere:
41fb = 16891 (Umwandlung hex2decs) und das entspricht 31,7°C.
Wie komme ich nun auf den korrekten Wert?

lg Helmut

schlmich
Beiträge: 54
Registriert: Do 10. Feb 2022, 10:44
Hat sich bedankt: 2 Mal
Danksagung erhalten: 12 Mal

Re: IDM Wärmepumpe einlesen

Beitrag von schlmich »

Hi,
was du bekommst ist ein Floatwert in 2 Registern.
Du musst also beide Werte (0x41 und 0x FB) lesen und damit den Floatwert ermitteln mittels hex2float.

Wenn da Fantasiewerte rauskommen dann musst du die Reihenfolge deiner beiden Werte ändern.
Also anstelle von 0x41FB auf 0xFB41.

Da hat es was mit little und big endian.
Deine IDM liefert little endian Werte; 0x41FB ergibt 31.375 in Dezimalschreibweise.

LG,
Michael
Kostal Plenticore Gen1 8,5kW, KSEM Gen2, Solarfabrik Mono S3 Module 375W, installierte Leistung 7,5kWp, BYD HVS 7,68kWh

bul13
Beiträge: 19
Registriert: Do 16. Mai 2024, 22:27
Danksagung erhalten: 1 Mal

Re: IDM Wärmepumpe einlesen

Beitrag von bul13 »

Hallo schlmich,
Danke für den Tipp! Genau das war es!
Gruß Helmut

Zurück zu „Überschuss Steuerung, Anlagenüberwachung, Anbindung an die Heizung, API Schnittstelle und vieles Andere mehr.“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast