mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-01 01:09:47 +00:00
savetemplist, fwupdate for PMSw1
git-svn-id: https://svn.fhem.de/fhem/trunk@6412 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
116378e4ca
commit
6315602a48
@ -2398,8 +2398,7 @@ sub CUL_HM_parseCommon(@){#####################################################
|
|||||||
if ($reqPeer){
|
if ($reqPeer){
|
||||||
my $flag = CUL_HM_getFlag($shash);
|
my $flag = CUL_HM_getFlag($shash);
|
||||||
my $ioId = CUL_HM_IoId($shash);
|
my $ioId = CUL_HM_IoId($shash);
|
||||||
my @peerID = split(",",($attr{$chnName}{peerIDs}?
|
my @peerID = split(",",(AttrVal($chnName,"peerIDs","");
|
||||||
$attr{$chnName}{peerIDs}:""));
|
|
||||||
foreach my $l (split ",",$chnhash->{helper}{getCfgListNo}){
|
foreach my $l (split ",",$chnhash->{helper}{getCfgListNo}){
|
||||||
next if (!$l);
|
next if (!$l);
|
||||||
my $listNo = "0".$l;
|
my $listNo = "0".$l;
|
||||||
@ -7109,7 +7108,7 @@ sub CUL_HM_tempListTmpl(@) { ##################################################
|
|||||||
my %dlf = (1=>{Sat=>0,Sun=>0,Mon=>0,Tue=>0,Wed=>0,Thu=>0,Fri=>0},
|
my %dlf = (1=>{Sat=>0,Sun=>0,Mon=>0,Tue=>0,Wed=>0,Thu=>0,Fri=>0},
|
||||||
2=>{Sat=>0,Sun=>0,Mon=>0,Tue=>0,Wed=>0,Thu=>0,Fri=>0},
|
2=>{Sat=>0,Sun=>0,Mon=>0,Tue=>0,Wed=>0,Thu=>0,Fri=>0},
|
||||||
3=>{Sat=>0,Sun=>0,Mon=>0,Tue=>0,Wed=>0,Thu=>0,Fri=>0});
|
3=>{Sat=>0,Sun=>0,Mon=>0,Tue=>0,Wed=>0,Thu=>0,Fri=>0});
|
||||||
return "" if ($template =~ m/(none|0)/);
|
return "unused" if ($template =~ m/(none|0)/);
|
||||||
my $ret = "";
|
my $ret = "";
|
||||||
my @el = split",",$name;
|
my @el = split",",$name;
|
||||||
my ($fName,$tmpl) = split":",$template;
|
my ($fName,$tmpl) = split":",$template;
|
||||||
|
@ -559,7 +559,29 @@ sub HMinfo_tempList(@) { ######################################################
|
|||||||
my %dl =("Sat"=>0,"Sun"=>1,"Mon"=>2,"Tue"=>3,"Wed"=>4,"Thu"=>5,"Fri"=>6);
|
my %dl =("Sat"=>0,"Sun"=>1,"Mon"=>2,"Tue"=>3,"Wed"=>4,"Thu"=>5,"Fri"=>6);
|
||||||
my $ret;;
|
my $ret;;
|
||||||
if ($action eq "save"){
|
if ($action eq "save"){
|
||||||
open(aSave, ">$fName") || return("Can't open $fName: $!");
|
# foreach my $eN(HMinfo_getEntities("d")){#search and select channel
|
||||||
|
# my $md = AttrVal($eN,"model","");
|
||||||
|
# my $chN; #tempList channel name
|
||||||
|
# if ($md =~ m/(HM-CC-RT-DN-BoM|HM-CC-RT-DN)/){
|
||||||
|
# $chN = $defs{$eN}{channel_04};
|
||||||
|
# }
|
||||||
|
# elsif ($md =~ m/(ROTO_ZEL-STG-RM-FWT|HM-CC-TC|HM-TC-IT-WM-W-EU)/){
|
||||||
|
# $chN = $defs{$eN}{channel_02};
|
||||||
|
# }
|
||||||
|
# next if (!$chN || !$defs{$chN} || $chN !~ m/$filter/);
|
||||||
|
# print aSave "\nentities:$chN";
|
||||||
|
# my @tl = sort grep /tempList(P[123])?[SMFWT]/,keys %{$defs{$chN}{READINGS}};
|
||||||
|
# if (scalar @tl != 7 && scalar @tl != 21){
|
||||||
|
# print aSave "\nincomplete:$chN only data for ".join(",",@tl);
|
||||||
|
# push @incmpl,$chN;
|
||||||
|
# next;
|
||||||
|
# }
|
||||||
|
# foreach my $rd (@tl){
|
||||||
|
# print aSave "\n$rd>$defs{$chN}{READINGS}{$rd}{VAL}";
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
my @chList;
|
||||||
|
my @storeList;
|
||||||
my @incmpl;
|
my @incmpl;
|
||||||
foreach my $eN(HMinfo_getEntities("d")){#search and select channel
|
foreach my $eN(HMinfo_getEntities("d")){#search and select channel
|
||||||
my $md = AttrVal($eN,"model","");
|
my $md = AttrVal($eN,"model","");
|
||||||
@ -570,20 +592,58 @@ sub HMinfo_tempList(@) { ######################################################
|
|||||||
elsif ($md =~ m/(ROTO_ZEL-STG-RM-FWT|HM-CC-TC|HM-TC-IT-WM-W-EU)/){
|
elsif ($md =~ m/(ROTO_ZEL-STG-RM-FWT|HM-CC-TC|HM-TC-IT-WM-W-EU)/){
|
||||||
$chN = $defs{$eN}{channel_02};
|
$chN = $defs{$eN}{channel_02};
|
||||||
}
|
}
|
||||||
next if (!$chN || !$defs{$chN} || $chN !~ m/$filter/);
|
if ($chN && $defs{$chN} && $chN =~ m/$filter/){
|
||||||
print aSave "\nentities:$chN";
|
my @tl = sort grep /tempList(P[123])?[SMFWT]/,keys %{$defs{$chN}{READINGS}};
|
||||||
my @tl = sort grep /tempList(P[123])?[SMFWT]/,keys %{$defs{$chN}{READINGS}};
|
if (scalar @tl != 7 && scalar @tl != 21){
|
||||||
if (scalar@tl != 7 && scalar@tl != 21){
|
push @incmpl,$chN;
|
||||||
print aSave "\nincomplete:$chN only data for ".join(",",@tl);
|
next;
|
||||||
push @incmpl,$chN;
|
}
|
||||||
next;
|
else{
|
||||||
}
|
push @chList,$chN;
|
||||||
foreach my $rd (@tl){
|
push @storeList,"entities:$chN";
|
||||||
print aSave "\n$rd>$defs{$chN}{READINGS}{$rd}{VAL}";
|
foreach my $rd (@tl){
|
||||||
|
#print aSave "\n$rd>$defs{$chN}{READINGS}{$rd}{VAL}";
|
||||||
|
push @storeList,"$rd>$defs{$chN}{READINGS}{$rd}{VAL}";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print aSave "\n======= finished ===\n";
|
my @oldList;
|
||||||
close(aSave);
|
if (-f $fName ){
|
||||||
|
open(aRead, "$fName") || return("Can't open $fName: $!");
|
||||||
|
my $skip = 0;
|
||||||
|
while(<aRead>){
|
||||||
|
chomp;
|
||||||
|
my $line = $_;
|
||||||
|
if ($line =~ m/entities:(.*)/){
|
||||||
|
my $eFound = $1;
|
||||||
|
if (grep /\b$eFound\b/,@chList){
|
||||||
|
# renew this entry
|
||||||
|
$skip = 1;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$skip = 0;
|
||||||
|
}
|
||||||
|
Log 1,"General entity $eFound :$skip";
|
||||||
|
}
|
||||||
|
push @oldList,$line if (!$skip);
|
||||||
|
}
|
||||||
|
close(aRead);
|
||||||
|
}
|
||||||
|
open(aSave, ">$fName") || return("Can't open $fName: $!");
|
||||||
|
foreach my $line (@oldList,@storeList){
|
||||||
|
print aSave "\n$line";
|
||||||
|
# my @tl = sort grep /tempList(P[123])?[SMFWT]/,keys %{$defs{$chN}{READINGS}};
|
||||||
|
# if (scalar @tl != 7 && scalar @tl != 21){
|
||||||
|
# print aSave "\nincomplete:$chN only data for ".join(",",@tl);
|
||||||
|
# push @incmpl,$chN;
|
||||||
|
# next;
|
||||||
|
# }
|
||||||
|
# foreach my $rd (@tl){
|
||||||
|
# print aSave "\n$rd>$defs{$chN}{READINGS}{$rd}{VAL}";
|
||||||
|
# }
|
||||||
|
}
|
||||||
|
close(aSave);
|
||||||
$ret = "incomplete data for ".join("\n ",@incmpl) if (scalar@incmpl);
|
$ret = "incomplete data for ".join("\n ",@incmpl) if (scalar@incmpl);
|
||||||
}
|
}
|
||||||
elsif ($action eq "verify"){
|
elsif ($action eq "verify"){
|
||||||
@ -868,7 +928,8 @@ sub HMinfo_GetFn($@) {#########################################################
|
|||||||
foreach my $e (@td){
|
foreach my $e (@td){
|
||||||
my $tr = CUL_HM_tempListTmpl($e,"verify",AttrVal($e,"tempListTmpl"
|
my $tr = CUL_HM_tempListTmpl($e,"verify",AttrVal($e,"tempListTmpl"
|
||||||
,AttrVal($hash->{NAME},"configDir",".")."/tempList.cfg:$e"));
|
,AttrVal($hash->{NAME},"configDir",".")."/tempList.cfg:$e"));
|
||||||
push @tlr,$tr if($tr);
|
next if ($tr eq "unused");
|
||||||
|
push @tlr,"$e: $tr" if($tr);
|
||||||
}
|
}
|
||||||
$ret .= "\n\n templist mismatch \n ".join("\n ",@tlr) if (@tlr);
|
$ret .= "\n\n templist mismatch \n ".join("\n ",@tlr) if (@tlr);
|
||||||
}
|
}
|
||||||
@ -1115,7 +1176,6 @@ sub HMinfo_GetFn($@) {#########################################################
|
|||||||
,"configCheck","param","peerCheck","peerXref"
|
,"configCheck","param","peerCheck","peerXref"
|
||||||
,"protoEvents","msgStat","rssi"
|
,"protoEvents","msgStat","rssi"
|
||||||
,"models"
|
,"models"
|
||||||
,"clear"
|
|
||||||
,"regCheck","register"
|
,"regCheck","register"
|
||||||
,"templateList","templateChk"
|
,"templateList","templateChk"
|
||||||
);
|
);
|
||||||
@ -1151,7 +1211,7 @@ sub HMinfo_SetFn($@) {#########################################################
|
|||||||
}
|
}
|
||||||
if ($type ne "msgStat"){
|
if ($type ne "msgStat"){
|
||||||
return "unknown parameter - use Protocol, readings, msgStat, register, rssi or all"
|
return "unknown parameter - use Protocol, readings, msgStat, register, rssi or all"
|
||||||
if ($type !~ m/^(Protocol|readings|register|rssi|all)$/);
|
if ($type !~ m/^(Protocol|readings|register|rssi|all|trigger)$/);
|
||||||
$opt .= "d" if ($type =~ m/(Protocol|rssi)/);# readings apply to all, others device only
|
$opt .= "d" if ($type =~ m/(Protocol|rssi)/);# readings apply to all, others device only
|
||||||
my @entities;
|
my @entities;
|
||||||
$type = "msgEvents" if ($type eq "Protocol");# translate parameter
|
$type = "msgEvents" if ($type eq "Protocol");# translate parameter
|
||||||
@ -1235,18 +1295,8 @@ sub HMinfo_SetFn($@) {#########################################################
|
|||||||
$ret = HMinfo_archConfig($hash,$name,$opt,($a[0]?$a[0]:""));
|
$ret = HMinfo_archConfig($hash,$name,$opt,($a[0]?$a[0]:""));
|
||||||
}
|
}
|
||||||
|
|
||||||
elsif($cmd eq "?") {##action: get commandlist-----------------------
|
|
||||||
my @cmdLst =
|
|
||||||
( "autoReadReg","clear"
|
|
||||||
,"archConfig:-0,-a","saveConfig","verifyConfig","loadConfig","purgeConfig","update"
|
|
||||||
,"cpRegs"
|
|
||||||
,"tempList tempListTmpl"
|
|
||||||
,"templateDef","templateSet");
|
|
||||||
$ret = "Unknown argument $cmd, choose one of ".join (" ",sort @cmdLst);
|
|
||||||
}
|
|
||||||
|
|
||||||
### redirect set commands to get - thus the command also work in webCmd
|
### redirect set commands to get - thus the command also work in webCmd
|
||||||
elsif(HMinfo_GetFn($hash,$name,"?") =~ m/\b$cmd\b/){##----------------
|
elsif($cmd ne '?' && HMinfo_GetFn($hash,$name,"?") =~ m/\b$cmd\b/){##----------------
|
||||||
unshift @a,"-f",$filter if ($filter);
|
unshift @a,"-f",$filter if ($filter);
|
||||||
unshift @a,"-".$opt if ($opt);
|
unshift @a,"-".$opt if ($opt);
|
||||||
$ret = HMinfo_GetFn($hash,$name,$cmd,@a);
|
$ret = HMinfo_GetFn($hash,$name,$cmd,@a);
|
||||||
@ -1254,8 +1304,10 @@ sub HMinfo_SetFn($@) {#########################################################
|
|||||||
|
|
||||||
else{
|
else{
|
||||||
my @cmdLst =
|
my @cmdLst =
|
||||||
( "autoReadReg","clear"
|
( "autoReadReg"
|
||||||
,"archConfig:-0,-a","saveConfig","loadConfig","purgeConfig","update"
|
,"clear" #:msgStat,Protocol,all,rssi,register,trigger,readings"
|
||||||
|
,"archConfig:-0,-a","saveConfig","verifyConfig","loadConfig","purgeConfig"
|
||||||
|
,"update"
|
||||||
,"cpRegs"
|
,"cpRegs"
|
||||||
,"tempList tempListTmpl"
|
,"tempList tempListTmpl"
|
||||||
,"templateDef","templateSet");
|
,"templateDef","templateSet");
|
||||||
@ -2014,7 +2066,7 @@ sub HMinfo_noDup(@) {#return list with no duplicates###########################
|
|||||||
<li><a name="#HMinfoarchConfig">archConfig</a> <a href="#HMinfoFilter">[filter] [<file>]</a><br>
|
<li><a name="#HMinfoarchConfig">archConfig</a> <a href="#HMinfoFilter">[filter] [<file>]</a><br>
|
||||||
performs <a href="#HMinfosaveConfig">saveConfig</a> for entities that appeare to have achanged configuration.
|
performs <a href="#HMinfosaveConfig">saveConfig</a> for entities that appeare to have achanged configuration.
|
||||||
It is more conservative that saveConfig since incomplete sets are not stored.<br>
|
It is more conservative that saveConfig since incomplete sets are not stored.<br>
|
||||||
option -a force an archieve for all devices that have a complete set of data<br>
|
Option -a force an archieve for all devices that have a complete set of data<br>
|
||||||
</li>
|
</li>
|
||||||
<li><a name="#HMinfoloadConfig">loadConfig</a> <a href="#HMinfoFilter">[filter] [<file>]</a><br>
|
<li><a name="#HMinfoloadConfig">loadConfig</a> <a href="#HMinfoFilter">[filter] [<file>]</a><br>
|
||||||
loads register and peers from a file saved by <a href="#HMinfosaveConfig">saveConfig</a>.<br>
|
loads register and peers from a file saved by <a href="#HMinfosaveConfig">saveConfig</a>.<br>
|
||||||
|
@ -1553,6 +1553,8 @@ $culHmChanSets{"HM-ES-PMSw1-Pl06"} = $culHmChanSets{"HM-ES-PMSw1-Pl03"};
|
|||||||
$culHmChanSets{"ROTO_ZEL-STG-RM-FWT00"} = $culHmChanSets{"HM-CC-TC00"};
|
$culHmChanSets{"ROTO_ZEL-STG-RM-FWT00"} = $culHmChanSets{"HM-CC-TC00"};
|
||||||
$culHmChanSets{"ROTO_ZEL-STG-RM-FWT02"} = $culHmChanSets{"HM-CC-TC02"};
|
$culHmChanSets{"ROTO_ZEL-STG-RM-FWT02"} = $culHmChanSets{"HM-CC-TC02"};
|
||||||
|
|
||||||
|
$culHmChanSets{"HM-ES-PMSw1-Pl00"} = $culHmChanSets{"HM-LC-Bl1PBU-FM00"};
|
||||||
|
|
||||||
%culHmFunctSets = (# command depending on function
|
%culHmFunctSets = (# command depending on function
|
||||||
sdLead =>{ alarmOn =>""
|
sdLead =>{ alarmOn =>""
|
||||||
,alarmOff =>""
|
,alarmOff =>""
|
||||||
@ -1565,14 +1567,14 @@ $culHmChanSets{"ROTO_ZEL-STG-RM-FWT02"} = $culHmChanSets{"HM-CC-TC02"};
|
|||||||
|
|
||||||
|
|
||||||
# RC send BCAST to specific address. Is the meaning understood?
|
# RC send BCAST to specific address. Is the meaning understood?
|
||||||
@culHmCmdFlags = ("WAKEUP", "WAKEMEUP", "CFG", "Bit3",
|
@culHmCmdFlags = ("WAKEUP", "WAKEMEUP", "BCAST", "Bit3",
|
||||||
"BURST", "BIDI", "RPTED", "RPTEN");
|
"BURST", "BIDI" , "RPTED", "RPTEN");
|
||||||
#RPTEN 0x80: set in every message. Meaning?
|
#RPTEN 0x80: set in every message. Meaning?
|
||||||
#RPTED 0x40: repeated (repeater operation)
|
#RPTED 0x40: repeated (repeater operation)
|
||||||
#BIDI 0x20: response is expected
|
#BIDI 0x20: response is expected
|
||||||
#Burst 0x10: set if burst is required by device
|
#Burst 0x10: set if burst is required by device
|
||||||
#Bit3 0x08:
|
#Bit3 0x08:
|
||||||
#CFG 0x04: Device in Config mode
|
#BCAST 0x04: Broadcast - to all my peers parallel
|
||||||
#WAKEMEUP 0x02: awake - hurry up to send messages
|
#WAKEMEUP 0x02: awake - hurry up to send messages
|
||||||
#WAKEUP 0x01: send initially to keep the device awake
|
#WAKEUP 0x01: send initially to keep the device awake
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user