mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-15 04:20:56 +00:00
70_PylonLowVoltage: extend battery addresses up to 16
git-svn-id: https://svn.fhem.de/fhem/trunk@29092 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
5ec10ce789
commit
53df807ebd
@ -1,5 +1,6 @@
|
||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||
# Do not insert empty lines here, update check depends on it
|
||||
- feature: 70_PylonLowVoltage: extend battery addresses up to 16
|
||||
- change: 76_SolarForecast: attr ctrlWeatherDevX to setupWeatherDevX,
|
||||
- bufgix: 76_SMAInverter: fix PW Lengs Bug
|
||||
- bugfix: 10_KNX: prevent set/get-cmd during fhem start
|
||||
|
@ -120,6 +120,7 @@ BEGIN {
|
||||
|
||||
# Versions History intern (Versions history by Heiko Maaz)
|
||||
my %vNotesIntern = (
|
||||
"0.3.0" => "22.08.2024 extend battery addresses up to 16 ",
|
||||
"0.2.6" => "25.05.2024 replace Smartmatch Forum:#137776 ",
|
||||
"0.2.5" => "02.04.2024 _callAnalogValue / _callAlarmInfo: integrate a Cell and Temperature Position counter ".
|
||||
"add specific Alarm readings ",
|
||||
@ -211,6 +212,10 @@ my %halm = ( #
|
||||
# SOI VER ADR CID1 CID2 LENGTH INFO CHKSUM
|
||||
# ~ 20 0A 46 93 E0 02 0A FD 0F
|
||||
# 7E 32 30 30 41 34 36 39 33 45 30 30 32 30 41
|
||||
# ~ 20 10 46 93 E0 02 10
|
||||
# 7E 32 30 31 30 34 36 39 33 45 30 30 32 31 30 = 02D1H -> bitweise invert = 1111 1101 0010 1110 -> +1 = 1111 1101 0010 1111 -> FD2FH
|
||||
# ~ 20 11 46 93 E0 02 11
|
||||
# 7E 32 30 31 31 34 36 39 33 45 30 30 32 31 31 = 02D3H -> bitweise invert = 1111 1101 0010 1100 -> +1 = 1111 1101 0010 1101 -> FD2DH
|
||||
#
|
||||
my %hrsnb = ( # Codierung Abruf serialNumber, mlen = Mindestlänge Antwortstring
|
||||
1 => { cmd => "~20024693E00202FD2D\x{0d}", mlen => 52 },
|
||||
@ -227,7 +232,8 @@ my %hrsnb = ( # Codierung
|
||||
12 => { cmd => "~200D4693E0020DFD09\x{0d}", mlen => 52 },
|
||||
13 => { cmd => "~200E4693E0020EFD07\x{0d}", mlen => 52 },
|
||||
14 => { cmd => "~200F4693E0020FFD05\x{0d}", mlen => 52 },
|
||||
|
||||
15 => { cmd => "~20104693E00210FD2F\x{0d}", mlen => 52 },
|
||||
16 => { cmd => "~20114693E00211FD2D\x{0d}", mlen => 52 },
|
||||
);
|
||||
|
||||
# ADR: n=Batterienummer (2-x), m=Group Nr. (0-8), ADR = 0x0n + (0x10 * m) -> f. Batterie 1 = 0x02 + (0x10 * 0) = 0x02
|
||||
@ -241,6 +247,10 @@ my %hrsnb = ( # Codierung
|
||||
# SOI VER ADR CID1 CID2 LENGTH INFO CHKSUM
|
||||
# ~ 20 0A 46 51 00 00 empty FD 9D
|
||||
# 7E 32 30 30 41 34 36 35 31 30 30 30 30 - -
|
||||
# ~ 20 10 46 51 00 00 empty
|
||||
# 7E 32 20 31 30 34 36 35 31 30 30 30 30 - - FD BD = 0243H -> bitweise invert = 1111 1101 1011 1100 -> +1 = 1111 1101 1011 1101 = FDBDH
|
||||
# ~ 20 11 46 51 00 00 empty
|
||||
# 7E 32 20 31 31 34 36 35 31 30 30 30 30 - - FD BC
|
||||
#
|
||||
my %hrmfi = ( # Codierung Abruf manufacturerInfo, mlen = Mindestlänge Antwortstring
|
||||
1 => { cmd => "~200246510000FDAC\x{0d}", mlen => 82 },
|
||||
@ -257,6 +267,8 @@ my %hrmfi = ( # Codierung
|
||||
12 => { cmd => "~200D46510000FD9A\x{0d}", mlen => 82 },
|
||||
13 => { cmd => "~200E46510000FD8F\x{0d}", mlen => 82 },
|
||||
14 => { cmd => "~200F46510000FD8E\x{0d}", mlen => 82 },
|
||||
15 => { cmd => "~201046510000FDBD\x{0d}", mlen => 82 },
|
||||
16 => { cmd => "~201146510000FDBC\x{0d}", mlen => 82 },
|
||||
);
|
||||
|
||||
# ADR: n=Batterienummer (2-x), m=Group Nr. (0-8), ADR = 0x0n + (0x10 * m) -> f. Batterie 1 = 0x02 + (0x10 * 0) = 0x02
|
||||
@ -270,6 +282,10 @@ my %hrmfi = ( # Codierung
|
||||
# SOI VER ADR CID1 CID2 LENGTH INFO CHKSUM
|
||||
# ~ 00 0A 46 4F 00 00 empty FD 8B
|
||||
# 7E 30 30 30 41 34 36 34 46 30 30 30 30 - -
|
||||
# ~ 00 10 46 4F 00 00 empty
|
||||
# 7E 30 30 31 30 34 36 34 46 30 30 30 30 - - FD AB 1111 1101 1010 1011
|
||||
# ~ 00 11 46 4F 00 00 empty
|
||||
# 7E 30 30 31 31 34 36 34 46 30 30 30 30 - - FD 9A 1111 1101 1001 1001
|
||||
#
|
||||
my %hrprt = ( # Codierung Abruf protocolVersion, mlen = Mindestlänge Antwortstring
|
||||
1 => { cmd => "~0002464F0000FD9A\x{0d}", mlen => 18 },
|
||||
@ -286,6 +302,8 @@ my %hrprt = ( # Codierung
|
||||
12 => { cmd => "~000D464F0000FD88\x{0d}", mlen => 18 },
|
||||
13 => { cmd => "~000E464F0000FD87\x{0d}", mlen => 18 },
|
||||
14 => { cmd => "~000F464F0000FD86\x{0d}", mlen => 18 },
|
||||
15 => { cmd => "~0010464F0000FDAB\x{0d}", mlen => 18 },
|
||||
16 => { cmd => "~0011464F0000FD9A\x{0d}", mlen => 18 },
|
||||
);
|
||||
|
||||
# CHKSUM (als HEX! addieren): 32+30+30+41+34+36+39+36+45+30+30+32+30+41 = 02F4H -> modulo 65536 = 02F4H -> bitweise invert = 1111 1101 0000 1011 -> +1 1111 1101 0000 1100 = FD0CH
|
||||
@ -293,6 +311,8 @@ my %hrprt = ( # Codierung
|
||||
# SOI VER ADR CID1 CID2 LENGTH INFO CHKSUM
|
||||
# ~ 20 0A 46 96 E0 02 0A FD 0C
|
||||
# 7E 32 30 30 41 34 36 39 36 45 30 30 32 30 41
|
||||
# ~ 20 11 46 96 E0 02 11 FD 2A 1111 1101 0010 1001
|
||||
# 7E 32 30 31 31 34 36 39 36 45 30 30 32 31 31
|
||||
#
|
||||
|
||||
my %hrswv = ( # Codierung Abruf softwareVersion
|
||||
@ -310,6 +330,8 @@ my %hrswv = ( # Codierung
|
||||
12 => { cmd => "~200D4696E0020DFD06\x{0d}", mlen => 30 },
|
||||
13 => { cmd => "~200E4696E0020EFD04\x{0d}", mlen => 30 },
|
||||
14 => { cmd => "~200F4696E0020FFD02\x{0d}", mlen => 30 },
|
||||
15 => { cmd => "~20104696E00210FD2C\x{0d}", mlen => 30 },
|
||||
16 => { cmd => "~20114696E00211FD2A\x{0d}", mlen => 30 },
|
||||
);
|
||||
|
||||
# CHKSUM (als HEX! addieren): 32+30+30+41+34+36+34+34+45+30+30+32+30+41 = 02EDH -> modulo 65536 = 02EDH -> bitweise invert = 1111 1101 0001 0010 -> +1 1111 1101 0001 0011 = FD13H
|
||||
@ -317,6 +339,8 @@ my %hrswv = ( # Codierung
|
||||
# SOI VER ADR CID1 CID2 LENGTH INFO CHKSUM
|
||||
# ~ 20 0A 46 44 E0 02 0A FD 13
|
||||
# 7E 32 30 30 41 34 36 34 34 45 30 30 32 30 41
|
||||
# ~ 20 10 46 44 E0 02 10 FD 33
|
||||
# 7E 32 30 31 30 34 36 34 34 45 30 30 32 31 30 1111 1101 0011 0010
|
||||
#
|
||||
|
||||
my %hralm = ( # Codierung Abruf alarmInfo
|
||||
@ -334,6 +358,8 @@ my %hralm = ( # Codierung
|
||||
12 => { cmd => "~200D4644E0020DFD0D\x{0d}", mlen => 82 },
|
||||
13 => { cmd => "~200E4644E0020EFD0B\x{0d}", mlen => 82 },
|
||||
14 => { cmd => "~200F4644E0020FFCFE\x{0d}", mlen => 82 },
|
||||
15 => { cmd => "~20104644E00210FD33\x{0d}", mlen => 82 },
|
||||
16 => { cmd => "~20114644E00211FD31\x{0d}", mlen => 82 },
|
||||
);
|
||||
|
||||
# CHKSUM (als HEX! addieren): 32+30+30+41+34+36+34+37+45+30+30+32+30+41 = 02F0H -> modulo 65536 = 02F0H -> bitweise invert = 1111 1101 0000 1111 -> +1 1111 1101 0001 0000 = FD10H
|
||||
@ -341,6 +367,8 @@ my %hralm = ( # Codierung
|
||||
# SOI VER ADR CID1 CID2 LENGTH INFO CHKSUM
|
||||
# ~ 20 0A 46 47 E0 02 0A FD 10
|
||||
# 7E 32 30 30 41 34 36 34 37 45 30 30 32 30 41
|
||||
# ~ 20 10 46 47 E0 02 10 FD 30
|
||||
# 7E 32 30 31 30 34 36 34 37 45 30 30 32 31 30 1111 1101 0010 1111
|
||||
#
|
||||
|
||||
my %hrspm = ( # Codierung Abruf Systemparameter
|
||||
@ -358,6 +386,8 @@ my %hrspm = ( # Codierung
|
||||
12 => { cmd => "~200D4647E0020DFD0A\x{0d}", mlen => 68 },
|
||||
13 => { cmd => "~200E4647E0020EFD08\x{0d}", mlen => 68 },
|
||||
14 => { cmd => "~200F4647E0020FFD06\x{0d}", mlen => 68 },
|
||||
15 => { cmd => "~20104647E00210FD30\x{0d}", mlen => 68 },
|
||||
16 => { cmd => "~20114647E00211FD2E\x{0d}", mlen => 68 },
|
||||
);
|
||||
|
||||
# CHKSUM (als HEX! addieren): 32+30+30+41+34+36+39+32+45+30+30+32+30+41 = 02F0H -> modulo 65536 = 02F0H -> bitweise invert = 1111 1101 0000 1111 -> +1 1111 1101 0001 0000 = FD10H
|
||||
@ -382,6 +412,8 @@ my %hrcmi = ( # Codierung
|
||||
12 => { cmd => "~200D4692E0020DFD0A\x{0d}", mlen => 38 },
|
||||
13 => { cmd => "~200E4692E0020EFD08\x{0d}", mlen => 38 },
|
||||
14 => { cmd => "~200F4692E0020FFD06\x{0d}", mlen => 38 },
|
||||
15 => { cmd => "~20104692E00210FD30\x{0d}", mlen => 38 },
|
||||
16 => { cmd => "~20114692E00211FD2E\x{0d}", mlen => 38 },
|
||||
);
|
||||
|
||||
# ADR: n=Batterienummer (2-x), m=Group Nr. (0-8), ADR = 0x0n + (0x10 * m) -> f. Batterie 1 = 0x02 + (0x10 * 0) = 0x02
|
||||
@ -395,6 +427,8 @@ my %hrcmi = ( # Codierung
|
||||
# SOI VER ADR CID1 CID2 LENGTH INFO CHKSUM
|
||||
# ~ 20 0A 46 42 E0 02 0A FD 15
|
||||
# 7E 32 30 30 41 34 36 34 32 45 30 30 32 30 41
|
||||
# ~ 20 10 46 42 E0 02 10 FD 35 1111 1101 0011 0100
|
||||
# 7E 32 30 31 30 34 36 34 32 45 30 30 32 31 30
|
||||
#
|
||||
my %hrcmn = ( # Codierung Abruf analogValue
|
||||
1 => { cmd => "~20024642E00202FD33\x{0d}", mlen => 128 },
|
||||
@ -411,6 +445,8 @@ my %hrcmn = ( # Codierung
|
||||
12 => { cmd => "~200D4642E0020DFD0F\x{0d}", mlen => 128 },
|
||||
13 => { cmd => "~200E4642E0020EFD0D\x{0d}", mlen => 128 },
|
||||
14 => { cmd => "~200F4642E0020FFD0B\x{0d}", mlen => 128 },
|
||||
15 => { cmd => "~20104642E0020EFD35\x{0d}", mlen => 128 },
|
||||
16 => { cmd => "~20114642E0020FFD33\x{0d}", mlen => 128 },
|
||||
);
|
||||
|
||||
|
||||
@ -466,8 +502,8 @@ sub Define {
|
||||
($hash->{HOST}, $hash->{PORT}) = split ":", $args[2];
|
||||
$hash->{BATADDRESS} = $args[3] // 1;
|
||||
|
||||
if ($hash->{BATADDRESS} !~ /^([1-9]{1}|1[0-4])$/xs) {
|
||||
return "Define: bataddress must be a value between 1 and 14";
|
||||
if ($hash->{BATADDRESS} !~ /^([1-9]{1}|1[0-6])$/xs) {
|
||||
return "Define: bataddress must be a value between 1 and 16";
|
||||
}
|
||||
|
||||
my $params = {
|
||||
@ -1658,7 +1694,7 @@ return;
|
||||
|
||||
<b>Limitations</b>
|
||||
<br>
|
||||
The module currently supports a maximum of 14 batteries (master + 13 slaves) in one group.
|
||||
The module currently supports a maximum of 16 batteries (1 master + 15 slaves) in one group.
|
||||
<br><br>
|
||||
|
||||
<a id="PylonLowVoltage-define"></a>
|
||||
@ -1883,7 +1919,7 @@ return;
|
||||
|
||||
<b>Einschränkungen</b>
|
||||
<br>
|
||||
Das Modul unterstützt zur Zeit maximal 14 Batterien (Master + 13 Slaves) in einer Gruppe.
|
||||
Das Modul unterstützt zur Zeit maximal 16 Batterien (1 Master + 15 Slaves) in einer Gruppe.
|
||||
<br><br>
|
||||
|
||||
<a id="PylonLowVoltage-define"></a>
|
||||
|
Loading…
x
Reference in New Issue
Block a user