49_SSCam: Fragen, Hinweise, Neuigkeiten und mehr rund um dieses Modul

Begonnen von DS_Starter, 14 Dezember 2015, 16:19:08

Vorheriges Thema - Nächstes Thema

DS_Starter

Guten Morgen,

für den Mailversand der Snapshots verwende ich DebianMail (sendmail) wobei fhem immer eine gewisse Zeit blockiert.
Mit blocking.pm habe ich eine Möglichkeit gefunden diesen Umstand abzustellen.
Man kann diesen Lösungsansatz sicherlich noch verbessern (Timeout, Abbruchfunktion,...) und verfeinern, aber er funktioniert und fhem blockiert dadurch nicht mehr beim Versand.

Wenn ihr es auch testen  wollt, kopiert den folgenden Code in eure 99_myUtils.pm und passt ihn an:


# gleich am Anfang von 99_myUtils.pm
use Blocking;

##############################################################################
########        DebianMail  Mail  versenden  nonblocking          ############
##############################################################################

sub DebianMailnbl {

my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
my $hash->{NAME} = "Debianmail";
my $name = $hash->{NAME};

$hash->{helper}{RUNNING_PID} = BlockingCall("DebianMailnbl_send", $name."|".$rcpt."|".$subject."|".$text."|".$attach, "", "", "", "");

}

##############################################################################
########       Mailfunktion von Nonblocking                       ############
##############################################################################

sub DebianMailnbl_send {
my ($string) = @_;
my ($name, $rcpt, $subject, $text, $attach) = split("\\|", $string);
my $ret = "";
my $sender = "<Absendername>\@<Absenderdomain>";
my $konto = "<Mailkontouser>";
my $passwrd = "<Mailkontopasswort>";
my $provider = "<Mailserver>:<Maiserverport>";

$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a '$attach' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=no -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
# Log 1, "sendEmail returned: $ret";
Log3 $name, 3, "$name - sendEmail returned: $ret";
}


Ein entsprechendes DOIF könnte dann so aussehen:

define CamHE1.snap.email DOIF ([CamHE1:"LastSnapFilename"]) ({DebianMailnbl ('<Mailempfänger>','Bewegungsalarm CamHE1','Eine Bewegung wurde an der Haustür registriert.','/media/sf_surveillance/@Snapshot/[CamHE1:LastSnapFilename]')})


Viel Spaß beim Nachnutzen und ein schönes WE ...

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

OliS.

Guten Morgen Heiko,

der Mailversand mit Deiner Sub funktioniert grundsätzlich schon mal. Ich habe jetzt noch nicht testen können, in wie weit das den gesamten Aktionsablauf (Snapshot, Aufnahme, Push, Mail) beschleunigt. Da werde ich noch berichten.

Eine grundsätzliche Frage zum Mailversand habe ich allerdings noch. Vielleicht weißt Du das. Ist es möglich, auch mehrere Anhänge, also bsw. zwei Snapshots, in einer Mail zu versenden. Alle meine Versuche sind bisher gescheitert.

Oli
FHEM in Debian VM auf DS720+, HMLAN und HMUARTLGW, RFXTRX, Conbee II, Homebridge, Alexa
Geräte: Homematic, Tradfri, Shelly, IT, ESA2000, VU+, Denon-AVR, Sonos, Fritz!Box, Harmony Hub, IP-Cams, Roborock, Automower

DS_Starter

ZitatIst es möglich, auch mehrere Anhänge, also bsw. zwei Snapshots, in einer Mail zu versenden.

Hi Oli,

ja das sollte möglich sein. Lt. dieser http://wiki.syslog-pps.de/w/index.php?title=SendMail&action=view Beschreibung können mehrere Anhänge übergeben werden. Die einzelnen Anhänge sind mit vollem Pfadnamen und durch Semikolon zu trennen (nicht mehr als 500 Zeichen).
Probiert habe ich es noch nicht, mache ich auch mal bei Gelegenheit.

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

OliS.

Mmh, klappt bei mir nicht. Ein Anhang geht, zwei nicht.

