2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 16:56:54 +00:00

49_SSCam: support of FTUI Widget with SSCamSTRM, new attributes in SSCamSTRM, some fixes

git-svn-id: https://svn.fhem.de/fhem/trunk@19837 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2019-07-15 21:09:30 +00:00
parent 7eda00c3c2
commit e22753d0f3
3 changed files with 672 additions and 351 deletions

View File

@ -1,5 +1,7 @@
# 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.
- feature: 49_SSCam: support of FTUI Widget with SSCamSTRM, new attributes
in SSCamSTRM, some fixes
- feature: 71_YAMAHA_NP: Added undocumented reverse-engineered
sound functionality :-)
(balance, enhancer, equalizer)

File diff suppressed because it is too large Load Diff

View File

@ -35,6 +35,8 @@ eval "use FHEM::Meta;1" or my $modMetaAbsent = 1;
# Versions History intern
our %SSCamSTRM_vNotesIntern = (
"2.7.0" => "15.07.2019 FTUI support, new attributes htmlattrFTUI, hideDisplayNameFTUI, ptzButtonSize, ptzButtonSizeFTUI ",
"2.6.0" => "21.06.2019 GetFn -> get <name> html ",
"2.5.0" => "27.03.2019 add Meta.pm support ",
"2.4.0" => "24.02.2019 support for \"genericStrmHtmlTag\" in streaming device MODEL generic ",
"2.3.0" => "04.02.2019 SSCamSTRM_Rename / SSCamSTRM_Copy added, Streaming device can now be renamed or copied ",
@ -61,12 +63,10 @@ our %SSCamSTRM_vNotesIntern = (
);
# Standardvariablen und Forward-Declaration
sub SSCam_ptzpanel($;$$);
sub SSCam_StreamDev($$$);
sub SSCam_ptzpanel(@);
sub SSCam_StreamDev($$$;$);
sub SSCam_getclhash($;$$);
# my $hlsjs = "hls.js"; # hls.js Release von Seite https://github.com/video-dev/hls.js/releases
################################################################
sub SSCamSTRM_Initialize($) {
my ($hash) = @_;
@ -75,16 +75,21 @@ sub SSCamSTRM_Initialize($) {
$hash->{DefFn} = "SSCamSTRM_Define";
$hash->{SetFn} = "SSCamSTRM_Set";
$hash->{GetFn} = "SSCamSTRM_Get";
$hash->{AttrList} = "autoRefresh:selectnumbers,120,0.2,1800,0,log10 ".
"autoRefreshFW:$fwd ".
"disable:1,0 ".
"forcePageRefresh:1,0 ".
"genericStrmHtmlTag ".
"htmlattr ".
"htmlattrFTUI ".
"hideDisplayName:1,0 ".
"hideDisplayNameFTUI:1,0 ".
"popupWindowSize ".
"popupStreamFW:$fwd ".
"popupStreamTo:OK,1,2,3,4,5,6,7,8,9,10,15,20,25,30,40,50,60 ".
"ptzButtonSize:selectnumbers,50,5,100,0,lin ".
"ptzButtonSizeFTUI:selectnumbers,50,5,100,0,lin ".
$readingFnAttributes;
$hash->{RenameFn} = "SSCamSTRM_Rename";
$hash->{CopyFn} = "SSCamSTRM_Copy";
@ -134,7 +139,10 @@ sub SSCamSTRM_Rename($$) {
return;
}
################################################################
###############################################################
# SSCamSTRM Copy
# passt die Deviceparameter bei kopierten Device an
###############################################################
sub SSCamSTRM_Copy($$) {
my ($old_name,$new_name) = @_;
my $hash = $defs{$new_name};
@ -145,6 +153,27 @@ sub SSCamSTRM_Copy($$) {
return;
}
###############################################################
# SSCamSTRM Get
###############################################################
sub SSCamSTRM_Get($@) {
my ($hash, @a) = @_;
return "\"get X\" needs at least an argument" if ( @a < 2 );
my $name = shift @a;
my $cmd = shift @a;
if ($cmd eq "html") {
return SSCamSTRM_AsHtml($hash);
}
if ($cmd eq "ftui") {
return SSCamSTRM_AsHtml($hash,"ftui");
}
return undef;
return "Unknown argument $cmd, choose one of html:noArg";
}
################################################################
sub SSCamSTRM_Set($@) {
my ($hash, @a) = @_;
@ -244,14 +273,8 @@ sub SSCamSTRM_FwFn($;$$$) {
$hash->{HELPER}{FW} = $FW_wname;
$link = AnalyzePerlCommand(undef, $link) if($link =~ m/^{(.*)}$/s);
my $show = $defs{$hash->{PARENT}}->{HELPER}{ACTSTRM} if($hash->{MODEL} =~ /switched/);
$show = $show?"($show)":"";
my $alias = AttrVal($d, "alias", $d); # Linktext als Aliasname oder Devicename setzen
my $dlink = "<a href=\"/fhem?detail=$d\">$alias</a>";
my $ret = "";
$ret .= "<span>$dlink $show</span><br>" if(!AttrVal($d,"hideDisplayName",0));
if(IsDisabled($d)) {
if(AttrVal($d,"hideDisplayName",0)) {
$ret .= "Stream-device <a href=\"/fhem?detail=$d\">$d</a> is disabled";
@ -327,6 +350,39 @@ sub SSCamSTRM_setVersionInfo($) {
return;
}
################################################################
# Grafik als HTML zurück liefern (z.B. für Widget)
################################################################
sub SSCamSTRM_AsHtml($;$) {
my ($hash,$ftui) = @_;
my $name = $hash->{NAME};
my $link = $hash->{LINK};
if ($ftui && $ftui eq "ftui") {
# Aufruf aus TabletUI -> FW_cmd ersetzen gemäß FTUI Syntax
my $s = substr($link,0,length($link)-2);
$link = $s.",'$ftui')}";
}
$link = AnalyzePerlCommand(undef, $link) if($link =~ m/^{(.*)}$/s);
my $ret = "<html>";
if(IsDisabled($name)) {
if(AttrVal($name,"hideDisplayName",0)) {
$ret .= "Stream-device <a href=\"/fhem?detail=$name\">$name</a> is disabled";
} else {
$ret .= "Stream-device is disabled";
}
} else {
$ret .= $link;
}
$ret .= "</html>";
return $ret;
}
1;
=pod
@ -337,27 +393,35 @@ return;
<a name="SSCamSTRM"></a>
<h3>SSCamSTRM</h3>
<br>
The module SSCamSTRM is a special device module synchronized to the SSCam module. It is used for definition of
Streaming-Devices. <br>
Dependend of the Streaming-Device state, different buttons are provided to start actions:
<ul>
<table>
<colgroup> <col width=25%> <col width=75%> </colgroup>
<tr><td> Switch off </td><td>- stops a running playback </td></tr>
<tr><td> Refresh </td><td>- refresh a view (no page reload) </td></tr>
<tr><td> Restart </td><td>- restart a running content (e.g. a HLS-Stream) </td></tr>
<tr><td> MJPEG </td><td>- starts a MJPEG Livestream </td></tr>
<tr><td> HLS </td><td>- starts HLS (HTTP Live Stream) </td></tr>
<tr><td> Last Record </td><td>- playback the last recording as iFrame </td></tr>
<tr><td> Last Rec H.264 </td><td>- playback the last recording if available as H.264 </td></tr>
<tr><td> Last Rec MJPEG </td><td>- playback the last recording if available as MJPEG </td></tr>
<tr><td> Last SNAP </td><td>- show the last snapshot </td></tr>
<tr><td> Start Recording </td><td>- starts an endless recording </td></tr>
<tr><td> Stop Recording </td><td>- stopps the recording </td></tr>
<tr><td> Take Snapshot </td><td>- take a snapshot </td></tr>
</table>
</ul>
<br>
The module SSCamSTRM is a special device module synchronized to the SSCam module. It is used for definition of
Streaming-Devices. <br>
Dependend of the Streaming-Device state, different buttons are provided to start actions:
<ul>
<table>
<colgroup> <col width=25%> <col width=75%> </colgroup>
<tr><td> Switch off </td><td>- stops a running playback </td></tr>
<tr><td> Refresh </td><td>- refresh a view (no page reload) </td></tr>
<tr><td> Restart </td><td>- restart a running content (e.g. a HLS-Stream) </td></tr>
<tr><td> MJPEG </td><td>- starts a MJPEG Livestream </td></tr>
<tr><td> HLS </td><td>- starts HLS (HTTP Live Stream) </td></tr>
<tr><td> Last Record </td><td>- playback the last recording as iFrame </td></tr>
<tr><td> Last Rec H.264 </td><td>- playback the last recording if available as H.264 </td></tr>
<tr><td> Last Rec MJPEG </td><td>- playback the last recording if available as MJPEG </td></tr>
<tr><td> Last SNAP </td><td>- show the last snapshot </td></tr>
<tr><td> Start Recording </td><td>- starts an endless recording </td></tr>
<tr><td> Stop Recording </td><td>- stopps the recording </td></tr>
<tr><td> Take Snapshot </td><td>- take a snapshot </td></tr>
</table>
</ul>
<br>
<b>Integration into FHEM TabletUI: </b> <br><br>
There is a widget provided for integration of SSCam-Streaming devices into FTUI. For further information please be informed by the
(german) FHEM Wiki article: <br>
<a href="https://wiki.fhem.de/wiki/FTUI_Widget_f%C3%BCr_SSCam_Streaming_Devices_(SSCamSTRM)">FTUI Widget für SSCam Streaming Devices (SSCamSTRM)</a>.
<br><br>
</ul>
<ul>
<a name="SSCamSTRMdefine"></a>
@ -390,7 +454,17 @@ Dependend of the Streaming-Device state, different buttons are provided to start
<br>
<a name="SSCamSTRMget"></a>
<b>Get</b> <ul>N/A</ul><br>
<b>Get</b>
<ul>
<br>
<ul>
<li><b> get &lt;name&gt; html </b> </li>
The stream object (camera live view, snapshots or replay) is fetched as HTML-code and depicted.
</ul>
<br>
<br>
</ul>
<a name="SSCamSTRMattr"></a>
<b>Attributes</b>
@ -459,13 +533,30 @@ attr &lt;name&gt; genericStrmHtmlTag &lt;img $HTMLATTR
</li>
<br>
<a name="hideDisplayNameFTUI"></a>
<li><b>hideDisplayNameFTUI</b><br>
Hide the device/alias name (link to detail view) in FHEM TabletUI.
</li>
<br>
<a name="htmlattr"></a>
<li><b>htmlattr</b><br>
Additional HTML tags to manipulate the streaming device.
<br><br>
<ul>
<b>Example: </b><br>
attr &lt;name&gt; htmlattr width="480" height="560" <br>
attr &lt;name&gt; htmlattr width="580" height="460" <br>
</ul>
</li>
<br>
<a name="htmlattrFTUI"></a>
<li><b>htmlattrFTUI</b><br>
Additional HTML tags to manipulate the streaming device in TabletUI.
<br><br>
<ul>
<b>Example: </b><br>
attr &lt;name&gt; htmlattr width="580" height="460" <br>
</ul>
</li>
<br>
@ -502,6 +593,18 @@ attr &lt;name&gt; genericStrmHtmlTag &lt;img $HTMLATTR
attr &lt;name&gt; popupWindowSize width="600" height="425" <br>
</ul>
</li>
<br>
<a name="ptzButtonSize"></a>
<li><b>ptzButtonSize</b><br>
Specifies the PTZ-panel button size (in %).
</li>
<br>
<a name="ptzButtonSizeFTUI"></a>
<li><b>ptzButtonSizeFTUI</b><br>
Specifies the PTZ-panel button size used in a Tablet UI (in %).
</li>
</ul>
</ul>
@ -513,28 +616,35 @@ attr &lt;name&gt; genericStrmHtmlTag &lt;img $HTMLATTR
<a name="SSCamSTRM"></a>
<h3>SSCamSTRM</h3>
<ul>
<br>
Das Modul SSCamSTRM ist ein mit SSCam abgestimmtes Gerätemodul zur Definition von Streaming-Devices. <br>
Abhängig vom Zustand des Streaming-Devices werden zum Start von Aktionen unterschiedliche Drucktasten angeboten:
<ul>
<table>
<colgroup> <col width=25%> <col width=75%> </colgroup>
<tr><td> Switch off </td><td>- stoppt eine laufende Wiedergabe </td></tr>
<tr><td> Refresh </td><td>- auffrischen einer Ansicht (kein Browser Seiten-Reload) </td></tr>
<tr><td> Restart </td><td>- neu starten eines laufenden Contents (z.B. eines HLS-Streams) </td></tr>
<tr><td> MJPEG </td><td>- Startet MJPEG Livestream </td></tr>
<tr><td> HLS </td><td>- Startet HLS (HTTP Live Stream) </td></tr>
<tr><td> Last Record </td><td>- spielt die letzte Aufnahme als iFrame </td></tr>
<tr><td> Last Rec H.264 </td><td>- spielt die letzte Aufnahme wenn als H.264 vorliegend </td></tr>
<tr><td> Last Rec MJPEG </td><td>- spielt die letzte Aufnahme wenn als MJPEG vorliegend </td></tr>
<tr><td> Last SNAP </td><td>- zeigt den letzten Snapshot </td></tr>
<tr><td> Start Recording </td><td>- startet eine Endlosaufnahme </td></tr>
<tr><td> Stop Recording </td><td>- stoppt eine Aufnahme </td></tr>
<tr><td> Take Snapshot </td><td>- löst einen Schnappschuß aus </td></tr>
</table>
</ul>
<br>
<br>
Das Modul SSCamSTRM ist ein mit SSCam abgestimmtes Gerätemodul zur Definition von Streaming-Devices. <br>
Abhängig vom Zustand des Streaming-Devices werden zum Start von Aktionen unterschiedliche Drucktasten angeboten:
<ul>
<table>
<colgroup> <col width=25%> <col width=75%> </colgroup>
<tr><td> Switch off </td><td>- stoppt eine laufende Wiedergabe </td></tr>
<tr><td> Refresh </td><td>- auffrischen einer Ansicht (kein Browser Seiten-Reload) </td></tr>
<tr><td> Restart </td><td>- neu starten eines laufenden Contents (z.B. eines HLS-Streams) </td></tr>
<tr><td> MJPEG </td><td>- Startet MJPEG Livestream </td></tr>
<tr><td> HLS </td><td>- Startet HLS (HTTP Live Stream) </td></tr>
<tr><td> Last Record </td><td>- spielt die letzte Aufnahme als iFrame </td></tr>
<tr><td> Last Rec H.264 </td><td>- spielt die letzte Aufnahme wenn als H.264 vorliegend </td></tr>
<tr><td> Last Rec MJPEG </td><td>- spielt die letzte Aufnahme wenn als MJPEG vorliegend </td></tr>
<tr><td> Last SNAP </td><td>- zeigt den letzten Snapshot </td></tr>
<tr><td> Start Recording </td><td>- startet eine Endlosaufnahme </td></tr>
<tr><td> Stop Recording </td><td>- stoppt eine Aufnahme </td></tr>
<tr><td> Take Snapshot </td><td>- löst einen Schnappschuß aus </td></tr>
</table>
</ul>
<br>
<b>Integration in FHEM TabletUI: </b> <br><br>
Zur Integration von SSCam Streaming Devices (Typ SSCamSTRM) wird ein Widget bereitgestellt.
Für weitere Information dazu bitte den Artikel im Wiki durchlesen: <br>
<a href="https://wiki.fhem.de/wiki/FTUI_Widget_f%C3%BCr_SSCam_Streaming_Devices_(SSCamSTRM)">FTUI Widget für SSCam Streaming Devices (SSCamSTRM)</a>.
<br><br><br>
</ul>
<ul>
<a name="SSCamSTRMdefine"></a>
@ -568,7 +678,18 @@ Abhängig vom Zustand des Streaming-Devices werden zum Start von Aktionen unters
<br>
<a name="SSCamSTRMget"></a>
<b>Get</b> <ul>N/A</ul><br>
<b>Get</b>
<ul>
<br>
<ul>
<li><b> get &lt;name&gt; html </b> </li>
Das eingebundene Streamobjekt (Kamera Live View, Schnappschüsse oder Wiedergabe einer Aufnahme) wird als HTML-code
abgerufen und dargestellt.
</ul>
<br>
<br>
</ul>
<a name="SSCamSTRMattr"></a>
<b>Attribute</b>
@ -637,13 +758,30 @@ attr &lt;name&gt; genericStrmHtmlTag &lt;img $HTMLATTR
</li>
<br>
<a name="hideDisplayNameFTUI"></a>
<li><b>hideDisplayNameFTUI</b><br>
Verbirgt den Device/Alias-Namen (Link zur Detailansicht) im TabletUI.
</li>
<br>
<a name="htmlattr"></a>
<li><b>htmlattr</b><br>
Zusätzliche HTML Tags zur Darstellungsänderung im Streaming Device.
Zusätzliche HTML Tags zur Darstellung im Streaming Device.
<br><br>
<ul>
<b>Beispiel: </b><br>
attr &lt;name&gt; htmlattr width="480" height="560" <br>
attr &lt;name&gt; htmlattr width="580" height="460" <br>
</ul>
</li>
<br>
<a name="htmlattrFTUI"></a>
<li><b>htmlattrFTUI</b><br>
Zusätzliche HTML Tags zur Darstellung des Streaming Device im TabletUI.
<br><br>
<ul>
<b>Beispiel: </b><br>
attr &lt;name&gt; htmlattr width="580" height="460" <br>
</ul>
</li>
<br>
@ -679,6 +817,18 @@ attr &lt;name&gt; genericStrmHtmlTag &lt;img $HTMLATTR
attr &lt;name&gt; popupWindowSize width="600" height="425" <br>
</ul>
</li>
<br>
<a name="ptzButtonSize"></a>
<li><b>ptzButtonSize</b><br>
Legt die Größe der Drucktasten des PTZ Paneels fest (in %).
</li>
<br>
<a name="ptzButtonSizeFTUI"></a>
<li><b>ptzButtonSizeFTUI</b><br>
Legt die Größe der Drucktasten des PTZ Paneels in einem Tablet UI fest (in %).
</li>
</ul>
</ul>