Re: SDM230 with Solaranzeige 4.6.3
Verfasst: Sa 28. Nov 2020, 12:02
Der SDM230 hat weniger Register, Ich habe folgendes getan und bei mir laufen zwei Stück problemlos.
In die Funktionen.inc.php
/**************************************************************************
// SDM230 Energy Meter
**************************************************************************/
function query_erzeugen($daten){
$now=time();
$gmt_offset = 1+date("I");
$zenith = 50/60;
$zenith = $zenith + 90;
$Sonnenaufgang = date_sunrise($now, SUNFUNCS_RET_TIMESTAMP, 50.1143999, 8.6585178, $zenith, $gmt_offset);
$query = "";
switch($daten["Regler"]) {
// SDM630 Energy Meter
case 34:
if (date("i") == "01" or $daten["Demodaten"] or date("H") == date("H",$Sonnenaufgang)) {
$query .= "SDM230_Info ";
$query .= "Firmware=\"".$daten["Firmware"]."\"";
// $query .= ",Produkt=\"".$daten["Modell"]."\"";
$query .= ",Objekt=\"".$daten["Objekt"]."\"";
$query .= ",Datum=\"".$daten["Datum"]."\"";
}
$query .= "\n"; // *
$query .= "SDM230 ";
$query .= "Spannung=".$daten["AC_Spannung"];
$query .= ",Strom=".$daten["AC_Strom"];
$query .= ",Leistung=".$daten["AC_Leistung"];
$query .= ",Leistungsfaktor=".$daten["PF"];
$query .= ",Frequenz=".$daten["Frequenz"];
$query .= ",Gesamter_Leistungsbedarf=".$daten["Gesamter_Leistungsbedarf"];
$query .= ",Aktuelle_positive_Leistung=".$daten["Aktuelle_positive_Leistung"];
$query .= ",Aktuelle_negative_Leistung=".$daten["Aktuelle_negative_Leistung"];
$query .= ",Aktueller_Strombedarf=".$daten["Aktueller_Strombedarf"];
$query .= "\n"; // *
$query .= "SDM230_Summen ";
$query .= "kwh_Gesamt_Bezug=".round($daten["Wh_Bezug"],1);
$query .= ",kwh_Gesamt_Einspeisung=".$daten["Wh_Einspeisung"];
$query .= ",Maximale_Gesamtleistung=".$daten["Maximale_Gesamtleistung"];
$query .= ",Maximale_positive_Leistung=".$daten["Maximale_positive_Leistung"];
$query .= ",Maximale_negative_Leistung=".$daten["Maximale_negative_Leistung"];
$query .= ",kwh_Total=".$daten["kwh_Total"];
break;
}
return $query;
}
/**************************************************************************
SDM230_meter.php (einfach eine SDM630_meter.php editieren und die unteren Sachen austauschen)
/****************************************************************************
// Ab hier wird der Zähler ausgelesen.
//
****************************************************************************/
// Firmware Version Firmware Version Firmware Version Firmware
// Firmware Version Firmware Version Firmware Version Firmware
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0000";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["AC_Spannung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0006";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["AC_Strom"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "000C";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["AC_Leistung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "001E";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["PF"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0056";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Maximale_Gesamtleistung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0058";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Aktuelle_positive_Leistung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "005A";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Maximale_positive_Leistung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "005E";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Maximale_negative_Leistung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "005C";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Aktuelle_negative_Leistung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0102";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Aktueller_Strombedarf"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0156";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["kwh_Total"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0054";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Gesamter_Leistungsbedarf"] = $rc;
$funktionen->log_schreiben("AC Leistung: ".$aktuelleDaten["Gesamter_Leistungsbedarf"]." Watt"," ",6);
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0046";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Frequenz"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0048";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Wh_Bezug"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "004A";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Wh_Einspeisung"] = $rc;
und in die regler_auslesen.php folgende Zeilen ergänzen.
case 43:
// SDM230
require($Pfad."/SDM230_meter.php");
break;
In die Funktionen.inc.php
/**************************************************************************
// SDM230 Energy Meter
**************************************************************************/
function query_erzeugen($daten){
$now=time();
$gmt_offset = 1+date("I");
$zenith = 50/60;
$zenith = $zenith + 90;
$Sonnenaufgang = date_sunrise($now, SUNFUNCS_RET_TIMESTAMP, 50.1143999, 8.6585178, $zenith, $gmt_offset);
$query = "";
switch($daten["Regler"]) {
// SDM630 Energy Meter
case 34:
if (date("i") == "01" or $daten["Demodaten"] or date("H") == date("H",$Sonnenaufgang)) {
$query .= "SDM230_Info ";
$query .= "Firmware=\"".$daten["Firmware"]."\"";
// $query .= ",Produkt=\"".$daten["Modell"]."\"";
$query .= ",Objekt=\"".$daten["Objekt"]."\"";
$query .= ",Datum=\"".$daten["Datum"]."\"";
}
$query .= "\n"; // *
$query .= "SDM230 ";
$query .= "Spannung=".$daten["AC_Spannung"];
$query .= ",Strom=".$daten["AC_Strom"];
$query .= ",Leistung=".$daten["AC_Leistung"];
$query .= ",Leistungsfaktor=".$daten["PF"];
$query .= ",Frequenz=".$daten["Frequenz"];
$query .= ",Gesamter_Leistungsbedarf=".$daten["Gesamter_Leistungsbedarf"];
$query .= ",Aktuelle_positive_Leistung=".$daten["Aktuelle_positive_Leistung"];
$query .= ",Aktuelle_negative_Leistung=".$daten["Aktuelle_negative_Leistung"];
$query .= ",Aktueller_Strombedarf=".$daten["Aktueller_Strombedarf"];
$query .= "\n"; // *
$query .= "SDM230_Summen ";
$query .= "kwh_Gesamt_Bezug=".round($daten["Wh_Bezug"],1);
$query .= ",kwh_Gesamt_Einspeisung=".$daten["Wh_Einspeisung"];
$query .= ",Maximale_Gesamtleistung=".$daten["Maximale_Gesamtleistung"];
$query .= ",Maximale_positive_Leistung=".$daten["Maximale_positive_Leistung"];
$query .= ",Maximale_negative_Leistung=".$daten["Maximale_negative_Leistung"];
$query .= ",kwh_Total=".$daten["kwh_Total"];
break;
}
return $query;
}
/**************************************************************************
SDM230_meter.php (einfach eine SDM630_meter.php editieren und die unteren Sachen austauschen)
/****************************************************************************
// Ab hier wird der Zähler ausgelesen.
//
****************************************************************************/
// Firmware Version Firmware Version Firmware Version Firmware
// Firmware Version Firmware Version Firmware Version Firmware
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0000";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["AC_Spannung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0006";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["AC_Strom"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "000C";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["AC_Leistung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "001E";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["PF"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0056";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Maximale_Gesamtleistung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0058";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Aktuelle_positive_Leistung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "005A";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Maximale_positive_Leistung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "005E";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Maximale_negative_Leistung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "005C";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Aktuelle_negative_Leistung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0102";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Aktueller_Strombedarf"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0156";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["kwh_Total"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0054";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Gesamter_Leistungsbedarf"] = $rc;
$funktionen->log_schreiben("AC Leistung: ".$aktuelleDaten["Gesamter_Leistungsbedarf"]." Watt"," ",6);
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0046";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Frequenz"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0048";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Wh_Bezug"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "004A";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Wh_Einspeisung"] = $rc;
und in die regler_auslesen.php folgende Zeilen ergänzen.
case 43:
// SDM230
require($Pfad."/SDM230_meter.php");
break;