Ich habe es so
{DebianMailnbl ('mail@adresse.de','Betreff','Inhalt','Anhang1;Anhang2')}
und so
{DebianMailnbl ('mail@adresse.de','Betreff','Inhalt','Anhang1';'Anhang2')}

probiert.

Oli
FHEM in Debian VM auf DS720+, HMLAN und HMUARTLGW, RFXTRX, Conbee II, Homebridge, Alexa
Geräte: Homematic, Tradfri, Shelly, IT, ESA2000, VU+, Denon-AVR, Sonos, Fritz!Box, Harmony Hub, IP-Cams, Roborock, Automower

DS_Starter

Habs jetzt auch mal probiert.

Man muß den sendmail-Befehl erweitern. D.h. einfach ein Attach-statement einfügen.

..... -a '$attach' -a '$attach1' .....

... dann klappt es. Die Lösung in dem Link den ich vorhin gefunden und gepostet hatte, hat auch bei mir nicht funktioniert.
Ich werde mal das Script ein wenig anpassen und wenn es auch damit funktioniert nochmal posten.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Habe die Sub in 99_myUtils für den Versand von bis zu 3 Anhängen erweitert.
Das sieht nun so aus:

##############################################################################
########        DebianMail  Mail  versenden  nonblocking          ############
##############################################################################

sub DebianMailnbl {

my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
my $attach1 = shift;
my $attach2 = shift;
my $hash->{NAME} = "Debianmail";
my $name = $hash->{NAME};

$hash->{helper}{RUNNING_PID} = BlockingCall("DebianMailnbl_send", $name."|".$rcpt."|".$subject."|".$text."|".$attach."|".$attach1."|".$attach2, "", "", "", "");

}

##############################################################################
########       Mailfunktion von Nonblocking                       ############
##############################################################################

sub DebianMailnbl_send {
my ($string) = @_;
my ($name, $rcpt, $subject, $text, $attach, $attach1, $attach2) = split("\\|", $string);
my $ret = "";
my $sender = "Absendername\@Domain";
my $konto = "Mailuser";
my $passwrd = "Mailuserpasswort";
my $provider = "Mailserver:Port";

$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a '$attach' -a '$attach1' -a '$attach2' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=no -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
# Log 1, "sendEmail returned: $ret";
Log3 $name, 3, "$name - sendEmail returned: $ret";
}



Das DOIF ist dementsprechend als Bespiel:

([CamHE1:"LastSnapFilename"]) ({DebianMailnbl ('<Empfänger>','Bewegungsalarm CamHE1','Eine Bewegung wurde an der Haustür registriert.','/media/sf_surveillance/@Snapshot/[CamHE1:LastSnapFilename]','/media/sf_surveillance/@Snapshot/Hauseingang-20160227-1505174596.jpg','/media/sf_surveillance/@Snapshot/Hauseingang-20160227-1504528871.jpg')})

Man kann natürlich auch weniger Anhänge versenden, bis zu 3 wären aber mit dieser Sub-Erweiterung möglich. Kann man natürlich in dieser Art und Weise noch ausbauen.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

OliS.

Was soll ich sagen...? Läuft wie 'ne Eins!

Vielen Dank!

Oli
FHEM in Debian VM auf DS720+, HMLAN und HMUARTLGW, RFXTRX, Conbee II, Homebridge, Alexa
Geräte: Homematic, Tradfri, Shelly, IT, ESA2000, VU+, Denon-AVR, Sonos, Fritz!Box, Harmony Hub, IP-Cams, Roborock, Automower

DS_Starter

Guten Morgen,

die Funktion "set ... runView" habe ich um die Option "link_open" erweitert.
Damit öffnet sich der mjpeg-Stream sofort in einem neuen Browserfenster. Damit das funktioniert muß longpoll=1 gesetzt sein.

Checke ich heute noch ein. Aber hier schonmal vorab.

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

OliS.

Guten Morgen,

gerade mal getestet, und funktioniert.
Mir ist nur eine Kleinigkeit aufgefallen. Ich habe eigentlich immer zwei bis drei FHEM-Tabs in Safari geöffnet. Wenn ich "set Cam runview link_open" aktiviere, werden immer genau so viele neue Browserfenster mit dem dem Kamera-Stream geöffnet, wie FHEM-Tabs offen sind.

