2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 03:06:37 +00:00

FULLY: New commands and bugfixes

git-svn-id: https://svn.fhem.de/fhem/trunk@17221 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
zap 2018-08-28 06:16:32 +00:00
parent 4a7836b664
commit 7df260430e
2 changed files with 55 additions and 4 deletions

View File

@ -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.
- change: 89_FULLY: Set start URL and bug fixes
- bugfix: 49_SSCam: V7.0.1, enable/disable issue - bugfix: 49_SSCam: V7.0.1, enable/disable issue
(forum.fhem.de/index.php/topic,45671.msg830869.html#msg830869) (forum.fhem.de/index.php/topic,45671.msg830869.html#msg830869)
- change: 98_DOIFtools: add help labels in commandref for attr, set and get - change: 98_DOIFtools: add help labels in commandref for attr, set and get

View File

@ -1,6 +1,6 @@
############################################################################## ##############################################################################
# #
# 89_FULLY.pm 0.7 # 89_FULLY.pm 0.8
# #
# $Id$ # $Id$
# #
@ -24,6 +24,7 @@ sub FULLY_Shutdown ($);
sub FULLY_Set ($@); sub FULLY_Set ($@);
sub FULLY_Get ($@); sub FULLY_Get ($@);
sub FULLY_Attr ($@); sub FULLY_Attr ($@);
sub FULLY_Detail ($@);
sub FULLY_UpdateDeviceInfo ($); sub FULLY_UpdateDeviceInfo ($);
sub FULLY_Execute ($$$$); sub FULLY_Execute ($$$$);
sub FULLY_ScreenOff ($); sub FULLY_ScreenOff ($);
@ -34,10 +35,24 @@ sub FULLY_Abort ($);
sub FULLY_UpdateReadings ($$); sub FULLY_UpdateReadings ($$);
sub FULLY_Ping ($$); sub FULLY_Ping ($$);
my $FULLY_VERSION = "0.7"; my $FULLY_VERSION = "0.8";
my $FULLY_TIMEOUT = 4; my $FULLY_TIMEOUT = 4;
my $FULLY_POLL_INTERVAL = 3600; my $FULLY_POLL_INTERVAL = 3600;
my $FULLY_FHEM_COMMAND = qq(
function SendRequest(FHEM_Address, Devicename, Command) {
var Port = "8085"
var url = "http://" + FHEM_Address + ":" + Port + "/fhem?XHR=1&cmd." + Devicename + "=" + Command;
var req = new XMLHttpRequest();
req.open("GET", url);
req.send(null);
req = null;
}
);
################################################## ##################################################
# Initialize module # Initialize module
################################################## ##################################################
@ -52,6 +67,7 @@ sub FULLY_Initialize ($)
$hash->{GetFn} = "FULLY_Get"; $hash->{GetFn} = "FULLY_Get";
$hash->{AttrFn} = "FULLY_Attr"; $hash->{AttrFn} = "FULLY_Attr";
$hash->{ShutdownFn} = "FULLY_Shutdown"; $hash->{ShutdownFn} = "FULLY_Shutdown";
$hash->{FW_detailFn} = "FULLY_Detail";
$hash->{parseParams} = 1; $hash->{parseParams} = 1;
$hash->{AttrList} = "pingBeforeCmd:0,1,2 pollInterval requestTimeout repeatCommand:0,1,2 " . $hash->{AttrList} = "pingBeforeCmd:0,1,2 pollInterval requestTimeout repeatCommand:0,1,2 " .
@ -77,10 +93,11 @@ sub FULLY_Define ($$)
$hash->{host} = $$a[2]; $hash->{host} = $$a[2];
$hash->{version} = $FULLY_VERSION; $hash->{version} = $FULLY_VERSION;
$hash->{onForTimer} = 'off'; $hash->{onForTimer} = 'off';
# $hash->{remoteAdmin} = '<html><a href="http://'.$hash->{host}.':2323">Remote Admin</a></html>';
$hash->{fully}{password} = $$a[3]; $hash->{fully}{password} = $$a[3];
$hash->{fully}{schedule} = 0; $hash->{fully}{schedule} = 0;
Log3 $name, 1, "FULLY: Opening device ".$hash->{host}; Log3 $name, 1, "FULLY: Version $FULLY_VERSION Opening device ".$hash->{host};
my $result = FULLY_GetDeviceInfo ($name); my $result = FULLY_GetDeviceInfo ($name);
if (!FULLY_UpdateReadings ($hash, $result)) { if (!FULLY_UpdateReadings ($hash, $result)) {
@ -169,6 +186,29 @@ sub FULLY_Shutdown ($)
return undef; return undef;
} }
#####################################
# Enhance device detail view
#####################################
sub FULLY_Detail ($@)
{
my ($FW_wname, $name, $room, $pageHash) = @_;
my $hash = $defs{$name};
my $html = qq(
<span class='mkTitle'>Device Administration</span>
<table class="block wide">
<tr class="odd">
<td><div class="col1">
<a target="_blank" href="http://$hash->{host}:2323">Remote Admin</a>
</div></td>
</tr>
</table>
);
return $html;
}
##################################### #####################################
# Set commands # Set commands
##################################### #####################################
@ -180,7 +220,7 @@ sub FULLY_Set ($@)
my $opt = shift @$a; my $opt = shift @$a;
my $options = "brightness clearCache:noArg exit:noArg lock:noArg motionDetection:on,off ". my $options = "brightness clearCache:noArg exit:noArg lock:noArg motionDetection:on,off ".
"off:noArg on:noArg on-for-timer restart:noArg screenOffTimer screenSaver:start,stop ". "off:noArg on:noArg on-for-timer restart:noArg screenOffTimer screenSaver:start,stop ".
"screenSaverTimer screenSaverURL speak unlock:noArg url"; "screenSaverTimer screenSaverURL speak startURL unlock:noArg url";
my $response; my $response;
# Fully commands without argument # Fully commands without argument
@ -258,6 +298,12 @@ sub FULLY_Set ($@)
$response = FULLY_Execute ($hash, "setStringSetting", $response = FULLY_Execute ($hash, "setStringSetting",
{ "key" => "screensaverURL", "value" => "$value" }, 1); { "key" => "screensaverURL", "value" => "$value" }, 1);
} }
elsif ($opt eq 'startURL') {
my $value = shift @$a;
return "Usage: set $name $opt {URL}" if (!defined ($value));
$response = FULLY_Execute ($hash, "setStringSetting",
{ "key" => "startURL", "value" => "$value" }, 1);
}
elsif ($opt eq 'brightness') { elsif ($opt eq 'brightness') {
my $value = shift @$a; my $value = shift @$a;
return "Usage: set $name brightness 0-255" if (!defined ($value)); return "Usage: set $name brightness 0-255" if (!defined ($value));
@ -449,6 +495,7 @@ sub FULLY_ProcessDeviceInfo ($$)
while ($result =~ /table-cell\">([^<]+)<\/td><td class="table-cell">([^<]+)</g) { while ($result =~ /table-cell\">([^<]+)<\/td><td class="table-cell">([^<]+)</g) {
my $rn = lc($1); my $rn = lc($1);
my $rv = $2; my $rv = $2;
$rv =~ s/\s+$//;
$rn =~ s/\:/\./g; $rn =~ s/\:/\./g;
$rn =~ s/[^A-Za-z\d_\.-]+/_/g; $rn =~ s/[^A-Za-z\d_\.-]+/_/g;
$rn =~ s/[_]+$//; $rn =~ s/[_]+$//;
@ -668,6 +715,9 @@ sub FULLY_Ping ($$)
Audio output of <i>text</i>. If <i>text</i> contains blanks it must be enclosed Audio output of <i>text</i>. If <i>text</i> contains blanks it must be enclosed
in double quotes. The text can contain device readings in format [device:reading]. in double quotes. The text can contain device readings in format [device:reading].
</li><br/> </li><br/>
<li><b>set &lt;name&gt; startURL &lt;URL&gt;</b><br/>
Show this URL when FULLY starts.<br/>
</li><br/>
<li><b>set &lt;name&gt; url [&lt;URL&gt;]</b><br/> <li><b>set &lt;name&gt; url [&lt;URL&gt;]</b><br/>
Navigate to <i>URL</i>. If no URL is specified navigate to start URL. Navigate to <i>URL</i>. If no URL is specified navigate to start URL.
</li><br/> </li><br/>