mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-03 16:56:54 +00:00
10_pilight_ctrl: support protocol daycom with three id's
git-svn-id: https://svn.fhem.de/fhem/trunk@11134 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
1e58ecdef4
commit
fce6448b65
@ -1,5 +1,6 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||||
# Do not insert empty lines here, update check depends on it.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
|
- feature: 10_pilight_ctrl | 30_pilight_switch: support protocol daycom
|
||||||
- feature: 59_Weather: rewritten to use JSON API
|
- feature: 59_Weather: rewritten to use JSON API
|
||||||
- bugfix: 49_SSCAM: "link_open" doesn't work after last update
|
- bugfix: 49_SSCAM: "link_open" doesn't work after last update
|
||||||
- added: 70_BRAVIA: new module for Sony Televisions
|
- added: 70_BRAVIA: new module for Sony Televisions
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
# V 1.12 2015-09-11 - FIX: handling ContactAsSwitch befor white list check
|
# V 1.12 2015-09-11 - FIX: handling ContactAsSwitch befor white list check
|
||||||
# V 1.13 2015-11-10 - FIX: POSIX isdigit is deprecated replaced by own isDigit
|
# V 1.13 2015-11-10 - FIX: POSIX isdigit is deprecated replaced by own isDigit
|
||||||
# V 1.14 2016-03-20 - FIX: send delimiter to signal end of stream if length of data > 1024
|
# V 1.14 2016-03-20 - FIX: send delimiter to signal end of stream if length of data > 1024
|
||||||
|
# V 1.15 2016-03-28 - NEW: protocol daycom (switch)
|
||||||
##############################################
|
##############################################
|
||||||
package main;
|
package main;
|
||||||
|
|
||||||
@ -399,9 +400,12 @@ sub pilight_ctrl_Write($@)
|
|||||||
my $proto = $defs{$cName}->{PROTOCOL};
|
my $proto = $defs{$cName}->{PROTOCOL};
|
||||||
my $id = $defs{$cName}->{ID};
|
my $id = $defs{$cName}->{ID};
|
||||||
my $unit = $defs{$cName}->{UNIT};
|
my $unit = $defs{$cName}->{UNIT};
|
||||||
|
my $syscode = undef;
|
||||||
|
$syscode = $defs{$cName}->{SYSCODE} if defined($defs{$cName}->{SYSCODE});
|
||||||
|
|
||||||
$id = "\"".$id."\"" if (defined($id) && !isDigit($id));
|
$id = "\"".$id."\"" if (defined($id) && !isDigit($id));
|
||||||
$unit = "\"".$unit."\"" if (defined($unit) && !isDigit($unit));
|
$unit = "\"".$unit."\"" if (defined($unit) && !isDigit($unit));
|
||||||
|
$syscode = "\"".$syscode."\"" if (defined($syscode) && !isDigit($syscode));
|
||||||
|
|
||||||
my $code;
|
my $code;
|
||||||
switch($cType){
|
switch($cType){
|
||||||
@ -415,6 +419,12 @@ sub pilight_ctrl_Write($@)
|
|||||||
case m/pollin/ {$code .= "\"systemcode\":$id,\"unitcode\":$unit,";}
|
case m/pollin/ {$code .= "\"systemcode\":$id,\"unitcode\":$unit,";}
|
||||||
case m/impuls/ {$code .= "\"systemcode\":$id,\"programcode\":$unit,";}
|
case m/impuls/ {$code .= "\"systemcode\":$id,\"programcode\":$unit,";}
|
||||||
case m/rsl366/ {$code .= "\"systemcode\":$id,\"programcode\":$unit,";}
|
case m/rsl366/ {$code .= "\"systemcode\":$id,\"programcode\":$unit,";}
|
||||||
|
case m/daycom/ { if (!defined($syscode)) {
|
||||||
|
Log3 $me, 1, "$me(Write): Error protocol daycom no systemcode defined";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$code .= "\"id\":$id,\"systemcode\":$syscode,\"unit\":$unit,";
|
||||||
|
}
|
||||||
case m/cleverwatts/ { $code .= "\"id\":$id,";
|
case m/cleverwatts/ { $code .= "\"id\":$id,";
|
||||||
if ($unit eq "\"all\"") {
|
if ($unit eq "\"all\"") {
|
||||||
$code .= "\"all\":1,";
|
$code .= "\"all\":1,";
|
||||||
@ -756,6 +766,9 @@ sub pilight_ctrl_Parse($$)
|
|||||||
last if ($id ne "");
|
last if ($id ne "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#systemcode and id for protocol daycom (needs 3 id's, systemcode, id, unit
|
||||||
|
my $syscode = (defined($data->{$s}{"systemcode"})) ? $data->{$s}{"systemcode"} : "";
|
||||||
|
|
||||||
my $unit = "";
|
my $unit = "";
|
||||||
foreach my $sunit (@unitList) {
|
foreach my $sunit (@unitList) {
|
||||||
$unit = (defined($data->{$s}{$sunit})) ? $data->{$s}{$sunit} : "";
|
$unit = (defined($data->{$s}{$sunit})) ? $data->{$s}{$sunit} : "";
|
||||||
@ -804,6 +817,7 @@ sub pilight_ctrl_Parse($$)
|
|||||||
case m/mumbi/ {$protoID = 1;}
|
case m/mumbi/ {$protoID = 1;}
|
||||||
case m/brennenstuhl/{$protoID = 1;}
|
case m/brennenstuhl/{$protoID = 1;}
|
||||||
case m/pollin/ {$protoID = 1;}
|
case m/pollin/ {$protoID = 1;}
|
||||||
|
case m/daycom/ {$protoID = 1;}
|
||||||
case m/impuls/ {$protoID = 1;}
|
case m/impuls/ {$protoID = 1;}
|
||||||
case m/rsl366/ {$protoID = 1;}
|
case m/rsl366/ {$protoID = 1;}
|
||||||
case m/cleverwatts/ {$protoID = 1;}
|
case m/cleverwatts/ {$protoID = 1;}
|
||||||
@ -842,6 +856,8 @@ sub pilight_ctrl_Parse($$)
|
|||||||
switch($protoID){
|
switch($protoID){
|
||||||
case 1 {
|
case 1 {
|
||||||
my $msg = "PISWITCH,$proto,$id,$unit,$state";
|
my $msg = "PISWITCH,$proto,$id,$unit,$state";
|
||||||
|
$msg .= ",$syscode" if ($syscode ne "");
|
||||||
|
|
||||||
Log3 $me, 4, "$me(Dispatch): $msg";
|
Log3 $me, 4, "$me(Dispatch): $msg";
|
||||||
return Dispatch($hash, $msg,undef );
|
return Dispatch($hash, $msg,undef );
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
# V 0.13 2015-05-30 - FIX: StateFn, noArg
|
# V 0.13 2015-05-30 - FIX: StateFn, noArg
|
||||||
# V 0.14 2015-07-27 - NEW: SetExtensions on-for-timer
|
# V 0.14 2015-07-27 - NEW: SetExtensions on-for-timer
|
||||||
# V 0.15 2015-12-17 - NEW: Attribut IODev to switch IO-Device
|
# V 0.15 2015-12-17 - NEW: Attribut IODev to switch IO-Device
|
||||||
|
# V 0.16 2016-03-28 - NEW: protocol daycom with three id's (id, systemcode, unit)
|
||||||
##############################################
|
##############################################
|
||||||
|
|
||||||
package main;
|
package main;
|
||||||
@ -49,7 +50,7 @@ sub pilight_switch_Define($$)
|
|||||||
my @a = split("[ \t][ \t]*", $def);
|
my @a = split("[ \t][ \t]*", $def);
|
||||||
|
|
||||||
if(@a < 5) {
|
if(@a < 5) {
|
||||||
my $msg = "wrong syntax: define <name> pilight_switch <protocol> <id> <unit>";
|
my $msg = "wrong syntax: define <name> pilight_switch <protocol> <id> <unit> [systemcode]";
|
||||||
Log3 undef, 2, $msg;
|
Log3 undef, 2, $msg;
|
||||||
return $msg;
|
return $msg;
|
||||||
}
|
}
|
||||||
@ -63,6 +64,8 @@ sub pilight_switch_Define($$)
|
|||||||
$hash->{PROTOCOL} = lc($protocol);
|
$hash->{PROTOCOL} = lc($protocol);
|
||||||
$hash->{ID} = $id;
|
$hash->{ID} = $id;
|
||||||
$hash->{UNIT} = $unit;
|
$hash->{UNIT} = $unit;
|
||||||
|
$hash->{SYSCODE} = undef;
|
||||||
|
$hash->{SYSCODE} = $a[5] if (@a == 6);
|
||||||
|
|
||||||
#$attr{$me}{verbose} = 5;
|
#$attr{$me}{verbose} = 5;
|
||||||
|
|
||||||
@ -100,6 +103,10 @@ sub pilight_switch_Parse($$)
|
|||||||
my $lh = $modules{pilight_switch}{defptr}{$protocol}{$n};
|
my $lh = $modules{pilight_switch}{defptr}{$protocol}{$n};
|
||||||
next if ( !defined($lh->{ID}) || !defined($lh->{UNIT}) );
|
next if ( !defined($lh->{ID}) || !defined($lh->{UNIT}) );
|
||||||
if ($lh->{ID} eq $id && $lh->{UNIT} eq $unit) {
|
if ($lh->{ID} eq $id && $lh->{UNIT} eq $unit) {
|
||||||
|
if (defined($lh->{SYSCODE})) { #protocol daycom needs three id's id, systemcode, unit
|
||||||
|
next if (@args<=0);
|
||||||
|
next if ($lh->{SYSCODE} ne $args[0]);
|
||||||
|
}
|
||||||
$chash = $lh;
|
$chash = $lh;
|
||||||
last;
|
last;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user