Oli
FHEM in Debian VM auf DS720+, HMLAN und HMUARTLGW, RFXTRX, Conbee II, Homebridge, Alexa
Geräte: Homematic, Tradfri, Shelly, IT, ESA2000, VU+, Denon-AVR, Sonos, Fritz!Box, Harmony Hub, IP-Cams, Roborock, Automower

DS_Starter

Morgen Oli,

ja habe ich bei mir auch schon festgestellt. Das hängt wahrscheinlich damit zusammen dass diese Option über ein "trigger WEB JS:window.open ...." realisiert ist. Das Trigger Kommando wirkt sich dann wohl auf alle laufenden WEB-Instanzen aus.

Ich weiß momentan nicht wie man das abändern könnte und frage mal im Forum nach. Das betrifft auch eine "window-close"-Funktion.
Leider kenne ich mich mit javascript nicht aus.
Wenn dir dazu etwas unerkommen sollte sag einfach mal Bescheid.

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Hallo Oli,
jetzt konnte ich einen Lösungsansatz von Rudi umsetzen.
Nun wird ein Browserfenster mit "set ...runView link_open" nur für das Browserfenster initiiert, welches aktuell den Raum geöffnet hat, der die entsprechende Kamera enthält. Also den der Cam zugeordnete Raum.
Das hat nun aber den Nachteil dass der entsprechende Raum angezeigt sein muß, sonst wird das Fenter nicht geöffnet.

Fragt sich halt was praktischer ist ...
Hier ist die Version wieder angehängt.

Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

OliS.

Ja, funktioniert so.

ZitatFragt sich halt was praktischer ist ...

Kann ich Dir eigentlich gar nicht sagen, da mir momentan noch kein konkretes Szenario einfällt, bei dem ich die Funktion sinnvoll nutzen kann. Ich nutze den Livestream meiner Kameras eigentlich eher so, dass ich bei Bedarf direkt auf die Streaming-URL der Kamera zugreife. Wenn ich bsw. am Rechner sitze und möchte sehen, wenn der Pizzabote einparkt. Oder wenn ich eine der Kameras als Babyphone nutze. Oder auf dem Wand-Tablet, als Popup, wenn es an der Tür klingelt. In allen genannten Fällen ist aber nie die Surveillance Station aktiv.
Wofür nutzt Du die Funktion denn?

Oli
FHEM in Debian VM auf DS720+, HMLAN und HMUARTLGW, RFXTRX, Conbee II, Homebridge, Alexa
Geräte: Homematic, Tradfri, Shelly, IT, ESA2000, VU+, Denon-AVR, Sonos, Fritz!Box, Harmony Hub, IP-Cams, Roborock, Automower

DS_Starter

Also ich komme momentan garnicht dazu Einsatzscenarien zu modellieren, sondern bin mit der Modulentwicklung stark beschäftigt.  ;)
Ich hoffe ich komme auch bald mal dazu an meinem FHEM an sich weiter zu arbeiten.

Ich stelle mir aber ähnliche Einsatzzwecke wie von dir beschrieben vor, aber eben über die Surveillance Station Schnittstelle, weil man zum Beispiel im Netz nur bestimmte Ports freigeben möchte etc.. Geht natürlich jetzt schon sehr gut über die "runView image" Option. Sind die Kameras in einem Raum zusammengefasst hat man einen alles im Blick.
Bei mir ist es natürlich so, dass die Synology 7x24h rund im die Uhr läuft um damit auch die SVS ständig verfügbar ist.

Wahrscheinlich werde ich es letztlich so machen dass das Popup sich immer öffnet und will man es einschränken, eine Zusatzoption für einen bestimmten Raum mitgeben kann um das von dir beschriebene Problem zu umgehen.

Grüße und einen schönen Abend Oli
Heiko


ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

OliS.

ZitatBei mir ist es natürlich so, dass die Synology 7x24h rund im die Uhr läuft...

