mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-21 07:56:03 +00:00
49_SSCam: contrib 8.4.1
git-svn-id: https://svn.fhem.de/fhem/trunk@18188 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
148684c3a3
commit
b4a85122cb
@ -2137,12 +2137,15 @@ sub SSCam_cammotdetsc($) {
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
sub SSCam_camsnap($) {
|
sub SSCam_camsnap($) {
|
||||||
my ($str) = @_;
|
my ($str) = @_;
|
||||||
my ($name,$num,$lag,$ncount,$emtxt) = split(":",$str);
|
my ($name,$num,$lag,$ncount,$emtxt,$tac) = split(":",$str);
|
||||||
my $hash = $defs{$name};
|
my $hash = $defs{$name};
|
||||||
my $camname = $hash->{CAMNAME};
|
my $camname = $hash->{CAMNAME};
|
||||||
my $errorcode;
|
my $errorcode;
|
||||||
my $error;
|
my $error;
|
||||||
|
|
||||||
|
$tac = (defined $tac)?$tac:5000;
|
||||||
|
my $ta = $hash->{HELPER}{TRANSACTION};
|
||||||
|
|
||||||
RemoveInternalTimer($hash, "SSCam_camsnap");
|
RemoveInternalTimer($hash, "SSCam_camsnap");
|
||||||
return if(IsDisabled($name));
|
return if(IsDisabled($name));
|
||||||
|
|
||||||
@ -2167,7 +2170,7 @@ sub SSCam_camsnap($) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($hash->{HELPER}{ACTIVE} eq "off") {
|
if ($hash->{HELPER}{ACTIVE} eq "off" || ((defined $ta) && $ta == $tac)) {
|
||||||
# einen Schnappschuß aufnehmen
|
# einen Schnappschuß aufnehmen
|
||||||
$hash->{OPMODE} = "Snap";
|
$hash->{OPMODE} = "Snap";
|
||||||
$hash->{HELPER}{LOGINRETRIES} = 0;
|
$hash->{HELPER}{LOGINRETRIES} = 0;
|
||||||
@ -2181,7 +2184,8 @@ sub SSCam_camsnap($) {
|
|||||||
SSCam_getapisites($hash);
|
SSCam_getapisites($hash);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
InternalTimer(gettimeofday()+0.3, "SSCam_camsnap", "$name:$num:$lag:$ncount:$emtxt", 0);
|
$tac = (defined $tac)?$tac:"";
|
||||||
|
InternalTimer(gettimeofday()+0.3, "SSCam_camsnap", "$name:$num:$lag:$ncount:$emtxt:$tac", 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3063,12 +3067,14 @@ sub SSCam_getsnapinfo ($) {
|
|||||||
my ($name,$slim,$ssize,$tac) = split(":",$str);
|
my ($name,$slim,$ssize,$tac) = split(":",$str);
|
||||||
my $hash = $defs{$name};
|
my $hash = $defs{$name};
|
||||||
my $camname = $hash->{CAMNAME};
|
my $camname = $hash->{CAMNAME};
|
||||||
$tac = (defined $tac)?$tac:5000;
|
|
||||||
|
$tac = (defined $tac)?$tac:5000;
|
||||||
|
my $ta = $hash->{HELPER}{TRANSACTION};
|
||||||
|
|
||||||
RemoveInternalTimer("SSCam_getsnapinfo");
|
RemoveInternalTimer("SSCam_getsnapinfo");
|
||||||
return if(IsDisabled($name));
|
return if(IsDisabled($name));
|
||||||
|
|
||||||
if ($hash->{HELPER}{ACTIVE} eq "off" || ($hash->{HELPER}{TRANSACTION} && $hash->{HELPER}{TRANSACTION} == $tac)) {
|
if ($hash->{HELPER}{ACTIVE} eq "off" || ((defined $ta) && $ta == $tac)) {
|
||||||
$hash->{OPMODE} = "getsnapinfo";
|
$hash->{OPMODE} = "getsnapinfo";
|
||||||
$hash->{OPMODE} = "getsnapgallery" if(exists($hash->{HELPER}{GETSNAPGALLERY}));
|
$hash->{OPMODE} = "getsnapgallery" if(exists($hash->{HELPER}{GETSNAPGALLERY}));
|
||||||
$hash->{HELPER}{LOGINRETRIES} = 0;
|
$hash->{HELPER}{LOGINRETRIES} = 0;
|
||||||
@ -3080,6 +3086,7 @@ sub SSCam_getsnapinfo ($) {
|
|||||||
SSCam_getapisites($hash);
|
SSCam_getapisites($hash);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
$tac = (defined $tac)?$tac:"";
|
||||||
InternalTimer(gettimeofday()+1.7, "SSCam_getsnapinfo", "$name:$slim:$ssize", 0);
|
InternalTimer(gettimeofday()+1.7, "SSCam_getsnapinfo", "$name:$slim:$ssize", 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4901,6 +4908,15 @@ sub SSCam_camop_parse ($) {
|
|||||||
# falls Aufnahme noch läuft -> state = on setzen
|
# falls Aufnahme noch läuft -> state = on setzen
|
||||||
SSCam_refresh($hash,0,1,0); # kein Room-Refresh, SSCam-state-Event, kein SSCamSTRM-Event
|
SSCam_refresh($hash,0,1,0); # kein Room-Refresh, SSCam-state-Event, kein SSCamSTRM-Event
|
||||||
|
|
||||||
|
my $tac = "";
|
||||||
|
if($hash->{HELPER}{CANSENDSNAP}) {
|
||||||
|
if(!$hash->{HELPER}{TRANSACTION}) {
|
||||||
|
$tac = SSCam_startTrans($hash); # Transaktion starten
|
||||||
|
} else {
|
||||||
|
$tac = $hash->{HELPER}{TRANSACTION};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$snapid = $data->{data}{'id'};
|
$snapid = $data->{data}{'id'};
|
||||||
readingsSingleUpdate($hash,"LastSnapId",$snapid, 0) if($snapid);
|
readingsSingleUpdate($hash,"LastSnapId",$snapid, 0) if($snapid);
|
||||||
|
|
||||||
@ -4919,20 +4935,16 @@ sub SSCam_camop_parse ($) {
|
|||||||
my $lag = $hash->{HELPER}{SNAPLAG}; # Zeitverzögerung zwischen zwei Schnappschüssen
|
my $lag = $hash->{HELPER}{SNAPLAG}; # Zeitverzögerung zwischen zwei Schnappschüssen
|
||||||
my $emtxt = $hash->{HELPER}{SMTPMSG}?$hash->{HELPER}{SMTPMSG}:""; # alternativer Text für Email-Versand
|
my $emtxt = $hash->{HELPER}{SMTPMSG}?$hash->{HELPER}{SMTPMSG}:""; # alternativer Text für Email-Versand
|
||||||
if($ncount > 0) {
|
if($ncount > 0) {
|
||||||
InternalTimer(gettimeofday()+$lag, "SSCam_camsnap", "$name:$num:$lag:$ncount:$emtxt", 0);
|
InternalTimer(gettimeofday()+$lag, "SSCam_camsnap", "$name:$num:$lag:$ncount:$emtxt:$tac", 0);
|
||||||
# Token freigeben für nächstes Kommando
|
# Token freigeben für nächstes Kommando
|
||||||
SSCam_delActiveToken($hash);
|
# SSCam_delActiveToken($hash);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Schnappschußgalerie abrufen (snapGalleryBoost) oder nur Info des letzten Snaps
|
# Schnappschußgalerie abrufen (snapGalleryBoost) oder nur Info des letzten Snaps
|
||||||
my ($slim,$ssize) = SSCam_snaplimsize($hash);
|
my ($slim,$ssize) = SSCam_snaplimsize($hash);
|
||||||
|
|
||||||
my $tac = "";
|
if(!$hash->{HELPER}{CANSENDSNAP}) {
|
||||||
if($hash->{HELPER}{CANSENDSNAP}) {
|
|
||||||
$tac = int(rand(4500)); # Transaktionscode (snap und getsnapinfo als Einheit ausführen)
|
|
||||||
$hash->{HELPER}{TRANSACTION} = $tac;
|
|
||||||
} else {
|
|
||||||
# Token freigeben vor nächstem Kommando
|
# Token freigeben vor nächstem Kommando
|
||||||
SSCam_delActiveToken($hash);
|
SSCam_delActiveToken($hash);
|
||||||
}
|
}
|
||||||
@ -5060,7 +5072,7 @@ sub SSCam_camop_parse ($) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delete($hash->{HELPER}{TRANSACTION}); # delete Transaktion
|
SSCam_stopTrans($hash); # Transaktion beenden
|
||||||
delete($hash->{HELPER}{GETSNAPGALLERY}); # Steuerbit getsnapgallery statt getsnapinfo
|
delete($hash->{HELPER}{GETSNAPGALLERY}); # Steuerbit getsnapgallery statt getsnapinfo
|
||||||
|
|
||||||
##### Fall abhängige Eventgenerierung #####
|
##### Fall abhängige Eventgenerierung #####
|
||||||
@ -7188,7 +7200,7 @@ sub SSCam_prepareSendEmail ($$;$) {
|
|||||||
# Extraktion EMail-Texte
|
# Extraktion EMail-Texte
|
||||||
# Attribut snapEmailTxt kann übersteuert werden mit: $hash->{HELPER}{SMTPMSG}
|
# Attribut snapEmailTxt kann übersteuert werden mit: $hash->{HELPER}{SMTPMSG}
|
||||||
# Format in $hash->{HELPER}{SMTPMSG} muss sein: subject => <Betreff-Text>, body => <Mitteilung-Text>
|
# Format in $hash->{HELPER}{SMTPMSG} muss sein: subject => <Betreff-Text>, body => <Mitteilung-Text>
|
||||||
my $mth = $hash->{HELPER}{SMTPMSG};
|
my $mth = delete $hash->{HELPER}{SMTPMSG};
|
||||||
my $mt = $mth?$mth:AttrVal($name, "snapEmailTxt", "");
|
my $mt = $mth?$mth:AttrVal($name, "snapEmailTxt", "");
|
||||||
$mt =~ s/['"]//g;
|
$mt =~ s/['"]//g;
|
||||||
|
|
||||||
@ -7632,7 +7644,7 @@ sub SSCam_setActiveToken ($) {
|
|||||||
|
|
||||||
$hash->{HELPER}{ACTIVE} = "on";
|
$hash->{HELPER}{ACTIVE} = "on";
|
||||||
if (AttrVal($name,"debugactivetoken",0)) {
|
if (AttrVal($name,"debugactivetoken",0)) {
|
||||||
Log3($name, 3, "$name - Active-Token set by OPMODE: $hash->{OPMODE}");
|
Log3($name, 1, "$name - Active-Token set by OPMODE: $hash->{OPMODE}");
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -7647,7 +7659,39 @@ sub SSCam_delActiveToken ($) {
|
|||||||
|
|
||||||
$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, 1, "$name - Active-Token deleted by OPMODE: $hash->{OPMODE}");
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#############################################################################################
|
||||||
|
# Transaktion starten
|
||||||
|
#############################################################################################
|
||||||
|
sub SSCam_startTrans ($) {
|
||||||
|
my ($hash) = @_;
|
||||||
|
my $name = $hash->{NAME};
|
||||||
|
|
||||||
|
my $tac = int(rand(4500)); # Transaktionscode erzeugen und speichern
|
||||||
|
$hash->{HELPER}{TRANSACTION} = $tac;
|
||||||
|
if (AttrVal($name,"debugactivetoken",0)) {
|
||||||
|
Log3($name, 1, "$name - Transaction started, TA-code: $tac");
|
||||||
|
}
|
||||||
|
|
||||||
|
return $tac;
|
||||||
|
}
|
||||||
|
|
||||||
|
#############################################################################################
|
||||||
|
# Transaktion freigeben
|
||||||
|
#############################################################################################
|
||||||
|
sub SSCam_stopTrans ($) {
|
||||||
|
my ($hash) = @_;
|
||||||
|
my $name = $hash->{NAME};
|
||||||
|
|
||||||
|
return if(!defined $hash->{HELPER}{TRANSACTION});
|
||||||
|
my $tac = delete $hash->{HELPER}{TRANSACTION}; # Transaktion beenden
|
||||||
|
if (AttrVal($name,"debugactivetoken",0)) {
|
||||||
|
Log3($name, 1, "$name - Transaction \"$tac\" stopped");
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user