[FTUI2] Die letzten 5 Bilder und Videos anzeigen

Begonnen von beSmart, 24 Oktober 2022, 22:55:57

Vorheriges Thema - Nächstes Thema

beSmart

Hallo Forum,

ich möchte gern die letzten 5 Videos und Bilder von meiner IP-Kamera ,,herausfiltern" und in FTUI anzeigen.

Die Kamera legt die Video- und Bilddateien in einem Ordner ab, der Dateiname enthält das Datum und die Uhrzeit der Aufnahme.
Die Dateien heißen z.B. K2-20221002-123428.mp4 und .jpg

Was mir fehlt ist eine Idee, wie ich jeweils die letzten 5 ,,herausfiltere".

Mit freundlichem Gruß

BeSmart

OdfFhem

Hier hilft vermutlich eine Verzeichnis-Überwachung - wie z.B. bereitgestellt durch

Zitat von: marvin78 am 29 Januar 2018, 15:24:32
Mit dem Linux Kernel-Subsystem inotify werden Veränderungen an Dateien oder Verzeichnissen überwacht und an Applikationen weiter gegeben. Das Modul, um das es hier geht, kann dazu verwendet werden, auf solche Änderungen zu reagieren. Die entsprechenden Readings und Events werden im Modul bereit gestellt.

andreas_r

Unter Umständen kann man über die Kamera API auch die letzten Aufnahmen abfragen. Dafür könntest Du den HTTPMOD verwenden und damit dann die Bildnamen auslesen.

VG

beSmart

Guten Abend,

vielen Dank für die Ideen. Ich habe es mit ,,inotify" probiert, etwas experimentiert, es aber nicht hinbekommen die letzten 5 Bilder anzuzeigen. (um die Videos kümmere ich mich später)
Versuche jetzt das oldreadingm wie im Listing weiterzugeben/kopieren ähnlich wie eine Treppe. Der 2.Test läuft, mal schauen was dabei herauskommt.

Verbesserungsvorschläge nehme ich gern an.

List vom inotify

Internals:
   DEF        ./www/snapshots .*
   FD         27
   FILES      .*
   FUUID      635731fe-f33f-6f45-bb8d-15d49e3508abdeba
   MID        inotify_wwwsnapshots
   NAME       inotify
   NOTIFYDEV  global
   NR         597
   NTFY_ORDER 81-inotify
   PATH       ./www/snapshots
   STATE      active
   TYPE       inotify
   VERSION    0.6.1
   eventCount 5698
   OLDREADINGS:
     2022-10-25 22:55:47   Bild1           ./www/snapshots/Kamera2_00_20221024133044.jpg
     2022-10-25 22:55:47   Bild2           ./www/snapshots/Kamera2_00_20221024133033.jpg
     2022-10-25 22:55:47   Bild3           ./www/snapshots/Kamera2_00_20221024133022.jpg
     2022-10-25 22:55:47   Bild4           ./www/snapshots/Kamera2_00_20221024133011.jpg
     2022-10-25 22:55:47   Bild5           ./www/snapshots
     2022-10-25 22:55:47   lastEventFile   ./www/snapshots/Kamera2_00_20221024133055.jpg
     2022-10-25 22:55:47   lastEventMask   IN_ACCESS
   READINGS:
     2022-10-25 22:55:47   Bild1           ./www/snapshots/Kamera2_00_20221024133055.jpg
     2022-10-25 22:55:47   Bild2           ./www/snapshots/Kamera2_00_20221024133044.jpg
     2022-10-25 22:55:47   Bild3           ./www/snapshots/Kamera2_00_20221024133033.jpg
     2022-10-25 22:55:47   Bild4           ./www/snapshots/Kamera2_00_20221024133022.jpg
     2022-10-25 22:55:47   Bild5           ./www/snapshots/Kamera2_00_20221024133011.jpg
     2022-10-25 22:55:47   lastEventFile   ./www/snapshots
     2022-10-25 22:55:47   lastEventMask   IN_CLOSE_NOWRITE
     2022-10-25 13:47:17   state           active
   helper:
     dirs:
       ./www/snapshots
     events:
       0:
         file       ./www/snapshots
         mask       IN_CLOSE_NOWRITE
         time       2022-10-25 22:55:47
       1:
         file       ./www/snapshots
         mask       IN_ACCESS
         time       2022-10-25 22:55:47
       2:
         file       ./www/snapshots
         mask       IN_OPEN
         time       2022-10-25 22:55:47
       3:
         file       ./www/snapshots
         mask       IN_CLOSE_NOWRITE
         time       2022-10-25 22:55:47
       4:
         file       ./www/snapshots
         mask       IN_OPEN
         time       2022-10-25 22:55:47
       5:
         file       ./www/snapshots/Kamera2_00_20221024133055.jpg
         mask       IN_DELETE
         time       2022-10-25 22:55:47
       6:
         file       ./www/snapshots/Kamera2_00_20221024133044.jpg
         mask       IN_DELETE
         time       2022-10-25 22:55:47
       7:
         file       ./www/snapshots/Kamera2_00_20221024133033.jpg
         mask       IN_DELETE
         time       2022-10-25 22:55:47
       8:
         file       ./www/snapshots/Kamera2_00_20221024133022.jpg
         mask       IN_DELETE
         time       2022-10-25 22:55:46
       9:
         file       ./www/snapshots/Kamera2_00_20221024133011.jpg
         mask       IN_DELETE
         time       2022-10-25 22:55:46
     masks:
       IN_CREATE
       IN_ALL_EVENTS
   hmccu:
