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

Hallo Martin,

ZitatUnd wie bereits erwähnt auch in der DS cam App. Solltest Du unbedingt erwähnen, da es dann vielleicht etwas schneller geht ;)

Ja klar, mache ich.

ZitatWird ein Schnappschuss ausgelöst, dann treten bei mir immer zwei Events auf:

Das ist so nicht gewollt. Da war ein readingsSingleUpdate mit einem Trigger versehen. Habe ich gleich korrigiert.

viele 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

Martin Fischer

--
Admin, Developer, Gründungsmitglied des FHEM e.V.

DS_Starter

Hallo Martin,

Meldung ist raus und ich habe auch schon eine Antwort:

Zitat
..vielen Dank, dass Sie mir die umfassende Beschreibung zu diesem Problem mitgeteilt haben.

Ich werde die Infos direkt an die Entwickler weiterleiten und um einen Fix bitten. Da ich ab kommender Woche für zwei Monate nicht im Unternehmen bin, wird Ihnen mein Kollege Herr Cimen (cc) alle weiteren Informationen weiterleiten.
....

Warten wir es mal ab ...

viele 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

Martin Fischer

Danke Heiko.. na dann lassen wir uns mal überraschen ;)

Sollte man ja auch mitbekommen, wenn es en Update für die DS cam App gibt ;)
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

DS_Starter

#469
Hallo Martin, hallo SSCam-Gemeinde,

in der angehängten neuen Version sind die StreamKeys eingebunden.
Hinzugekommen sind die Readings CamForceEnableMulticast (Info), StmKeyUnicst (rtsp) und StmKeymjpegHttp (http).  Die Information kann manuell über "get ... getStmUrlPath" abgerufen werden. Die Readings werden aber auch über Polling erzeugt/aktualisiert sofern es verwendet wird.
Bei mir habe ich inzwischen jede Kamera mit dem pollcaminfoall-Attribut (ca. 200s) am Start.
Falls das Attr livestreamprefix gesetzt ist, wird ebenfalls eine Adaption dieser Readings vorgenommen um sie für den externen Zugriff zu variieren.

Die commandref ist auch angepasst und für den neuen Style (https://forum.fhem.de/index.php/topic,56865.0.html) fit gemacht.

Etwas unschön ist dass durch die langen Strings der neuen Stm-Readings die gesamte Detailseite so umfangreich und aufgebläht erscheint. Vielleicht macht es langsam Sinn ein Attribut (detail-level) einzuführen welches z.B. diese umfangreichen Stm-Readings anzeigt/erzeugen lässt oder es vermeidet. Ich denke noch darüber nach ....
Probiert es bitte mal aus.

Ich habe noch SVS 7.1 und es funktioniert prima. Martin, schau mal bitte wie es mit deiner 7.2 klappt.

viele 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

Martin Fischer

Hallo Heiko,

Zitat von: DS_Starter am 21 August 2016, 10:03:14
Etwas unschön ist dass durch die langen Strings der neuen Stm-Readings die gesamte Detailseite so umfangreich und aufgebläht erscheint. Vielleicht macht es langsam Sinn ein Attribut (detail-level) einzuführen welches z.B. diese umfangreichen Stm-Readings anzeigt/erzeugen lässt oder es vermeidet. Ich denke noch darüber nach ....
Probiert es bitte mal aus.

Ich habe noch SVS 7.1 und es funktioniert prima. Martin, schau mal bitte wie es mit deiner 7.2 klappt.

Danke dafür! Klappt soweit. Bei der Umsetzung bist Du einen Schritt weiter gegangen in dem Du den ganzen Pfad direkt in die Readings aufgenommen hast. Daher auch die "Zitat" aufgeblähte Detailseite. Mein Gedanke war, das dort nur der StmKey steht und in der commandref der Aufbau der entsprechenden URLs beschrieben steht ala:
http://<ADDRESS:PORT>/webapi/entry.cgi?api=SYNO.SurveillanceStation.VideoStreaming&version=1&method=Stream&format=<FORMAT>&cameraId=<CAMERAID>&StmKey="<STMKEY>"
Die, die es nutzen wollen, können sich die URL dann zusammenbauen, da ja nur diese 4 Angaben ggf. verändert werden. Und für Beide, also auch für die Partei, die kein Interesse an den URLs haben, dann halt nur der Stmkey in den Readings steht und die Seite nicht "aufgebläht" wirkt.

Wie es nun final implementiert wird ( (a) keine komplette URL oder (b) komplette URL so wie jetzt ) ist mir persönlich egal ;)  Ist schon prima, das es überhaupt drin ist :)

ABER: Dumm nur, das mein ursprünglicher Plan damit nicht klappt.
Ich wollte nämlich via ReadingsVal in einem weblink den StmKey dynamisch auslesen um dann dort den aktuellen Link stehen zu haben. Ich habe nämlich in einem weblink die Streams aller Kameras in einer Tabelle stehen, so dass man in den Raum "Überwachung" klickt und sofort alle Streams sieht. Bisher hatte ich da einen Link auf die Stream-URL der direkt von der Kamera kommt. Dann hatte ich die StreamingUrl gefunden und die eingebunden. Als ich dann Änderungen an Kameras vorgenommen hatte, änderte sich der Stmkey und es wurde nichts mehr angezeigt.

Daher auch die Idee mit dem Reading "Stmkey". Leider parst FHEM den htmlcode bei einem weblink nicht so wie ich annahm. Vielleicht können wir ja gemeinsam Rudi "motivieren", das entsprechende Parsing bei weblink zu integrieren oder ich muss mir eine eigene Subroutine schreiben, die den weblink aktualisiert. Dazu kann ich dann den Trigger "LastUpdateTime" seitens SSCam.pm nutzen um zu prüfen ob sich der Stmkey verändert hat.

Schöner wäre allerdings für die Varianten:
a)
<td>Hof<br /> <img src='http://192.168.1.9:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.VideoStreaming&version=1&method=Stream&format=mjpeg&cameraId=7&StmKey="{ReadingsVal("GR.ho.CAM.SSS.01","StmKeymjpegHttp","")}"' width="320" height="240" /> </td>
</tr>

oder b)
<td>Hof<br /> <img src='{ReadingsVal("GR.ho.CAM.SSS.01","StmKeymjpegHttp","")}"' width="320" height="240" /> </td>
</tr>


Viele Grüße
Martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Martin Fischer

Was mir gerade noch einfällt:

ggf. ist es wichtig die User darauf hinzuweisen, dass das öffentliche posten von den Readings "StmKeyUnicst" und "StmKeymjpegHttp" dazu führen kann, das externe unberechtigt Zugriff auf die Streams bekommen, sofern die URL von extern erreichbar ist.

Das sollte nicht ausser Acht gelassen werden.

Viele Grüße
Martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

DS_Starter

#472
Hallo Martin,

ZitatMein Gedanke war, das dort nur der StmKey steht und in der commandref der Aufbau der entsprechenden URLs beschrieben steht ala...

Naja, ich möchte dem Nutzer natürlich ein "Sorglospaket" bieten, zumal Synology immer mal wieder die version und damit verbunden die Aufrufsyntax der Calls ändert. Aber du bringst mich auf eine Idee. Ich werde im Standard nur den StmKey auslesen und als Reading ausgeben und mit einem Attribut kann man sich den ganzen Satz StmKeyPaths (es gibts ja mehr) ausgeben wenn man es möchte/braucht. 

EDIT: Dem Nutzer der selbst Hand anlegen möchte kann ich ja noch den Hinweis in der Commanref geben ....
http://<ADDRESS:PORT>/webapi/entry.cgi?api=SYNO.SurveillanceStation.VideoStreaming&version=1&method=Stream&format=<FORMAT>&cameraId=<CAMERAID>&StmKey="<STMKEY>"

Das gefällt mir  ;)

Bezüglich deiner Weblink-Anwendung hast du Rudi ja schon angetriggert ... mal schauen was er sagt.

Zitatggf. ist es wichtig die User darauf hinzuweisen, dass das öffentliche posten von den Readings "StmKeyUnicst" und "StmKeymjpegHttp" dazu führen kann, das externe unberechtigt Zugriff auf die Streams bekommen, sofern die URL von extern erreichbar ist.

Da hast recht. Ich werde einen Hinweis in die commandref schreiben.

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

Martin Fischer

Zitat von: DS_Starter am 21 August 2016, 13:01:33
Naja, ich möchte dem Nutzer natürlich ein "Sorglospaket" bieten, zumal Synology immer mal wieder die version und damit verbunden die Aufrufsyntax der Calls ändert. Aber du bringst mich auf eine Idee. Ich werde im Standard nur den StmKey auslesen und als Reading ausgeben und mit einem Attribut kann man sich den ganzen Satz StmKeyPaths (es gibts ja mehr) ausgeben wenn man es möchte/braucht. 

Nur mal so als Idee:
Und / oder zu Deinem Vorschlag könntest Du auch die komplette Url zwecks Schutz vor evtuellen Syno API Änderungen in den Internals ablegen und dem User mittels "get StmKeymjpegHttp" bzw. "get StmKeyUnicst" anzeigen lassen. Bzw. in den Internals immer den aktuell gültigen API Aufruf mit Platzhaltern eintragen und bei der Anzeige nur die entsprechenden Attribute in der Url austauschen.

Übrigens:
Vor 'ner guten Stunde in meinem Weblink alle Urls der Kameras eingetragen und lief. Gerade in der Surveillance Station einen(!) Namen anpassen wollen und schwupps, alle Streams weg, da sich der Stmkey mal wieder für alle(!) Urls verändert hat (ist ja auch nur ein Key für alle).

Und genau um dieses (sinnlose?) Verhalten seitens Synology geht es. Ob das so von denen gewollt ist? Das heisst nämlich im Umkehrschluß, dass man auch jedesmal einen neuen Desktoplink anlegen müsste. Diese Funktionalität nutze ich mangels Windows nicht aber sie bieten es ja im Contextmenü an. Also mal so für die Allgemeinheit gesprochen, betrifft das dann ja auch User die mit FHEM nichts am Hut haben.
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

DS_Starter

Habe gerade mal meine Variante aus #472  ausprobiert .... macht einen guten Eindruck, gibt alles her und ist simpel zu handhaben. Muß noch durchtesten und dokumentieren (ist immer das größte "Problem"  ;) ). Deinen Vorschlag sehe ich als sinvolle Ergänzung ... danke Martin  :) und schaue ihn mir auch noch an.

ZitatUnd genau um dieses (sinnlose?) Verhalten seitens Synology geht es. Ob das so von denen gewollt ist? Das heisst nämlich im Umkehrschluß, dass man auch jedesmal einen neuen Desktoplink anlegen müsste.

Ja, diese Möglichkeit ist demzufolge in der Tat dadurch sinnlos. Wäre wieder eine Anfrage an Synology wert. In diesem Fall würde ich aber den offiziellen Meldungsweg gehen.

Schönen Restsonntag noch !
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 Martin,

anbei nun die finale Version für diesen Task. Im Standard wird das Reading StmKey gefüllt. MIt dem Attribut "showStmInfoFull" lässt sich die komplette Stm-Info zuschalten.

viele 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 Martin, hallo zusammen,

die neue Version ist dokumetiert und eingecheckt. Ich habe "get ... getStmUrlPath" noch umgeändert auf "get ... stmUrlPath".
Das "get ...get.."  war mir dann doch zu doppelt gemoppelt.  ;)

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

Martin Fischer

Danke Heiko..

schaue ich mir morgen an. Und nachdem mir ja durch Rudi die Augenbinde bzgl. weblink abgenommen wurde, klappt das nun auch.

