mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-01 01:09:47 +00:00
49_SSCam: contrib 9.5.0
git-svn-id: https://svn.fhem.de/fhem/trunk@22421 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
9fbe7999df
commit
a788e1aa1c
@ -7463,18 +7463,20 @@ return ($hash,$success,$myjson);
|
|||||||
sub roomRefresh {
|
sub roomRefresh {
|
||||||
my ($hash,$pload,$lpoll_scm,$lpoll_strm) = @_;
|
my ($hash,$pload,$lpoll_scm,$lpoll_strm) = @_;
|
||||||
my ($name,$st);
|
my ($name,$st);
|
||||||
if (ref $hash ne "HASH")
|
|
||||||
{
|
if (ref $hash ne "HASH") {
|
||||||
($name,$pload,$lpoll_scm,$lpoll_strm) = split ",",$hash;
|
($name,$pload,$lpoll_scm,$lpoll_strm) = split ",",$hash;
|
||||||
$hash = $defs{$name};
|
$hash = $defs{$name};
|
||||||
} else {
|
} else {
|
||||||
$name = $hash->{NAME};
|
$name = $hash->{NAME};
|
||||||
}
|
}
|
||||||
|
|
||||||
my $fpr = 0;
|
my $fpr = 0;
|
||||||
|
|
||||||
# SSCamSTRM-Device mit hinterlegter FUUID ($hash->{HELPER}{INFORM}) selektieren
|
# SSCamSTRM-Device mit hinterlegter FUUID ($hash->{HELPER}{INFORM}) selektieren
|
||||||
my @spgs = devspec2array("TYPE=SSCamSTRM");
|
my @spgs = devspec2array("TYPE=SSCamSTRM");
|
||||||
my $room = "";
|
my $room = "";
|
||||||
|
|
||||||
for(@spgs) {
|
for(@spgs) {
|
||||||
if($defs{$_}{PARENT} eq $name) {
|
if($defs{$_}{PARENT} eq $name) {
|
||||||
next if(IsDisabled($defs{$_}{NAME}) || !$hash->{HELPER}{INFORM} || $hash->{HELPER}{INFORM} ne $defs{$_}{FUUID});
|
next if(IsDisabled($defs{$_}{NAME}) || !$hash->{HELPER}{INFORM} || $hash->{HELPER}{INFORM} ne $defs{$_}{FUUID});
|
||||||
@ -7494,6 +7496,7 @@ sub roomRefresh {
|
|||||||
{ map { FW_directNotify("FILTER=room=$r", "#FHEMWEB:$_", "location.reload('true')", "") } devspec2array("TYPE=FHEMWEB") }
|
{ map { FW_directNotify("FILTER=room=$r", "#FHEMWEB:$_", "location.reload('true')", "") } devspec2array("TYPE=FHEMWEB") }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} elsif ($pload || $fpr) {
|
} elsif ($pload || $fpr) {
|
||||||
# trifft zu bei Detailansicht oder im FLOORPLAN bzw. Dashboard oder wenn Seitenrefresh mit dem
|
# trifft zu bei Detailansicht oder im FLOORPLAN bzw. Dashboard oder wenn Seitenrefresh mit dem
|
||||||
# SSCamSTRM-Attribut "forcePageRefresh" erzwungen wird
|
# SSCamSTRM-Attribut "forcePageRefresh" erzwungen wird
|
||||||
@ -7509,6 +7512,7 @@ sub roomRefresh {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# parentState des SSCamSTRM-Device updaten
|
# parentState des SSCamSTRM-Device updaten
|
||||||
|
if($lpoll_strm) {
|
||||||
$st = ReadingsVal($name, "state", "initialized");
|
$st = ReadingsVal($name, "state", "initialized");
|
||||||
for(@spgs) {
|
for(@spgs) {
|
||||||
if($defs{$_}{PARENT} eq $name) {
|
if($defs{$_}{PARENT} eq $name) {
|
||||||
@ -7523,6 +7527,7 @@ sub roomRefresh {
|
|||||||
delete $hash->{HELPER}{INFORM};
|
delete $hash->{HELPER}{INFORM};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -9089,11 +9094,6 @@ sub composeGallery {
|
|||||||
my ($alias,$dlink,$hb) = ("","","");
|
my ($alias,$dlink,$hb) = ("","","");
|
||||||
my ($cache,$imgdat,$imgTm);
|
my ($cache,$imgdat,$imgTm);
|
||||||
|
|
||||||
# Kontext des SSCamSTRM-Devices speichern für roomRefresh
|
|
||||||
#$hash->{HELPER}{STRMDEV} = $strmdev; # Name des aufrufenden SSCamSTRM-Devices
|
|
||||||
#$hash->{HELPER}{STRMROOM} = $FW_room?$FW_room:""; # Raum aus dem das SSCamSTRM-Device die Funktion aufrief
|
|
||||||
#$hash->{HELPER}{STRMDETAIL} = $FW_detail?$FW_detail:""; # Name des SSCamSTRM-Devices (wenn Detailansicht)
|
|
||||||
|
|
||||||
if($strmdev) {
|
if($strmdev) {
|
||||||
my $streamHash = $defs{$strmdev}; # Hash des SSCamSTRM-Devices
|
my $streamHash = $defs{$strmdev}; # Hash des SSCamSTRM-Devices
|
||||||
$uuid = $streamHash->{FUUID}; # eindeutige UUID des Streamingdevices
|
$uuid = $streamHash->{FUUID}; # eindeutige UUID des Streamingdevices
|
||||||
|
@ -42,6 +42,7 @@ BEGIN {
|
|||||||
qw(
|
qw(
|
||||||
AnalyzePerlCommand
|
AnalyzePerlCommand
|
||||||
AttrVal
|
AttrVal
|
||||||
|
CommandSet
|
||||||
data
|
data
|
||||||
defs
|
defs
|
||||||
devspec2array
|
devspec2array
|
||||||
@ -267,8 +268,7 @@ sub Set {
|
|||||||
} else {
|
} else {
|
||||||
my $sd = allStreamDevs();
|
my $sd = allStreamDevs();
|
||||||
$setlist = "Unknown argument $opt, choose one of ".
|
$setlist = "Unknown argument $opt, choose one of ".
|
||||||
"adoptFrom:$sd ".
|
"adoptFrom:--reset--,$sd "
|
||||||
"reset:noArg "
|
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -303,11 +303,18 @@ sub Set {
|
|||||||
} elsif ($opt eq "adoptFrom") {
|
} elsif ($opt eq "adoptFrom") {
|
||||||
shift @a; shift @a;
|
shift @a; shift @a;
|
||||||
$prop = join "#", @a;
|
$prop = join "#", @a;
|
||||||
|
|
||||||
|
if($prop eq "--reset--") {
|
||||||
|
CommandSet(undef, "$name reset");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
my $strmd = $sdevs{"$prop"};
|
my $strmd = $sdevs{"$prop"};
|
||||||
my $valid = ($strmd && $defs{$strmd} && $defs{$strmd}{TYPE} eq "SSCamSTRM");
|
my $valid = ($strmd && $defs{$strmd} && $defs{$strmd}{TYPE} eq "SSCamSTRM");
|
||||||
|
|
||||||
return qq{The command "$opt" needs a valid SSCamSTRM device as argument} if(!$valid);
|
return qq{The command "$opt" needs a valid SSCamSTRM device as argument} if(!$valid);
|
||||||
|
|
||||||
|
|
||||||
# Übernahme der Readings
|
# Übernahme der Readings
|
||||||
my @r;
|
my @r;
|
||||||
delReadings($hash);
|
delReadings($hash);
|
||||||
@ -329,14 +336,30 @@ sub Set {
|
|||||||
readingsBulkUpdate($hash, $rn, $rval);
|
readingsBulkUpdate($hash, $rn, $rval);
|
||||||
}
|
}
|
||||||
|
|
||||||
readingsEndUpdate($hash, 1);
|
readingsEndUpdate($hash, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
webRefresh($hash);
|
||||||
|
|
||||||
} elsif ($opt eq "reset") {
|
} elsif ($opt eq "reset") {
|
||||||
delReadings($hash);
|
delReadings($hash);
|
||||||
# $hash->{LINK} = $hash->{DEF};
|
|
||||||
explodeLinkData ($hash, $hash->{DEF}, 1);
|
explodeLinkData ($hash, $hash->{DEF}, 1);
|
||||||
|
|
||||||
|
my @r;
|
||||||
|
push @r, "parentState:initialized";
|
||||||
|
push @r, "state:initialized";
|
||||||
|
|
||||||
|
readingsBeginUpdate($hash);
|
||||||
|
|
||||||
|
for my $elem (@r) {
|
||||||
|
my ($rn,$rval) = split ":", $elem, 2;
|
||||||
|
readingsBulkUpdate($hash, $rn, $rval);
|
||||||
|
}
|
||||||
|
|
||||||
|
readingsEndUpdate($hash, 0);
|
||||||
|
|
||||||
|
webRefresh($hash);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
return "$setlist";
|
return "$setlist";
|
||||||
}
|
}
|
||||||
@ -615,12 +638,14 @@ sub delReadings {
|
|||||||
my $bl = "state|parentState"; # Blacklist
|
my $bl = "state|parentState"; # Blacklist
|
||||||
|
|
||||||
if($rd) { # angegebenes Reading löschen wenn nicht im providerLevel enthalten
|
if($rd) { # angegebenes Reading löschen wenn nicht im providerLevel enthalten
|
||||||
delete($hash->{READINGS}{$rd}) if($rd !~ /$bl/x);
|
# delete($hash->{READINGS}{$rd}) if($rd !~ /$bl/x);
|
||||||
|
readingsDelete($hash, $rd) if($rd !~ /$bl/x);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for my $key (keys %{$hash->{READINGS}}) {
|
for my $key (keys %{$hash->{READINGS}}) {
|
||||||
delete($hash->{READINGS}{$key}) if($key !~ /$bl/x);
|
# delete($hash->{READINGS}{$key}) if($key !~ /$bl/x);
|
||||||
|
readingsDelete($hash, $key) if($key !~ /$bl/x);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -664,7 +689,7 @@ sub sDevsWidget {
|
|||||||
my $Adopts;
|
my $Adopts;
|
||||||
my $ret = "";
|
my $ret = "";
|
||||||
my $cmdAdopt = "adoptFrom";
|
my $cmdAdopt = "adoptFrom";
|
||||||
my $valAdopts = allStreamDevs();
|
my $valAdopts = "--reset--,".allStreamDevs();
|
||||||
|
|
||||||
for my $fn (sort keys %{$data{webCmdFn}}) {
|
for my $fn (sort keys %{$data{webCmdFn}}) {
|
||||||
next if($data{webCmdFn}{$fn} ne "FW_widgetFallbackFn");
|
next if($data{webCmdFn}{$fn} ne "FW_widgetFallbackFn");
|
||||||
|
Loading…
Reference in New Issue
Block a user