Panasonic Aquarea Wärmepumpe auslesen und steuern

Ü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

pvToni
Beiträge: 18
Registriert: Di 16. Aug 2022, 20:20
Hat sich bedankt: 4 Mal

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von pvToni »

Bogeyof hat geschrieben:
Di 15. Mär 2022, 10:42
Nachdem ich nächste Woche eine Panasonic WP (Aquarea WH-MXC09J3E8 T-Cap) bekommen soll (Daumen drücken bitte), habe ich mich umgesehen, wie ich die Daten am besten Auslesen und Visualisieren könnte, sowie natürlich die WP abhängig von Parametern auch steuern kann.
Ich habe ein Open Source Projekt "Heishamon" gefunden, dieses ist eine Software und ein Platinen Design (gibt es fertig zu kaufen bei Tindie), welches genau dies erlaubt. Passt wohl für alle Geräte der H und J Serie.
Ich habe zwar noch keine WP zum Test, aber wie immer konnte ich es nicht lassen und habe schon mal Trockenübungen gemacht. Ich habe alle verfügbaren Werte ausgelesen und in der Datenbank gespeichert. Dies mache ich über eine _math.php, welche ich beim Gerät "Shelly" mit eingehängt habe, weil ich mit einem Shelly3EM den Verbrauch der WP überwachen werde.
Die Werte landen damit in der Shelly-Datenbank unter dem Measurement "WP". Dazu habe ich auch schon einmal ein Dashboard erstellt, natürlich sind noch alle Daten 0 oder ""...
WP.png
Hallo,
Könntest du bitte das Dashboard teilen?
und evtl. kurz beschreiben wie die die Daten von Heishamon in die influxdb schreibst?

Bitte Danke

Bogeyof
Beiträge: 1158
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 24 Mal
Danksagung erhalten: 140 Mal

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von Bogeyof »

- Die Werte der Wärmepumpe kommen durch das Zusatzmodul Heishamon.
- Die Energiewerte lese ich vom Shelly 3EM durch die WebAPI-Schnittstelle aus. Dessen Stromzangen messen zwischen WP und Sicherung.

Ich habe alle verfügbaren Werte ausgelesen und in der Datenbank gespeichert. Dies mache ich über eine shelly_math.php, welche ich beim Gerät "Shelly" mit eingehängt habe, weil ich mit einem Shelly3EM den Verbrauch der WP überwache.

Die Werte landen damit in der Shelly-Datenbank unter dem Measurement "WP". Dazu habe ich auch ein Dashboard erstellt, welches die Werte der Wärmepumpe zusammen mit den Leistungsmessungen des Shelly 3EM und einzelnen Werten der PV-Anlage (für Anteil Netz-/PV-Strom) darstellt.

Dieses Dashboard ist also spezifisch auf meine Gerätekombination, kann aber sicherlich als Grundlage für ein eigenes Dashboard herangezogen werden.

Das ebenfalls angehängte Skript ist ebenfalls spezifisch, sendet z.B. Meldungen bei Warmwasserbereitung und speichert Tagesleistungen (Shelly 3EM) sowie Relaisstatus (Shelly). Es ist also kein reines Heishamon auslesen, dieses ist aber darin enthalten. Im Prinzip sind es die folgenden Zeilen:

Code: Alles auswählen

$aktuelleDaten["ZusatzQuery"] = "";

$ch = curl_init("http://192.168.xxx.xxx/json"); // cURL initialisieren
curl_setopt($ch, CURLOPT_HEADER, 0); // Header soll nicht in Ausgabe enthalten sein
curl_setopt($ch, CURLOPT_POST, 1); // POST-Request wird abgesetzt
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
//  curl_setopt($ch, CURLOPT_POSTFIELDS, 'cmnd=Status%208'); // POST-Felder festlegen, die gesendet werden sollen
$EnergyStr = curl_exec($ch); // Ausfuehren
curl_close($ch); // Objekt schliessen und Ressourcen freigeben
if (empty($EnergyStr)) {
    goto Ausgang;
}
$EnergyA = json_decode($EnergyStr, true);
  
