2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 18:59:33 +00:00

MAX: add removeDevice for set

git-svn-id: https://svn.fhem.de/fhem/trunk@2151 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
mgehre 2012-11-21 19:57:25 +00:00
parent 0b966a5c70
commit ae0a676435
2 changed files with 22 additions and 3 deletions

View File

@ -18,6 +18,7 @@ sub MAXLAN_SimpleWrite(@);
sub MAXLAN_Poll($);
sub MAXLAN_SendDeviceCmd($$);
sub MAXLAN_RequestConfiguration($$);
sub MAXLAN_RemoveDevice($$);
my %device_types = (
0 => "Cube",
@ -90,6 +91,7 @@ MAXLAN_Define($$)
$hash->{INTERVAL} = @a > 3 ? $a[3] : $defaultPollInterval;
#This interface is shared with 14_CUL_MAX.pm
$hash->{SendDeviceCmd} = \&MAXLAN_SendDeviceCmd;
$hash->{RemoveDevice} = \&MAXLAN_RemoveDevice;
MAXLAN_Connect($hash);
@ -429,6 +431,8 @@ MAXLAN_Parse($$)
my ($len,$addr,$devicetype,$groupid,$firmware,$testresult,$serial) = unpack("CH6CCCCa[10]", $bindata);
Dispatch($hash, "MAX,define,$addr,$device_types{$devicetype},$serial,$groupid", {RAWMSG => $rmsg});
return "Invalid C: response, len does not match" if($len != length($bindata)-1);
#devicetype: Cube = 0, HeatingThermostat = 1, HeatingThermostatPlus = 2, WallMountedThermostat = 3, ShutterContact = 4, PushButton = 5
#Seems that ShutterContact does not have any configdata
if($devicetype == 0){#Cube
@ -635,7 +639,7 @@ MAXLAN_SendDeviceCmd($$)
return MAXLAN_ExpectAnswer($hash, "S:");
}
#Resets the cube (what does that acutally do? Factory reset?)
#Resets the cube, i.e. does a factory reset. All pairings will be lost.
sub
MAXLAN_RequestReset($)
{
@ -644,6 +648,15 @@ MAXLAN_RequestReset($)
MAXLAN_ExpectAnswer($hash, "A:");
}
#Remove the device from the cube, i.e. deletes the pairing
sub
MAXLAN_RemoveDevice($$)
{
my ($hash,$addr) = @_;
MAXLAN_Write($hash,"t:1,1,".encode_base64(pack("H6",$addr),""));
MAXLAN_ExpectAnswer($hash, "A:");
}
1;
=pod

View File

@ -95,8 +95,10 @@ MAX_Set($@)
$ctrlmode = 0; #auto
#TODO: auto mode with temperature is also possible
} elsif($args[0] eq "eco") {
return "No ecoTemperature defined" if(!exists($hash->{ecoTemperature}));
$temperature = $hash->{ecoTemperature};
} elsif($args[0] eq "comfort") {
return "No comfortTemperature defined" if(!exists($hash->{comfortTemperature}));
$temperature = $hash->{comfortTemperature};
} elsif($args[0] eq "on") {
$temperature = 30.5;
@ -152,13 +154,15 @@ MAX_Set($@)
my $payload = pack("CCCCCCH6C"."CCCCCCC",0x00,0x00,17,0x00,0x00,0x00,$hash->{addr},0x00,
$comfort,$eco,$max,$min,$offset,$windowOpenTemp,$windowOpenTime);
return ($hash->{IODev}{SendDeviceCmd})->($hash->{IODev},$payload);
}elsif($setting eq "removeDevice") {
return ($hash->{IODev}{RemoveDevice})->($hash->{IODev},$hash->{addr});
}else{
if($hash->{type} eq "HeatingThermostat") {
#Create numbers from 4.5 to 30.5
my $templist = join(",",map { $_/2 } (9..61));
return "Unknown argument $setting, choose one of desiredTemperature:eco,comfort,$templist ecoTemperature comfortTemperature temperatureOffset maximumTemperature minimumTemperature windowOpenTemperature windowOpenDuration groupid";
return "Unknown argument $setting, choose one of desiredTemperature:eco,comfort,$templist ecoTemperature comfortTemperature temperatureOffset maximumTemperature minimumTemperature windowOpenTemperature windowOpenDuration groupid removeDevice";
} else {
return "Unknown argument $setting";
return "Unknown argument $setting, choose one of groupid removeDevice";
}
}
}
@ -326,6 +330,8 @@ MAX_Parse($$)
<li>groupid &lt;id&gt;<br>
For devices of type HeatingThermostat only.
Writes the given group id the device's memory. It is usually not necessary to change this.</li>
<li>removeDevice<br>
Removes the device from the cube, i.e. deletes the pairing.</li>
<li>ecoTemperature &lt;value&gt;<br>
For devices of type HeatingThermostat only. Writes the given eco temperature to the device's memory. It can be activated by pressing the rightmost physical button on the device.</li>
<li>comfortTemperature &lt;value&gt;<br>