2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 03:06:37 +00:00

76_SMAInverter.pm: contrib 2.15.0

git-svn-id: https://svn.fhem.de/fhem/trunk@24633 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2021-06-14 15:28:57 +00:00
parent 0d20e2e7ed
commit b31665a435

View File

@ -1371,23 +1371,6 @@ sub SMAInverter_SMAcommand($$$$$) {
Log3 $name, 5, "$name - Found Data SPOT_UAC1=$inv_SPOT_UAC1 and SPOT_UAC2=$inv_SPOT_UAC2 and SPOT_UAC3=$inv_SPOT_UAC3 and SPOT_IAC1=$inv_SPOT_IAC1 and SPOT_IAC2=$inv_SPOT_IAC2 and SPOT_IAC3=$inv_SPOT_IAC3"; Log3 $name, 5, "$name - Found Data SPOT_UAC1=$inv_SPOT_UAC1 and SPOT_UAC2=$inv_SPOT_UAC2 and SPOT_UAC3=$inv_SPOT_UAC3 and SPOT_IAC1=$inv_SPOT_IAC1 and SPOT_IAC2=$inv_SPOT_IAC2 and SPOT_IAC3=$inv_SPOT_IAC3";
return (1,$inv_SPOT_UAC1,$inv_SPOT_UAC2,$inv_SPOT_UAC3,$inv_SPOT_IAC1,$inv_SPOT_IAC2,$inv_SPOT_IAC3,$inv_susyid,$inv_serial); return (1,$inv_SPOT_UAC1,$inv_SPOT_UAC2,$inv_SPOT_UAC3,$inv_SPOT_IAC1,$inv_SPOT_IAC2,$inv_SPOT_IAC3,$inv_susyid,$inv_serial);
} }
if($data_ID eq 0x491E) {
$inv_BAT_CYCLES = unpack("V*", substr $data, 62, 4);
$inv_BAT_TEMP = unpack("V*", substr $data, 90, 4) / 10;
$inv_BAT_UDC = unpack("V*", substr $data, 118, 4) / 100;
$inv_BAT_IDC = unpack("l*", substr $data, 146, 4);
if($inv_BAT_IDC eq -2147483648) { # Catch 0x80000000 as 0 value
$inv_BAT_IDC = 0;
}
else {
$inv_BAT_IDC = $inv_BAT_IDC / 1000;
}
Log3 $name, 5, "$name - Found Data BAT_CYCLES=$inv_BAT_CYCLES and BAT_TEMP=$inv_BAT_TEMP and BAT_UDC=$inv_BAT_UDC and BAT_IDC=$inv_BAT_IDC";
return (1,$inv_BAT_CYCLES,$inv_BAT_TEMP,$inv_BAT_UDC,$inv_BAT_IDC,$inv_susyid,$inv_serial);
}
if($data_ID eq 0x495B) { if($data_ID eq 0x495B) {
$inv_BAT_TEMP = unpack("V*", substr $data, 62, 4) / 10; $inv_BAT_TEMP = unpack("V*", substr $data, 62, 4) / 10;
@ -1408,14 +1391,31 @@ sub SMAInverter_SMAcommand($$$$$) {
} }
if($data_ID eq 0x495D) { if($data_ID eq 0x495D) {
$inv_BAT_IDC = unpack("V*", substr $data, 62, 4) / 100; $inv_BAT_IDC = unpack("l*", substr $data, 62, 4) / 1000;
$inv_BAT_IDC_A = unpack("V*", substr $data, 66, 4) / 100; $inv_BAT_IDC_A = unpack("l*", substr $data, 66, 4) / 1000;
$inv_BAT_IDC_B = unpack("V*", substr $data, 70, 4) / 100; $inv_BAT_IDC_B = unpack("l*", substr $data, 70, 4) / 1000;
$inv_BAT_IDC_C = unpack("V*", substr $data, 74, 4) / 100; $inv_BAT_IDC_C = unpack("l*", substr $data, 74, 4) / 1000;
Log3 $name, 5, "$name - Found Data and BAT_IDC=$inv_BAT_IDC and BAT_IDC_A=$inv_BAT_IDC_A and BAT_IDC_B=$inv_BAT_IDC_B and BAT_IDC_C=$inv_BAT_IDC_C"; Log3 $name, 5, "$name - Found Data and BAT_IDC=$inv_BAT_IDC and BAT_IDC_A=$inv_BAT_IDC_A and BAT_IDC_B=$inv_BAT_IDC_B and BAT_IDC_C=$inv_BAT_IDC_C";
return (1,$inv_BAT_IDC,$inv_BAT_IDC_A,$inv_BAT_IDC_B,$inv_BAT_IDC_C,$inv_susyid,$inv_serial); return (1,$inv_BAT_IDC,$inv_BAT_IDC_A,$inv_BAT_IDC_B,$inv_BAT_IDC_C,$inv_susyid,$inv_serial);
} }
if($data_ID eq 0x491E) {
$inv_BAT_CYCLES = unpack("V*", substr $data, 62, 4);
$inv_BAT_TEMP = unpack("V*", substr $data, 90, 4) / 10;
$inv_BAT_UDC = unpack("V*", substr $data, 118, 4) / 100;
$inv_BAT_IDC = unpack("l*", substr $data, 146, 4);
if($inv_BAT_IDC eq -2147483648) { # Catch 0x80000000 as 0 value
$inv_BAT_IDC = 0;
}
else {
$inv_BAT_IDC = $inv_BAT_IDC / 1000;
}
Log3 $name, 5, "$name - Found Data BAT_CYCLES=$inv_BAT_CYCLES and BAT_TEMP=$inv_BAT_TEMP and BAT_UDC=$inv_BAT_UDC and BAT_IDC=$inv_BAT_IDC";
return (1,$inv_BAT_CYCLES,$inv_BAT_TEMP,$inv_BAT_UDC,$inv_BAT_IDC,$inv_susyid,$inv_serial);
}
if($data_ID eq 0x495F) { if($data_ID eq 0x495F) {
$inv_BAT_CYCLES = unpack("V*", substr $data, 62, 4); $inv_BAT_CYCLES = unpack("V*", substr $data, 62, 4);
$inv_BAT_TEMP = unpack("V*", substr $data, 90, 4) / 10; $inv_BAT_TEMP = unpack("V*", substr $data, 90, 4) / 10;
@ -1432,7 +1432,7 @@ sub SMAInverter_SMAcommand($$$$$) {
Log3 $name, 5, "$name - Found Data BAT_CYCLES=$inv_BAT_CYCLES and BAT_TEMP=$inv_BAT_TEMP and BAT_UDC=$inv_BAT_UDC and BAT_IDC=$inv_BAT_IDC"; Log3 $name, 5, "$name - Found Data BAT_CYCLES=$inv_BAT_CYCLES and BAT_TEMP=$inv_BAT_TEMP and BAT_UDC=$inv_BAT_UDC and BAT_IDC=$inv_BAT_IDC";
return (1,$inv_BAT_CYCLES,$inv_BAT_TEMP,$inv_BAT_UDC,$inv_BAT_IDC,$inv_susyid,$inv_serial); return (1,$inv_BAT_CYCLES,$inv_BAT_TEMP,$inv_BAT_UDC,$inv_BAT_IDC,$inv_susyid,$inv_serial);
} }
if($data_ID eq 0x2377) { if($data_ID eq 0x2377) {
$inv_TEMP = unpack("l*", substr $data, 62, 4); $inv_TEMP = unpack("l*", substr $data, 62, 4);