mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@6803 2b470e98-0d58-463d-a4d8-8e2adae1ed80
52 lines
1.5 KiB
Perl
52 lines
1.5 KiB
Perl
package Device::MySensors::Message;
|
|
|
|
use Device::MySensors::Constants qw(:all);
|
|
|
|
use Exporter ('import');
|
|
@EXPORT = ();
|
|
@EXPORT_OK = qw(parseMsg createMsg dumpMsg);
|
|
%EXPORT_TAGS = (all => [@EXPORT_OK]);
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
sub parseMsg($) {
|
|
my $txt = shift;
|
|
if ($txt =~ /^(\d+);(\d+);(\d+);(\d+);(\d+);(.*)$/) {
|
|
return { radioId => $1,
|
|
childId => $2,
|
|
cmd => $3,
|
|
ack => $4,
|
|
subType => $5,
|
|
payload => $6 };
|
|
} else {
|
|
return undef;
|
|
};
|
|
}
|
|
|
|
sub createMsg(%) {
|
|
my %msgRef = @_;
|
|
my @fields = ( $msgRef{'radioId'} // "",
|
|
$msgRef{'childId'} // "",
|
|
$msgRef{'cmd'} // "",
|
|
$msgRef{'ack'} // "",
|
|
$msgRef{'subType'} // "",
|
|
$msgRef{'payload'} // "");
|
|
return join(';', @fields);
|
|
}
|
|
|
|
sub dumpMsg($) {
|
|
my $msgRef = shift;
|
|
my $cmd = defined $msgRef->{'cmd'} ? commandToStr($msgRef->{'cmd'}) : "''";
|
|
my $st = (defined $msgRef->{'cmd'} and defined $msgRef->{'subType'}) ? subTypeToStr( $msgRef->{'cmd'}, $msgRef->{'subType'} ) : "''";
|
|
return sprintf("Rx: fr=%03d ci=%03d c=%03d(%-14s) st=%03d(%-16s) ack=%d %s\n", $msgRef->{'radioId'} // "", $msgRef->{'childId'} // "", $msgRef->{'cmd'} // "", $cmd, $msgRef->{'subType'} // "", $st, $msgRef->{'ack'} // "", "'".$msgRef->{'payload'} // ""."'");
|
|
}
|
|
|
|
sub gettime {
|
|
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
|
|
$year += 1900;
|
|
$mon++;
|
|
return sprintf("%04d%02d%02d-%02d:%02d:%02d", $year, $mon, $mday, $hour, $min, $sec);
|
|
}
|
|
|
|
1; |