2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-16 04:36:02 +00:00

49_SSCam: running stream as human readable entry for SSCamSTRM-Device

git-svn-id: https://svn.fhem.de/fhem/trunk@16898 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2018-06-23 07:46:21 +00:00
parent a94fdadd55
commit b9eccad14b
2 changed files with 20 additions and 6 deletions

View File

@ -27,6 +27,7 @@
######################################################################################################################### #########################################################################################################################
# Versions History: # Versions History:
# #
# 5.2.6 20.06.2018 running stream as human readable entry for SSCamSTRM-Device
# 5.2.5 18.06.2018 trigger lastsnap_fw to SSCamSTRM-Device only if snap was done by it. # 5.2.5 18.06.2018 trigger lastsnap_fw to SSCamSTRM-Device only if snap was done by it.
# 5.2.4 17.06.2018 SSCam_composegallery added and write warning if old composegallery-weblink device is used # 5.2.4 17.06.2018 SSCam_composegallery added and write warning if old composegallery-weblink device is used
# 5.2.3 16.06.2018 no SSCamSTRM refresh when snapgetinfo was running without taken a snap by SSCamSTRM-Device # 5.2.3 16.06.2018 no SSCamSTRM refresh when snapgetinfo was running without taken a snap by SSCamSTRM-Device
@ -238,7 +239,7 @@ use Time::HiRes;
use HttpUtils; use HttpUtils;
# no if $] >= 5.017011, warnings => 'experimental'; # no if $] >= 5.017011, warnings => 'experimental';
my $SSCamVersion = "5.2.5"; my $SSCamVersion = "5.2.6";
# Aufbau Errorcode-Hashes (siehe Surveillance Station Web API) # Aufbau Errorcode-Hashes (siehe Surveillance Station Web API)
my %SSCam_errauthlist = ( my %SSCam_errauthlist = (
@ -909,48 +910,57 @@ sub SSCam_Set($@) {
$hash->{HELPER}{WLTYPE} = "link"; $hash->{HELPER}{WLTYPE} = "link";
$hash->{HELPER}{ALIAS} = "LiveView"; $hash->{HELPER}{ALIAS} = "LiveView";
$hash->{HELPER}{RUNVIEW} = "live_open"; $hash->{HELPER}{RUNVIEW} = "live_open";
$hash->{HELPER}{ACTSTRM} = ""; # sprechender Name des laufenden Streamtyps für SSCamSTRM
} elsif ($prop eq "live_link") { } elsif ($prop eq "live_link") {
$hash->{HELPER}{OPENWINDOW} = 0; $hash->{HELPER}{OPENWINDOW} = 0;
$hash->{HELPER}{WLTYPE} = "link"; $hash->{HELPER}{WLTYPE} = "link";
$hash->{HELPER}{ALIAS} = "LiveView"; $hash->{HELPER}{ALIAS} = "LiveView";
$hash->{HELPER}{RUNVIEW} = "live_link"; $hash->{HELPER}{RUNVIEW} = "live_link";
$hash->{HELPER}{ACTSTRM} = ""; # sprechender Name des laufenden Streamtyps für SSCamSTRM
} elsif ($prop eq "lastrec_open") { } elsif ($prop eq "lastrec_open") {
if ($prop1) {$hash->{HELPER}{VIEWOPENROOM} = $prop1;} else {delete $hash->{HELPER}{VIEWOPENROOM};} if ($prop1) {$hash->{HELPER}{VIEWOPENROOM} = $prop1;} else {delete $hash->{HELPER}{VIEWOPENROOM};}
$hash->{HELPER}{OPENWINDOW} = 1; $hash->{HELPER}{OPENWINDOW} = 1;
$hash->{HELPER}{WLTYPE} = "link"; $hash->{HELPER}{WLTYPE} = "link";
$hash->{HELPER}{ALIAS} = "LastRecording"; $hash->{HELPER}{ALIAS} = "LastRecording";
$hash->{HELPER}{RUNVIEW} = "lastrec_open"; $hash->{HELPER}{RUNVIEW} = "lastrec_open";
$hash->{HELPER}{ACTSTRM} = ""; # sprechender Name des laufenden Streamtyps für SSCamSTRM
} elsif ($prop eq "lastrec_fw") { # Video in iFrame eingebettet } elsif ($prop eq "lastrec_fw") { # Video in iFrame eingebettet
$hash->{HELPER}{OPENWINDOW} = 0; $hash->{HELPER}{OPENWINDOW} = 0;
$hash->{HELPER}{WLTYPE} = "iframe"; $hash->{HELPER}{WLTYPE} = "iframe";
$hash->{HELPER}{ALIAS} = " "; $hash->{HELPER}{ALIAS} = " ";
$hash->{HELPER}{RUNVIEW} = "lastrec"; $hash->{HELPER}{RUNVIEW} = "lastrec";
$hash->{HELPER}{ACTSTRM} = "last Recording"; # sprechender Name des laufenden Streamtyps für SSCamSTRM
} elsif ($prop eq "lastrec_fw_MJPEG") { # “video/avi” MJPEG format event } elsif ($prop eq "lastrec_fw_MJPEG") { # “video/avi” MJPEG format event
$hash->{HELPER}{OPENWINDOW} = 0; $hash->{HELPER}{OPENWINDOW} = 0;
$hash->{HELPER}{WLTYPE} = "image"; $hash->{HELPER}{WLTYPE} = "image";
$hash->{HELPER}{ALIAS} = " "; $hash->{HELPER}{ALIAS} = " ";
$hash->{HELPER}{RUNVIEW} = "lastrec"; $hash->{HELPER}{RUNVIEW} = "lastrec";
$hash->{HELPER}{ACTSTRM} = "last Recording"; # sprechender Name des laufenden Streamtyps für SSCamSTRM
} elsif ($prop eq "lastrec_fw_MPEG4/H.264") { # “video/mp4” MPEG4/H.264 format event } elsif ($prop eq "lastrec_fw_MPEG4/H.264") { # “video/mp4” MPEG4/H.264 format event
$hash->{HELPER}{OPENWINDOW} = 0; $hash->{HELPER}{OPENWINDOW} = 0;
$hash->{HELPER}{WLTYPE} = "video"; $hash->{HELPER}{WLTYPE} = "video";
$hash->{HELPER}{ALIAS} = " "; $hash->{HELPER}{ALIAS} = " ";
$hash->{HELPER}{RUNVIEW} = "lastrec"; $hash->{HELPER}{RUNVIEW} = "lastrec";
$hash->{HELPER}{ACTSTRM} = "last Recording"; # sprechender Name des laufenden Streamtyps für SSCamSTRM
} elsif ($prop eq "live_fw") { } elsif ($prop eq "live_fw") {
$hash->{HELPER}{OPENWINDOW} = 0; $hash->{HELPER}{OPENWINDOW} = 0;
$hash->{HELPER}{WLTYPE} = "image"; $hash->{HELPER}{WLTYPE} = "image";
$hash->{HELPER}{ALIAS} = " "; $hash->{HELPER}{ALIAS} = " ";
$hash->{HELPER}{RUNVIEW} = "live_fw"; $hash->{HELPER}{RUNVIEW} = "live_fw";
$hash->{HELPER}{ACTSTRM} = "MJPEG Livestream"; # sprechender Name des laufenden Streamtyps für SSCamSTRM
} elsif ($prop eq "live_fw_hls") { } elsif ($prop eq "live_fw_hls") {
$hash->{HELPER}{OPENWINDOW} = 0; $hash->{HELPER}{OPENWINDOW} = 0;
$hash->{HELPER}{WLTYPE} = "hls"; $hash->{HELPER}{WLTYPE} = "hls";
$hash->{HELPER}{ALIAS} = "View only on compatible browsers"; $hash->{HELPER}{ALIAS} = "View only on compatible browsers";
$hash->{HELPER}{RUNVIEW} = "live_fw_hls"; $hash->{HELPER}{RUNVIEW} = "live_fw_hls";
$hash->{HELPER}{ACTSTRM} = "HLS Livestream"; # sprechender Name des laufenden Streamtyps für SSCamSTRM
} elsif ($prop eq "lastsnap_fw") { } elsif ($prop eq "lastsnap_fw") {
$hash->{HELPER}{LSNAPBYSTRMDEV} = 1 if ($prop1); # $prop1 wird mitgegeben durch lastsnap_fw by SSCamSTRM-Device $hash->{HELPER}{LSNAPBYSTRMDEV} = 1 if ($prop1); # $prop1 wird mitgegeben durch lastsnap_fw by SSCamSTRM-Device
$hash->{HELPER}{OPENWINDOW} = 0; $hash->{HELPER}{OPENWINDOW} = 0;
$hash->{HELPER}{WLTYPE} = "base64img"; $hash->{HELPER}{WLTYPE} = "base64img";
$hash->{HELPER}{ALIAS} = " "; $hash->{HELPER}{ALIAS} = " ";
$hash->{HELPER}{RUNVIEW} = "lastsnap_fw"; $hash->{HELPER}{RUNVIEW} = "lastsnap_fw";
$hash->{HELPER}{ACTSTRM} = "last Snapshot"; # sprechender Name des laufenden Streamtyps für SSCamSTRM
} else { } else {
return "$prop isn't a valid option of runview, use one of live_fw, live_link, live_open, lastrec_fw, lastrec_open, lastsnap_fw"; return "$prop isn't a valid option of runview, use one of live_fw, live_link, live_open, lastrec_fw, lastrec_open, lastsnap_fw";
} }
@ -2174,6 +2184,7 @@ sub SSCam_stopliveview ($) {
# Link aus Helper-hash löschen # Link aus Helper-hash löschen
delete $hash->{HELPER}{LINK}; delete $hash->{HELPER}{LINK};
delete $hash->{HELPER}{AUDIOLINK}; delete $hash->{HELPER}{AUDIOLINK};
delete $hash->{HELPER}{ACTSTRM}; # sprechender Name des laufenden Streamtyps für SSCamSTRM
# Reading LiveStreamUrl löschen # Reading LiveStreamUrl löschen
delete($defs{$name}{READINGS}{LiveStreamUrl}) if ($defs{$name}{READINGS}{LiveStreamUrl}); delete($defs{$name}{READINGS}{LiveStreamUrl}) if ($defs{$name}{READINGS}{LiveStreamUrl});

View File

@ -28,6 +28,7 @@
######################################################################################################################### #########################################################################################################################
# Versions History: # Versions History:
# #
# 1.2.0 20.06.2018 running stream as human readable entry for SSCamSTRM-Device
# 1.1.0 16.06.2018 attr hideDisplayName regarding to Forum #88667 # 1.1.0 16.06.2018 attr hideDisplayName regarding to Forum #88667
# 1.0.1 14.06.2018 commandref revised # 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
@ -42,7 +43,7 @@ package main;
use strict; use strict;
use warnings; use warnings;
my $SSCamSTRMVersion = "1.1.0"; my $SSCamSTRMVersion = "1.2.0";
################################################################ ################################################################
sub SSCamSTRM_Initialize($) { sub SSCamSTRM_Initialize($) {
@ -114,12 +115,14 @@ sub SSCamSTRM_FwFn($$$$) {
return undef if(IsDisabled($d)); return undef if(IsDisabled($d));
$link = AnalyzePerlCommand(undef, $link) if($link =~ m/^{(.*)}$/s); $link = AnalyzePerlCommand(undef, $link) if($link =~ m/^{(.*)}$/s);
my $show = $defs{$hash->{PARENT}}->{HELPER}{ACTSTRM};
$show = $show?"($show)":"";
my $alias = AttrVal($d, "alias", $d); # Linktext als Aliasname oder Devicename setzen my $alias = AttrVal($d, "alias", $d); # Linktext als Aliasname oder Devicename setzen
my $dlink = "<a href=\"/fhem?detail=$d\">$alias</a><br>"; my $dlink = "<a href=\"/fhem?detail=$d\">$alias</a>";
my $ret = ""; my $ret = "";
$ret .= "<span>$dlink </span>" if(!AttrVal($d,"hideDisplayName",0)); $ret .= "<span>$dlink $show</span><br>" if(!AttrVal($d,"hideDisplayName",0));
$ret .= $link; $ret .= $link;
return $ret; return $ret;