49_SSCam: global vars

git-svn-id: https://svn.fhem.de/fhem/trunk@16872 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2018-06-14 15:32:14 +00:00
parent 446c6bd9dc
commit 92fa2c47b5
2 changed files with 53 additions and 41 deletions

View File

@ -27,7 +27,7 @@
######################################################################################################################### #########################################################################################################################
# Versions History: # Versions History:
# #
# 5.2.1 14.06.2018 design change of SSCam_StreamDev # 5.2.1 14.06.2018 design change of SSCam_StreamDev, change in event generation for SSCam_StreamDev, fix global vars
# 5.2.0 14.06.2018 support longpoll refresh of SSCamSTRM-Devices # 5.2.0 14.06.2018 support longpoll refresh of SSCamSTRM-Devices
# 5.1.0 13.06.2018 more control elements (Start/Stop Recording, Take Snapshot) in func SSCam_StreamDev # 5.1.0 13.06.2018 more control elements (Start/Stop Recording, Take Snapshot) in func SSCam_StreamDev
# control of detaillink is moved to SSCamSTRM-device # control of detaillink is moved to SSCamSTRM-device
@ -2180,7 +2180,7 @@ sub SSCam_stopliveview ($) {
SSCam_getapisites($hash); SSCam_getapisites($hash);
} else { } else {
# kein HLS Stream # kein HLS Stream
SSCam_refresh($hash,0,1,1); # kein Room-Refresh, Longpoll SSCam, Longpoll SSCamSTRM SSCam_refresh($hash,0,1,1); # kein Room-Refresh, SSCam-state-Event, SSCamSTRM-Event
$hash->{HELPER}{ACTIVE} = "off"; $hash->{HELPER}{ACTIVE} = "off";
if (AttrVal($name,"debugactivetoken",0)) { if (AttrVal($name,"debugactivetoken",0)) {
Log3($name, 3, "$name - Active-Token deleted by OPMODE: $hash->{OPMODE}"); Log3($name, 3, "$name - Active-Token deleted by OPMODE: $hash->{OPMODE}");
@ -3895,7 +3895,7 @@ sub SSCam_camop ($) {
} }
} }
SSCam_refresh($hash,0,1,1); # kein Room-Refresh, Longpoll SSCam, Longpoll SSCamSTRM SSCam_refresh($hash,0,1,1); # kein Room-Refresh, SSCam-state-Event, SSCamSTRM-Event
$hash->{HELPER}{ACTIVE} = "off"; $hash->{HELPER}{ACTIVE} = "off";
if (AttrVal($name,"debugactivetoken",0)) { if (AttrVal($name,"debugactivetoken",0)) {
@ -4049,7 +4049,7 @@ sub SSCam_camop_parse ($) {
InternalTimer(gettimeofday()+$rectime, "SSCam_camstoprec", $hash); InternalTimer(gettimeofday()+$rectime, "SSCam_camstoprec", $hash);
} }
SSCam_refresh($hash,0,0,1); # kein Room-Refresh, kein Longpoll SSCam, Longpoll SSCamSTRM SSCam_refresh($hash,0,0,1); # kein Room-Refresh, kein SSCam-state-Event, SSCamSTRM-Event
} elsif ($OpMode eq "Stop") { } elsif ($OpMode eq "Stop") {
@ -4063,7 +4063,7 @@ sub SSCam_camop_parse ($) {
# Logausgabe # Logausgabe
Log3($name, 3, "$name - Camera $camname Recording stopped"); Log3($name, 3, "$name - Camera $camname Recording stopped");
SSCam_refresh($hash,0,0,1); # kein Room-Refresh, kein Longpoll SSCam, Longpoll SSCamSTRM SSCam_refresh($hash,0,0,1); # kein Room-Refresh, kein SSCam-state-Event, SSCamSTRM-Event
# Aktualisierung Eventlist der letzten Aufnahme # Aktualisierung Eventlist der letzten Aufnahme
SSCam_geteventlist($hash); SSCam_geteventlist($hash);
@ -4258,10 +4258,7 @@ sub SSCam_camop_parse ($) {
} elsif ($OpMode eq "Snap") { } elsif ($OpMode eq "Snap") {
# ein Schnapschuß wurde aufgenommen # ein Schnapschuß wurde aufgenommen
# falls Aufnahme noch läuft -> state = on setzen # falls Aufnahme noch läuft -> state = on setzen
# my $st; SSCam_refresh($hash,0,0,0); # kein Room-Refresh, kein SSCam-state-Event, kein SSCamSTRM-Event
# (ReadingsVal("$name", "Record", "") eq "Start")?$st="on":$st="off";
# readingsSingleUpdate($hash,"state", $st, 0);
SSCam_refresh($hash,0,0,0); # kein Room-Refresh, kein Longpoll SSCam, kein Longpoll SSCamSTRM
$snapid = $data->{data}{'id'}; $snapid = $data->{data}{'id'};
@ -4312,14 +4309,12 @@ sub SSCam_camop_parse ($) {
if (exists($hash->{HELPER}{RUNVIEW}) && $hash->{HELPER}{RUNVIEW} =~ /snap/ && exists($data->{'data'}{'data'}[0]{imageData})) { if (exists($hash->{HELPER}{RUNVIEW}) && $hash->{HELPER}{RUNVIEW} =~ /snap/ && exists($data->{'data'}{'data'}[0]{imageData})) {
delete $hash->{HELPER}{RUNVIEW}; delete $hash->{HELPER}{RUNVIEW};
# Aufnahmestatus in state abbilden # Aufnahmestatus in state abbilden
my $st;
# (ReadingsVal("$name", "Record", "") eq "Start")?$st="on":$st="off";
# readingsSingleUpdate($hash,"state", $st, 0);
$hash->{HELPER}{LINK} = $data->{data}{data}[0]{imageData}; $hash->{HELPER}{LINK} = $data->{data}{data}[0]{imageData};
SSCam_refresh($hash,0,0,1); # kein Room-Refresh, kein Longpoll SSCam, Longpoll SSCamSTRM SSCam_refresh($hash,0,0,1); # kein Room-Refresh, kein SSCam-state-Event, SSCamSTRM-Event
} } else {
SSCam_refresh($hash,0,0,1); # kein Room-Refresh, kein SSCam-state-Event, SSCamSTRM-Event
}
if($OpMode eq "getsnapgallery") { if($OpMode eq "getsnapgallery") {
# es soll eine Schnappschußgallerie bereitgestellt (Attr snapGalleryBoost=1) bzw. gleich angezeigt werden (Attr snapGalleryBoost=0) # es soll eine Schnappschußgallerie bereitgestellt (Attr snapGalleryBoost=1) bzw. gleich angezeigt werden (Attr snapGalleryBoost=0)
@ -4383,14 +4378,14 @@ sub SSCam_camop_parse ($) {
Log3($name, 4, "$name - HLS Streaming of camera \"$name\" activated, Streaming-URL: $url") if(AttrVal($name,"verbose",3) == 4); Log3($name, 4, "$name - HLS Streaming of camera \"$name\" activated, Streaming-URL: $url") if(AttrVal($name,"verbose",3) == 4);
Log3($name, 3, "$name - HLS Streaming of camera \"$name\" activated") if(AttrVal($name,"verbose",3) == 3); Log3($name, 3, "$name - HLS Streaming of camera \"$name\" activated") if(AttrVal($name,"verbose",3) == 3);
SSCam_refresh($hash,0,1,1); # kein Room-Refresh, Longpoll SSCam, Longpoll SSCamSTRM SSCam_refresh($hash,0,1,1); # kein Room-Refresh, SSCam-state-Event, SSCamSTRM-Event
} elsif ($OpMode eq "stopliveview_hls") { } elsif ($OpMode eq "stopliveview_hls") {
# HLS Streaming wurde deaktiviert, Aktivitätsstatus speichern # HLS Streaming wurde deaktiviert, Aktivitätsstatus speichern
$hash->{HELPER}{HLSSTREAM} = "inactive"; $hash->{HELPER}{HLSSTREAM} = "inactive";
Log3($name, 3, "$name - HLS Streaming of camera \"$name\" deactivated"); Log3($name, 3, "$name - HLS Streaming of camera \"$name\" deactivated");
SSCam_refresh($hash,0,1,1); # kein Room-Refresh, Longpoll SSCam, Longpoll SSCamSTRM SSCam_refresh($hash,0,1,1); # kein Room-Refresh, SSCam-state-Event, SSCamSTRM-Event
} elsif ($OpMode eq "reactivate_hls") { } elsif ($OpMode eq "reactivate_hls") {
# HLS Streaming wurde deaktiviert, Aktivitätsstatus speichern # HLS Streaming wurde deaktiviert, Aktivitätsstatus speichern
@ -4406,7 +4401,7 @@ sub SSCam_camop_parse ($) {
$hash->{HELPER}{HLSSTREAM} = "active"; $hash->{HELPER}{HLSSTREAM} = "active";
Log3($name, 4, "$name - HLS Streaming of camera \"$name\" activated for streaming device"); Log3($name, 4, "$name - HLS Streaming of camera \"$name\" activated for streaming device");
SSCam_refresh($hash,0,1,1); # kein Room-Refresh, Longpoll SSCam, Longpoll SSCamSTRM SSCam_refresh($hash,0,1,1); # kein Room-Refresh, SSCam-state-Event, SSCamSTRM-Event
} elsif ($OpMode eq "getsnapfilename") { } elsif ($OpMode eq "getsnapfilename") {
# den Filenamen eines Schnapschusses ermitteln # den Filenamen eines Schnapschusses ermitteln
@ -5406,20 +5401,21 @@ return($hash,$success,$myjson);
# Refresh eines Raumes aus $hash->{HELPER}{STRMROOM} # Refresh eines Raumes aus $hash->{HELPER}{STRMROOM}
# bzw. Longpoll von SSCam bzw. eines SSCamSTRM Devices wenn # bzw. Longpoll von SSCam bzw. eines SSCamSTRM Devices wenn
# $hash->{HELPER}{STRMDEV} gefüllt # $hash->{HELPER}{STRMDEV} gefüllt
# $hash, $pload (1=Page reload), $longpoll SSCam(1=Event), $longpoll SSCamSTRM (1=Event) # $hash, $pload (1=Page reload), SSCam-state-Event(1=Event), SSCamSTRM-Event (1=Event)
###################################################################################################### ######################################################################################################
sub SSCam_refresh($$$$) { sub SSCam_refresh($$$$) {
my ($hash,$pload,$lpoll_scm,$lpoll_strm) = @_; my ($hash,$pload,$lpoll_scm,$lpoll_strm) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
my $fpr = 0; my $fpr = 0;
# Kontext des SSCamSTRM-Devices speichern für SSCam_refresh # Kontext des SSCamSTRM-Devices speichern für Refresh
my $sd = $hash->{HELPER}{STRMDEV}?$hash->{HELPER}{STRMDEV}:"\"n.a.\""; # Name des aufrufenden SSCamSTRM-Devices my $sd = $hash->{HELPER}{STRMDEV}?$hash->{HELPER}{STRMDEV}:"\"n.a.\""; # Name des aufrufenden SSCamSTRM-Devices
my $sr = $hash->{HELPER}{STRMROOM}?$hash->{HELPER}{STRMROOM}:"\"n.a.\""; # Raum aus dem das SSCamSTRM-Device die Funktion aufrief my $sr = $hash->{HELPER}{STRMROOM}?$hash->{HELPER}{STRMROOM}:"\"n.a.\""; # Raum aus dem das SSCamSTRM-Device die Funktion aufrief
my $sl = $hash->{HELPER}{STRMDETAIL}?$hash->{HELPER}{STRMDETAIL}:"\"n.a.\""; # Name des SSCamSTRM-Devices (wenn Detailansicht) my $sl = $hash->{HELPER}{STRMDETAIL}?$hash->{HELPER}{STRMDETAIL}:"\"n.a.\""; # Name des SSCamSTRM-Devices (wenn Detailansicht)
$fpr = AttrVal($hash->{HELPER}{STRMDEV},"forcePageRefresh",0) if($hash->{HELPER}{STRMDEV}); $fpr = AttrVal($hash->{HELPER}{STRMDEV},"forcePageRefresh",0) if($hash->{HELPER}{STRMDEV});
Log3($name, 4, "$name - SSCam_refresh - caller: $sd, callerroom: $sr, detail: $sl, pload: $pload, forcePageRefresh: $fpr"); Log3($name, 4, "$name - SSCam_refresh - caller: $sd, callerroom: $sr, detail: $sl, pload: $pload, forcePageRefresh: $fpr");
# Page-Reload
if($pload && $hash->{HELPER}{STRMROOM} && $hash->{HELPER}{STRMDETAIL}) { if($pload && $hash->{HELPER}{STRMROOM} && $hash->{HELPER}{STRMDETAIL}) {
if($hash->{HELPER}{STRMROOM} && !$hash->{HELPER}{STRMDETAIL} && !$fpr) { if($hash->{HELPER}{STRMROOM} && !$hash->{HELPER}{STRMDETAIL} && !$fpr) {
Log3($name, 4, "$name - SSCam_refresh jetzt"); Log3($name, 4, "$name - SSCam_refresh jetzt");
@ -5439,7 +5435,7 @@ sub SSCam_refresh($$$$) {
{ map { FW_directNotify("#FHEMWEB:$_", "location.reload('true')", "") } devspec2array("TYPE=FHEMWEB") } { map { FW_directNotify("#FHEMWEB:$_", "location.reload('true')", "") } devspec2array("TYPE=FHEMWEB") }
} }
# Aufnahmestatus in state abbilden & Longpoll SSCam-Device wenn Event 1 # Aufnahmestatus in state abbilden & SSCam-Device state setzen (mit/ohne Event)
my $st = (ReadingsVal($name, "Record", "") eq "Start")?"on":"off"; my $st = (ReadingsVal($name, "Record", "") eq "Start")?"on":"off";
if($lpoll_scm) { if($lpoll_scm) {
readingsSingleUpdate($hash,"state", $st, 1); readingsSingleUpdate($hash,"state", $st, 1);
@ -5447,13 +5443,13 @@ sub SSCam_refresh($$$$) {
readingsSingleUpdate($hash,"state", $st, 0); readingsSingleUpdate($hash,"state", $st, 0);
} }
# Longpoll des SSCamSTRM-Device # state des SSCamSTRM-Device mit Opmode updaten (mit/ohne Event)
if($hash->{HELPER}{STRMDEV}) { if($hash->{HELPER}{STRMDEV}) {
my $strmhash = $defs{$hash->{HELPER}{STRMDEV}}; my $strmhash = $defs{$hash->{HELPER}{STRMDEV}};
if($lpoll_strm) { if($lpoll_strm) {
readingsSingleUpdate($strmhash,"state", $st, 1); readingsSingleUpdate($strmhash,"state", $hash->{OPMODE}, 1);
} else { } else {
readingsSingleUpdate($strmhash,"state", $st, 0); readingsSingleUpdate($strmhash,"state", $hash->{OPMODE}, 0);
} }
} }
@ -5799,7 +5795,16 @@ sub SSCam_StreamDev($$$) {
if($fmt =~ /mjpeg/) { if($fmt =~ /mjpeg/) {
$link = "http://$serveraddr:$serverport/webapi/$apivideostmspath?api=$apivideostms&version=$apivideostmsmaxver&method=Stream&cameraId=$camid&format=mjpeg&_sid=$sid"; $link = "http://$serveraddr:$serverport/webapi/$apivideostmspath?api=$apivideostms&version=$apivideostmsmaxver&method=Stream&cameraId=$camid&format=mjpeg&_sid=$sid";
$audiolink = "http://$serveraddr:$serverport/webapi/$apiaudiostmpath?api=$apiaudiostm&version=$apiaudiostmmaxver&method=Stream&cameraId=$camid&_sid=$sid"; $audiolink = "http://$serveraddr:$serverport/webapi/$apiaudiostmpath?api=$apiaudiostm&version=$apiaudiostmmaxver&method=Stream&cameraId=$camid&_sid=$sid";
$ret .= "<td><img src=$link $ha> </td>"; $ret .= "<td><img src=$link $ha><br>";
if(ReadingsVal($camname, "Record", "Stop") eq "Stop") {
# Aufnahmebutton endlos Start
$ret .= "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$cmdrecendless')\">$imgrecendless </a>";
} else {
# Aufnahmebutton Stop
$ret .= "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$cmdrecstop')\">$imgrecstop </a>";
}
$ret .= "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$cmddosnap')\">$imgdosnap </a>";
$ret .= "</td>";
if(AttrVal($camname,"ptzPanel_use",1)) { if(AttrVal($camname,"ptzPanel_use",1)) {
my $ptz_ret = SSCam_ptzpanel($camname); my $ptz_ret = SSCam_ptzpanel($camname);
if($ptz_ret) { if($ptz_ret) {
@ -5811,7 +5816,8 @@ sub SSCam_StreamDev($$$) {
$ret .= '<tr class="odd">'; $ret .= '<tr class="odd">';
$ret .= "<td><audio src=$audiolink preload='none' volume='0.5' controls> $ret .= "<td><audio src=$audiolink preload='none' volume='0.5' controls>
Your browser does not support the audio element. Your browser does not support the audio element.
</audio></td>"; </audio>";
$ret .= "</td>";
} }
} elsif($fmt =~ /switched/) { } elsif($fmt =~ /switched/) {
@ -5821,7 +5827,8 @@ sub SSCam_StreamDev($$$) {
if($link && $wltype =~ /image|iframe|video|base64img|embed|hls/) { if($link && $wltype =~ /image|iframe|video|base64img|embed|hls/) {
if($wltype =~ /image/) { if($wltype =~ /image/) {
$ret .= "<td><img src=$link $ha><br>"; $ret .= "<td><img src=$link $ha><br>";
$ret .= "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$cmdstop')\">$imgstop </a>"; $ret .= "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$cmdstop')\">$imgstop </a>";
$ret .= $imgblank;
if(ReadingsVal($camname, "Record", "Stop") eq "Stop") { if(ReadingsVal($camname, "Record", "Stop") eq "Stop") {
# Aufnahmebutton endlos Start # Aufnahmebutton endlos Start
$ret .= "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$cmdrecendless')\">$imgrecendless </a>"; $ret .= "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$cmdrecendless')\">$imgrecendless </a>";
@ -5838,6 +5845,7 @@ sub SSCam_StreamDev($$$) {
} }
} }
if($hash->{HELPER}{AUDIOLINK} && ReadingsVal($camname, "CamAudioType", "Unknown") !~ /Unknown/) { if($hash->{HELPER}{AUDIOLINK} && ReadingsVal($camname, "CamAudioType", "Unknown") !~ /Unknown/) {
$ret .= "</tr>";
$ret .= '<tr class="odd">'; $ret .= '<tr class="odd">';
$ret .= "<td><audio src=$hash->{HELPER}{AUDIOLINK} preload='none' volume='0.5' controls> $ret .= "<td><audio src=$hash->{HELPER}{AUDIOLINK} preload='none' volume='0.5' controls>
Your browser does not support the audio element. Your browser does not support the audio element.
@ -5855,7 +5863,8 @@ sub SSCam_StreamDev($$$) {
$ret .= '<tr class="odd">'; $ret .= '<tr class="odd">';
$ret .= "<td><audio src=$hash->{HELPER}{AUDIOLINK} preload='none' volume='0.5' controls> $ret .= "<td><audio src=$hash->{HELPER}{AUDIOLINK} preload='none' volume='0.5' controls>
Your browser does not support the audio element. Your browser does not support the audio element.
</audio></td>"; </audio>";
$ret .= "</td>";
} }
} elsif ($wltype =~ /video/) { } elsif ($wltype =~ /video/) {
@ -5868,11 +5877,12 @@ sub SSCam_StreamDev($$$) {
$ret .= "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$cmdstop')\">$imgstop </a>"; $ret .= "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$cmdstop')\">$imgstop </a>";
$ret .= "</td>"; $ret .= "</td>";
if($hash->{HELPER}{AUDIOLINK} && ReadingsVal($camname, "CamAudioType", "Unknown") !~ /Unknown/) { if($hash->{HELPER}{AUDIOLINK} && ReadingsVal($camname, "CamAudioType", "Unknown") !~ /Unknown/) {
$ret .= '</tr>';
$ret .= '<tr class="odd">'; $ret .= '<tr class="odd">';
$ret .= "<td><audio src=$hash->{HELPER}{AUDIOLINK} preload='none' volume='0.5' controls> $ret .= "<td><audio src=$hash->{HELPER}{AUDIOLINK} preload='none' volume='0.5' controls>
Your browser does not support the audio element. Your browser does not support the audio element.
</audio></td>"; </audio>";
$ret .= '</tr>'; $ret .= "</td>";
} }
} elsif($wltype =~ /base64img/) { } elsif($wltype =~ /base64img/) {
$ret .= "<td><img src='data:image/jpeg;base64,$link' $ha><br>"; $ret .= "<td><img src='data:image/jpeg;base64,$link' $ha><br>";
@ -5954,7 +5964,7 @@ sub composegallery ($;$$) {
my $ha = AttrVal($name, "snapGalleryHtmlAttr", AttrVal($name, "htmlattr", 'width="500" height="325"')); my $ha = AttrVal($name, "snapGalleryHtmlAttr", AttrVal($name, "htmlattr", 'width="500" height="325"'));
# falls "composegallery" durch ein mit "createSnapGallery" angelegtes Device aufgerufen wird # falls "composegallery" durch ein mit "createSnapGallery" angelegtes Device aufgerufen wird
my ($devWlink); my $devWlink = " ";
if ($strmdev) { if ($strmdev) {
if($defs{$strmdev}{TYPE} ne "SSCamSTRM") { if($defs{$strmdev}{TYPE} ne "SSCamSTRM") {
# Abfrage wegen Kompatibilität zu "alten" compose mit weblink-Modul # Abfrage wegen Kompatibilität zu "alten" compose mit weblink-Modul
@ -5963,8 +5973,6 @@ sub composegallery ($;$$) {
} }
my $wlha = AttrVal($strmdev, "htmlattr", undef); my $wlha = AttrVal($strmdev, "htmlattr", undef);
$ha = (defined($wlha))?$wlha:$ha; # htmlattr vom weblink-Device übernehmen falls von wl-Device aufgerufen und gesetzt $ha = (defined($wlha))?$wlha:$ha; # htmlattr vom weblink-Device übernehmen falls von wl-Device aufgerufen und gesetzt
} else {
$devWlink = " ";
} }
# wenn Weblink genutzt wird und attr "snapGalleryBoost" nicht gesetzt ist -> Warnung in Gallerie ausgeben # wenn Weblink genutzt wird und attr "snapGalleryBoost" nicht gesetzt ist -> Warnung in Gallerie ausgeben

View File

@ -28,6 +28,7 @@
######################################################################################################################### #########################################################################################################################
# Versions History: # Versions History:
# #
# 1.0.1 14.06.2018 commandref revised
# 1.0.0 14.06.2018 switch to longpoll refresh # 1.0.0 14.06.2018 switch to longpoll refresh
# 0.4 13.06.2018 new attribute "noDetaillink" (deleted in V1.0.0) # 0.4 13.06.2018 new attribute "noDetaillink" (deleted in V1.0.0)
# 0.3 12.06.2018 new attribute "forcePageRefresh" # 0.3 12.06.2018 new attribute "forcePageRefresh"
@ -40,7 +41,7 @@ package main;
use strict; use strict;
use warnings; use warnings;
my $SSCamSTRMVersion = "1.0.0"; my $SSCamSTRMVersion = "1.0.1";
################################################################ ################################################################
sub SSCamSTRM_Initialize($) { sub SSCamSTRM_Initialize($) {
@ -51,7 +52,8 @@ sub SSCamSTRM_Initialize($) {
$hash->{FW_summaryFn} = "SSCamSTRM_FwFn"; $hash->{FW_summaryFn} = "SSCamSTRM_FwFn";
$hash->{FW_detailFn} = "SSCamSTRM_FwFn"; $hash->{FW_detailFn} = "SSCamSTRM_FwFn";
$hash->{AttrFn} = "SSCamSTRM_Attr"; $hash->{AttrFn} = "SSCamSTRM_Attr";
# $hash->{FW_atPageEnd} = 1; #$hash->{FW_addDetailToSummary} = 1;
# $hash->{FW_atPageEnd} = 1; # Achtung, kein Longpoll
} }
@ -70,7 +72,11 @@ sub SSCamSTRM_Define($$) {
$hash->{VERSION} = $SSCamSTRMVersion; $hash->{VERSION} = $SSCamSTRMVersion;
$hash->{LINK} = $link; $hash->{LINK} = $link;
$attr{$name}{alias} = "."; if($hash->{MODEL} =~ /switched|mjpeg/) {
$attr{$name}{alias} = "<span></span>";
} else {
$attr{$name}{alias} = ".";
}
readingsSingleUpdate($hash,"state", "initialized", 1); # Init für "state" readingsSingleUpdate($hash,"state", "initialized", 1); # Init für "state"
@ -177,8 +183,7 @@ Dependend of the Streaming-Device state, different buttons are provided to start
<li><b>forcePageRefresh</b><br> <li><b>forcePageRefresh</b><br>
The attribute is evaluated by SSCam. <br> The attribute is evaluated by SSCam. <br>
If set, a reload of all browser pages with active FHEMWEB-connections will be enforced. If set, a reload of all browser pages with active FHEMWEB-connections will be enforced.
The restriction of a page reload of only one room or more rooms is canceled by this attribute, if the SSCamSTRM-Device This may be helpful if problems with longpoll are appear.
is e.g. added to a FLOORPLAN or Dashboard and it is additionally located in one or more rooms.
</li> </li>
<br> <br>
@ -254,8 +259,7 @@ Abhängig vom Zustand des Streaming-Devices werden zum Start von Aktionen unters
<li><b>forcePageRefresh</b><br> <li><b>forcePageRefresh</b><br>
Das Attribut wird durch SSCam ausgewertet. <br> Das Attribut wird durch SSCam ausgewertet. <br>
Wenn gesetzt, wird ein Reload aller Browserseiten mit aktiven FHEMWEB-Verbindungen bei bestimmten Aktionen erzwungen. Wenn gesetzt, wird ein Reload aller Browserseiten mit aktiven FHEMWEB-Verbindungen bei bestimmten Aktionen erzwungen.
Die Beschränkung des Seitenreloads auf nur einen oder mehrere Räume wird mit diesem Attribut aufgehoben, falls das Das kann hilfreich sein, falls es mit Longpoll Probleme geben sollte.
SSCamSTRM-Device sich z.B. in einem FLOORPLAN oder Dashboard befindet und zusätzlich in einen oder mehrere Räume
eingefügt ist. eingefügt ist.
</li> </li>
<br> <br>