Attributes:
   mask       IN_CREATE,IN_ALL_EVENTS
   oldreadings .*
   room       Technik
   userReadings Bild1 { OldReadingsVal("inotify","lastEventFile",0) }, Bild2 { OldReadingsVal("inotify","Bild1",0) }, Bild3 { OldReadingsVal("inotify","Bild2",0) }, Bild4 { OldReadingsVal("inotify","Bild3",0) }, Bild5 { OldReadingsVal("inotify","Bild4",0) }


Vielen Dank und Gruß

BeSmart

beSmart

#4
Hallo,

was soll ich sagen? Es funktioniert so nicht!

Habe nochmal die SuFu benutzt und diese beiden Threads gefunden.

https://forum.fhem.de/index.php/topic,49732.15.html
https://forum.fhem.de/index.php/topic,64838.30.html




Mal schauen, ob ich es damit schaffe.

Gruß

besmart

beSmart

#5
Guten Morgen,

ich komme nicht weiter, da meine Fähigkeiten nicht ausreichen.

Der Tipp mit ,,inotify" das Verzeichnis zu überwachen war gut. Dazu ein DOIF, ein dummy und einige Zeilen in der 99_myUtils (aus dem Thread, den ich weiter oben verlinkt hatte).
Damit werden einzelne Readings erzeugt. Aber nicht 5 gleichzeitig...

inotify > DOIF > 99_myUtils > dummyKamerabild

Wie muss ich die 99_myUtils ändern, damit 5 readings mit z.B. Bild1, Bild2, usw. angelegt werden?


List DOIF
Internals:
   CFGFN     
   DEF        ([inotify:"^lastEventFile:../www/snapshots/Kamera2_snapshot.jpg$"]) ({last_pic(1)})
   FUUID      6362ce5c-f33f-6f45-b469-68aa46021c3fecda
   MODEL      FHEM
   NAME       di.Kamera
   NOTIFYDEV  inotify,global
   NR         4372
   NTFY_ORDER 50-di.Kamera
   STATE      cmd_2
   TYPE       DOIF
   VERSION    26444 2022-09-25 16:29:19
   eventCount 92
   READINGS:
     2022-11-13 07:37:30   Device          inotify
     2022-11-11 06:10:17   cmd             2
     2022-11-11 06:10:17   cmd_event       inotify
     2022-11-11 06:10:17   cmd_nr          2
     2022-11-13 07:37:30   e_inotify_events lastEventFile: ./www/snapshots,lastEventMask: IN_CLOSE_NOWRITE
     2022-11-07 00:02:37   mode            enabled
     2022-11-11 06:10:17   state           cmd_2
   Regex:
     accu:
     collect:
     cond:
       inotify:
         0:
           &STATE     ^inotify$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::EventDoIf('inotify',$hash,'^lastEventFile:../www/snapshots/Kamera2_snapshot.jpg$',1)
   do:
     0:
       0          {last_pic(1)}
     1:
   helper:
     NOTIFYDEV  inotify,global
     event      lastEventFile: ./www/snapshots,lastEventMask: IN_CLOSE_NOWRITE
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   inotify
     timerevent lastEventFile: ./www/snapshots,lastEventMask: IN_CLOSE_NOWRITE
     triggerDev inotify
     timerevents:
       lastEventFile: ./www/snapshots
       lastEventMask: IN_CLOSE_NOWRITE
     timereventsState:
       lastEventFile: ./www/snapshots
       lastEventMask: IN_CLOSE_NOWRITE
     triggerEvents:
       lastEventFile: ./www/snapshots
       lastEventMask: IN_CLOSE_NOWRITE
     triggerEventsState:
       lastEventFile: ./www/snapshots
       lastEventMask: IN_CLOSE_NOWRITE
   internals:
   readings:
   trigger:
     all         inotify
   uiState:
   uiTable:
