mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
added initCommands attribute (by HCS)
added flash command (by HCS) git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@6050 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
0ff0ec588b
commit
1ca03c33d5
@ -76,6 +76,8 @@ JeeLink_Initialize($)
|
||||
$hash->{SetFn} = "JeeLink_Set";
|
||||
$hash->{AttrFn} = "JeeLink_Attr";
|
||||
$hash->{AttrList} = "Clients MatchList"
|
||||
." hexFile"
|
||||
." initCommands"
|
||||
." DebounceTime BeepLong BeepShort BeepDelay"
|
||||
." tune " . join(" ", map { "tune_$_" } keys %RxListJeeLink)
|
||||
." $readingFnAttributes";
|
||||
@ -88,6 +90,7 @@ JeeLink_Fingerprint($$)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
#####################################
|
||||
sub
|
||||
JeeLink_Define($$)
|
||||
@ -168,7 +171,7 @@ JeeLink_Set($@)
|
||||
my $arg = join(" ", @a);
|
||||
|
||||
|
||||
my $list = "beep raw led:on,off led-on-for-timer reset LaCrossePairForSec setReceiverMode:LaCrosse,HX2272,FS20";
|
||||
my $list = "beep raw led:on,off led-on-for-timer reset LaCrossePairForSec setReceiverMode:LaCrosse,HX2272,FS20 flash";
|
||||
return $list if( $cmd eq '?' || $cmd eq '');
|
||||
|
||||
|
||||
@ -176,27 +179,76 @@ JeeLink_Set($@)
|
||||
Log3 $name, 4, "set $name $cmd $arg";
|
||||
JeeLink_SimpleWrite($hash, $arg);
|
||||
|
||||
} elsif( $cmd eq "beep" ) {
|
||||
# + = Langer Piep
|
||||
# - = Kurzer Piep
|
||||
# anderes = Pause
|
||||
my $longbeep = AttrVal($name, "BeepLong", "250");
|
||||
my $shortbeep = AttrVal($name, "BeepShort", "100");
|
||||
my $delaybeep = AttrVal($name, "BeepDelay", "0.25");
|
||||
} elsif( $cmd eq "beep" ) {
|
||||
# + = Langer Piep
|
||||
# - = Kurzer Piep
|
||||
# anderes = Pause
|
||||
my $longbeep = AttrVal($name, "BeepLong", "250");
|
||||
my $shortbeep = AttrVal($name, "BeepShort", "100");
|
||||
my $delaybeep = AttrVal($name, "BeepDelay", "0.25");
|
||||
|
||||
for(my $i=0;$i<length($arg);$i++) {
|
||||
my $x=substr($arg,$i,1);
|
||||
if($x eq "+") {
|
||||
# long beep
|
||||
JeeLink_Write($hash, "bFF" . $longbeep);
|
||||
} elsif($x eq "-") {
|
||||
# short beep
|
||||
JeeLink_Write($hash, "bFF" . $shortbeep);
|
||||
}
|
||||
select(undef, undef, undef, $delaybeep);
|
||||
}
|
||||
|
||||
} elsif( $cmd eq "LaCrossePairForSec" ) {
|
||||
for(my $i=0;$i<length($arg);$i++) {
|
||||
my $x=substr($arg,$i,1);
|
||||
if($x eq "+") {
|
||||
# long beep
|
||||
JeeLink_Write($hash, "bFF" . $longbeep);
|
||||
} elsif($x eq "-") {
|
||||
# short beep
|
||||
JeeLink_Write($hash, "bFF" . $shortbeep);
|
||||
}
|
||||
select(undef, undef, undef, $delaybeep);
|
||||
}
|
||||
}
|
||||
elsif( $cmd eq "flash" ) {
|
||||
my @args = split(' ', $arg);
|
||||
my $log = "";
|
||||
my $hexFile = "";
|
||||
my @deviceName = split('@', $hash->{DeviceName});
|
||||
my $port = $deviceName[0];
|
||||
my $logFile = "./log/JeeLinkFlash.log";
|
||||
my $defaultHexFile = "./hexfiles/$hash->{TYPE}-LaCrosseITPlusReader10.hex";
|
||||
|
||||
if(!$arg || $args[0] !~ m/^(\w|\/|.)+$/) {
|
||||
$hexFile = AttrVal($name, "hexFile", "");
|
||||
if ($hexFile eq "") {
|
||||
$hexFile = $defaultHexFile;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$hexFile = $args[0];
|
||||
}
|
||||
|
||||
return "Usage: set $name flash [filename]\n\nor use the hexFile attribute" if($hexFile !~ m/^(\w|\/|.)+$/);
|
||||
|
||||
$log .= "flashing JeeLink $name\n";
|
||||
$log .= "hex file: $hexFile\n";
|
||||
$log .= "port: $port\n";
|
||||
$log .= "log file: $logFile\n";
|
||||
|
||||
DevIo_CloseDev($hash);
|
||||
$hash->{STATE} = "disconnected";
|
||||
$log .= "$name closed\n";
|
||||
|
||||
my $avrdude = "avrdude -p atmega328P -c arduino -P $port -D -U flash:w:$hexFile 2>$logFile";
|
||||
$log .= "command: $avrdude\n\n";
|
||||
`$avrdude`;
|
||||
|
||||
local $/=undef;
|
||||
open FILE, $logFile or die "Couldn't open file: $!";
|
||||
my $logText = <FILE>;
|
||||
close FILE;
|
||||
$log .= "--- AVRDUDE ---------------------------------------------------------------------------------\n";
|
||||
$log .= $logText;
|
||||
$log .= "--- AVRDUDE ---------------------------------------------------------------------------------\n\n";
|
||||
|
||||
DevIo_OpenDev($hash, 0, "JeeLink_DoInit");
|
||||
$hash->{STATE} = "Opened";
|
||||
$log .= "$name opened\n";
|
||||
|
||||
return $log;
|
||||
}
|
||||
|
||||
elsif( $cmd eq "LaCrossePairForSec" ) {
|
||||
my @args = split(' ', $arg);
|
||||
|
||||
return "Usage: set $name LaCrossePairForSec <seconds_active> [ignore_battery]" if(!$arg || $args[0] !~ m/^\d+$/ || ($args[1] && $args[1] ne "ignore_battery") );
|
||||
@ -335,6 +387,9 @@ JeeLink_DoInit($)
|
||||
# Reset the counter
|
||||
delete($hash->{XMIT_TIME});
|
||||
delete($hash->{NR_CMD_LAST_H});
|
||||
|
||||
#JeeLink_SimpleWrite($hash, "v" );
|
||||
|
||||
return undef;
|
||||
}
|
||||
|
||||
@ -560,7 +615,13 @@ JeeLink_Parse($$$$)
|
||||
$hash->{model} = $dmsg;
|
||||
|
||||
if( $hash->{STATE} eq "Opened" ) {
|
||||
if( $dmsg =~m /pcaSerial/ ) {
|
||||
if( my $initCommandsString = AttrVal($name, "initCommands", undef) ) {
|
||||
my @initCommands = split(' ', $initCommandsString);
|
||||
foreach my $command (@initCommands) {
|
||||
JeeLink_SimpleWrite($hash, $command);
|
||||
}
|
||||
|
||||
} elsif( $dmsg =~m /pcaSerial/ ) {
|
||||
$hash->{MatchList} = \%matchListPCA301;
|
||||
JeeLink_SimpleWrite($hash, "1a" ); # led on
|
||||
JeeLink_SimpleWrite($hash, "1q" ); # quiet mode
|
||||
@ -568,9 +629,10 @@ JeeLink_Parse($$$$)
|
||||
JeeLink_SimpleWrite($hash, "0a" ); # led off
|
||||
JeeLink_SimpleWrite($hash, "l" ); # list known devices
|
||||
|
||||
} elsif( $dmsg =~m /LaCrosseITPlusReader/ ) {
|
||||
}
|
||||
elsif( $dmsg =~m /LaCrosseITPlusReader/ ) {
|
||||
$hash->{MatchList} = \%matchListPCA301;
|
||||
|
||||
|
||||
} elsif( $dmsg =~m /ec3kSerial/ ) {
|
||||
$hash->{MatchList} = \%matchListPCA301;
|
||||
#JeeLink_SimpleWrite($hash, "ec", 1);
|
||||
@ -583,6 +645,7 @@ JeeLink_Parse($$$$)
|
||||
JeeLink_SimpleWrite($hash, "f"); # get RFM frequence config
|
||||
JeeLink_SimpleWrite($hash, "m"); # show used ram on jeenode
|
||||
}
|
||||
|
||||
$hash->{STATE} = "Initialized";
|
||||
}
|
||||
|
||||
@ -886,6 +949,8 @@ sub JeeLink_getIndexOfArray($@) {
|
||||
<ul>
|
||||
<li>Clients</li>
|
||||
<li>MatchList</li>
|
||||
<li>initCommands<br>
|
||||
space separated list of commands to send for device initialization</li>
|
||||
</ul>
|
||||
<br>
|
||||
</ul>
|
||||
|
Loading…
x
Reference in New Issue
Block a user