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
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.
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
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
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,49732.15.html)
https://forum.fhem.de/index.php/topic,64838.30.html (https://forum.fhem.de/index.php/topic,64838.30.html)
Mal schauen, ob ich es damit schaffe.
Gruß
besmart
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
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
(https://forum.fhem.de/index.php/topic,49732.15.html%3Cbr%20/%3Ehttps://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 ...
Hallo,
habe die Beiträge editiert und ein Foto angehängt. So ungefähr stelle ich mir das vor.
Gruß
beSmart
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 ...
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>
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
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
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[$_]")} }
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