Attributes:



99_myUtils
sub last_pic($)
{
my ($p) = @_;
my $ss = "'".$p."p'";
my $file = qx(ls -lt --time-style='+%Y-%m-%d %H:%M:%S' www/snapshots/*.jpg | sed -n $ss | awk '{print \$8}');
my $file2 = ".././$file";
fhem( "setreading dummyKamerabild Bild1 $ss $file2" );

return $file2;


}



List dummy
Internals:
   CFGFN     
   FUUID      6362cc7d-f33f-6f45-83bf-25a65982822be24f
   NAME       dummyKamerabild
   NR         4350
   STATE      ???
   TYPE       dummy
   eventCount 40
   OLDREADINGS:
   READINGS:
     2022-11-11 06:10:17   Bild1           '1p' .././www/snapshots/Kamera2_00_20221111061017.jpg

   hmccu:
Attributes:
   room       Technik


List inotify
Internals:
   DEF        ./www/snapshots .*
   FD         36
   FILES      .*
   FUUID      635731fe-f33f-6f45-bb8d-15d49e3508abdeba
   MID        inotify_wwwsnapshots
   NAME       inotify
   NOTIFYDEV  global
   NR         597
   NTFY_ORDER 81-inotify
   PATH       ./www/snapshots
   STATE      active
   TYPE       inotify
   VERSION    0.6.1
   eventCount 68732
   OLDREADINGS:
     2022-11-03 17:29:04   lastEventFile   ./www/snapshots/srt.jpg
     2022-11-03 17:29:04   lastEventMask   IN_ACCESS
     2022-11-03 16:41:57   state           inactive
   READINGS:
     2022-11-13 07:37:30   lastEventFile   ./www/snapshots
     2022-11-13 07:37:30   lastEventMask   IN_CLOSE_NOWRITE
     2022-11-03 16:41:59   state           active
   helper:
     dirs:
       ./www/snapshots
     events:
       0:
         file       ./www/snapshots
         mask       IN_CLOSE_NOWRITE
         time       2022-11-13 07:37:30
       1:
         file       ./www/snapshots
         mask       IN_ACCESS
         time       2022-11-13 07:37:30
       2:
         file       ./www/snapshots
         mask       IN_OPEN
         time       2022-11-13 07:37:30
       3:
         file       ./www/snapshots/Kamera2_00_20221113072707.mp4
         mask       IN_CLOSE_WRITE
         time       2022-11-13 07:27:29
       4:
         file       ./www/snapshots/Kamera2_00_20221113072707.mp4
         mask       IN_MODIFY
         time       2022-11-13 07:27:29
       5:
         file       ./www/snapshots/Kamera2_00_20221113072707.mp4
         mask       IN_MODIFY
         time       2022-11-13 07:27:29
       6:
         file       ./www/snapshots/Kamera2_00_20221113072707.mp4
         mask       IN_MODIFY
         time       2022-11-13 07:27:29
       7:
         file       ./www/snapshots/Kamera2_00_20221113072707.mp4
         mask       IN_MODIFY
         time       2022-11-13 07:27:29
       8:
         file       ./www/snapshots/Kamera2_00_20221113072707.mp4
         mask       IN_MODIFY
         time       2022-11-13 07:27:29
       9:
         file       ./www/snapshots/Kamera2_00_20221113072707.mp4
         mask       IN_MODIFY
         time       2022-11-13 07:27:29
     masks:
       IN_CREATE
       IN_ALL_EVENTS
   hmccu:
Attributes:
   event-on-change-reading .*
   event-on-update-reading .*
   mask       IN_CREATE,IN_ALL_EVENTS
   room       Technik





Vielen Dank und Gruß

beSmart



OdfFhem

Zitat von: beSmart am 30 Oktober 2022, 23:15:18
https://forum.fhem.de/index.php/topic,49732.15.html
https://forum.fhem.de/index.php/topic,64838.30.html

Könntest Du die beiden Links trennen - momentan kann man dem 2. nicht durch Klicken folgen ...

Zitat von: beSmart am 13 November 2022, 09:11:47
ich komme nicht weiter ...
Kannst Du noch ein list vom aktuellen inotify-DEVICE ergänzen ?
Hilfreich wäre bestimmt noch, wenn Du einen entsprechenden FTUI-Auszug bzgl. der gewünschten Bild-Darstellung ergänzen würdest ...

beSmart

Hallo,

habe die Beiträge editiert und ein Foto angehängt. So ungefähr stelle ich mir das vor.

Gruß

beSmart

OdfFhem

Zitat von: beSmart am 13 November 2022, 12:06:19
So ungefähr stelle ich mir das vor.
Ich dachte eher an einen (auf diesen Fall begrenzten) html-Auszug ... sofern schon vorhanden ...

beSmart

Hallo,

der HTML-Auszug ist noch nicht wirklich fertig. Es gibt nur eine Seite zum Testen und eine 2. die in der Bildmitte den Livestream der Kamera anzeigt. Das funktioniert grundsätzlich auch alles. Es fehlen noch die Popups für die Bilder und etwas Feintuning für die Optik.

Mein größtes Problem sind die letzten 5 Bilder von der Bewegungserkennung.

<li data-row="1" data-col="1" data-sizex="1" data-sizey="6">

<div data-type="label" class="small">Bild1</div>

<div data-type="image"
                data-url="http://Test.fritz.box:8085/fhem/ftui/images/Test.jpg" width="25" height="20" class="nocache" data-refresh="1">
            </div>

<div data-type="label" class="small">Bild2</div>

<div data-type="image"
                data-url="http://Test.fritz.box:8085/fhem/ftui/images/Test.jpg" width="25" height="20" class="nocache" data-refresh="1">
            </div>

</li>
<li data-row="1" data-col="2" data-sizex="7" data-sizey="6">
<div data-type="image"
                data-url="http://Test.fritz.box:8085/fhem/ftui/images/Test.jpg" width="645" height="485" class="nocache" data-refresh="1">
            </div>
</li>

<li data-row="1" data-col="9" data-sizex="1" data-sizey="6">
</li>

</ul>
</div>
</div>
</body>
</html>

OdfFhem

#10
Beispielhaft habe ich mal ein inotify- und ein notify-DEVICE angelegt.

Verzeichnis und Dateimaske frei erfunden;
Dateimaske scheint keine Bedeutung zu haben - auch snapIRGENDWAS wird gemeldet !?!; könnte man im Zweifel noch im notify ignorieren.

define inotify4test inotify /opt/fhem/www/ftui/snapshots snapshot.*
attr inotify4test mask IN_CREATE


notify reagiert auf lastEventFile und aktualisiert anschließend Bild1..Bild5 im inotify-DEVICE. Standardwert ist momentan test_X, sofern BildX noch nicht vorhanden.

define inotify4test_notify notify inotify4test:lastEventFile:.* \
{ my @files=($EVTPART1);; for (1..4) {push @files, ReadingsVal("$NAME","Bild$_","test_$_")} for (0 .. $#files) {fhem("setreading inotify4test Bild".($_+1)." $files[$_]")} }


Vielleicht hilft's ...
... Werte für Reading Bild1..Bild5 können natürlich beliebig angepasst werden
... u.U. ist eine solche Anpassung aber unnötig, da data-type="image" einige (vielversprechende) Attribute zur Verfügung stellt

beSmart

Vielen Dank für deine Hilfe.

Ich habe deine Beispiele 1:1 bei mir angelegt und danach getestet. Bei mir funktioniert inotify(Event), aber das notify schreibt kein Reading. Vermutlich stimmt der trigger  nicht. Im Eventmonitor erscheint nur das Event von inotify.

Habe dann versucht das ganze anzupassen, bei völliger Ahnungslosigkeit!

inotify
Internals:
   CFGFN     
   DEF        ./www/snapshots .*
   FD         26
   FILES      .*
   FUUID      63713e17-f33f-6f45-d2d1-5edf5cee61c36fbd
   MID        inotify_wwwsnapshots
   NAME       inotify4test
   NOTIFYDEV  global
   NR         623
   NTFY_ORDER 81-inotify4test
   PATH       ./www/snapshots
   STATE      active
   TYPE       inotify
   VERSION    0.6.1
   eventCount 3380
   READINGS:
     2022-11-13 20:52:54   Bild1           ./www/snapshots/Kamera2_00_20221113205235.mp4
     2022-11-13 20:52:54   Bild2           ./www/snapshots/Kamera2_00_20221113205235.mp4
     2022-11-13 20:52:54   Bild3           ./www/snapshots/Kamera2_00_20221113205235.mp4
     2022-11-13 20:52:54   Bild4           ./www/snapshots/Kamera2_00_20221113205235.mp4
     2022-11-13 20:52:54   Bild5           ./www/snapshots/Kamera2_00_20221113205235.mp4
     2022-11-13 20:52:54   lastEventFile   ./www/snapshots/Kamera2_00_20221113205235.mp4
     2022-11-13 20:52:54   lastEventMask   IN_CLOSE_WRITE
     2022-11-13 19:59:11   state           active
   helper:
     dirs:
       ./www/snapshots
     events:
       0:
         file       ./www/snapshots/Kamera2_00_20221113205235.mp4
         mask       IN_CLOSE_WRITE
         time       2022-11-13 20:52:54
       1:
         file       ./www/snapshots/Kamera2_00_20221113205235.mp4
         mask       IN_MODIFY
         time       2022-11-13 20:52:54
       2:
         file       ./www/snapshots/Kamera2_00_20221113205235.mp4
         mask       IN_MODIFY
         time       2022-11-13 20:52:54
       3:
         file       ./www/snapshots/Kamera2_00_20221113205235.mp4
         mask       IN_MODIFY
         time       2022-11-13 20:52:54
       4:
         file       ./www/snapshots/Kamera2_00_20221113205235.mp4
         mask       IN_MODIFY
         time       2022-11-13 20:52:54
       5:
         file       ./www/snapshots/Kamera2_00_20221113205235.mp4
         mask       IN_MODIFY
         time       2022-11-13 20:52:54
       6:
         file       ./www/snapshots/Kamera2_00_20221113205235.mp4
         mask       IN_MODIFY
         time       2022-11-13 20:52:54
       7:
         file       ./www/snapshots/Kamera2_00_20221113205235.mp4
         mask       IN_MODIFY
         time       2022-11-13 20:52:54
       8:
         file       ./www/snapshots/Kamera2_00_20221113205235.mp4
         mask       IN_MODIFY
         time       2022-11-13 20:52:54
       9:
         file       ./www/snapshots/Kamera2_00_20221113205235.mp4
         mask       IN_MODIFY
         time       2022-11-13 20:52:54
     masks:
       IN_ALL_EVENTS
   hmccu:
Attributes:
   mask       IN_ALL_EVENTS
   room       Technik


Notify
inotify4test:lastEventFile:../www/snapshots/Kamera.* { my @files=($EVTPART1); for (1..4) {push @files, ReadingsVal("$NAME","Bild$_","test_$_")} for (0 .. $#files) {fhem("setreading inotify4test Bild".($_+1)." $files[$_]")} }

Soweit erstmal supi, aber die Sortierung der Bilder stimmt nicht. (Siehe List vom inotify) Es ist 5x das letzte Bild.

Kannst du nochmal schauen wo der Fehler liegt. Kann gut sein, das es an meinem ,,Anpassungen" liegt.


Vielen Dank und Gruß

beSmart

OdfFhem

Bei mir liegt das snapshots-Verzeichnis eine Ebene tiefer.
... sollte egal sein.
Das mask-Attribut vom inotify-DEVICE enthält bei mir nur den Wert IN_CREATE.
... also bekomme ich nur bei der Neuanlage eine Mitteilung - s.u. die events-Auflistung.
... bei Dir betreffen die letzten 10 Events alle immer dieselbe Datei ... Andern bzw. Schließen ... klar, dass dann in allen BildX-Readings die identische Datei steht.
... IN_ALL_EVENTS scheint kein guter Wert zu sein.


define inotify4test inotify ./www/ftui/snapshots snapshot.*
attr inotify4test mask IN_CREATE

#   DEF        ./www/ftui/snapshots snapshot.*
#   FD         18
#   FILES      snapshot.*
#   FUUID      6370ffe3-f33f-5197-6c25-b1c1d0cb655009be
#   FVERSION   98_inotify.pm:v0.6.1-s18473/2019-01-31
#   MID        inotify_wwwftuisnapshotssnapshot
#   NAME       inotify4test
#   NOTIFYDEV  global
#   NR         85
#   NTFY_ORDER 81-inotify4test
#   PATH       ./www/ftui/snapshots
#   STATE      active
#   TYPE       inotify
#   VERSION    0.6.1
#   eventCount 22
#   READINGS:
#     2022-11-13 21:52:48   Bild1           ./www/ftui/snapshots/Kamera15
#     2022-11-13 21:52:48   Bild2           ./www/ftui/snapshots/Kamera14
#     2022-11-13 21:52:48   Bild3           ./www/ftui/snapshots/Kamera13
#     2022-11-13 21:52:48   Bild4           ./www/ftui/snapshots/Kamera12
#     2022-11-13 21:52:48   Bild5           ./www/ftui/snapshots/Kamera11
#     2022-11-13 21:52:48   lastEventFile   ./www/ftui/snapshots/Kamera15
#     2022-11-13 21:52:48   lastEventMask   IN_CREATE
#     2022-11-13 21:41:03   state           active
#   helper:
#     dirs:
#       ./www/ftui/snapshots
#     events:
#       0:
#         file       ./www/ftui/snapshots/Kamera15
#         mask       IN_CREATE
#         time       2022-11-13 21:52:48
#       1:
#         file       ./www/ftui/snapshots/Kamera14
#         mask       IN_CREATE
#         time       2022-11-13 21:52:45
#       2:
#         file       ./www/ftui/snapshots/Kamera13
#         mask       IN_CREATE
#         time       2022-11-13 21:52:44
#       3:
#         file       ./www/ftui/snapshots/Kamera12
#         mask       IN_CREATE
#         time       2022-11-13 21:52:42
#       4:
#         file       ./www/ftui/snapshots/Kamera11
#         mask       IN_CREATE
#         time       2022-11-13 21:52:41
#       5:
#         file       ./www/ftui/snapshots/Kamera10
#         mask       IN_CREATE
#         time       2022-11-13 21:51:27
#       6:
#         file       ./www/ftui/snapshots/Kamera09
#         mask       IN_CREATE
#         time       2022-11-13 21:51:23
#       7:
#         file       ./www/ftui/snapshots/Kamera08
#         mask       IN_CREATE
#         time       2022-11-13 21:51:22
#       8:
#         file       ./www/ftui/snapshots/Kamera07
#         mask       IN_CREATE
#         time       2022-11-13 21:51:20
#       9:
#         file       ./www/ftui/snapshots/Kamera06
#         mask       IN_CREATE
#         time       2022-11-13 21:49:05
#     masks:
#       IN_CREATE
#



define inotify4test_notify notify inotify4test:lastEventFile:../www/ftui/snapshots/Kamera.* \
{ my @files=($EVTPART1);; for (1..4) { push @files, ReadingsVal("$NAME","Bild$_","test_$_")} for (0 .. $#files) { fhem("setreading inotify4test Bild".($_+1)." $files[$_]")} }


beSmart

Guten Abend.

Vielen Dank für deine Hilfe, es funktioniert jetzt so wie ich es mir vorstelle.
Versuche jetzt den HTML-Teil fertig zu machen und stelle es dann hier ein.


Vielen Dank und Gruß


beSmart