$aktuelleDaten["ZusatzQuery"] = "WP ";
$i = 0;
if (empty($EnergyA["heatpump"][$i]["Value"])) {
    $EnergyA["heatpump"][$i]["Value"] = 0;
}
$aktuelleDaten["ZusatzQuery"] .= $EnergyA["heatpump"][$i]["Name"]."=".$EnergyA["heatpump"][$i]["Value"];
$i = 1;
do {
    if ($i == 34 or $i == 35 or $i == 37 or $i == 43 or $i == 46 or $i == 47 or $i == 48 or $i == 57 or ($i > 81 and $i < 90) or ($i > 100 and $i < 106)){
    // Wert wird uebersprungen, kein Eintrag in Datenbank
    } else {
        if ($i == 44 or $i == 92){
            if (empty($EnergyA["heatpump"][$i]["Value"])) {
             $EnergyA["heatpump"][$i]["Value"] = "none";
            }
            $aktuelleDaten["ZusatzQuery"] .= ",".$EnergyA["heatpump"][$i]["Name"]."=\"".$EnergyA["heatpump"][$i]["Value"]."\"";
        } else {
             if (empty($EnergyA["heatpump"][$i]["Value"])) {
                 $EnergyA["heatpump"][$i]["Value"] = 0;
             }      
             $aktuelleDaten["ZusatzQuery"] .= ",".$EnergyA["heatpump"][$i]["Name"]."=".$EnergyA["heatpump"][$i]["Value"];
             if ($i == 20) {
                 $aktuelleDaten["ThreeWay_Valve_State"] = $EnergyA["heatpump"][$i]["Value"];
             }
        }
    }
    $i++;
} while ($i < 107); // Firmware 3.0, bei Firmware 2.x muss $i < 106 sein !!!

$aktuelleDaten["ZusatzQuery"] .= "  ".$aktuelleDaten["zentralerTimestamp"];
$aktuelleDaten["ZusatzQuery"] .= "\n";	
Dies ist für die neueste Firmware 3.0, bei Firmware 2.x muss es while ($i < 106) heißen...
Dateianhänge
shelly_math.php
(5.71 KiB) 342-mal heruntergeladen
Panasonic WP.json
(727.46 KiB) 372-mal heruntergeladen

pvToni
Beiträge: 18
Registriert: Di 16. Aug 2022, 20:20
Hat sich bedankt: 4 Mal

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von pvToni »

Danke, das Dashboard sieht schon mal cool aus! leider noch ohne Werte ;-)

Habe selbst das Heishamon Modul und eine Panasonic WP.
Hast du im Heishamon den MQTT von der Solaranzeige eingetragen? kommen die Werte per MQTT?
beim Wechselrichter fragt ja die Solaranzeige den Wechselrichter ab und speichert es in der influxdb.

den shelly hab ich (noch) nicht, aber die Heishamon Werte müsste ich ja reinbekommen.

Bogeyof
Beiträge: 1158
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 24 Mal
Danksagung erhalten: 140 Mal

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von Bogeyof »

Ich nutze nicht MQTT sondern frage die Werte via Web-API ab. Das ist ein Befehl ala "http://192.168.xxx.xxx/json" (eigene IP des Heishamon-Moduls eintragen) und dieser liefert eine JSON-Struktur als Antwort. Die Auswertung dieser Antwort habe ich wie gesagt in einer _math.php (bei mir bot sich die shelly_math.php an, weil der Shelly 3EM ja als Energiezähler für die Wärmepumpe fungiert, kann aber auch in eine _math.php für jedes andere Gerät eingebaut werden) hinterlegt. Die Daten landen halt in der Datenbank des Gerätes, welches gerade ausgelesen wird im Measurement "WP".
Es könnte sicherlich auch per MQTT funktionieren, aber das erscheint mir aufwendiger. Wie Du siehst habe ich gerade mal ca. 20 Zeilen dafür benötigt, dabei habe ich noch ca. 25 Werte gefiltert und Abfragen eingebaut, welcher Feldtyp ein Datenfeld ist. Auch werden nicht vorhandene Werte initialisiert.
Falls das für Dich Neuland ist, im Forum gibt es eine Dokumentation für die eigenen Werte in einer _math.php. Auch kann die shelly_math.php als Beispiel dienen, wie gesagt, die wichtigen Zeilen (aus dem Codeschnipsel) können auch in jede andere _math.php eines beliebigen Gerätes eingebaut werden...

