Hallo marvin78,
ich benutze dein Modul, um einen Ordner auf neue Dateien einer Kamera zu überwachen.
Leider funktioniert das nicht stabil, d.h. gelegentlich werden die Readings lastEventFile und lastEventMask richtig angezeigt, meist aber nicht. Mit anderen Worten, man kann sich nicht auf die Readings in diesem Device verlassen.
Bei mir läuft Fhem in einer VM auf einem Proxmox-Server. Die Bilder der Kameraüberwachung sind vorhanden, d.h. die Bewegungserkennung und das Abspeichern der Dateien funktioniert.
Der Besitzer des zu überwachenenden Ordners ist ftpuser:ftpuser, aber auch fhem:dialout macht keinen Unterschied.
Welches Attribut Mask muss ich setzen, um zuverlässige Readings zu bekommen?
define storedCamHaustuer inotify /home/ftpuser/FoscamCamera_E8ABFAA73D1A/snap HMDAlarm_*
attr storedCamHaustuer group IPCAM
attr storedCamHaustuer icon it_network
attr storedCamHaustuer mask IN_CLOSE_WRITE,IN_CLOSE_NOWRITE,IN_OPEN,IN_CREATE
attr storedCamHaustuer room Network
attr storedCamHaustuer stateFormat last event:<br/>activity
attr storedCamHaustuer userReadings activity {substr(ReadingsTimestamp($name,'lastEventMask',''),0,19)}
# CFGFN ./FHEM/Wlan-Kamera.cfg
# DEF /home/ftpuser/FoscamCamera_E8ABFAA73D1A/snap HMDAlarm_*
# FD 97
# FILES HMDAlarm_*
# FUUID 66a0de22-f33f-e986-c2bf-b9741fc7ab946efc
# MID inotify_homeftpuserFoscamCamera_E8ABFAA73D1AsnapHMDAlarm_
# NAME storedCamHaustuer
# NOTIFYDEV global
# NR 88
# NTFY_ORDER 81-storedCamHaustuer
# PATH /home/ftpuser/FoscamCamera_E8ABFAA73D1A/snap
# STATE last event:<br/>2024-10-14 15:31:18
# TYPE inotify
# VERSION 0.6.4
# eventCount 3
# READINGS:
# 2024-10-16 11:12:15 activity 2024-10-14 15:31:18
# 2024-10-14 15:31:18 lastEventFile /home/ftpuser/FoscamCamera_E8ABFAA73D1A/snap/HMDAlarm_20241013-204632.jpg
# 2024-10-14 15:31:18 lastEventMask IN_OPEN
# 2024-10-16 11:12:15 state active
# helper:
# bm:
# inotify_Define:
# cnt 3
# dmx -1000
# dtot 0
# dtotcnt 0
# mTS 16.10. 11:12:15
# max 0.10362696647644
# tot 0.301160097122192
# mAr:
# HASH(0x5650f67c32b0)
# storedCamHaustuer inotify /home/ftpuser/FoscamCamera_E8ABFAA73D1A/snap HMDAlarm_*
# inotify_Get:
# cnt 11
# dmx -1000
# dtot 0
# dtotcnt 0
# mTS 16.10. 11:00:52
# max 6.81877136230469e-05
# tot 0.000470161437988281
# mAr:
# HASH(0x5650f67c32b0)
# storedCamHaustuer
# ?
# inotify_Notify:
# cnt 35
# dmx -1000
# dtot 0
# dtotcnt 0
# mTS 16.10. 10:48:42
# max 0.000147104263305664
# tot 0.00191330909729004
# mAr:
# HASH(0x5650f67c32b0)
# HASH(0x5650f342c848)
# inotify_Set:
# cnt 36
# dmx -1000
# dtot 0
# dtotcnt 0
# mTS 16.10. 11:11:45
# max 9.89437103271484e-05
# tot 0.00149750709533691
# mAr:
# HASH(0x5650f67c32b0)
# storedCamHaustuer
# ?
# dirs:
# /home/ftpuser/FoscamCamera_E8ABFAA73D1A/snap
# masks:
# IN_CLOSE_WRITE
# IN_CLOSE_NOWRITE
# IN_OPEN
# IN_CREATE
#
setstate storedCamHaustuer last event:<br/>2024-10-14 15:31:18
setstate storedCamHaustuer 2024-10-16 11:12:15 activity 2024-10-14 15:31:18
setstate storedCamHaustuer 2024-10-14 15:31:18 lastEventFile /home/ftpuser/FoscamCamera_E8ABFAA73D1A/snap/HMDAlarm_20241013-204632.jpg
setstate storedCamHaustuer 2024-10-14 15:31:18 lastEventMask IN_OPEN
setstate storedCamHaustuer 2024-10-16 11:12:15 state active
Das Modul ist nur ein FHEM-Aufsatz für inotify2. Du musst dir also inotify näher anschauen.
Hallo marvin78,
dass dein Modul auf inotify2 aufsetzt, war mir schon klar.
Ich hab insgesamt 3 Kameras, die ich in 3 verschiedenen Fhem-Devices überwache. Bei einer anderen Kamera hatte ich die Definition geändert und - vielleicht ein Zufall - gab es zur Kamera im Eingangs-Thread folgenden folgende Einträge im Logfile:
2024.10.16 12:49:20.741 3: inotify (storedCamWest_FI9805W): startet watching /home/ftpuser/FI9805W_00626E5818B7/snap with the file pattern MDAlarm_.*
2024.10.16 12:49:20.806 1: ERROR: Select error -1 (9), error count= 0
2024.10.16 12:49:20.806 1: Found and deleted bad fileno for storedCamHaustuer
Kannst du mit dieser Fehlermeldung etwas anfangen?
Danach werden zwar noch Bilder von storedCamHaustuer im Filesystem gespeichert, aber im inotify-Device passiert nichts, keine neuen Readings, auch nichts im Event-Monitor.
Viele Grüße Gisbert
Es kann sein, dass hier Probleme mit dem Filehandling vorliegen (nicht geschlossene Dateien oder ähnliches - 9 steht für Bad File Number). Leider kann ich hier nicht viel helfen. Das Modul tut an der Stelle im Grunde nichts weiter, als alles von inotify weiterzuleiten.
Hallo marvin78,
danke dir für diese Info.
Ich konnte dieses Verhalten immerhin nachstellen. Sobald ich eine Definition einer zweiten Kamera ändere, bekomme ich die Fehlermeldungen zur ersten Kamera.
2024.10.16 14:19:12.226 3: inotify (storedCamWest_FI9805W): startet watching /home/ftpuser/FI9805W_00626E5818B7/snap with the file pattern MDAlarm_.*
2024.10.16 14:19:12.303 1: ERROR: Select error -1 (9), error count= 0
2024.10.16 14:19:12.304 1: Found and deleted bad fileno for storedCamHaustuer
Für mich sieht es so aus, als ob auf Linuxebene nur eine Definition "überlebt" und die vorhergehende in Fehler hineinläuft.
Alle Kameras speichern in /home/ftpuser/ ab, allerdings sind die Filenamen unterschiedlich:
MDAlarm...
HMDAlarm...
Kann man in einem Fhem-Device auf verschiedene File pattern beobachten?
Viele Grüße Gisbert
Überwache doch einfach auf jegliche Änderung (.*) oder auf sowas wie .*Alarm.* und lässt den Rest dann ein notify erledigen.