FULLY: maintainer change + commandref update
git-svn-id: https://svn.fhem.de/fhem/trunk@30558 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -7,10 +7,22 @@
|
|||||||
# Control Fully browser on Android tablets from FHEM.
|
# Control Fully browser on Android tablets from FHEM.
|
||||||
# Requires Fully App Plus license!
|
# Requires Fully App Plus license!
|
||||||
#
|
#
|
||||||
# This program free software; you can redistribute it and/or modify
|
# This file is part of fhem.
|
||||||
# it under the terms of the GNU General Public License V2.
|
|
||||||
#
|
#
|
||||||
# (c) 2022 by zap (zap01 <at> t-online <dot> de)
|
# Fhem is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Fhem is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with fhem. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
# (c) 2022-2025 by original autor zap
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
@@ -22,28 +34,6 @@ use HttpUtils;
|
|||||||
use JSON;
|
use JSON;
|
||||||
use SetExtensions;
|
use SetExtensions;
|
||||||
|
|
||||||
# Declare functions
|
|
||||||
sub FULLY_Initialize ($);
|
|
||||||
sub FULLY_Define ($$);
|
|
||||||
sub FULLY_Undef ($$);
|
|
||||||
sub FULLY_Shutdown ($);
|
|
||||||
sub FULLY_Set ($@);
|
|
||||||
sub FULLY_Get ($@);
|
|
||||||
sub FULLY_Attr ($@);
|
|
||||||
sub FULLY_Detail ($@);
|
|
||||||
sub FULLY_Notify ($$);
|
|
||||||
sub FULLY_UpdateDeviceInfo ($);
|
|
||||||
sub FULLY_Execute ($$$$);
|
|
||||||
sub FULLY_ExecuteNB ($$$$);
|
|
||||||
sub FULLY_ExecuteCB ($$$);
|
|
||||||
sub FULLY_ScreenOff ($);
|
|
||||||
sub FULLY_GetDeviceInfo ($);
|
|
||||||
sub FULLY_UpdateReadings ($$);
|
|
||||||
sub FULLY_Encrypt ($);
|
|
||||||
sub FULLY_Decrypt ($);
|
|
||||||
sub FULLY_Ping ($$);
|
|
||||||
sub FULLY_SetPolling ($$;$);
|
|
||||||
|
|
||||||
my $FULLY_VERSION = '2.3';
|
my $FULLY_VERSION = '2.3';
|
||||||
|
|
||||||
# Timeout for Fully requests
|
# Timeout for Fully requests
|
||||||
@@ -972,13 +962,14 @@ sub FULLY_Ping ($$)
|
|||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
|
__END__
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
=item device
|
=item device
|
||||||
=item summary FULLY Browser Integration
|
=item summary FULLY Browser Integration
|
||||||
=begin html
|
=begin html
|
||||||
|
|
||||||
<a name="FULLY"></a>
|
<a id="FULLY"></a>
|
||||||
<h3>FULLY</h3>
|
<h3>FULLY</h3>
|
||||||
<ul>
|
<ul>
|
||||||
Module for controlling of Fully browser on Android tablets. Requires a Plus license
|
Module for controlling of Fully browser on Android tablets. Requires a Plus license
|
||||||
@@ -986,7 +977,7 @@ sub FULLY_Ping ($$)
|
|||||||
must be enabled in Fully app. Requires Fully app version 1.27 or later.
|
must be enabled in Fully app. Requires Fully app version 1.27 or later.
|
||||||
</br></br>
|
</br></br>
|
||||||
|
|
||||||
<a name="FULLYdefine"></a>
|
<a id="FULLY-define"></a>
|
||||||
<b>Define</b><br/><br/>
|
<b>Define</b><br/><br/>
|
||||||
<ul>
|
<ul>
|
||||||
<code>define <name> FULLY [<Protocol>://]<HostOrIP>[:<Port>] [<password>] [<poll-interval>]</code>
|
<code>define <name> FULLY [<Protocol>://]<HostOrIP>[:<Port>] [<password>] [<poll-interval>]</code>
|
||||||
@@ -999,106 +990,137 @@ sub FULLY_Ping ($$)
|
|||||||
</ul>
|
</ul>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
<a name="FULLYset"></a>
|
<a id="FULLY-set"></a>
|
||||||
<b>Set</b><br/><br/>
|
<b>Set</b><br/><br/>
|
||||||
<ul>
|
<ul>
|
||||||
|
<a id="FULLY-set-authentication"></a>
|
||||||
<li><b>set <name> authentication [<password>]</b><br/>
|
<li><b>set <name> authentication [<password>]</b><br/>
|
||||||
Set Fully password. This password is used for each Fully opteration.
|
Set Fully password. This password is used for each Fully opteration.
|
||||||
If no password is specified, the current password is deleted.
|
If no password is specified, the current password is deleted.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-brightness"></a>
|
||||||
<li><b>set <name> brightness 0-255</b><br/>
|
<li><b>set <name> brightness 0-255</b><br/>
|
||||||
Adjust screen brightness.
|
Adjust screen brightness.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-clearCache"></a>
|
||||||
<li><b>set <name> clearCache</b><br/>
|
<li><b>set <name> clearCache</b><br/>
|
||||||
Clear browser cache.
|
Clear browser cache.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-clearCookies"></a>
|
||||||
<li><b>set <name> clearCookies</b><br/>
|
<li><b>set <name> clearCookies</b><br/>
|
||||||
Clear cookies.
|
Clear cookies.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-clearWebstorage"></a>
|
||||||
<li><b>set <name> clearWebstorage</b><br/>
|
<li><b>set <name> clearWebstorage</b><br/>
|
||||||
Clear web storage.
|
Clear web storage.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-exit"></a>
|
||||||
<li><b>set <name> exit</b><br/>
|
<li><b>set <name> exit</b><br/>
|
||||||
Terminate Fully.
|
Terminate Fully.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-foreground"></a>
|
||||||
<li><b>set <name> foreground</b><br/>
|
<li><b>set <name> foreground</b><br/>
|
||||||
Bring fully app to foreground.
|
Bring fully app to foreground.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-lockKiosk"></a>
|
||||||
<li><b>set <name> lockKiosk</b><br/>
|
<li><b>set <name> lockKiosk</b><br/>
|
||||||
Lock kiosk mode.
|
Lock kiosk mode.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-motionDetection"></a>
|
||||||
<li><b>set <name> motionDetection { on | off }</b><br/>
|
<li><b>set <name> motionDetection { on | off }</b><br/>
|
||||||
Turn motion detection by camera on or off.
|
Turn motion detection by camera on or off.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-lock" data-pattern=".*lock"></a>
|
||||||
<li><b>set <name> { lock | unlock }</b><br/>
|
<li><b>set <name> { lock | unlock }</b><br/>
|
||||||
Lock or unlock display.
|
Lock or unlock display.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-on" data-pattern="o[nf]+"></a>
|
||||||
<li><b>set <name> { on | off }</b><br/>
|
<li><b>set <name> { on | off }</b><br/>
|
||||||
Turn tablet display on or off.
|
Turn tablet display on or off.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-on-for-timer"></a>
|
||||||
<li><b>set <name> on-for-timer [{ <Seconds> | <u>forever</u> | off }]</b><br/>
|
<li><b>set <name> on-for-timer [{ <Seconds> | <u>forever</u> | off }]</b><br/>
|
||||||
Set timer for display. Default is forever.
|
Set timer for display. Default is forever.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-overlayMessage"></a>
|
||||||
<li><b>set <name> overlayMessage { text }</b><br/>
|
<li><b>set <name> overlayMessage { text }</b><br/>
|
||||||
Show overlay message. Placeholders in format [device:reading] are supported and will
|
Show overlay message. Placeholders in format [device:reading] are supported and will
|
||||||
be substituted by the corresponding reading value.
|
be substituted by the corresponding reading value.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-photo"></a>
|
||||||
<li><b>set <name> photo</b><br/>
|
<li><b>set <name> photo</b><br/>
|
||||||
Take a picture with device cam. Setting motion detection must be enabled. Picture
|
Take a picture with device cam. Setting motion detection must be enabled. Picture
|
||||||
can be viewed in remote admin interface under device info.
|
can be viewed in remote admin interface under device info.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-playSound"></a>
|
||||||
<li><b>set <name> playSound <url> [loop]</b><br/>
|
<li><b>set <name> playSound <url> [loop]</b><br/>
|
||||||
Play sound from URL.
|
Play sound from URL.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-playVideo"></a>
|
||||||
<li><b>set <name> playVideo <url> [loop] [showControls] [exitOnTouch] [exitOnCompletion]</b><br/>
|
<li><b>set <name> playVideo <url> [loop] [showControls] [exitOnTouch] [exitOnCompletion]</b><br/>
|
||||||
Play video from URL.
|
Play video from URL.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-restart"></a>
|
||||||
<li><b>set <name> restart</b><br/>
|
<li><b>set <name> restart</b><br/>
|
||||||
Restart Fully.
|
Restart Fully.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-screenOffTimer"></a>
|
||||||
<li><b>set <name> screenOffTimer <seconds></b><br/>
|
<li><b>set <name> screenOffTimer <seconds></b><br/>
|
||||||
Turn screen off after some idle seconds, set to 0 to disable timer.
|
Turn screen off after some idle seconds, set to 0 to disable timer.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-screenSaver"></a>
|
||||||
<li><b>set <name> screenSaver { start | stop }</b><br/>
|
<li><b>set <name> screenSaver { start | stop }</b><br/>
|
||||||
Start or stop screen saver. Screen saver URL can be set with command <b>set screenSaverURL</b>.
|
Start or stop screen saver. Screen saver URL can be set with command <b>set screenSaverURL</b>.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-screenSaverTimer"></a>
|
||||||
<li><b>set <name> screenSaverTimer <seconds></b><br/>
|
<li><b>set <name> screenSaverTimer <seconds></b><br/>
|
||||||
Show screen saver URL after some idle seconds, set to 0 to disable timer.
|
Show screen saver URL after some idle seconds, set to 0 to disable timer.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-screenSaverURL"></a>
|
||||||
<li><b>set <name> screenSaverURL <URL></b><br/>
|
<li><b>set <name> screenSaverURL <URL></b><br/>
|
||||||
Show this URL when screensaver starts, set daydream: for Android daydream or dim: for black.<br/>
|
Show this URL when screensaver starts, set daydream: for Android daydream or dim: for black.<br/>
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-setBooleanSetting"></a>
|
||||||
<li><b>set <name> setBooleanSetting <Key> <Value></b><br/>
|
<li><b>set <name> setBooleanSetting <Key> <Value></b><br/>
|
||||||
Set boolean value in Fully app. Command is ony available if attribute expert is 1.
|
Set boolean value in Fully app. Command is ony available if attribute expert is 1.
|
||||||
Valid keys can be found in Fully remote admin interface.
|
Valid keys can be found in Fully remote admin interface.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-setStringSetting"></a>
|
||||||
<li><b>set <name> setStringSetting <Key> <Value></b><br/>
|
<li><b>set <name> setStringSetting <Key> <Value></b><br/>
|
||||||
Set string value in Fully app. Command is ony available if attribute expert is 1.
|
Set string value in Fully app. Command is ony available if attribute expert is 1.
|
||||||
Valid keys can be found in Fully remote admin interface.
|
Valid keys can be found in Fully remote admin interface.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-speak"></a>
|
||||||
<li><b>set <name> speak <text></b><br/>
|
<li><b>set <name> speak <text></b><br/>
|
||||||
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/>
|
||||||
|
<a id="FULLY-set-startApp"></a>
|
||||||
<li><b>set <name> startApp <PackageName></b><br/>
|
<li><b>set <name> startApp <PackageName></b><br/>
|
||||||
Start an app. App must be installed on the tablet and package name (not appname!)
|
Start an app. App must be installed on the tablet and package name (not appname!)
|
||||||
must be specified.
|
must be specified.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-startURL"></a>
|
||||||
<li><b>set <name> startURL <URL></b><br/>
|
<li><b>set <name> startURL <URL></b><br/>
|
||||||
Show this URL when FULLY starts.<br/>
|
Show this URL when FULLY starts.<br/>
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-stopSound"></a>
|
||||||
<li><b>set <name> stopSound</b><br/>
|
<li><b>set <name> stopSound</b><br/>
|
||||||
Stop playback of sound if playback has been started with option <i>loop</i>.
|
Stop playback of sound if playback has been started with option <i>loop</i>.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-stopVideo"></a>
|
||||||
<li><b>set <name> stopVideo</b><br/>
|
<li><b>set <name> stopVideo</b><br/>
|
||||||
Stop playback of video if playback has been started with option <i>loop</i>.
|
Stop playback of video if playback has been started with option <i>loop</i>.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-unlockKiosk"></a>
|
||||||
<li><b>set <name> unlockKiosk</b><br/>
|
<li><b>set <name> unlockKiosk</b><br/>
|
||||||
Unlock kiosk mode.
|
Unlock kiosk mode.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-set-url"></a>
|
||||||
<li><b>set <name> url [<URL>]</b><br/>
|
<li><b>set <name> url [<URL>]</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/>
|
||||||
|
<a id="FULLY-set-volume"></a>
|
||||||
<li><b>set <name> volume <level> <stream></b><br/>
|
<li><b>set <name> volume <level> <stream></b><br/>
|
||||||
Set audio volume. Range of parameter <i>level</i> is 0-100, range of parameter
|
Set audio volume. Range of parameter <i>level</i> is 0-100, range of parameter
|
||||||
<i>stream</i> is 1-10.
|
<i>stream</i> is 1-10.
|
||||||
@@ -1106,59 +1128,62 @@ sub FULLY_Ping ($$)
|
|||||||
</ul>
|
</ul>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
<a name="FULLYget"></a>
|
<a id="FULLY-get"></a>
|
||||||
<b>Get</b><br/><br/>
|
<b>Get</b><br/><br/>
|
||||||
<ul>
|
<ul>
|
||||||
|
<a id="FULLY-get-info"></a>
|
||||||
<li><b>get <name> info</b><br/>
|
<li><b>get <name> info</b><br/>
|
||||||
Display Fully information. This is command blocks FHEM until completion.
|
Display Fully information. This is command blocks FHEM until completion.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-get-stats"></a>
|
||||||
<li><b>get <name> stats</b><br/>
|
<li><b>get <name> stats</b><br/>
|
||||||
Show Fully statistics. Will be implemented later.
|
Show Fully statistics. Will be implemented later.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<a id="FULLY-get-update"></a>
|
||||||
<li><b>get <name> update</b><br/>
|
<li><b>get <name> update</b><br/>
|
||||||
Update readings.
|
Update readings.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
</ul>
|
</ul>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
<a name="FULLYattr"></a>
|
<a id="FULLY-attr"></a>
|
||||||
<b>Attributes</b><br/>
|
<b>Attributes</b><br/>
|
||||||
<br/>
|
<br/>
|
||||||
<ul>
|
<ul>
|
||||||
<a name="disable"></a>
|
<a id="FULLY-attr-disable"></a>
|
||||||
<li><b>disable <0 | 1></b><br/>
|
<li><b>disable <0 | 1></b><br/>
|
||||||
Disable device and automatic polling.
|
Disable device and automatic polling.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
<a name="expert"></a>
|
<a id="FULLY-attr-expert"></a>
|
||||||
<li><b>expert <0 | 1></b><br/>
|
<li><b>expert <0 | 1></b><br/>
|
||||||
Activate expert mode.
|
Activate expert mode.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
<a name="pingBeforeCmd"></a>
|
<a id="FULLY-attr-pingBeforeCmd"></a>
|
||||||
<li><b>pingBeforeCmd <Count></b><br/>
|
<li><b>pingBeforeCmd <Count></b><br/>
|
||||||
Send <i>Count</i> ping request to tablet before executing commands. Valid values
|
Send <i>Count</i> ping request to tablet before executing commands. Valid values
|
||||||
for <i>Count</i> are 0,1,2. Default is 0 (do not send ping request).
|
for <i>Count</i> are 0,1,2. Default is 0 (do not send ping request).
|
||||||
</li><br/>
|
</li><br/>
|
||||||
<a name="pollInterval"></a>
|
<a id="FULLY-attr-pollInterval"></a>
|
||||||
<li><b>pollInterval <seconds></b><br/>
|
<li><b>pollInterval <seconds></b><br/>
|
||||||
Set polling interval for FULLY device information.
|
Set polling interval for FULLY device information.
|
||||||
If <i>seconds</i> is 0 polling is turned off. Valid values are from 10 to
|
If <i>seconds</i> is 0 polling is turned off. Valid values are from 10 to
|
||||||
86400 seconds.
|
86400 seconds.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
<a name="repeatCommand"></a>
|
<a id="FULLY-attr-repeatCommand"></a>
|
||||||
<li><b>repeatCommand <Count></b><br/>
|
<li><b>repeatCommand <Count></b><br/>
|
||||||
Repeat fully command on failure. Valid values for <i>Count</i> are 0,1,2. Default
|
Repeat fully command on failure. Valid values for <i>Count</i> are 0,1,2. Default
|
||||||
is 0 (do not repeat commands).
|
is 0 (do not repeat commands).
|
||||||
</li><br/>
|
</li><br/>
|
||||||
<a name="requestTimeout"></a>
|
<a id="FULLY-attr-requestTimeout"></a>
|
||||||
<li><b>requestTimeout <seconds></b><br/>
|
<li><b>requestTimeout <seconds></b><br/>
|
||||||
Set timeout for http requests. Default is 5 seconds. Increase this value if commands
|
Set timeout for http requests. Default is 5 seconds. Increase this value if commands
|
||||||
are failing with a timeout error.
|
are failing with a timeout error.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
<a name="updateAfterCommand"></a>
|
<a id="FULLY-attr-updateAfterCommand"></a>
|
||||||
<li><b>updateAfterCommand <0 | 1></b><br/>
|
<li><b>updateAfterCommand <0 | 1></b><br/>
|
||||||
When set to 1 update readings after a set command. Default is 0.
|
When set to 1 update readings after a set command. Default is 0.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
<a name="waitAfterPing"></a>
|
<a id="FULLY-attr-waitAfterPing"></a>
|
||||||
<li><b>waitAfterPing <Seconds></b><br/>
|
<li><b>waitAfterPing <Seconds></b><br/>
|
||||||
Wait specified amount of time after sending ping request to tablet device. Valid
|
Wait specified amount of time after sending ping request to tablet device. Valid
|
||||||
values for <i>Seconds</i> are 0,1,2. Default is 0 (do not wait). Only used if
|
values for <i>Seconds</i> are 0,1,2. Default is 0 (do not wait). Only used if
|
||||||
|
|||||||
@@ -455,7 +455,7 @@ FHEM/88_xs1Dev.pm HomeAuto_User Sonstige Systeme (Link als PM
|
|||||||
FHEM/89_AndroidDB.pm zap Multimedia
|
FHEM/89_AndroidDB.pm zap Multimedia
|
||||||
FHEM/89_AndroidDBHost.pm zap Multimedia
|
FHEM/89_AndroidDBHost.pm zap Multimedia
|
||||||
FHEM/89_ESPEInk.pm eki Sonstige Systeme
|
FHEM/89_ESPEInk.pm eki Sonstige Systeme
|
||||||
FHEM/89_FULLY.pm zap Frontends
|
FHEM/89_FULLY.pm Beta-User Frontends https://forum.fhem.de/index.php?topic=143143.0
|
||||||
FHEM/89_HEATRONIC.pm heikoranft Sonstige Systeme
|
FHEM/89_HEATRONIC.pm heikoranft Sonstige Systeme
|
||||||
FHEM/89_VCLIENT.pm andies Heizungssteuerung/Raumklima
|
FHEM/89_VCLIENT.pm andies Heizungssteuerung/Raumklima
|
||||||
FHEM/89_VCONTROL.pm adamwit Heizungssteuerung/Raumklima
|
FHEM/89_VCONTROL.pm adamwit Heizungssteuerung/Raumklima
|
||||||
|
|||||||
Reference in New Issue
Block a user