pvToni
Beiträge: 18
Registriert: Di 16. Aug 2022, 20:20
Hat sich bedankt: 4 Mal

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von pvToni »

hallo,

funktioniert, und war nicht schwer.
zeit muss man nur finden.
dann werde ich mir wohl auch einen shelly holen müssen um mehr zu sehen!

DANKE!

Bogeyof
Beiträge: 1158
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 24 Mal
Danksagung erhalten: 140 Mal

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von Bogeyof »

Für alle Heishamon Besitzer noch ein weiterer Trick / Tipp:
Wenn die optionale Zusatzplatine CZ-NS4P nicht eingebaut ist, man aber trotzdem SG-Ready Stati und Leistungsbegrenzung nutzen will, dann kann Heishamon diese optionale Platine emulieren. Dazu einfach unter Settings "Emulate optional PCB" aktivieren. Im Menü der WP muss dann auch die optionale Platine auf "Ja" und die Leistungssteuerung auf "Ja" gesetzt werden, beides zu finden in den Systemeinstellungen / Installateurs-Menü. Jetzt kann man wieder per MQTT oder per Web-API Einstellungen zur WP senden, wie wenn sie an der Zusatzplatine anliegen würden.

Um z.B. die Leistungsbegrenzung einzustellen (erhöht bei mir den COP bei der Warmwasserbereitung deutlich) folgenden Befehl senden:
http://192.168.xxx.xxx/command?SetDemandControl=53 (Einstellung 10%)
http://192.168.xxx.xxx/command?SetDemandControl=133 (Einstellung 50%)
usw.

Auszug aus der Beschreibung dazu:

Code: Alles auswählen

### Optional PCB emulation support:
Recent firmware allows (experimental) support for optional PCB emulation. This allows you to set SmartGrid or Demand Control values without having the optional pcb installed. Also you can send the temperatures normally connected to that board to the heatpump.

You can publish mqtt messages towards the 'topic base/commands/pcb_topic', so for example "panasonic_heat_pump/commands/SetSolarTemp". For temperatures you just send the real temperature (the hexadecimal value will be calculated for your). For SmartGrid and Demand control you send the decimal representation of the hex value you want to send (see below for the possible hex values).

Remark 1: You need to set in HP Service settings Optional PCB to YES ,and appropriate function as well to have effect in sending MQTT topics.

Remark 2: Turning on Optional PCB in HP's options will couse ,that Room Thermo 1 input will not work anymore. It is now possible to use PCB topics "SetExternalThermostat1State" (with substitute Room Thermo 1 now)  and "SetExternalThermostat2State".

Remark 3: Setting in HP Service settings Optional PCB to YES gives expectation ,that Optional PCB emulator ( HeishaMon) will sent continuously Optional PCB Set Command. When communication disappear (for around 40s) HP generates H74 error and switches off to StandBy. So ensure continiues communication is very important , be aware during switch off , factory default of HeishaMon , or similar action.

Remark 4: If you enable optional pcb emulation the HeishaMon not boot into a wifi config hotspot if it can not connect to your previously configured wifi during boot. Also during wifi failures it will keep running and try to reconnect to the wifi instead of rebooting into wifi hotspotconfig. It is important to send often optional pcb commands to the heatpump and therefore it can not react on wifi failures like that. So if you have a running wifi and heishamon and need to reconfigure your wifi ssid or password you first need to factory reset your heishamon. Or if you need to reconfigure your HeishaMon in such situation you need the double reset factory reset trick to clear the config on the Heishamon.

