mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-20 07:16:03 +00:00
50_MOBILEALERTSGW: Checksum check added
git-svn-id: https://svn.fhem.de/fhem/trunk@19278 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
472d3f9c77
commit
269f7fa0e2
@ -1,5 +1,6 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# 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.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
|
- change: 50_MOBILEALERTSGW: Checksum check added
|
||||||
- change: 93_DbRep: check index "Report_Idx" during first DB connect
|
- change: 93_DbRep: check index "Report_Idx" during first DB connect
|
||||||
- change: 98_RandomTimer: remove 59_Twilight dependency
|
- change: 98_RandomTimer: remove 59_Twilight dependency
|
||||||
- feature: 93_DbRep: new set "index" command to manage needed indexe for
|
- feature: 93_DbRep: new set "index" command to manage needed indexe for
|
||||||
|
@ -150,7 +150,7 @@ sub MOBILEALERTSGW_Set ($$@) {
|
|||||||
if ( $cmd eq "clear" ) {
|
if ( $cmd eq "clear" ) {
|
||||||
if ( $args[0] eq "readings" ) {
|
if ( $args[0] eq "readings" ) {
|
||||||
for ( keys %{ $hash->{READINGS} } ) {
|
for ( keys %{ $hash->{READINGS} } ) {
|
||||||
readingsDelete($hash, $_) if ( $_ ne 'state' );
|
readingsDelete( $hash, $_ ) if ( $_ ne 'state' );
|
||||||
}
|
}
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@ -237,6 +237,8 @@ sub MOBILEALERTSGW_Set ($$@) {
|
|||||||
my $data = pack( "H*", $args[0] );
|
my $data = pack( "H*", $args[0] );
|
||||||
my ( $packageHeader, $timeStamp, $packageLength, $deviceID ) =
|
my ( $packageHeader, $timeStamp, $packageLength, $deviceID ) =
|
||||||
unpack( "CNCH12", $data );
|
unpack( "CNCH12", $data );
|
||||||
|
my ( $sum, $sumWert ) = unpack( "%C63C", $data );
|
||||||
|
$sum &= 0x7F;
|
||||||
Log3 $name, 4,
|
Log3 $name, 4,
|
||||||
"$name MOBILEALERTSGW: Debuginsert PackageHeader: "
|
"$name MOBILEALERTSGW: Debuginsert PackageHeader: "
|
||||||
. $packageHeader
|
. $packageHeader
|
||||||
@ -248,6 +250,19 @@ sub MOBILEALERTSGW_Set ($$@) {
|
|||||||
. $deviceID;
|
. $deviceID;
|
||||||
Log3 $name, 5, "$name MOBILEALERTSGW: Debuginsert for $deviceID: "
|
Log3 $name, 5, "$name MOBILEALERTSGW: Debuginsert for $deviceID: "
|
||||||
. unpack( "H*", $data );
|
. unpack( "H*", $data );
|
||||||
|
if ( $sum != $sumWert ) {
|
||||||
|
Log3 $MA_wname, 4,
|
||||||
|
"$MA_wname MOBILEALERTSGW: Wrong Checksum expected: 0x"
|
||||||
|
. sprintf( "%02X", $sum )
|
||||||
|
. " got: 0x"
|
||||||
|
. sprintf( "%02X", $sumWert )
|
||||||
|
. "=> ignoring";
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
Log3 $MA_wname, 5,
|
||||||
|
"$MA_wname MOBILEALERTSGW: Good Checksum got: 0x"
|
||||||
|
. sprintf( "%02X", $sum );
|
||||||
|
|
||||||
Dispatch( $hash, $data, undef );
|
Dispatch( $hash, $data, undef );
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@ -558,23 +573,35 @@ sub MOBILEALERTSGW_DecodeData($$) {
|
|||||||
|
|
||||||
for ( my $pos = 0 ; $pos < length($POSTdata) ; $pos += MA_PACKAGE_LENGTH ) {
|
for ( my $pos = 0 ; $pos < length($POSTdata) ; $pos += MA_PACKAGE_LENGTH ) {
|
||||||
my $data = substr $POSTdata, $pos, MA_PACKAGE_LENGTH;
|
my $data = substr $POSTdata, $pos, MA_PACKAGE_LENGTH;
|
||||||
my ( $packageHeader, $timeStamp, $packageLength, $deviceID ) =
|
my ( $sum, $sumWert ) = unpack( "%C63C", $data );
|
||||||
unpack( "CNCH12", $data );
|
$sum &= 0x7F;
|
||||||
Log3 $MA_wname, 4,
|
if ( $sum != $sumWert ) {
|
||||||
"$MA_wname MOBILEALERTSGW: PackageHeader: "
|
Log3 $MA_wname, 4,
|
||||||
. $packageHeader
|
"$MA_wname MOBILEALERTSGW: Wrong Checksum expected: 0x"
|
||||||
. " Timestamp: "
|
. sprintf( "%02X", $sum )
|
||||||
. scalar( FmtDateTimeRFC1123($timeStamp) )
|
. " got: 0x"
|
||||||
. " PackageLength: "
|
. sprintf( "%02X", $sumWert )
|
||||||
. $packageLength
|
. "=> ignoring";
|
||||||
. " DeviceID: "
|
}
|
||||||
. $deviceID
|
else {
|
||||||
if ( $verbose >= 4 );
|
my ( $packageHeader, $timeStamp, $packageLength, $deviceID ) =
|
||||||
Log3 $MA_wname, 5,
|
unpack( "CNCH12", $data );
|
||||||
"$MA_wname MOBILEALERTSGW: Data for $deviceID: "
|
Log3 $MA_wname, 4,
|
||||||
. unpack( "H*", $data )
|
"$MA_wname MOBILEALERTSGW: PackageHeader: "
|
||||||
if ( $verbose >= 5 );
|
. $packageHeader
|
||||||
my $found = Dispatch( $defs{$MA_wname}, $data, undef );
|
. " Timestamp: "
|
||||||
|
. scalar( FmtDateTimeRFC1123($timeStamp) )
|
||||||
|
. " PackageLength: "
|
||||||
|
. $packageLength
|
||||||
|
. " DeviceID: "
|
||||||
|
. $deviceID
|
||||||
|
if ( $verbose >= 4 );
|
||||||
|
Log3 $MA_wname, 5,
|
||||||
|
"$MA_wname MOBILEALERTSGW: Data for $deviceID: "
|
||||||
|
. unpack( "H*", $data )
|
||||||
|
if ( $verbose >= 5 );
|
||||||
|
my $found = Dispatch( $defs{$MA_wname}, $data, undef );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user