19 Commits

Author SHA1 Message Date
Marc Hoppe
018babc89a Merge remote-tracking branch 'origin/master' into eo_merged
Conflicts:
	FHEM/10_EnOcean.pm
2013-03-28 13:20:36 +01:00
wherzig
c1d6b998e1 correction for MS14A
git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@2996 2b470e98-0d58-463d-a4d8-8e2adae1ed80
2013-03-27 19:17:42 +00:00
wherzig
f6c864232f correction TRX_ELSE code 14
git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@2995 2b470e98-0d58-463d-a4d8-8e2adae1ed80
2013-03-27 18:27:09 +00:00
rudolfkoenig
0adb9499fd IsDisabled added (Dirk)
git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@2994 2b470e98-0d58-463d-a4d8-8e2adae1ed80
2013-03-27 08:16:07 +00:00
justme1968
347bf0c500 fixed favicon
git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@2993 2b470e98-0d58-463d-a4d8-8e2adae1ed80
2013-03-26 20:54:06 +00:00
justme1968
92c5f1e1d2 alphabetical sorting of 'Helper modules' list
moved LigthScene from Devices to 'Helper modules' list
changed xmllist to be consistent lower case in 'Fhem commands' list
use local favicon also for _de


git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@2992 2b470e98-0d58-463d-a4d8-8e2adae1ed80
2013-03-26 20:46:50 +00:00
mgehre
40db2f535f MAX: fix missing my
git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@2991 2b470e98-0d58-463d-a4d8-8e2adae1ed80
2013-03-26 14:50:10 +00:00
rudolfkoenig
ba9ba5dee0 Doku fix, thanks to Hannomag
git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@2990 2b470e98-0d58-463d-a4d8-8e2adae1ed80
2013-03-26 13:11:37 +00:00
rudolfkoenig
fe0715e3ee Patch from justme1968, see http://forum.fhem.de/index.php?t=post&reply_to=70364&rid=8
git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@2989 2b470e98-0d58-463d-a4d8-8e2adae1ed80
2013-03-26 09:01:47 +00:00
mgehre
a42816e8aa MAX: fix temperatures above 25.5 degree
git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@2988 2b470e98-0d58-463d-a4d8-8e2adae1ed80
2013-03-26 04:48:38 +00:00
Marc Hoppe
54518d5d6a Merge remote-tracking branch 'origin/master' into eo_merged
Conflicts:
	FHEM/10_EnOcean.pm
2013-02-08 19:47:10 +01:00
Marc Hoppe
53484b0d1c Merge remote-tracking branch 'origin/master' into eo_merged 2013-01-26 20:08:18 +01:00
Marc Hoppe
1804e8127a Merge remote-tracking branch 'origin/master' into eo_merged
Conflicts:
	FHEM/10_EnOcean.pm
2013-01-05 22:57:41 +01:00
Marc Hoppe
e9b166d278 Merge remote-tracking branch 'origin/master' into eo_merged
Conflicts:
	FHEM/10_EnOcean.pm
	docs/commandref.html
2012-12-26 14:48:21 +01:00
Marc Hoppe
e6884da3dd commandref: Enocean changes 2012-07-17 22:17:38 +02:00
Marc Hoppe
7c5599a8c4 Enocean: eltakoRoll 2012-07-17 22:17:38 +02:00
Marc Hoppe
fb81d977e7 Enocean: eltakoDimmer: new commands 'dimup', 'dimdown' and 'on'/'off' new attr 'dimTime' 2012-07-17 22:17:38 +02:00
Marc Hoppe
62b4c27dc2 EnOcean: if there is an 'attr' 'subId' use it for sending data to an Actuator
There is no subType 'dimmer' and 'dimmctrl' anymore these are replaced by 'eltakoDimmer'.
 The commands supported are 'dimto' and 'teach'
 The readings which will be set are 'state' and 'value'
2012-07-17 22:17:38 +02:00
Marc Hoppe
0956efc439 00_TCM: Read Base-Id of Tcm on start 2012-07-17 22:17:38 +02:00
10 changed files with 154 additions and 57 deletions

View File