### Set command byte decrypt:

| PCB Topic |Topic value| Byte# | Possible Value | Value decrypt | Value Description |
|:---- | ---- | ---- | ---- | ----- | ----:|
| |-| 00 | F1 |   | Header  |
| |-| 01 | 11 | Data length ( Packet length = Data length + 3 ) |  Header |
| |-| 02 | 01 |   | Header  |
| |-| 03 | 50 |   | Header  |
| |-| 04 | 00 |   | Acknowledge for Z1/Z2/Pool Water Pump & Mixing valves state  |
| |-| 05 | 00 |   | Acknowledge for Alarm  |
| SetHeatCoolMode<br/>SetCompressorState<br/>SetSmartGridMode<br/>SetExternalThermostat1State<br/>SetExternalThermostat2State |0/1<br/>0/1<br/>0/1/2/3<br/>0/1/2/3<br/>0/1/2/3<br/>| 06 | 40 | 1st bit = Heat/Cool<br/>2nd bit = Compressor state<br/>3rd/4th bit == SmartGrid Mode (00 = normal, 10 = HP/DHW off, 01 = Capacity 1, 11 = Capacity 2)<br/>5th/6th bit = Thermostat 1 (00 = no demand, 01 = cool demand, 10 = heat demand, 11 = heat and cool demand)<br/>7th/8th bit = Thermostat 2 (00 = no demand, 01 = cool demand, 10 = heat demand, 11 = heat and cool demand)  | SG ready values , External Compressor SW , Heat/Cool SW, Thermostat 1/2 |
| SetPoolTemp |Temp [C]| 07 | FF |  NTC 6,5kOhm resistance characteristic value | Temp. Pool  |
| SetBufferTemp |Temp [C]| 08 | FF |  NTC 6,5kOhm resistance characteristic value | Temp. Buffer  |
| |-| 09 | E5 but also93,92,91 (90) ,A2 |   | ?  |
| SetZ1RoomTemp |Temp [C]| 10 | FF |  NTC 6,5kOhm resistance characteristic value | Temp. Z1_Room   |
| SetZ2RoomTemp |Temp [C]| 11 | FF |  NTC 6,5kOhm resistance characteristic value | Temp. Z2_Room   |
| |-| 12 | 00 |   | 0 byte  |
| SetSolarTemp |Temp [C]| 13 | FF |  NTC 6,5kOhm resistance characteristic value | Temp. Solar  |
| SetDemandControl |from<br/>43 -5%<br/> to <br/>234 - 100%| 14 | EA | HEX:  EB-100% ,B8 - 75% ,85 -50%,52 - 25% ,2B - 5% | Demand Control |
| SetZ2WaterTemp |Temp [C]| 15 | FF |  NTC 6,5kOhm resistance characteristic value | Temp. Z2_Water   |
| SetZ1WaterTemp |Temp [C] | 16 | FF |  NTC 6,5kOhm resistance characteristic value | Temp. Z1_Water   |
| |-| 17 | 00 |   | 0 byte  |
| |-| 18 | 00 |   | 0 byte  |
| |-| 19 | 2C |  CHECKSUM |  |
Ich habe eine 9kW T-CAP und die Warmwasserbereitung mit "Vollgas" lieferte nur einen COP von ca. 3 bis 3,5. Durch die Leistungsreduzierung auf 25% (in Wirklichkeit geht er nicht unter eine Mindestgrenze, egal was ich einstelle es sind wohl immer so ca. 50% oder mehr an echter Leistung) habe ich jetzt einen COP um 4. Statt bis zu 3,2 kW Maximalleistung nutzt er jetzt 2 kW und die Kompressorfrequenz ist nur ca. 25 statt 35 Hz. Auch die Lüfter laufen langsamer, insgesamt ist die WP dadurch natürlich auch leiser bei der Warmwasserbereitung...

