mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-07 22:29:19 +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->{SetFn} = "JeeLink_Set";
|
||||||
$hash->{AttrFn} = "JeeLink_Attr";
|
$hash->{AttrFn} = "JeeLink_Attr";
|
||||||
$hash->{AttrList} = "Clients MatchList"
|
$hash->{AttrList} = "Clients MatchList"
|
||||||
|
." hexFile"
|
||||||
|
." initCommands"
|
||||||
." DebounceTime BeepLong BeepShort BeepDelay"
|
." DebounceTime BeepLong BeepShort BeepDelay"
|
||||||
." tune " . join(" ", map { "tune_$_" } keys %RxListJeeLink)
|
." tune " . join(" ", map { "tune_$_" } keys %RxListJeeLink)
|
||||||
." $readingFnAttributes";
|
." $readingFnAttributes";
|
||||||
@ -88,6 +90,7 @@ JeeLink_Fingerprint($$)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
sub
|
sub
|
||||||
JeeLink_Define($$)
|
JeeLink_Define($$)
|
||||||
@ -168,7 +171,7 @@ JeeLink_Set($@)
|
|||||||
my $arg = join(" ", @a);
|
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 '');
|
return $list if( $cmd eq '?' || $cmd eq '');
|
||||||
|
|
||||||
|
|
||||||
@ -195,8 +198,57 @@ JeeLink_Set($@)
|
|||||||
}
|
}
|
||||||
select(undef, undef, undef, $delaybeep);
|
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";
|
||||||
|
|
||||||
} elsif( $cmd eq "LaCrossePairForSec" ) {
|
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);
|
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") );
|
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
|
# Reset the counter
|
||||||
delete($hash->{XMIT_TIME});
|
delete($hash->{XMIT_TIME});
|
||||||
delete($hash->{NR_CMD_LAST_H});
|
delete($hash->{NR_CMD_LAST_H});
|
||||||
|
|
||||||
|
#JeeLink_SimpleWrite($hash, "v" );
|
||||||
|
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -560,7 +615,13 @@ JeeLink_Parse($$$$)
|
|||||||
$hash->{model} = $dmsg;
|
$hash->{model} = $dmsg;
|
||||||
|
|
||||||
if( $hash->{STATE} eq "Opened" ) {
|
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;
|
$hash->{MatchList} = \%matchListPCA301;
|
||||||
JeeLink_SimpleWrite($hash, "1a" ); # led on
|
JeeLink_SimpleWrite($hash, "1a" ); # led on
|
||||||
JeeLink_SimpleWrite($hash, "1q" ); # quiet mode
|
JeeLink_SimpleWrite($hash, "1q" ); # quiet mode
|
||||||
@ -568,7 +629,8 @@ JeeLink_Parse($$$$)
|
|||||||
JeeLink_SimpleWrite($hash, "0a" ); # led off
|
JeeLink_SimpleWrite($hash, "0a" ); # led off
|
||||||
JeeLink_SimpleWrite($hash, "l" ); # list known devices
|
JeeLink_SimpleWrite($hash, "l" ); # list known devices
|
||||||
|
|
||||||
} elsif( $dmsg =~m /LaCrosseITPlusReader/ ) {
|
}
|
||||||
|
elsif( $dmsg =~m /LaCrosseITPlusReader/ ) {
|
||||||
$hash->{MatchList} = \%matchListPCA301;
|
$hash->{MatchList} = \%matchListPCA301;
|
||||||
|
|
||||||
} elsif( $dmsg =~m /ec3kSerial/ ) {
|
} elsif( $dmsg =~m /ec3kSerial/ ) {
|
||||||
@ -583,6 +645,7 @@ JeeLink_Parse($$$$)
|
|||||||
JeeLink_SimpleWrite($hash, "f"); # get RFM frequence config
|
JeeLink_SimpleWrite($hash, "f"); # get RFM frequence config
|
||||||
JeeLink_SimpleWrite($hash, "m"); # show used ram on jeenode
|
JeeLink_SimpleWrite($hash, "m"); # show used ram on jeenode
|
||||||
}
|
}
|
||||||
|
|
||||||
$hash->{STATE} = "Initialized";
|
$hash->{STATE} = "Initialized";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -886,6 +949,8 @@ sub JeeLink_getIndexOfArray($@) {
|
|||||||
<ul>
|
<ul>
|
||||||
<li>Clients</li>
|
<li>Clients</li>
|
||||||
<li>MatchList</li>
|
<li>MatchList</li>
|
||||||
|
<li>initCommands<br>
|
||||||
|
space separated list of commands to send for device initialization</li>
|
||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
</ul>
|
</ul>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user