@@ -13,7 +13,7 @@ package main;
# EnOcean Serial Protocol 3 (ESP3) (for the TCM310)
# TODO:
# TODO:
# Check BSC Temp
# Check Stick Temp
# Check Stick WriteRadio
@@ -78,10 +78,21 @@ TCM_Define($$)
$attr{$name}{dummy} = 1;
return undef;
}
$hash->{DeviceName} = $dev;
$hash->{MODEL} = $model;
my $ret = DevIo_OpenDev($hash, 0, undef);
if($hash->{STATE} eq "opened") {
# Read Base-Id of Enocean-Module
my $cnt=0;
do { # this does not always work, so we try several times
my $answer=TCM_Get($hash, ($name, "idbase") );
my @fields=split(/[=,]/, $answer);
$hash->{BASEID}=$fields[1];
$cnt++;
} while ($cnt<3 and $hash->{BASEID} eq "");
}
return $ret;
}
@@ -592,7 +603,7 @@ TCM_ReadAnswer($$)
if($^O =~ m/Win/ && $hash->{USBDev}) {
$hash->{USBDev}->read_const_time($to*1000); # set timeout (ms)
# Read anstatt input sonst funzt read_const_time nicht.
$buf = $hash->{USBDev}->read(999);
$buf = $hash->{USBDev}->read(999);
return ("$name Timeout reading answer for $arg", undef)
if(length($buf) == 0);

View File

@@ -2965,13 +2965,13 @@ FW_htmlEscape($)
attr lamp webCmd on:off:on-for-timer 10<br>
define d1 dummy<br>
attr d1 webCmd state<br>
attr d1 set setList state:on,off<br>
attr d1 setList state:on,off<br>
define d2 dummy<br>
attr d2 webCmd state<br>
attr d2 set setList state:slider,0,1,10<br>
attr d2 setList state:slider,0,1,10<br>
define d3 dummy<br>
attr d3 webCmd state<br>
attr d3 set setList state:time<br>
attr d3 setList state:time<br>
</ul>
Note: this is an attribute for the displayed device, not for the FHEMWEB
instance.

View File

@@ -12,6 +12,7 @@ sub EnOcean_Initialize($);
sub EnOcean_Parse($$);
sub EnOcean_Set($@);
sub EnOcean_MD15Cmd($$$);
sub EnOcean_GetMyDeviceId($);
my %EnO_rorgname = ("F6"=>"switch", # org 05, RPS
"D5"=>"contact", # org 06, 1BS
@@ -175,6 +176,7 @@ EnOcean_Initialize($)
$hash->{UndefFn} = "EnOcean_Undef";
$hash->{ParseFn} = "EnOcean_Parse";
$hash->{SetFn} = "EnOcean_Set";
$hash->{AttrFn} = "EnOcean_Attr";
$hash->{AttrList} = "IODev do_not_notify:1,0 ignore:0,1 dummy:0,1 " .
"showtime:1,0 loglevel:0,1,2,3,4,5,6 ".
"model:".join(",",@EnO_models)." ".
@@ -191,7 +193,28 @@ EnOcean_Initialize($)
return undef;
}
# Define
# ---------------------------------------------
sub EnOcean_Attr($)
{
my @a = @_;
my $name= $a[1];
my $ll2 = GetLogLevel($name, 2);
if($a[2] eq "subType") {
Log $ll2, "EO_Attr subtype";
if($a[3] eq "eltakoDimmer") {
Log $ll2, "EO_Attr subtype dimmer";
$attr{$name}{eventMap}="B0:on B1:off"
}
}
return undef;
}
#############################
sub
EnOcean_Define($$)
{
@@ -273,8 +296,9 @@ EnOcean_Set($@)
my $dimVal=$hash->{READINGS}{dimValue}{VAL};
if($cmd eq "teach") {
#my $idSrc=EnOcean_GetMyDeviceId($hash);
my $data=sprintf("A502000000%s00", $subDef);
Log $ll2, "EnOcean: set $name $cmd";
Log $ll2, "EnOcean: set $name $cmd DefID: $hash->{DEF} SenderID: $subDef";
# len:000a optlen:00 pakettype:1(radio)
IOWrite($hash, "000A0001", $data);
@@ -349,14 +373,37 @@ EnOcean_Set($@)
if($sendDimCmd) {
$updateState = 0;
$a[0]="on";
if($dimVal > 100) { $dimVal=100; }
if($dimVal <= 0) { $dimVal=0; $onoff=0; $a[0]="off"; }
if($dimVal > 100) { $dimVal=100; }
if($dimVal <= 0) { $dimVal=0; $onoff=0; $a[0]="off" }
ReadingsVal($name, "dimValue", $dimVal);
# EEP: A5/38/08 Central Command ->Typ 0x02: Dimming
#my $idSrc=EnOcean_GetMyDeviceId($hash);
#my $data=sprintf("A502%02X%02X%02X%s00", $dimVal, $time, $onoff|0x08, $idSrc);
my $data=sprintf("A502%02X%02X%02X%s00",
$dimVal, $dimTime, $onoff|0x08, $subDef);
IOWrite($hash, "000A0001", $data);
Log $ll2, "EnOcean: set $name $cmd $dimVal";
}
###########################
# } elsif($st eq "eltakoRoll") {
# if($cmd eq "teach") {
# my $data=sprintf("A5FFF80D80%s00", $hash->{DEF});
# Log $ll2, "eltakoRollCtrl.Teach: " . $data;
# IOWrite($hash, "000A0001", $data); # len:000a optlen:00 pakettype:1(radio)
# } else {
# my %eltakoRollCtrlCommands = ( down=>0x02, up=>0x01, stop=>0x00 );
# my $usage = "Usage: (" . join("|", sort keys %eltakoRollCtrlCommands) . ")";
# my $rollcmd= $eltakoRollCtrlCommands{$cmd};
# return $usage if(!defined($rollcmd));
# my $time=AttrVal($name, "time", 0);
# # EEP: A5/3F/7F Universal ???
# my $idSrc=EnOcean_GetMyDeviceId($hash);
# my $data=sprintf("A5%02X%02X%02X%02X%s00", 0, $time, $rollcmd, 0x08, $idSrc);
# IOWrite($hash, "000A0001", $data);
# Log $ll2, "eltakoRoll.$cmd" . $data;
# }
#
} elsif($st eq "eltakoShutter") {
# Shutter
my $shutTime=AttrVal($name, "shutTime", 0);
@@ -364,7 +411,7 @@ EnOcean_Set($@)
my $shutCmd = 0x00;
if($cmd eq "teach") {
my $data=sprintf("A5FFF80D80%s00", $subDef);
Log $ll2, "EnOcean: set $name $cmd";
Log $ll2, "EnOcean: set $name $cmd DefID: $hash->{DEF} SenderID: $subDef";
# len:000a optlen:00 pakettype:1(radio)
IOWrite($hash, "000A0001", $data);
@@ -686,7 +733,7 @@ EnOcean_Parse($$)
return "";
}
my $hash = $modules{EnOcean}{defptr}{$id};
my $hash = $modules{EnOcean}{defptr}{$id};
if(!$hash) {
Log 3, "EnOcean Unknown device with ID $id, please define it";
return "UNDEFINED EnO_${rorgname}_$id EnOcean $id";
@@ -817,7 +864,7 @@ EnOcean_Parse($$)
if("$fn.$tp" eq "20.01" && $iohash->{pair}) { # MD15
select(undef, undef, undef, 0.1); # max 10 Seconds
EnOcean_A5Cmd($hash, "800800F0", "00000000");
EnOcean_A5Cmd($hash, "800800F0", EnOcean_GetMyDeviceId($hash));
select(undef, undef, undef, 0.5);
EnOcean_MD15Cmd($hash, $name, 128); # 128 == 20 degree C
}
@@ -1523,7 +1570,7 @@ EnOcean_MD15Cmd($$$)
}
if($msg) {
select(undef, undef, undef, 0.2);
EnOcean_A5Cmd($hash, $msg, "00000000");
EnOcean_A5Cmd($hash, $msg, EnOcean_GetMyDeviceId($hash));
if($cmd eq "initialize") {
delete($defs{$name}{READINGS}{CMD});
delete($defs{$name}{READINGS}{$cmd});
@@ -1536,8 +1583,8 @@ EnOcean_MD15Cmd($$$)
sub
EnOcean_A5Cmd($$$)
{
my ($hash, $msg, $org) = @_;
IOWrite($hash, "000A0701", # varLen=0A optLen=07 msgType=01=radio,
my ($hash, $msg, $org) = @_;
IOWrite($hash, "000A0701", # varLen=0A optLen=07 msgType=01=radio,
sprintf("A5%s%s0001%sFF00",$msg,$org,$hash->{DEF}));
# type=A5 msg:4 senderId:4 status=00 subTelNum=01 destId:4 dBm=FF Security=00
}
@@ -1551,6 +1598,26 @@ EnOcean_Undef($$)
return undef;
}
# ---------------------------------------------
#
# compose the Src-Id for a command to send
#
sub EnOcean_GetMyDeviceId($)
{
my ($hash) = @_;
my $myId=0; # default: use Device-ID of EUL
my $name = $hash->{NAME};
my $baseId=hex($hash->{IODev}{BASEID}) if(defined $hash->{IODev}{BASEID});
my $subId = AttrVal($name, "subId", "");
if(defined $baseId and defined $subId) {
# if there is a base-id an a subid -> use this combination
$myId=sprintf("%08X", $baseId | $subId);
}
return $myId;
}
1;
=pod

View File

@@ -617,16 +617,16 @@ MAX_Parse($$)
}
}elsif($msgtype ~~ ["WallThermostatState", "WallThermostatControl" ]){
my ($bits2,$displayActualTemperature,$desiredTemperature,$null1,$heaterTemperature,$null2,$temperature);
my ($bits2,$displayActualTemperature,$desiredTemperatureRaw,$null1,$heaterTemperature,$null2,$temperature);
if( length($args[0]) == 4 ) { #WallThermostatControl
#This is the message that WallMountedThermostats send to paired HeatingThermostats
($desiredTemperature,$temperature) = unpack("CC",pack("H*",$args[0]));
($desiredTemperatureRaw,$temperature) = unpack("CC",pack("H*",$args[0]));
} elsif( length($args[0]) >= 6 and length($args[0]) <= 14) { #WallThermostatState
#len=14: This is the message we get from the Cube over MAXLAN and which is probably send by WallMountedThermostats to the Cube
#len=12: Payload of an Ack message, last field "temperature" is missing
#len=10: Received by MAX_CUL as WallThermostatState
#len=6 : Payload of an Ack message, last four fields (especially $heaterTemperature and $temperature) are missing
($bits2,$displayActualTemperature,$desiredTemperature,$null1,$heaterTemperature,$null2,$temperature) = unpack("aCCCCCC",pack("H*",$args[0]));
($bits2,$displayActualTemperature,$desiredTemperatureRaw,$null1,$heaterTemperature,$null2,$temperature) = unpack("aCCCCCC",pack("H*",$args[0]));
#$heaterTemperature/10 is the temperature measured by a paired HeatingThermostat
#we don't do anything with it here, because this value also appears as temperature in the HeatingThermostat's ThermostatState message
my $mode = vec($bits2, 0, 2); #
@@ -651,9 +651,9 @@ MAX_Parse($$)
Log 2, "Invalid $msgtype packet"
}
$desiredTemperature = ($desiredTemperature &0x7F)/2.0; #convert to degree celcius
my $desiredTemperature = ($desiredTemperatureRaw &0x7F)/2.0; #convert to degree celcius
if(defined($temperature)) {
$temperature = ((($desiredTemperature &0x80)<<1) + $temperature)/10; # auch Temperaturen über 25.5 °C werden angezeigt !
$temperature = ((($desiredTemperatureRaw &0x80)<<1) + $temperature)/10; # auch Temperaturen über 25.5 °C werden angezeigt !
Log GetLogLevel($shash->{NAME}, 5), "desiredTemperature $desiredTemperature, temperature $temperature";
readingsBulkUpdate($shash, "temperature", sprintf("%2.1f",$temperature));
} else {

View File

@@ -44,7 +44,7 @@ TRX_ELSE_Initialize($)
{
my ($hash) = @_;
$hash->{Match} = "^..(0[0-f]|1[4-f]|2[1-f]|3[0-f]|4[0-f]|53|58|59|5b|5c|5e|5f|[6-f][0-f]).*";
$hash->{Match} = "^..(0[0-f]|1[5-f]|2[1-f]|3[0-f]|4[0-f]|53|58|59|5b|5c|5e|5f|[6-f][0-f]).*";
$hash->{DefFn} = "TRX_ELSE_Define";
$hash->{UndefFn} = "TRX_ELSE_Undef";
$hash->{ParseFn} = "TRX_ELSE_Parse";

View File

@@ -2,7 +2,6 @@
##############################################################################
#
# 46_TRX_LIGHT.pm
#
# FHEM module for lighting protocols:
# X10 lighting, ARC, ELRO AB400D, Waveman, Chacon EMW200,
# IMPULS, AC (KlikAanKlikUit, NEXA, CHACON, HomeEasy UK),
@@ -104,7 +103,7 @@ TRX_LIGHT_Initialize($)
$light_device_c2b{$light_device_codes{$k}->[0]} = $k;
}
$hash->{Match} = "^..(10|11|12|13|14).*"; # SVN please update!!
$hash->{Match} = "^..(10|11|12|13|14).*";
$hash->{SetFn} = "TRX_LIGHT_Set";
$hash->{DefFn} = "TRX_LIGHT_Define";
$hash->{UndefFn} = "TRX_LIGHT_Undef";
@@ -525,13 +524,8 @@ sub TRX_LIGHT_parse_X10 {
my $sensor = "";
if ($device_type eq "MS14A") {
# for ms14a behave like x10, but flip second deviceid
# for ms14a behave like x10
$device_type = "X10";
if ($firstdevice == 1) {
$command = ($command eq "on") ? "alert" : "normal" ;
} else {
$command = ($command eq "on") ? "off" : "on" ;
}
}
if (lc($def->{TRX_LIGHT_devicelog}) eq "window" || lc($def->{TRX_LIGHT_devicelog}) eq "door") {

View File

@@ -74,6 +74,13 @@ BlockingCall($$@)
}
# Child here
foreach my $d (sort keys %defs) { # Close all open TCP-Server sockets
my $h = $defs{$d};
next if(!$h->{SERVERSOCKET});
TcpServer_Close($h);
}
no strict "refs";
my $ret = &{$blockingFn}($arg);
use strict "refs";

View File

@@ -1,5 +1,4 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
@@ -7,7 +6,7 @@
<title>fhem reference</title>
<link rel="stylesheet" type="text/css" href="../www/pgm2/style.css" />
<meta http-equiv="Content-type" content="text/html;charset=ISO-8859-1"/>
<link rel="shortcut icon" href="favicon.ico"/>
<link rel="shortcut icon" href="/fhem/icons/favicon.ico"/>
</head>
@@ -62,7 +61,7 @@
<a href="#trigger">trigger</a> &nbsp;
<a href="#update">update</a> &nbsp;
<a href="#usb">usb</a> &nbsp;
<a href="#XmlList">xmllist</a> &nbsp;
<a href="#xmllist">xmllist</a> &nbsp;
</ul>
@@ -76,26 +75,27 @@
<br>
<b>Helper modules</b>
<ul>
<a href="#at">at</a> &nbsp;
<a href="#autocreate">autocreate</a> &nbsp;
<a href="#average">average</a> &nbsp;
<a href="#Calendar">Calendar</a> &nbsp;
<a href="#DbLog">DbLog</a> &nbsp;
<a href="#dewpoint">dewpoint</a> &nbsp;
<a href="#dummy">dummy</a> &nbsp;
<a href="#FHEM2FHEM">FHEM2FHEM</a> &nbsp;
<a href="#FHEMWEB">FHEMWEB</a> &nbsp;
<a href="#FB_CALLMONITOR">FB_CALLMONITOR</a> &nbsp;
<a href="#FileLog">FileLog</a> &nbsp;
<a href="#FLOORPLAN">FLOORPLAN</a> &nbsp;
<a href="#PachLog">PachLog</a> &nbsp;
<a href="#PRESENCE">PRESENCE</a> &nbsp;
<a href="#PID">PID</a> &nbsp;
<a href="#SUNRISE_EL">SUNRISE_EL</a> &nbsp;
<a href="#at">at</a> &nbsp;
<a href="#autocreate">autocreate</a> &nbsp;
<a href="#average">average</a> &nbsp;
<a href="#dewpoint">dewpoint</a> &nbsp;
<a href="#dummy">dummy</a> &nbsp;
<a href="#holiday">holiday</a> &nbsp;
<a href="#HCS">HCS</a> &nbsp;
<a href="#Heating_Control">Heating_Control</a> &nbsp;
<a href="#holiday">holiday</a> &nbsp;
<a href="#LightScene">LightScene</a> &nbsp;
<a href="#notify">notify</a> &nbsp;
<a href="#PID">PID</a> &nbsp;
<a href="#PRESENCE">PRESENCE</a> &nbsp;
<a href="#PachLog">PachLog</a> &nbsp;
<a href="#SUNRISE_EL">SUNRISE_EL</a> &nbsp;
<a href="#sequence">sequence</a> &nbsp;
<a href="#structure">structure</a> &nbsp;
<a href="#telnet">telnet</a> &nbsp;

View File

@@ -1,9 +1,12 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<html>
<head>
<title>FHEM reference</title>
<link rel="stylesheet" type="text/css" href="../www/pgm2/style.css" />
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<link rel="shortcut icon" href="http://fhem.de/favicon.ico">
<link rel="shortcut icon" href="/fhem/icons/favicon.ico"/>
</head>
@@ -58,7 +61,7 @@
<a href="#trigger">trigger</a> &nbsp;
<a href="#update">update</a> &nbsp;
<a href="#usb">usb</a> &nbsp;
<a href="#XmlList">XmlList</a> &nbsp;
<a href="#xmllist">xmllist</a> &nbsp;
</ul>
@@ -72,26 +75,27 @@
<br>
<b>Hilfs (Erweiterungs-) Module</b>
<ul>
<a href="#at">at</a> &nbsp;
<a href="#autocreate">autocreate</a> &nbsp;
<a href="#average">average</a> &nbsp;
<a href="#Calendar">Calendar</a> &nbsp;
<a href="#DbLog">DbLog</a> &nbsp;
<a href="#dewpoint">dewpoint</a> &nbsp;
<a href="#dummy">dummy</a> &nbsp;
<a href="#FHEM2FHEM">FHEM2FHEM</a> &nbsp;
<a href="#FHEMWEB">FHEMWEB</a> &nbsp;
<a href="#FB_CALLMONITOR">FB_CALLMONITOR</a> &nbsp;
<a href="#FileLog">FileLog</a> &nbsp;
<a href="#FLOORPLAN">FLOORPLAN</a> &nbsp;
<a href="#PachLog">PachLog</a> &nbsp;
<a href="#PID">PID</a> &nbsp;
<a href="#PRESENCE">PRESENCE</a> &nbsp;
<a href="#SUNRISE_EL">SUNRISE_EL</a> &nbsp;
<a href="#at">at</a> &nbsp;
<a href="#autocreate">autocreate</a> &nbsp;
<a href="#average">average</a> &nbsp;
<a href="#dewpoint">dewpoint</a> &nbsp;
<a href="#dummy">dummy</a> &nbsp;
<a href="#holiday">holiday</a> &nbsp;
<a href="#HCS">HCS</a> &nbsp;
<a href="#Heating_Control">Heating_Control</a> &nbsp;
<a href="#holiday">holiday</a> &nbsp;
<a href="#LightScene">LightScene</a> &nbsp;
<a href="#notify">notify</a> &nbsp;
<a href="#PID">PID</a> &nbsp;
<a href="#PRESENCE">PRESENCE</a> &nbsp;
<a href="#PachLog">PachLog</a> &nbsp;
<a href="#SUNRISE_EL">SUNRISE_EL</a> &nbsp;
<a href="#sequence">sequence</a> &nbsp;
<a href="#structure">structure</a> &nbsp;
<a href="#telnet">telnet</a> &nbsp;

14
fhem.pl
View File

@@ -65,6 +65,7 @@ sub IOWrite($@);
sub InternalTimer($$$$);
sub IsDummy($);
sub IsIgnored($);
sub IsDisabled($);
sub LoadModule($);
sub Log($$);
sub OpenLogfile($);
@@ -516,6 +517,19 @@ IsIgnored($)
return 0;
}
sub
IsDisabled($)
{
my $devname = shift;
if($devname &&
defined($attr{$devname}) &&
defined($attr{$devname}{disable})) {
Log 4, "Disabled $devname";
return 1;
}
return 0;
}
################################################
sub