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

JanssenPV
Beiträge: 81
Registriert: Fr 4. Nov 2022, 14:15
Wohnort: Horst
Hat sich bedankt: 9 Mal
Danksagung erhalten: 4 Mal

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von JanssenPV »

Hi pvToni,
wenn du die besagten Werte mit auslesen möchtest kannst du die Schleife auf 119 ändern. Allerdings zeigen deine ausgelesenen Werte ja scheibar keine realen Werte zu sein. Ich lese nur TOP 115 mit aus. Bei mir zeigt er allerdings richtig an.

TOP115 Water_Pressure 1.04 Bar

Hast du keinen Drucksensor verbaut? (Würde mich sehr wundern) oder ist der nur nicht auslesbar? ;)
Lg Armin

Kostal Plenticore 8.5 mit 24x AstroEnergy 370W
Kostal Plenticore 5.5 G2 mit 12 x AstroEnergy 430W
BYD HVS 12.8
Panasonic Aquarea LT Gen K 7kW

Bogeyof
Beiträge: 1174
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 25 Mal
Danksagung erhalten: 141 Mal

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von Bogeyof »

Wenn Du von 3.1 auf 3.8 upgedated hast, dann haben sich auch die Bezeichnungen für z.B. Heat_Energy_Production in Heat_Power_Production geändert. Da dies dann neue Felder in der Datenbank werden und die Auswertungen im Dashboard entweder geändert werden müssen (alte Werte sind dann weg) oder Du die neuen Werte nicht mehr angezeigt bekommst habe ich mir folgendes eingebaut:

Code: Alles auswählen

...
        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;
             }      
             if ($i == 15) {
                 $EnergyA["heatpump"][$i]["Name"] = "Heat_Energy_Production";
             }
             if ($i == 16) {
                 $EnergyA["heatpump"][$i]["Name"] = "Heat_Energy_Consumption";
             }
             if ($i == 38) {
                 $EnergyA["heatpump"][$i]["Name"] = "Cool_Energy_Production";
             }
             if ($i == 39) {
                 $EnergyA["heatpump"][$i]["Name"] = "Cool_Energy_Consumption";
             }
             if ($i == 40) {
                 $EnergyA["heatpump"][$i]["Name"] = "DHW_Energy_Production";
             }
             if ($i == 41) {
                 $EnergyA["heatpump"][$i]["Name"] = "DHW_Energy_Consumption";
             }
             ...
          
Für die zusätzlichen Felder musst Du tatsächlich nur die Schleife anpassen, aber auf 118...
Die Werte sind aber nicht für Dein Modell und damit ohne sinnvollen Wert. Daher könntest Du nach wie vor bei TOP114 aufhören (Schleife lassen).

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

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von pvToni »

wo genau gehört es getauscht. hab es mit meinem php code/syntax Verständnis nicht geschafft.

Code: Alles auswählen

<?php
/******************************************************************************
//  Hie können eigene Berechnungen gemacht werden, wenn das nötig ist.
******************************************************************************/
if ($aktuelleDaten["Relaisstatus"] == 0) {
    $aktuelleDaten["RelaisstatText"] = "aus";
} else {
    $aktuelleDaten["RelaisstatText"] = "ein";
}

$aktuelleDaten["PVBezug"] = 0;
$aktuelleDaten["NetzBezug"] = 0;
$aktuelleDaten["Query"] = "db=" . "solaranzeige" . "&q=" . urlencode("select last(Bezug) FROM Meter");
$rc = $funktionen->po_influxdb_lesen($aktuelleDaten);
$aktuelleDaten["NetzBezug"] = $rc["results"][0]["series"][0]["values"][0][1];
if ($aktuelleDaten["NetzBezug"] < 0) {
    $aktuelleDaten["NetzBezug"] = 0;
}
if ($aktuelleDaten["NetzBezug"] >= $aktuelleDaten["LeistungGesamt"]) {
    $aktuelleDaten["NetzBezug"] = $aktuelleDaten["LeistungGesamt"];
} else {
    $aktuelleDaten["PVBezug"] = $aktuelleDaten["LeistungGesamt"] - $aktuelleDaten["NetzBezug"];
}
//  Wann ist Mitternacht?
$HeuteMitternacht = strtotime('today midnight');
$Heute = $HeuteMitternacht + (60 * 60 * 24);
$aktuelleDaten["Query"] = "db=" . $InfluxDBLokal . "&q=" . urlencode("select (last(Wh_Gesamt_Verbrauch) - first(Wh_Gesamt_Verbrauch)) FROM Summen where time > " . $HeuteMitternacht . "000000000  and time <= " . $Heute . "000000000");
$rc = $funktionen->po_influxdb_lesen($aktuelleDaten);
$aktuelleDaten["TagesLeistung"] = $rc["results"][0]["series"][0]["values"][0][1] + ($aktuelleDaten["LeistungGesamt"] / 60); // Letzte Minute dazurechnen

