Panasonic Aquarea Wärmepumpe auslesen und steuern
Moderator: Ulrich
-
- 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
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?
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
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
-
- 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
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:
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).
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";
}
...
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).
Re: Panasonic Aquarea Wärmepumpe auslesen und steuern
wo genau gehört es getauscht. hab es mit meinem php code/syntax Verständnis nicht geschafft.
er macht jetzt keine berechnung mehr in der shelly_math.php
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;
?>
-
- 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
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