Ja, das ist ja bei mir nicht anders. Allerdings werden die Kameras nur bei Abwesenheit aktiviert. Ich denke, das wirkt sich langfristig auf die Lebensdauer der Festplatten der DS und natürlich den Stromverbrauch aus.
Und Funktionen wie Snapshots und runView image lassen sich ja nur bei "scharfen" Kameras nutzen. Also ist allein schon das Popup mit dem Livebild der Haustürkamera nicht mehr über das SSCam-Modul möglich. Aber das finde ich nicht so tragisch, da man ja für solche Fälle gut auf die eigentliche Streaming-URL der Kameras zugreifen kann, die ja auch immer gleich ist.

Aber ich packe die Streaming-URL der Kameras auch in die Mails mit den Snapshots, wenn die Kameras per Bewegungsmelder und Abwesenheit ausgelöst werden. Dann kann ich dank VPN-on-demand spontan aus der Mail heraus auf das Live-Bild der jeweiligen Kamera zugreifen. Das funktioniert sehr gut.

ZitatAlso ich komme momentan garnicht dazu Einsatzscenarien zu modellieren, sondern bin mit der Modulentwicklung stark beschäftigt.  ;)
Gönn Dir doch mal eine Pause. Das Modul ist doch schon wirklich gut geworden. Und das innerhalb so kurzer Zeit. Alles was jetzt noch kommt, ist purer Luxus.

Schönen Restsonntag noch.

Oli
FHEM in Debian VM auf DS720+, HMLAN und HMUARTLGW, RFXTRX, Conbee II, Homebridge, Alexa
Geräte: Homematic, Tradfri, Shelly, IT, ESA2000, VU+, Denon-AVR, Sonos, Fritz!Box, Harmony Hub, IP-Cams, Roborock, Automower

eldrik

Zitat von: DS_Starter am 27 Februar 2016, 09:58:57
Guten Morgen,

für den Mailversand der Snapshots verwende ich DebianMail (sendmail) wobei fhem immer eine gewisse Zeit blockiert.
Mit blocking.pm habe ich eine Möglichkeit gefunden diesen Umstand abzustellen.
Man kann diesen Lösungsansatz sicherlich noch verbessern (Timeout, Abbruchfunktion,...) und verfeinern, aber er funktioniert und fhem blockiert dadurch nicht mehr beim Versand.

Wenn ihr es auch testen  wollt, kopiert den folgenden Code in eure 99_myUtils.pm und passt ihn an:


# gleich am Anfang von 99_myUtils.pm
use Blocking;

##############################################################################
########        DebianMail  Mail  versenden  nonblocking          ############
##############################################################################

sub DebianMailnbl {

my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
my $hash->{NAME} = "Debianmail";
my $name = $hash->{NAME};

$hash->{helper}{RUNNING_PID} = BlockingCall("DebianMailnbl_send", $name."|".$rcpt."|".$subject."|".$text."|".$attach, "", "", "", "");

}

##############################################################################
########       Mailfunktion von Nonblocking                       ############
##############################################################################

sub DebianMailnbl_send {
my ($string) = @_;
my ($name, $rcpt, $subject, $text, $attach) = split("\\|", $string);
my $ret = "";
my $sender = "<Absendername>\@<Absenderdomain>";
my $konto = "<Mailkontouser>";
my $passwrd = "<Mailkontopasswort>";
my $provider = "<Mailserver>:<Maiserverport>";

$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a '$attach' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=no -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
# Log 1, "sendEmail returned: $ret";
Log3 $name, 3, "$name - sendEmail returned: $ret";
}


Ein entsprechendes DOIF könnte dann so aussehen:

define CamHE1.snap.email DOIF ([CamHE1:"LastSnapFilename"]) ({DebianMailnbl ('<Mailempfänger>','Bewegungsalarm CamHE1','Eine Bewegung wurde an der Haustür registriert.','/media/sf_surveillance/@Snapshot/[CamHE1:LastSnapFilename]')})


Viel Spaß beim Nachnutzen und ein schönes WE ...

Hi,

danke für den Codeschnipsel konnte ich für meinen Mailversand und Pushnotifier Versand direkt verwenden :) ... und nomma ein danke für deine geleistete Arbeit, für dieses Modul ;)

P.s. evtl. ist der Code auch etwas, für den bestehenden Wikieintrag zu sendEmail?

Greetz
Eldrik