mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-08 19:32:42 +00:00
SVN-Transfer corrections
git-svn-id: https://svn.fhem.de/fhem/trunk@1090 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
64b231f357
commit
78aec584e0
@ -13,6 +13,7 @@
|
|||||||
- buxgfix: prevent fhem from stalling if telnet times out in 66_ECMD.pm
|
- buxgfix: prevent fhem from stalling if telnet times out in 66_ECMD.pm
|
||||||
- feature: FHEMWEB longpoll mode, small fixes, tuned smallscreen mode
|
- feature: FHEMWEB longpoll mode, small fixes, tuned smallscreen mode
|
||||||
- feature: average module added
|
- feature: average module added
|
||||||
|
- change: moved the berliOS CVS repository to a sourceforge SVN repository
|
||||||
|
|
||||||
- 2011-07-08 (5.1)
|
- 2011-07-08 (5.1)
|
||||||
- feature: smallscreen optimizations for iPhone
|
- feature: smallscreen optimizations for iPhone
|
||||||
|
@ -101,7 +101,7 @@ TCM_Write($$$)
|
|||||||
|
|
||||||
} else { # 310 / ESP3
|
} else { # 310 / ESP3
|
||||||
|
|
||||||
if(!$fn) { # Radio Paket from the EnOcean Module
|
if(!$fn) { # "Old-Type" Radio Packet
|
||||||
$msg =~ m/^6B05(..)000000(........)(..)$/;
|
$msg =~ m/^6B05(..)000000(........)(..)$/;
|
||||||
$fn = "00070701";
|
$fn = "00070701";
|
||||||
$msg = "F6$1$2${3}03FFFFFFFFFF00";
|
$msg = "F6$1$2${3}03FFFFFFFFFF00";
|
||||||
@ -232,6 +232,7 @@ TCM_Read($)
|
|||||||
} else { # TCM310 / ESP3
|
} else { # TCM310 / ESP3
|
||||||
if($data =~ m/^55(....)(..)(..)(..)/) {
|
if($data =~ m/^55(....)(..)(..)(..)/) {
|
||||||
my ($l1, $l2, $t, $crc) = (hex($1), hex($2), $3, $4);
|
my ($l1, $l2, $t, $crc) = (hex($1), hex($2), $3, $4);
|
||||||
|
|
||||||
my $tlen = 2*(7+$l1+$l2);
|
my $tlen = 2*(7+$l1+$l2);
|
||||||
if(length($data) < $tlen) {
|
if(length($data) < $tlen) {
|
||||||
$hash->{PARTIAL} = $data;
|
$hash->{PARTIAL} = $data;
|
||||||
|
@ -215,7 +215,7 @@ CUL_HM_Parse($$)
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
CUL_HM_DumpProtocol("CUL_HM RCV", $iohash, @msgarr);
|
CUL_HM_DumpProtocol("RCV", $iohash, @msgarr);
|
||||||
|
|
||||||
# Generate an UNKNOWN event with a better name
|
# Generate an UNKNOWN event with a better name
|
||||||
if(!$shash) {
|
if(!$shash) {
|
||||||
@ -253,16 +253,15 @@ CUL_HM_Parse($$)
|
|||||||
|
|
||||||
if($lcm eq "1A8400" || $lcm eq "1A8000") { #### Pairing-Request
|
if($lcm eq "1A8400" || $lcm eq "1A8000") { #### Pairing-Request
|
||||||
if($shash->{cmdStack}) {
|
if($shash->{cmdStack}) {
|
||||||
CUL_HM_SendCmd($shash, "++A112$id$src", 1, 1);
|
CUL_HM_SendCmd($shash, "++A112$id$src", 1, 1);
|
||||||
} else {
|
} else {
|
||||||
push @event, CUL_HM_Pair($name, $shash, @msgarr);
|
push @event, CUL_HM_Pair($name, $shash, @msgarr);
|
||||||
}
|
}
|
||||||
|
|
||||||
} elsif($cmd =~ m/^A0[01]{2}$/ && $dst eq $id) {#### Pairing-Request-Convers.
|
} elsif($cmd =~ m/^A0[01]{2}$/ && $dst eq $id) {#### Pairing-Request-Convers.
|
||||||
CUL_HM_SendCmd($shash, $msgcnt."8002".$id.$src."00", 1, 0); # Ack
|
CUL_HM_SendCmd($shash, $msgcnt."8002".$id.$src."00", 1, 0); # Ack
|
||||||
push @event, "";
|
push @event, "";
|
||||||
|
|
||||||
|
|
||||||
} elsif($model eq "KS550" || $model eq "HM-WDS100-C6-O") { ############
|
} elsif($model eq "KS550" || $model eq "HM-WDS100-C6-O") { ############
|
||||||
|
|
||||||
if($cmd eq "8670" && $p =~ m/^(....)(..)(....)(....)(..)(..)(..)/) {
|
if($cmd eq "8670" && $p =~ m/^(....)(..)(....)(....)(..)(..)(..)/) {
|
||||||
@ -304,11 +303,20 @@ CUL_HM_Parse($$)
|
|||||||
$t = ($t & 0x3fff)/10;
|
$t = ($t & 0x3fff)/10;
|
||||||
$t = sprintf("%0.1f", $t-1638.4) if($tsgn);
|
$t = sprintf("%0.1f", $t-1638.4) if($tsgn);
|
||||||
push @event, "state:T: $t H: $h";
|
push @event, "state:T: $t H: $h";
|
||||||
|
push @event, "measured-temp:$t";
|
||||||
push @event, "temperature:$t";
|
push @event, "temperature:$t";
|
||||||
push @event, "humidity:$h";
|
push @event, "humidity:$h";
|
||||||
|
|
||||||
# If we have something to tell:
|
# If we have something to tell:
|
||||||
CUL_HM_SendCmd($shash, "++A112$id$src", 1, 1) if($shash->{cmdStack});
|
my $sdt = $shash->{SET_DESIRED_TEMP}; # DOES NOT WORK
|
||||||
|
if($sdt) {
|
||||||
|
CUL_HM_SendCmd($shash,
|
||||||
|
sprintf("++A011%s%s0201${sdt}0000", $id,$dst), 1, 1);
|
||||||
|
delete($shash->{SET_DESIRED_TEMP});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
CUL_HM_SendCmd($shash, "++A112$id$src", 1, 1) if($shash->{cmdStack});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if($cmd eq "A258" && $p =~ m/^(..)(..)/) {
|
if($cmd eq "A258" && $p =~ m/^(..)(..)/) {
|
||||||
@ -329,7 +337,7 @@ CUL_HM_Parse($$)
|
|||||||
# slot 01.
|
# slot 01.
|
||||||
if($cmd eq "A410" && $p =~ m/^0403(......)(..)(..)(..)(..)(....)/) {
|
if($cmd eq "A410" && $p =~ m/^0403(......)(..)(..)(..)(..)(....)/) {
|
||||||
my ( $tdev, $tchan, $plist, $o1, $v1, $rest) =
|
my ( $tdev, $tchan, $plist, $o1, $v1, $rest) =
|
||||||
(($1), hex($2), hex($3), ($4), hex($5), ($6));
|
(($1), hex($2), hex($3), ($4), hex($5), ($6));
|
||||||
my $msg;
|
my $msg;
|
||||||
if($plist == 5) {
|
if($plist == 5) {
|
||||||
if($o1 eq "05") {
|
if($o1 eq "05") {
|
||||||
@ -363,13 +371,13 @@ CUL_HM_Parse($$)
|
|||||||
if($idx % 4 == 0 && $dayidx < $maxdays) {
|
if($idx % 4 == 0 && $dayidx < $maxdays) {
|
||||||
$idx -= 48*$dayidx;
|
$idx -= 48*$dayidx;
|
||||||
$idx /= 2;
|
$idx /= 2;
|
||||||
my $day = $days[$dayidx+$dayoff];
|
my $ptr = $shash->{TEMPLIST}{$days[$dayidx+$dayoff]};
|
||||||
$shash->{TEMPLIST}{$day}{$idx}{HOUR} = int($v1/6);
|
$ptr->{$idx}{HOUR} = int($v1/6);
|
||||||
$shash->{TEMPLIST}{$day}{$idx}{MINUTE} = ($v1 - int($v1/6)*6)*10;
|
$ptr->{$idx}{MINUTE} = ($v1 - int($v1/6)*6)*10;
|
||||||
$shash->{TEMPLIST}{$day}{$idx}{TEMP} = $v2/2;
|
$ptr->{$idx}{TEMP} = $v2/2;
|
||||||
$shash->{TEMPLIST}{$day}{$idx+1}{HOUR} = int($v3/6);
|
$ptr->{$idx+1}{HOUR} = int($v3/6);
|
||||||
$shash->{TEMPLIST}{$day}{$idx+1}{MINUTE} = ($v3 - int($v3/6)*6)*10;
|
$ptr->{$idx+1}{MINUTE} = ($v3 - int($v3/6)*6)*10;
|
||||||
$shash->{TEMPLIST}{$day}{$idx+1}{TEMP} = $v4/2;
|
$ptr->{$idx+1}{TEMP} = $v4/2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -377,21 +385,17 @@ CUL_HM_Parse($$)
|
|||||||
my $twentyfour = 0;
|
my $twentyfour = 0;
|
||||||
my $msg = sprintf("tempList%s:", $wd);
|
my $msg = sprintf("tempList%s:", $wd);
|
||||||
foreach(my $idx=0; $idx<24; $idx+=1) {
|
foreach(my $idx=0; $idx<24; $idx+=1) {
|
||||||
if(defined ($shash->{TEMPLIST}{$wd}{$idx}{TEMP}) &&
|
my $ptr = $shash->{TEMPLIST}{$wd}{$idx};
|
||||||
$shash->{TEMPLIST}{$wd}{$idx}{TEMP} ne "") {
|
if(defined ($ptr->{TEMP}) && $ptr->{TEMP} ne "") {
|
||||||
if($twentyfour == 0) {
|
if($twentyfour == 0) {
|
||||||
$msg .= sprintf(" %02d:%02d %.1f",
|
$msg .= sprintf(" %02d:%02d %.1f",
|
||||||
$shash->{TEMPLIST}{$wd}{$idx}{HOUR},
|
$ptr->{HOUR}, $ptr->{MINUTE}, $ptr->{TEMP});
|
||||||
$shash->{TEMPLIST}{$wd}{$idx}{MINUTE},
|
|
||||||
$shash->{TEMPLIST}{$wd}{$idx}{TEMP});
|
|
||||||
} else {
|
} else {
|
||||||
$shash->{TEMPLIST}{$wd}{$idx}{HOUR} = "";
|
$ptr->{HOUR} = $ptr->{MINUTE} = $ptr->{TEMP} = "";
|
||||||
$shash->{TEMPLIST}{$wd}{$idx}{MINUTE} = "";
|
|
||||||
$shash->{TEMPLIST}{$wd}{$idx}{TEMP} = "";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(defined ($shash->{TEMPLIST}{$wd}{$idx}{HOUR}) &&
|
if(defined ($ptr->{HOUR}) && 0+$ptr->{HOUR} == 24) {
|
||||||
0+$shash->{TEMPLIST}{$wd}{$idx}{HOUR} == 24) {
|
|
||||||
$twentyfour = 1; # next value uninteresting, only first counts.
|
$twentyfour = 1; # next value uninteresting, only first counts.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -416,7 +420,8 @@ CUL_HM_Parse($$)
|
|||||||
|
|
||||||
} elsif($model eq "HM-CC-VD") { ###################
|
} elsif($model eq "HM-CC-VD") { ###################
|
||||||
# CMD:8202 SRC:13F251 DST:15B50D 010100002A
|
# CMD:8202 SRC:13F251 DST:15B50D 010100002A
|
||||||
if($cmd eq "8202" && $p =~ m/^(..)(..)(..)(..)/) { # status ACK to controlling HM-CC-TC
|
# status ACK to controlling HM-CC-TC
|
||||||
|
if($cmd eq "8202" && $p =~ m/^(..)(..)(..)(..)/) {
|
||||||
my ( $vp, $d1) =
|
my ( $vp, $d1) =
|
||||||
(hex($3), $4);
|
(hex($3), $4);
|
||||||
$vp = int($vp)/2; # valve position in %
|
$vp = int($vp)/2; # valve position in %
|
||||||
@ -738,9 +743,10 @@ my %culHmSubTypeSets = (
|
|||||||
);
|
);
|
||||||
my %culHmModelSets = (
|
my %culHmModelSets = (
|
||||||
"HM-CC-TC"=>
|
"HM-CC-TC"=>
|
||||||
{ "day-temp" => "temp",
|
{ "day-temp" => "temp",
|
||||||
"night-temp" => "temp",
|
"night-temp" => "temp",
|
||||||
"party-temp" => "temp",
|
"party-temp" => "temp",
|
||||||
|
#"desired-temp" => "temp", # does not work
|
||||||
"tempListSat"=> "HH:MM temp ...",
|
"tempListSat"=> "HH:MM temp ...",
|
||||||
"tempListSun"=> "HH:MM temp ...",
|
"tempListSun"=> "HH:MM temp ...",
|
||||||
"tempListMon"=> "HH:MM temp ...",
|
"tempListMon"=> "HH:MM temp ...",
|
||||||
@ -880,12 +886,18 @@ CUL_HM_Set($@)
|
|||||||
CUL_HM_pushConfig($hash, $id, $dst, $bn, 1, $l1);
|
CUL_HM_pushConfig($hash, $id, $dst, $bn, 1, $l1);
|
||||||
return "Set your remote in learning mode to transmit the data";
|
return "Set your remote in learning mode to transmit the data";
|
||||||
|
|
||||||
} elsif($cmd =~ m/^(day|night|party)-temp$/) { ###############################
|
} elsif($cmd =~ m/^desired-temp$/) { ##################
|
||||||
my $temp = CUL_HM_convTemp($a[2]);
|
my $temp = CUL_HM_convTemp($a[2]);
|
||||||
return $temp if(length($temp) > 2);
|
return $temp if(length($temp) > 2);
|
||||||
CUL_HM_pushConfig($hash, $id, $dst, 2, 5,
|
$hash->{SET_DESIRED_TEMP} = $temp;
|
||||||
$st eq "day-temp" ? "03$temp" :
|
return;
|
||||||
$st eq "night-temp" ? "04$temp" : "06$temp");
|
|
||||||
|
} elsif($cmd =~ m/^(day|night|party)-temp$/) { ##################
|
||||||
|
my %tt = (day=>"03", night=>"04", party=>"06");
|
||||||
|
my $tt = $tt{$1};
|
||||||
|
my $temp = CUL_HM_convTemp($a[2]);
|
||||||
|
return $temp if(length($temp) > 2);
|
||||||
|
CUL_HM_pushConfig($hash, $id, $dst, 2, 5, "$tt$temp"); # List 5
|
||||||
return;
|
return;
|
||||||
|
|
||||||
} elsif($cmd =~ m/^tempList(...)/) { ##################################
|
} elsif($cmd =~ m/^tempList(...)/) { ##################################
|
||||||
@ -1144,7 +1156,7 @@ CUL_HM_SendCmd($$$$)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$cmd =~ m/As(..)(..)(....)(......)(......)(.*)/;
|
$cmd =~ m/As(..)(..)(....)(......)(......)(.*)/;
|
||||||
CUL_HM_DumpProtocol("CUL_HM SND", $io, ($1,$2,$3,$4,$5,$6));
|
CUL_HM_DumpProtocol("SND", $io, ($1,$2,$3,$4,$5,$6));
|
||||||
}
|
}
|
||||||
|
|
||||||
###################################
|
###################################
|
||||||
|
@ -65,7 +65,8 @@ EnOcean_Initialize($)
|
|||||||
$hash->{SetFn} = "EnOcean_Set";
|
$hash->{SetFn} = "EnOcean_Set";
|
||||||
$hash->{AttrList} = "IODev do_not_notify:1,0 ignore:0,1 " .
|
$hash->{AttrList} = "IODev do_not_notify:1,0 ignore:0,1 " .
|
||||||
"showtime:1,0 loglevel:0,1,2,3,4,5,6 model " .
|
"showtime:1,0 loglevel:0,1,2,3,4,5,6 model " .
|
||||||
"subType:switch,contact,sensor,windowHandle,SR04,MD15";
|
"subType:switch,contact,sensor,windowHandle,SR04,MD15 ".
|
||||||
|
"actualTemp";
|
||||||
|
|
||||||
for(my $i=0; $i<@ptm200btn;$i++) {
|
for(my $i=0; $i<@ptm200btn;$i++) {
|
||||||
$ptm200btn{$ptm200btn[$i]} = "$i:30";
|
$ptm200btn{$ptm200btn[$i]} = "$i:30";
|
||||||
@ -105,11 +106,42 @@ EnOcean_Set($@)
|
|||||||
my $ll2 = GetLogLevel($name, 2);
|
my $ll2 = GetLogLevel($name, 2);
|
||||||
|
|
||||||
shift @a;
|
shift @a;
|
||||||
|
my $tn = TimeNow();
|
||||||
|
|
||||||
for(my $i = 0; $i < @a; $i++) {
|
for(my $i = 0; $i < @a; $i++) {
|
||||||
my $cmd = $a[$i];
|
my $cmd = $a[$i];
|
||||||
|
|
||||||
|
#####################
|
||||||
|
# See also http://www.oscat.de/community/index.php/topic,985.30.html
|
||||||
if($st eq "MD15") {
|
if($st eq "MD15") {
|
||||||
|
my %sets = (
|
||||||
|
"desired-temp" => "\\d+\\.\\d+",
|
||||||
|
"actuator" => "\\d+",
|
||||||
|
"unattended" => "",
|
||||||
|
);
|
||||||
|
my $re = $sets{$a[0]};
|
||||||
|
return "Unknown argument $cmd, choose one of ".join(" ", sort keys %sets)
|
||||||
|
if(!defined($re));
|
||||||
|
return "Need a parameter" if($re && @a < 2);
|
||||||
|
return "Argument $a[1] is incorrect (expect $re)"
|
||||||
|
if($re && $a[1] !~ m/^$re$/);
|
||||||
|
|
||||||
|
$hash->{CMD} = $cmd;
|
||||||
|
$hash->{READINGS}{CMD}{TIME} = $tn;
|
||||||
|
$hash->{READINGS}{CMD}{VAL} = $cmd;
|
||||||
|
|
||||||
|
my $arg = 1;
|
||||||
|
if($re) {
|
||||||
|
$hash->{READINGS}{CMD_ARG}{TIME} = $tn;
|
||||||
|
$hash->{READINGS}{CMD_ARG}{VAL} = $a[1];
|
||||||
|
$arg = $a[1];
|
||||||
|
shift(@a);
|
||||||
|
}
|
||||||
|
|
||||||
|
$hash->{READINGS}{$cmd}{TIME} = $tn;
|
||||||
|
$hash->{READINGS}{$cmd}{VAL} = $arg;
|
||||||
|
|
||||||
|
###########################
|
||||||
} else { # Simulate a PTM
|
} else { # Simulate a PTM
|
||||||
my ($c1,$c2) = split(",", $cmd, 2);
|
my ($c1,$c2) = split(",", $cmd, 2);
|
||||||
return "Unknown argument $cmd, choose one of " .
|
return "Unknown argument $cmd, choose one of " .
|
||||||
@ -129,11 +161,9 @@ EnOcean_Set($@)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
select(undef, undef, undef, 0.1) if($i < int(@a)-1);
|
select(undef, undef, undef, 0.1) if($i < int(@a)-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
my $tn = TimeNow();
|
|
||||||
my $cmd = join(" ", @a);
|
my $cmd = join(" ", @a);
|
||||||
$hash->{CHANGED}[0] = $cmd;
|
$hash->{CHANGED}[0] = $cmd;
|
||||||
$hash->{STATE} = $cmd;
|
$hash->{STATE} = $cmd;
|
||||||
@ -148,6 +178,11 @@ EnOcean_Parse($$)
|
|||||||
{
|
{
|
||||||
my ($iohash, $msg) = @_;
|
my ($iohash, $msg) = @_;
|
||||||
my (undef,$rorg,$data,$id,$status,$odata) = split(":", $msg);
|
my (undef,$rorg,$data,$id,$status,$odata) = split(":", $msg);
|
||||||
|
#Log 1, "RORG: $rorg";
|
||||||
|
#Log 1, "DATA: $data";
|
||||||
|
#Log 1, "ID: $id";
|
||||||
|
#Log 1, "STATUS: $status";
|
||||||
|
#Log 1, "ODATA: $odata";
|
||||||
|
|
||||||
my $rorgname = $rorgname{$rorg};
|
my $rorgname = $rorgname{$rorg};
|
||||||
if(!$rorgname) {
|
if(!$rorgname) {
|
||||||
@ -280,7 +315,27 @@ EnOcean_Parse($$)
|
|||||||
push @event, "3:tempSensor:" . (($db_2 & 0x04) ? "failed" : "ok");
|
push @event, "3:tempSensor:" . (($db_2 & 0x04) ? "failed" : "ok");
|
||||||
push @event, "3:window:" . (($db_2 & 0x02) ? "open" : "closed");
|
push @event, "3:window:" . (($db_2 & 0x02) ? "open" : "closed");
|
||||||
push @event, "3:actuator:" . (($db_2 & 0x01) ? "ok" : "obstructed");
|
push @event, "3:actuator:" . (($db_2 & 0x01) ? "ok" : "obstructed");
|
||||||
push @event, "3:temperature:" . sprintf "%.1f", ($db_1*40/255);
|
push @event, "3:measured-temp:". sprintf "%.1f", ($db_1*40/255);
|
||||||
|
|
||||||
|
my $cmd = ReadingsVal($name, "CMD", undef);
|
||||||
|
if($cmd) {
|
||||||
|
my $msg;
|
||||||
|
my $arg1 = ReadingsVal($name, "CMD_ARG", 20);
|
||||||
|
|
||||||
|
if($cmd eq "actuator") {
|
||||||
|
$msg = sprintf("%02X000000", $arg1);
|
||||||
|
|
||||||
|
} elsif($cmd eq "desired-temp") {
|
||||||
|
$msg = sprintf("%02X%02X0400", $arg1*255/40,
|
||||||
|
AttrVal($name, "actualTemp", ($db_1*40/255)) * 255/40);
|
||||||
|
|
||||||
|
}
|
||||||
|
select(undef, undef, undef, 0.1);
|
||||||
|
IOWrite($hash, "000A0701",
|
||||||
|
sprintf("A5%s%s0001%sFF00",$msg,$hash->{DEF},$hash->{DEF}))
|
||||||
|
if($msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
push @event, "3:state:$db_3";
|
push @event, "3:state:$db_3";
|
||||||
|
@ -17,11 +17,11 @@ sub
|
|||||||
updatefhem_Initialize($$)
|
updatefhem_Initialize($$)
|
||||||
{
|
{
|
||||||
my %fhash = ( Fn=>"CommandUpdatefhem",
|
my %fhash = ( Fn=>"CommandUpdatefhem",
|
||||||
Hlp=>",update fhem from the nightly CVS" );
|
Hlp=>",update fhem from the nightly SVN" );
|
||||||
$cmds{updatefhem} = \%fhash;
|
$cmds{updatefhem} = \%fhash;
|
||||||
|
|
||||||
my %chash = ( Fn=>"CommandCULflash",
|
my %chash = ( Fn=>"CommandCULflash",
|
||||||
Hlp=>"<cul> <type>,flash the CUL from the nightly CVS" );
|
Hlp=>"<cul> <type>,flash the CUL from the nightly SVN" );
|
||||||
$cmds{CULflash} = \%chash;
|
$cmds{CULflash} = \%chash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,10 +54,9 @@ install-base:
|
|||||||
dist:
|
dist:
|
||||||
@echo Version is $(VERS), Date is $(DATE)
|
@echo Version is $(VERS), Date is $(DATE)
|
||||||
mkdir .f
|
mkdir .f
|
||||||
cp -r CHANGED FHEM HISTORY Makefile README.CVS\
|
cp -r CHANGED FHEM HISTORY Makefile README.SVN\
|
||||||
TODO contrib docs examples fhem.pl webfrontend .f
|
TODO contrib docs examples fhem.pl webfrontend .f
|
||||||
find .f -name CVS -print | xargs rm -rf
|
find .f -name .svn -print | xargs rm -rf
|
||||||
find .f -name example.CVS -print | xargs rm -rf
|
|
||||||
find .f -name \*.orig -print | xargs rm -f
|
find .f -name \*.orig -print | xargs rm -f
|
||||||
find .f -name .#\* -print | xargs rm -f
|
find .f -name .#\* -print | xargs rm -f
|
||||||
find .f -type f -print |\
|
find .f -type f -print |\
|
||||||
@ -72,8 +71,10 @@ deb:
|
|||||||
rm -rf .f
|
rm -rf .f
|
||||||
make ROOT=`pwd`/.f install
|
make ROOT=`pwd`/.f install
|
||||||
cp -r contrib/DEBIAN .f
|
cp -r contrib/DEBIAN .f
|
||||||
find .f -name CVS -print | xargs rm -rf
|
rm -rf .f/$(MODDIR)/contrib/FB7*/var
|
||||||
find .f -name example.CVS -print | xargs rm -rf
|
rm -rf .f/$(MODDIR)/contrib/FB7*/*.image
|
||||||
|
rm -rf .f/$(MODDIR)/contrib/FB7*/*.zip
|
||||||
|
find .f -name .svn -print | xargs rm -rf
|
||||||
find .f -name \*.orig -print | xargs rm -f
|
find .f -name \*.orig -print | xargs rm -f
|
||||||
find .f -name .#\* -print | xargs rm -f
|
find .f -name .#\* -print | xargs rm -f
|
||||||
find .f -type f -print |\
|
find .f -type f -print |\
|
||||||
|
@ -1,65 +0,0 @@
|
|||||||
The source of this project is hosted on Berlios, if you wish you can get
|
|
||||||
the latest version with the following commands:
|
|
||||||
cvs -d:pserver:anonymous@cvs.fhem.berlios.de:/cvsroot/fhem login
|
|
||||||
cvs -z3 -d:pserver:anonymous@cvs.fhem.berlios.de:/cvsroot/fhem co fhem
|
|
||||||
|
|
||||||
If you wish to contribute to the project, then
|
|
||||||
- create a berlios account
|
|
||||||
- send an email to the project manager to add you as developer to the project
|
|
||||||
(right know this is r dot koenig at koeniglich dot de)
|
|
||||||
- check out the source with
|
|
||||||
% cvs -z3 -d<berlios-uid>@cvs.berlios.de:/cvsroot/fhem co fhem
|
|
||||||
- if it is already checked out, it makes sense to do an update before
|
|
||||||
implementing your changes:
|
|
||||||
% cvs update
|
|
||||||
- make your changes
|
|
||||||
- test if it is working (Really !!!)
|
|
||||||
- make an entry in the CHANGED file, giving your changes a "title".
|
|
||||||
- describe your changes in the file HISTORY, and dont forget to mention your
|
|
||||||
name and the date of change
|
|
||||||
- it makes sense to do a "cvs diff" before checking in the stuff with
|
|
||||||
cvs commit
|
|
||||||
- if you do complex/nontrivial changes affecting more than one file, then
|
|
||||||
please tag the whole software before and after the change with:
|
|
||||||
- before: % cvs tag <berlios-uid>_<date_as_YYYYMMDD>_0
|
|
||||||
- after: % cvs tag <berlios-uid>_<date_as_YYYYMMDD>_1
|
|
||||||
You can increase the counter for bugfixing. Dont forget to mention the
|
|
||||||
tagname in the HISTORY file. Tagging helps to remove more complex changes or
|
|
||||||
to merge them in other releases/branches.
|
|
||||||
|
|
||||||
|
|
||||||
Some useful CVS commands/flags for the beginner:
|
|
||||||
|
|
||||||
|
|
||||||
# Get the newest stuff from the server and merge it into your changes.
|
|
||||||
# Watch out for lines beginning with C (collisions), edit them immediately
|
|
||||||
# after check out, and look for ====
|
|
||||||
# Without -d new directories won't be checked out
|
|
||||||
cvs update -d .
|
|
||||||
|
|
||||||
# Before checking in, make sure you changed only what you intended:
|
|
||||||
cvs diff filename
|
|
||||||
|
|
||||||
# Add new file. "-kb" adds binary files. Forgetting -kb will cause
|
|
||||||
# problems if somebody is checking out on a different OS (windows)
|
|
||||||
# Note: it is complicated to rename files in CVS, so think twice about
|
|
||||||
# filenames before adding them. e.g. do not use version names in them.
|
|
||||||
cvs add [-kb] filename
|
|
||||||
|
|
||||||
# Look at the change history
|
|
||||||
cvs log <filename>
|
|
||||||
|
|
||||||
# Commit changes. Set the EDITOR environment variable to use your editor.
|
|
||||||
cvs commit .
|
|
||||||
|
|
||||||
# Check which files were changed. Type ^C when it asks you to really release it.
|
|
||||||
# (is there a more elegant way?)
|
|
||||||
cvs release .
|
|
||||||
|
|
||||||
# We recommend to set some options in our ~/.cvsrc file:
|
|
||||||
cvs -q
|
|
||||||
update -d
|
|
||||||
# The 'cvs -q' option will suppress some output e.g. during update
|
|
||||||
# only the updated and unknown files etc. are displayed (not every
|
|
||||||
# folder etc.).
|
|
||||||
# The 'update -d' will automatically create folders as required.
|
|
@ -1,14 +1,14 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
# Server-Side script to check out the fhem CVS repository, and upload the
|
# Server-Side script to check out the fhem SVN repository, and upload the
|
||||||
# changed files to the server
|
# changed files to the server
|
||||||
|
|
||||||
print localtime() . "\n";
|
print localtime() . "\n";
|
||||||
|
|
||||||
chdir("/home/rudi/fhemupdate/fhem");
|
chdir("/home/rudi/fhemupdate/fhem");
|
||||||
system("mkdir -p UPLOAD");
|
system("mkdir -p UPLOAD");
|
||||||
system("cvs update . > /dev/null 2>&1");
|
system("svn update . > /dev/null 2>&1");
|
||||||
die "CVS failed, exiting\n" if($?);
|
die "SVN failed, exiting\n" if($?);
|
||||||
|
|
||||||
my @filelist = (
|
my @filelist = (
|
||||||
"./fhem.pl",
|
"./fhem.pl",
|
||||||
|
@ -551,7 +551,7 @@ A line ending with \ will be concatenated with the next one, so long lines
|
|||||||
<ul>
|
<ul>
|
||||||
<code>updatefhem [backup] [filename]</code> <br>
|
<code>updatefhem [backup] [filename]</code> <br>
|
||||||
<br>
|
<br>
|
||||||
Update the fhem modules and documentation from a nightly CVS chekout. For
|
Update the fhem modules and documentation from a nightly SVN chekout. For
|
||||||
this purpose fhem contacts http://fhem.de/fhemupdate, compares the stored
|
this purpose fhem contacts http://fhem.de/fhemupdate, compares the stored
|
||||||
timestamps of the local files with the filelist on the server, and
|
timestamps of the local files with the filelist on the server, and
|
||||||
downloads the files changed on the server. For all downloaded modules a
|
downloads the files changed on the server. For all downloaded modules a
|
||||||
@ -590,7 +590,7 @@ A line ending with \ will be concatenated with the next one, so long lines
|
|||||||
<ul>
|
<ul>
|
||||||
<code>CULflash <CUL-Name> <CUL-Version></code> <br>
|
<code>CULflash <CUL-Name> <CUL-Version></code> <br>
|
||||||
<br>
|
<br>
|
||||||
Download the CUL firmware from a nightly CVS chekout and flash the
|
Download the CUL firmware from a nightly SVN chekout and flash the
|
||||||
hardware. Currently only the CUL is supported with its versions:
|
hardware. Currently only the CUL is supported with its versions:
|
||||||
CUL_V2, CUL_V2_HM, CUL_V3, CUL_V4.<br>
|
CUL_V2, CUL_V2_HM, CUL_V3, CUL_V4.<br>
|
||||||
<b>Note:</b> dfu-programmer has to be installed in the path.<br>
|
<b>Note:</b> dfu-programmer has to be installed in the path.<br>
|
||||||
|
@ -77,9 +77,7 @@
|
|||||||
<br>
|
<br>
|
||||||
See the <a href="CHANGED">CHANGED</a> file for current changes.
|
See the <a href="CHANGED">CHANGED</a> file for current changes.
|
||||||
<br>
|
<br>
|
||||||
Nightly CVS version: a
|
Nightly SVN version from the fhem commandline via <a
|
||||||
<a href="http://www.dhs-computertechnik.de/downloads/fhem-cvs.tgz">
|
|
||||||
tarball</a>, or from the fhem commandline via <a
|
|
||||||
href="commandref.html#updatefhem">updatefhem</a>. <br><br>
|
href="commandref.html#updatefhem">updatefhem</a>. <br><br>
|
||||||
|
|
||||||
|
|
||||||
@ -272,9 +270,9 @@
|
|||||||
<ul>
|
<ul>
|
||||||
Homepage: <a href="http://fhem.de/fhem.html">
|
Homepage: <a href="http://fhem.de/fhem.html">
|
||||||
http://fhem.de/fhem.html</a><br>
|
http://fhem.de/fhem.html</a><br>
|
||||||
Development source at CVS@berlios: <a
|
Development source at SVN@sourceforge: <a
|
||||||
href="http://developer.berlios.de/projects/fhem">
|
href="http://fhem.svn.sourceforge.net">
|
||||||
http://developer.berlios.de/projects/fhem</a><br>
|
http://fhem.svn.sourceforge.net</a><br>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
Frontends:<br>
|
Frontends:<br>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user