$aktuelleDaten["ZusatzQuery"] = "";

$ch = curl_init("http://192.168.11.19/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, 8);
//  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 > 85 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;
             }      
             if ($i == 15) {
                 $EnergyA["heatpump"][$i]["Name"] = "Heat_Energy_Production";
             }
             if ($i == 16) {
                 $EnergyA["heatpump"][$i]["Name"] = "Heat_Energy_Consumption";
             }
             if ($i == 38) {
                 $EnergyA["heatpump"][$i]["Name"] = "Cool_Energy_Production";
             }
             if ($i == 39) {
                 $EnergyA["heatpump"][$i]["Name"] = "Cool_Energy_Consumption";
             }
             if ($i == 40) {
                 $EnergyA["heatpump"][$i]["Name"] = "DHW_Energy_Production";
             }
             if ($i == 41) {
                 $EnergyA["heatpump"][$i]["Name"] = "DHW_Energy_Consumption";
             }
        } 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 < 115);



$aktuelleDaten["ZusatzQuery"] .= "  ".$aktuelleDaten["zentralerTimestamp"];
$aktuelleDaten["ZusatzQuery"] .= "\n";                                                                          // *

Ausgang:;
$aktuelleDaten["ZusatzQuery"] .= "Service ";
$aktuelleDaten["ZusatzQuery"] .= "RelaisstatText=\"" . $aktuelleDaten["RelaisstatText"] . "\"";
$aktuelleDaten["ZusatzQuery"] .= "  ".$aktuelleDaten["zentralerTimestamp"];
$aktuelleDaten["ZusatzQuery"] .= "\n";                                                                          // *
$aktuelleDaten["ZusatzQuery"] .= "AC ";
$aktuelleDaten["ZusatzQuery"] .= "NetzBezug=" . $aktuelleDaten["NetzBezug"];
$aktuelleDaten["ZusatzQuery"] .= ",PVBezug=" . $aktuelleDaten["PVBezug"];
$aktuelleDaten["ZusatzQuery"] .= "  ".$aktuelleDaten["zentralerTimestamp"];
$aktuelleDaten["ZusatzQuery"] .= "\n";                                                                          // *
$aktuelleDaten["ZusatzQuery"] .= "Summen ";
$aktuelleDaten["ZusatzQuery"] .= "TagesLeistung=" . $aktuelleDaten["TagesLeistung"];
$aktuelleDaten["ZusatzQuery"] .= "  ".$aktuelleDaten["zentralerTimestamp"];

return;
?>
er macht jetzt keine berechnung mehr in der shelly_math.php

Bogeyof
Beiträge: 1174
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 25 Mal
Danksagung erhalten: 141 Mal

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von Bogeyof »

Code: Alles auswählen

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 > 85 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;
             }      
             if ($i == 15) {
                 $EnergyA["heatpump"][$i]["Name"] = "Heat_Energy_Production";
             }
             if ($i == 16) {
                 $EnergyA["heatpump"][$i]["Name"] = "Heat_Energy_Consumption";
             }
             if ($i == 38) {
                 $EnergyA["heatpump"][$i]["Name"] = "Cool_Energy_Production";
             }
             if ($i == 39) {
                 $EnergyA["heatpump"][$i]["Name"] = "Cool_Energy_Consumption";
             }
             if ($i == 40) {
                 $EnergyA["heatpump"][$i]["Name"] = "DHW_Energy_Production";
             }
             if ($i == 41) {
                 $EnergyA["heatpump"][$i]["Name"] = "DHW_Energy_Consumption";
             }
             $aktuelleDaten["ZusatzQuery"] .= ",".$EnergyA["heatpump"][$i]["Name"]."=".$EnergyA["heatpump"][$i]["Value"];
             if ($i == 20) {
                 $aktuelleDaten["ThreeWay_Valve_State"] = $EnergyA["heatpump"][$i]["Value"];
             }
        }
    }
    $i++;
} while ($i < 115);

Irgendwie hast Du einen else-Zweig zu viel reinkopiert

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

Re: Panasonic Aquarea Wärmepumpe auslesen und steuern

Beitrag von pvToni »

DANKE
funktioniert!

Antworten

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