Ü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:  106 Registriert:  Fr 4. Nov 2022, 14:15Wohnort:  HorstHat sich bedankt:  10 Mal Danksagung erhalten:  6 Mal  
		
						
						
								
						
									Beitrag von JanssenPV  Do 7. Nov 2024, 10:01 
			
			
			
			
			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
						 
		 
				
		
		 
	 
	
		
				
			
				
																			
								Bogeyof 							 
									
		Beiträge:  1083 Registriert:  Mi 13. Mai 2020, 10:04Hat sich bedankt:  26 Mal Danksagung erhalten:  150 Mal  
		
						
						
								
						
									Beitrag von Bogeyof  Do 7. Nov 2024, 10:24 
			
			
			
			
			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:20Hat sich bedankt:  4 Mal  
		
						
						
								
						
									Beitrag von pvToni  Do 7. Nov 2024, 10:57 
			
			
			
			
			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:  1083 Registriert:  Mi 13. Mai 2020, 10:04Hat sich bedankt:  26 Mal Danksagung erhalten:  150 Mal  
		
						
						
								
						
									Beitrag von Bogeyof  Do 7. Nov 2024, 11:41 
			
			
			
			
			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:20Hat sich bedankt:  4 Mal  
		
						
						
								
						
									Beitrag von pvToni  Do 7. Nov 2024, 21:40 
			
			
			
			
			DANKE
			
			
									
						
			
						 
		 
				
		
		 
	 
	
	
		
	
	
	
	
			
	
	
		
		Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast