From 1b04b298799965636f895c65d0acc84296b25d4d Mon Sep 17 00:00:00 2001 From: telekatz <> Date: Tue, 24 May 2016 16:01:18 +0000 Subject: [PATCH] 30_DUOFERN: add set time/reset command; bug fix smoke detector git-svn-id: https://svn.fhem.de/fhem/trunk@11511 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/30_DUOFERN.pm | 46 ++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/fhem/FHEM/30_DUOFERN.pm b/fhem/FHEM/30_DUOFERN.pm index b8c85a744..e8bf446ff 100644 --- a/fhem/FHEM/30_DUOFERN.pm +++ b/fhem/FHEM/30_DUOFERN.pm @@ -151,6 +151,8 @@ my %commands = ( "stairwellFunction" => {"on" => "081400FD000000", "off" => "081400FE000000"}, "stairwellTime" => {"value2" => "08140000wwww00"}, + "reset" => {"settings" => "0815CB00000000", + "full" => "0815CC00000000"}, "10minuteAlarm" => {"on" => "081700FD000000", "off" => "081700FE000000"}, "automaticClosing" => {"off" => "08180000000000", @@ -217,6 +219,7 @@ my %commandsStatus = ( my %setsDefaultRollerShutter = ( "getStatus:noArg" => "", + "reset:settings,full" => "", "up:noArg" => "", "down:noArg" => "", "stop:noArg" => "", @@ -271,6 +274,7 @@ my %setsBlinds = ( my %setsSwitchActor = ( "getStatus:noArg" => "", + "reset:settings,full" => "", "dawnAutomatic:on,off" => "", "duskAutomatic:on,off" => "", "manualMode:on,off" => "", @@ -290,6 +294,7 @@ my %setsSwitchActor = ( my %setsUmweltsensor = ( "getStatus:noArg" => "", + "reset:settings,full" => "", "getWeather:noArg" => "", "getTime:noArg" => "", ); @@ -304,6 +309,7 @@ my %setsUmweltsensor00 = ( "latitude" => "", "longitude" => "", "timezone" => "", + "time:noArg" => "", "triggerDawn" => "", "triggerDusk" => "", "triggerRain:on,off" => "", @@ -325,6 +331,7 @@ my %setsUmweltsensor01 = ( my %setsSX5 = ( "getStatus:noArg" => "", + "reset:settings,full" => "", "up:noArg" => "", "down:noArg" => "", "stop:noArg" => "", @@ -344,6 +351,7 @@ my %setsSX5 = ( my %setsDimmer = ( "getStatus:noArg" => "", + "reset:settings,full" => "", "level:slider,0,1,100" => "", "on:noArg" => "", "off:noArg" => "", @@ -370,6 +378,7 @@ my $duoStatusRequest = "0DFFnn400000000000000000000000000000yyyyyy01"; my $duoCommand = "0Dccnnnnnnnnnnnnnn000000000000zzzzzzyyyyyy00"; my $duoWeatherConfig = "0D001B400000000000000000000000000000yyyyyy00"; my $duoWeatherWriteConfig = "0DFF1Brrnnnnnnnnnnnnnnnnnnnn00000000yyyyyy00"; +my $duoSetTime = "0D0110800001mmmmmmmmnnnnnn0000000000yyyyyy00"; ##################################### sub @@ -463,6 +472,22 @@ DUOFERN_Set($@) delete $hash->{READINGS}{configModified}; return undef; + } elsif ($cmd eq "time") { + my $buf = $duoSetTime; + + my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime; + + $wday = ($wday==0 ? 7 : $wday-1); + my $m = sprintf("%02d%02d%02d%02d", $year-100, $month+1,$wday, $mday); + my $n = sprintf("%02d%02d%02d", $hour, $min, $sec); + + $buf =~ s/mmmmmmmm/$m/; + $buf =~ s/nnnnnn/$n/; + $buf =~ s/yyyyyy/$code/; + + IOWrite( $hash, $buf ); + return undef; + } elsif (exists $wCmds{$cmd}) { return "This command is not allowed for this device." if ($hash->{CODE} !~ /^69....00/); @@ -1120,17 +1145,17 @@ DUOFERN_Parse($$) #Wandtaster, Funksender UP, Sensoren } elsif ($msg =~ m/0FFF07.{38}/) { - if($msg =~ m/0FFF070801FF.*/) { + if($msg =~ m/0FFF0708.*/) { readingsSingleUpdate($hash, "event", "beginnSun", 1); - } elsif($msg =~ m/0FFF070901FF.*/) { + } elsif($msg =~ m/0FFF0709.*/) { readingsSingleUpdate($hash, "event", "dusk", 1); - } elsif($msg =~ m/0FFF070A0100.*/) { + } elsif($msg =~ m/0FFF070A.*/) { readingsSingleUpdate($hash, "event", "endSun", 1); - } elsif($msg =~ m/0FFF071301FF.*/) { + } elsif($msg =~ m/0FFF0713.*/) { readingsSingleUpdate($hash, "event", "dawn", 1); - } elsif($msg =~ m/0FFF071E01FF.*/) { + } elsif($msg =~ m/0FFF071E.*/) { readingsSingleUpdate($hash, "state", "off", 1); - } elsif($msg =~ m/0FFF071F01FF.*/) { + } elsif($msg =~ m/0FFF071F.*/) { readingsSingleUpdate($hash, "state", "on", 1); } elsif($msg =~ m/0FFF07(1A|18|19|01|02|03).*/) { @@ -1468,7 +1493,11 @@ DUOFERN_StatusTimeout($) the roller shutter will move to the sunPosition or a switch/dimming actor will shut off.
- +
  • reset [settings|full]
    + settings: Clear all settings and endpoints of the actor.
    + full: Complete reset of the actor including pairs. +

  • + Roller shutter actor commands: