FTUI Widget für SSCam Streaming Devices (SSCamSTRM)

Aus FHEMWiki

Das SSCamSTRM Widget ist ein Widget für FHEM Tablet UI zur Integration von SSCam Streaming-Devices im FHEM Tablet UI.


Voraussetzung ist das Vorhandensein von SSCam Streaming-Devices. Streaming-Devices werden in existierenden SSCam Kamera-Devices angelegt mit:

set <SSCam-Device> createStreamDev <Typ>

Das entstandene Device ist im Attribut "data-device" des Widgets einzutragen.
Mindestlevel der Modulversionen sind SSCamSTRM 2.6.0 und SSCam 8.15.0.



Installation

Die Datei widget_sscamstrm.js muss in das js-Verzeichnis der fhem-tablet-ui Installation und die Datei sscam_hls.js in das entsprechende lib-Verzeichnis kopiert werden.

In FHEM kann der Befehl:

 update all https://raw.githubusercontent.com/nasseeder1/fhem-ftui_sscamstrm_widget/master/controls_sscamstrm_widget.txt

verwendet werden um die Dateien einmalig zu installieren. Sollen die Dateien in den regelmäßigen Update-Prozess mit eingebunden werden, kann das control-File in FHEM integriert werden:

 update add https://raw.githubusercontent.com/nasseeder1/fhem-ftui_sscamstrm_widget/master/controls_sscamstrm_widget.txt

Attribute

Attribut Beschreibung Standard-Wert Beispiel
data-device SSCam-Streamingdevice in FHEM, dessen Inhalt angezeigt werden soll
data-get Name des Readings, das eine Änderung des SSCam-Streamingdevice signalisiert parentState
data-max-update Maximale Häufigkeit in Sekunden für das Update des SSCam-Streamingdevices 2

Das FTUI-Widget für SSCamSTRM kann alle zur Zeit unterstützen Streamingtypen wiedergeben. Dadurch kann nun auch das qualitativ hochwertige HLS-Format in FTUI dargestellt werden.

Hinweise

Im SSCamSTRM Widget wird anders als in anderen Widgets nicht der angegebene Wert aus dem Device dargestellt, sondern der HTML-Inhalt des angegebenen SSCam-Streamingdevices. Das data-get Reading dient nur dazu ein nötiges Update des Devices zu erkennen.

Es ist immer das Streaming-Device in FHEM zu erstellen und im Attribut "data-device" anzugeben, nicht das SSCam-Parentdevice selbst !

In dem Streamingdevice kann mittels der Attribute hideDisplayNameFTUI, ptzButtonSizeFTUI und htmlattrFTUI der Detaillink ausgeblendet, die Größe von PTZ-Buttons festgelegt bzw. die Größe des Content angepasst werden.

Für PTZ-Kameras kann das SSCamSTRM Widget mit dem Select Widget kombiniert werden um Auswahllisten für Presets und Patrols mit zu integrieren.


Beispiele

Einbinden des MJPEG-Streams

Das verwendete Streaming-Device vom Typ "mjpeg" wird vorab im zugeordneten SSCam-Device angelegt mit:

set <SSCam-Device> createStreamDev mjpeg

Das erzeugte Device, im Beispiel "SSCamSTRM.Keller.mjpeg", wird im data-device eingetragen.

 <li data-row="1" data-col="1" data-sizey="3" data-sizex="4">
   <header>Kamera Keller</header>
      <div class="cell">
         <div data-type="sscamstrm" data-device="SSCamSTRM.Keller.mjpeg" ></div> 
      </div>
 </li>

Einbinden der Schnappschußgalerie

Das verwendete Snapgallery-Device wird vorab im zugeordneten SSCam-Device angelegt mit:

set <SSCam-Device> createSnapGallery

Das erzeugte Device, im Beispiel "SSCamSTRM.Hauseingang.snapgallery", wird im data-device eingetragen.

 <li data-row="1" data-col="1" data-sizey="3" data-sizex="5">
   <header>Schnappschüsse Eingang</header>
      <div class="cell">
         <div data-type="sscamstrm" data-device="SSCamSTRM.Hauseingang.snapgallery" ></div> 
      </div>
 </li>

Steuerungspaneel für PTZ-Kameras

Es kann ebenfalls ein separates Steuerungspaneel für PTZ-Kameras erzeugt und in FTUI angezeigt werden. Dazu wird das Paneel im zugeordneten SSCam-Device angelegt mit:

set <SSCam-Device> createPTZcontrol

Bei der Einbindung in FTUI ist das Attribut data-get="state" zu ergänzen, da dieses Device das Standardreading parentState nicht enthält.

 <li data-row="1" data-col="1" data-sizey="2" data-sizex="1">
   <header>PTZ Control</header>
      <div class="cell">
         <div data-type="sscamstrm" data-device="SSCamSTRM.Keller.PTZcontrol" data-get="state"></div> 
      </div>
 </li>	

Presets und Patrol Drop-Down-Listen bei PTZ-Kameras

Um mit PTZ-Kameras Presets anzufahren oder Patrols zu starten, kann das Select Widget mit dem SSCamSTRM Widget kombiniert werden. Im Select Widget (data-type "select") ist lediglich data-device anzupassen und auf das Internal PARENT Device des verwendeten Streamingsdevices zu setzen (hier im Beispiel "SSCam.Keller").

<li data-row="3" data-col="1" data-sizey="2" data-sizex="3">
  <header>Keller</header>
  <div class="cell">
      <div data-type="sscamstrm" data-device="SSCamSTRM.SSCam.Keller.mjpeg" ></div>
  </div>
  <div>
     <div data-type="label">Preset</div>
     <div data-type="select" data-device="SSCam.Keller" data-list="Presets" data-delimiter="," data-set="goPreset"></div>
     <div data-type="label">Patrol</div>
     <div data-type="select" data-device="SSCam.Keller" data-list="Patrols" data-delimiter="," data-set="runPatrol></div>
  </div>
</li>


Streaming Master: Drop-Down-Liste zur Selektion eines anderen Streaming Devices

Hat man im Widget ein SSCam Streaming Device vom Typ master (Internal MODEL=master) eingebunden, kann über dieses Device der Inhalt eines anderen definierten SSCam Streaming Device ausgewählt und wiedergegeben werden.

Um die Device-Auswahl einzubinden, kann das Select Widget mit dem SSCamSTRM Widget kombiniert werden. Im Select Widget (data-type "select") ist lediglich data-device anzupassen und auf den Namen des Streaming Master Devices (im Beispiel SSCamSTRM.SDS1.master) zu setzen und data-list mit dem Wert adoptList zu spezifizieren.

Alternativ kann data-list mit dem Wert adoptSubset eingestellt werden. Mit dem Attribut adoptSubset kann eine Teilmenge aller definierten Streaming Devices ausgewählt und dem Select Widget im FTUI zur Verfügung gestellt werden. Es wird ein gleichnamiges Reading im Streaming Device erstellt.

<li data-row="1" data-col="1" data-sizey="3" data-sizex="3">
  <header>Master-Stream SSCam</header>
  <div class="cell">
    <div data-type="sscamstrm" data-device="SSCamSTRM.SDS1.master" ></div> 
  </div>
  <div>
    <div data-type="label">Wähle ein Streaming Device aus:</div>
    <div data-type="select" data-device="SSCamSTRM.SDS1.master" data-list="adoptList" data-delimiter="," data-set="adopt"></div>
  </div>
</li>