MacB19
Beiträge: 15
Registriert: Fr 7. Mai 2021, 15:02
Hat sich bedankt: 1 Mal

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von MacB19 »

@pvToni:
Darf ich fragen wie und wo genau du den HeishaMon jetzt in die Solaranzeige einliest ohne Shelly ?

Habe seit gestern die Solaranzeige auf meinem Raspi 4 am laufen.
Hängt am Ethernet / WLAN und greift die Daten vom Fronius Gen24 Hybrid direkt über IP-Adresse ab.

Jetzt baue ich das vorhande Pana-Wifi-Modul um auf HeishaMon (gestern bestellt 8-))um die Daten der Jeisha (WH-MDC05J3E5 Mono)
auch noch in ein Dashboard zu bekommen.

Ich möchte erstmal nur "lesen" nicht steuern. Auf welchem Weg bekomme ich die Daten in die Datenbank der Solaranzeige ?

Danke für Euren Input vorab.

Gruß
Marcus

Bogeyof
Beiträge: 1158
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 24 Mal
Danksagung erhalten: 140 Mal

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von Bogeyof »

Eigentlich nicht schwer. Du kannst den "Code-Schnipsel" aus dem Beitrag viewtopic.php?p=19335#p19335 in eine beliebige _math.php einbauen von einem Gerät, welches Du ausliest, also zum Beispiel für deinen Fronius Wechselrichter. Das Code-Schnipsel schreibt die Werte dann in die Datenbank, welche von diesem Gerät benutzt wird unter dem Measurement "WP". Wie das mit den _math.php funktioniert findest Du überall hier im Forum und in den Dokumentationen von @Ulrich. Diese werden bei einem Update nicht überschrieben und damit bleiben Deine Anpassungen erhalten und Du kannst trotzdem immer Up-to-Date sein.

MacB19
Beiträge: 15
Registriert: Fr 7. Mai 2021, 15:02
Hat sich bedankt: 1 Mal

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von MacB19 »

Super. Vielen Dank für die schnelle Antwort.
Bereite ich heute Abend direkt vor bzw. schaue mir das an.
Sollte ja zumindest auch trocken funktionieren.
Wenn HeishaMon dann da ist kommen die Daten ja auch rein.

MacB19
Beiträge: 15
Registriert: Fr 7. Mai 2021, 15:02
Hat sich bedankt: 1 Mal

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von MacB19 »

Das hat schonmal super geklappt. Werte sind sichtbar, Dashboard geht. Vielen Dank.

Jetzt würde ich gerne noch den S0-Zähler vom HeishaMon in die WP Daten einbringen.
Ich kämpfe jetzt schon den ganzen Morgen mit der Syntax und komme nicht auf den richtigen Trichter :-(

Die json Ausgabe sieht so aus:
....{"Topic":"TOP106","Name":"Pump_Flowrate_Mode","Value":"0","Description":"DeltaT"}],"1wire":[],"s0":[{"S0 port":"1","Watt":"739","Watthour":"5772","WatthourTotal":"6451","PulseQuality":"61","AvgPulseWidth":"27"},{"S0 port":"2",...


Daher habe ich das mal so eingebaut: (eingebaut in deinen Code, evtl. ist die Stelle auch falsch, zu kompliziert,...)
...
$EnergyA = json_decode($EnergyStr, true);
$aktuelleDaten["ZusatzQuery"] = "WP ";

//s0_Zähler_1 auslesen
$j = 1;
$aktuelleDaten["ZusatzQuery"] .= "Leistung_WP=" .$EnergyA["s0"][$j]["Watt"];

//Wärmepumpen-Kanäle auslesen
$i = 0;
if (empty($EnergyA["heatpump"][$i]["Value"])) {
$EnergyA["heatpump"][$i]["Value"] = 0;
}
$aktuelleDaten["ZusatzQuery"] .= $EnergyA["heatpump"][$i]["Name"]."=".$EnergyA["heatpump"][$i]["Value"];
$i = 1;
...

Was mache ich falsch ?

Antworten

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