2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-29 17:37:09 +00:00

70_PylonLowVoltage: contrib 0.2.5

git-svn-id: https://svn.fhem.de/fhem/trunk@28732 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2024-04-01 21:04:49 +00:00
parent a074e0d205
commit d39bf78827

View File

@ -122,6 +122,10 @@ BEGIN {
# Versions History intern (Versions history by Heiko Maaz)
my %vNotesIntern = (
"0.2.5" => "01.04.2024 _callAnalogValue: more than 5 temperature positions (US5000) ",
"0.2.4" => "29.03.2024 avoid possible Illegal division by zero at line 1438 ",
"0.2.3" => "19.03.2024 edit commandref ",
"0.2.2" => "20.02.2024 correct commandref ",
"0.2.1" => "18.02.2024 doOnError: print out faulty response, Forum:https://forum.fhem.de/index.php?msg=1303912 ",
"0.2.0" => "15.12.2023 extend possible number of batteries up to 14 ",
"0.1.11" => "28.10.2023 add needed data format to commandref ",
@ -1152,11 +1156,11 @@ sub _callAnalogValue {
for my $z (1..$pcc) {
my $fz = sprintf "%02d", $z; # formatierter Zähler
$readings->{'cellVoltage_'.$fz} = sprintf "%.3f", hex(substr($res, $bpos, 4)) / 1000; # Pos 19 - 75 bei 15 Zellen
$readings->{'cellVoltage_'.$fz} = sprintf "%.3f", hex(substr($res, $bpos, 4)) / 1000; # Pos 19 -> 75 bei 15 Zellen
$bpos += 4; # letzter Durchlauf: Pos 79 bei 15 Zellen, Pos 83 bei 16 Zellen
}
$readings->{numberTempPos} = hex(substr($res, $bpos, 2)); # Anzahl der jetzt folgenden Teperaturpositionen -> 5
$readings->{numberTempPos} = hex(substr($res, $bpos, 2)); # Anzahl der jetzt folgenden Temperaturpositionen -> 5 oder mehr (US5000: 6)
$bpos += 2;
$readings->{bmsTemperature} = (hex (substr($res, $bpos, 4)) - 2731) / 10; # Pos 81 bei 15 Zellen
@ -1174,7 +1178,13 @@ sub _callAnalogValue {
$readings->{'cellTemperature_13'.$pcc} = (hex (substr($res, $bpos, 4)) - 2731) / 10; # Pos 97
$bpos += 4;
my $current = hex (substr($res, $bpos, 4)); # Pos 101
for my $t (6..$readings->{numberTempPos}) {
$t = 'add'.sprintf "%02d", $t;
$readings->{'cellTemperature_'.$t} = (hex (substr($res, $bpos, 4)) - 2731) / 10; # mehr als 5 Temperaturpositionen (z.B. US5000)
$bpos += 4;
}
my $current = hex (substr($res, $bpos, 4)); # Pos 101 (bei 5 Temperaturpositionen)
$bpos += 4;
$readings->{packVolt} = sprintf "%.3f", hex (substr($res, $bpos, 4)) / 1000; # Pos 105
@ -1432,8 +1442,8 @@ sub additionalReadings {
my ($vmax, $vmin);
$readings->{averageCellVolt} = sprintf "%.3f", $readings->{packVolt} / $readings->{packCellcount} if(defined $readings->{packCellcount});
$readings->{packSOC} = sprintf "%.2f", ($readings->{packCapacityRemain} / $readings->{packCapacity} * 100) if(defined $readings->{packCapacity});
$readings->{averageCellVolt} = sprintf "%.3f", $readings->{packVolt} / $readings->{packCellcount} if($readings->{packCellcount});
$readings->{packSOC} = sprintf "%.2f", ($readings->{packCapacityRemain} / $readings->{packCapacity} * 100) if($readings->{packCapacity});
$readings->{packPower} = sprintf "%.2f", $readings->{packCurrent} * $readings->{packVolt};
for (my $i=1; $i <= $readings->{packCellcount}; $i++) {
@ -1550,6 +1560,38 @@ The data format must be set on the RS485 gateway as follows:
</ul>
<br>
<b>Example configuration of a Waveshare RS485 to Ethernet converter</b>
<br><br>
The converter's web interface offers several pages with settings. The relevant settings are shown below
as an example. The assignment of a fixed IP address is assumed in advance.
<br>
<ul>
<table>
<colgroup> <col width="25%"> <col width="75%"> </colgroup>
<tr><td> <b>Serial port settings</b> </td><td> </td></tr>
<tr><td> - Baud Rate </td><td>: according to the battery setting </td></tr>
<tr><td> - Data Size </td><td>: 8 Bit </td></tr>
<tr><td> - Parity </td><td>: None </td></tr>
<tr><td> - Stop Bits </td><td>: 1 </td></tr>
<tr><td> - Local Port Number </td><td>: freely selected </td></tr>
<tr><td> - Work Mode </td><td>: TCP Server </td></tr>
<tr><td> - Reset </td><td>: not set </td></tr>
<tr><td> - Link </td><td>: set </td></tr>
<tr><td> - Index </td><td>: not set </td></tr>
<tr><td> - Similar RCF2217 </td><td>: set </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>Settings Expand Function</b> </td><td> </td></tr>
<tr><td> - Heartbeat Packet Type </td><td>: None </td></tr>
<tr><td> - Register Packet Type </td><td>: None </td></tr>
<tr><td> - Short Connection </td><td>: not set </td></tr>
<tr><td> - TCP Server-kick off old connection </td><td>: set </td></tr>
<tr><td> - Buffer Data before Connected </td><td>: set </td></tr>
<tr><td> - UART Set Parameter </td><td>: not set </td></tr>
</table>
</ul>
<br>
<b>Limitations</b>
<br>
The module currently supports a maximum of 14 batteries (master + 13 slaves) in one group.
@ -1572,7 +1614,7 @@ The module currently supports a maximum of 14 batteries (master + 13 slaves) in
Device address of the Pylontech battery. Several Pylontech batteries can be connected via a Pylontech-specific
Link connection. The permissible number can be found in the respective Pylontech documentation. <br>
The master battery in the network (with open link port 0 or to which the RS485 connection is connected) has the
address 2, the next battery then has address 3 and so on.
address 1, the next battery then has address 2 and so on.
If no device address is specified, address 1 is used.
</li>
<br>
@ -1741,6 +1783,38 @@ Das Datenformat muß auf dem RS485 Gateway wie folgt eingestellt werden:
</ul>
<br>
<b>Beispielkonfiguration eines Waveshare RS485 to Ethernet Converters</b>
<br><br>
Das Webinterface des Konverters bietet mehrere Seiten mit Einstellungen an. Die relevanten Einstellungen sind nachfolgend
beispielhaft gezeigt. Die Zuweisung einer festen IP-Adresse wird vorab vorausgesetzt.
<br>
<ul>
<table>
<colgroup> <col width="25%"> <col width="75%"> </colgroup>
<tr><td> <b>Einstellungen Serial Port</b> </td><td> </td></tr>
<tr><td> - Baud Rate </td><td>: entsprechend Einstellung der Batterie </td></tr>
<tr><td> - Data Size </td><td>: 8 Bit </td></tr>
<tr><td> - Parity </td><td>: None </td></tr>
<tr><td> - Stop Bits </td><td>: 1 </td></tr>
<tr><td> - Local Port Number </td><td>: frei gewählt </td></tr>
<tr><td> - Work Mode </td><td>: TCP Server </td></tr>
<tr><td> - Reset </td><td>: nicht gesetzt </td></tr>
<tr><td> - Link </td><td>: gesetzt </td></tr>
<tr><td> - Index </td><td>: nicht gesetzt </td></tr>
<tr><td> - Similar RCF2217 </td><td>: gesetzt </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>Einstellungen Expand Function</b> </td><td> </td></tr>
<tr><td> - Heartbeat Packet Type </td><td>: None </td></tr>
<tr><td> - Register Packet Type </td><td>: None </td></tr>
<tr><td> - Short Connection </td><td>: nicht gesetzt </td></tr>
<tr><td> - TCP Server-kick off old connection </td><td>: gesetzt </td></tr>
<tr><td> - Buffer Data before Connected </td><td>: gesetzt </td></tr>
<tr><td> - UART Set Parameter </td><td>: nicht gesetzt </td></tr>
</table>
</ul>
<br>
<b>Einschränkungen</b>
<br>
Das Modul unterstützt zur Zeit maximal 14 Batterien (Master + 13 Slaves) in einer Gruppe.
@ -1763,7 +1837,7 @@ Das Modul unterstützt zur Zeit maximal 14 Batterien (Master + 13 Slaves) in ein
Geräteadresse der Pylontech Batterie. Es können mehrere Pylontech Batterien über eine Pylontech-spezifische
Link-Verbindung verbunden werden. Die zulässige Anzahl ist der jeweiligen Pylontech Dokumentation zu entnehmen. <br>
Die Master Batterie im Verbund (mit offenem Link Port 0 bzw. an der die RS485-Verbindung angeschlossen ist) hat die
Adresse 2, die nächste Batterie hat dann die Adresse 3 und so weiter.
Adresse 1, die nächste Batterie hat dann die Adresse 2 und so weiter.
Ist keine Geräteadresse angegeben, wird die Adresse 1 verwendet.
</li>
<br>