Mit den meisten Abfragen klappt es soweit. Bin seid einiger zeit dabei den Energie Fluss zu aufzuzeigen leider mit nicht so großem Erfolg.
Bin zur zeit mit dem Register 13000 (13001) „Running state(Power flow)“ am auswerten aber die werde die ich dort bekomme passen nicht. Akku wird geladen aber der wert bleibt bei 0.
Ich bin leider nicht so gut im Skripte schreiben mittels PHP vll. kann mir da jemand weiter helfen bzw. hat eine Idee was ich fasch mache.
<?php
//ModBus Appendix1.2 Running state abfrage
// SUNGROW SH10RT
//
//KE
//Erstellt: 2023-03-10
//last update: 2023-03-10 V1.0
// Running state Wert abfragen aus IP-Symcon
$abfrage=GetValue(30678);
//wert umwandeln in binär
$binär=decbin($abfrage);
//binär auffüllen auf 8 stellen mit nullen links auffüllen
$binär8=str_pad($binär, 8, 0, STR_PAD_LEFT);
//binär wert in einzele ziffer auflösen und in einem array schreiben
$ziffern = str_split((string) $binär8);
// binär8 einzele ziffern in einzele variablen schreiben
$bit0=$binär8[0];
$bit1=$binär8[1];
$bit2=$binär8[2];
$bit3=$binär8[3];
$bit4=$binär8[4];
$bit5=$binär8[5];
$bit6=$binär8[6];
$bit7=$binär8[7];
//ziffern mit namen versehen
//Bit0 PV power
//Bit0 == 0 No power generated from PV
//Bit0 == 1 Power generated from PV
if($bit0==0){
$bit0_name="No power generated from PV";
}else {
$bit0_name="Power generated from PV";
}
//Bit1 Battery charging
//Bit1 == 0 Not charging
//Bit1 == 1 Charging
if($bit1==0){
$bit1_name="Battery Not charging";
}else {
$bit1_name="Battery Charging";
}
//Bit2 Battery discharging
//Bit2 == 0 Not discharging
//Bit2 == 1 Discharging
if($bit2==0){
$bit2_name="Battery Not discharging";
}else {
$bit2_name="Battery Discharging";
}
//Bit3 Positive load power
//Bit3 == 0 Load is reactive
//Bit3 == 1 Load is active
if($bit3==0){
$bit3_name="Load is reactive";
}else {
$bit3_name="Load is active";
}
//Bit4 Feed-in power
//Bit4 == 0 No power feed-in the grid
//Bit4 == 1 Power feed-in the grid
if($bit4==0){
$bit4_name="No power feed-in the grid";
}else {
$bit4_name="Power feed-in the grid";
}
//Bit5 Import Power from grid
//Bit5 == 0 No power imported from the grid
//Bit5 == 1 Importing power from grid
if($bit5==0){
$bit5_name="No power imported from the grid";
}else {
$bit5_name="Importing power from grid";
}
//Bit6 Reserved
//Bit6
if($bit6==0){
$bit6_name="Reserved 0";
}else {
$bit6_name="Reserved 1";
}
//Bit7(Refitting System) Negative load power
//Bit7 == 0 No power generated from “Load”
//Bit7== 1 Power generated from“Load”
if($bit7==0){
$bit7_name="No power generated from “Load”";
}else {
$bit7_name="Power generated from“Load”";
}
//umwandeln von integer in Boolean
//danach
//Schreiben in einer Variable
//PV power
$bit0ID ="50604";
$bit0t= (bool) "$bit0";
SetValueBoolean($bit0ID,$bit0t);
//Battery charging
$bit1ID ="31708";
$bit1t= (bool) "$bit1";
SetValueBoolean($bit1ID,$bit1t);
//Battery discharging
$bit2ID ="57289";
$bit2t= (bool) "$bit2";
SetValueBoolean($bit2ID,$bit2t);
//Positive load power
$bit3ID ="48222";
$bit3t= (bool) "$bit3";
SetValueBoolean($bit3ID,$bit3t);
//Feed-in power
$bit4ID ="55612";
$bit4t= (bool) "$bit4";
SetValueBoolean($bit4ID,$bit4t);
//Import Power from grid
$bit5ID ="20965";
$bit5t= (bool) "$bit5";
SetValueBoolean($bit5ID,$bit5t);
//Reserved
$bit6ID ="32756";
$bit6t= (bool) "$bit6";
SetValueBoolean($bit6ID,$bit6t);
//(Refitting System) Negative load power
$bit7ID ="28634";
$bit7t= (bool) "$bit7";
SetValueBoolean($bit7ID,$bit7t);
?>