Allerdings hatte ich mir zwischenzeitlich eine Routine geschrieben, die dynamisch alle "enabled" Devices vom TYPE=SSCam in einem Weblink zusammenstellt.

Viele Grüße
Martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

DS_Starter

Hallo Martin.

ich schreibe gerade etwas für das Wiki. Beschreibe die Lösung mit DS Webstation unter 5.2 gleich mit Versand zum Beispiel per Telebot.

Habe den Beitrag von Rudi gesehen aber noch nicht nachgestellt.
Kannst du deine Lösung auch noch kundtun ? Wäre super :)

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

Martin Fischer

Zitat von: DS_Starter am 22 August 2016, 22:56:38
Kannst du deine Lösung auch noch kundtun ? Wäre super :)

FHEM (myhce01)> list camView.01.lnk
Internals:
   CFGFN      /etc/fhem/conf.d/90_controlcenter.cfg
   DEF        htmlCode {SurveillanceMjpegHtml("camView.01.lnk",320,240);}
   LINK       {SurveillanceMjpegHtml("camView.01.lnk",320,240);}
   NAME       camView.01.lnk
   NR         2791
   STATE      initialized
   TYPE       weblink
   WLTYPE     htmlCode
Attributes:
   alias      Livestream
   group      Kameras - Livestream
   htmlattr   width="800" height="600"
   room       Überwachung


sub SurveillanceMjpegHtml(@) {
  my $name = "SurveillanceMjpegHtml";
  my ( $devWeblink, $width, $height ) = @_;
  my $debug = ( AttrVal( $devWeblink, "verbose", 3 ) == 5 ) ? 1 : 0;
  Log3 $name, 1, "DEBUG $name: devWeblink:$devWeblink width:$width height:$height"
      if ($debug);

  my $htmlCode;

  $htmlCode .=
      sprintf( '<div class="makeTable wide"> <a href="/fhem?detail=%s">Livestream</a>',
    $devWeblink );
  $htmlCode .= '<table class="block wide internals">';
  $htmlCode .= '<tbody>';

  $htmlCode .= '<tr class="odd">';
  my @camDevs = devspec2array("TYPE=SSCam");
  my $cell    = 1;
  foreach my $camDev (@camDevs) {
    my $StmKey = ReadingsVal( $camDev, "StmKey", undef );

    if ( defined($StmKey) && ReadingsVal( $camDev, "Availability", "" ) eq "enabled" ) {

      my $webapi = sprintf(
        'http://%s:%d/webapi/entry.cgi?api=SYNO.SurveillanceStation.VideoStreaming&version=1&method=Stream&format=mjpeg&cameraId=%d&StmKey="%s"',
        $defs{$camDev}{SERVERADDR},
        $defs{$camDev}{SERVERPORT},
        $defs{$camDev}{CAMID}, $StmKey
      );

      my $html = sprintf(
        '<td>%s<br /> <img src=\'%s\' width=%d height=%d /> </td>',
        $defs{$camDev}{CAMNAME},
        $webapi, $width, $height
      );

      Log3 $name, 1, "DEBUG $name: cell:$cell camDev:$camDev StmKey:$StmKey"
          if ($debug);

      $cell++;

      if ( $cell == 3 ) {
        $htmlCode .= $html;
        $htmlCode .= '</tr>';
        $htmlCode .= '<tr class="odd">';
        $cell = 1;
      }
      else {
        $htmlCode .= $html;
      }

      Log3 $name, 1, "DEBUG $name: cell: $cell"
          if ($debug);

    }
  }

  if ( $cell == 2 ) {
    $htmlCode .= '<td>&nbsp;</td>';
  }

  $htmlCode .= '</tr>';

  $htmlCode .= '</tbody>';
  $htmlCode .= '</table>';
  $htmlCode .= '</div>';
  return $htmlCode;
}


Viele Grüße
Martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.