FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: LT@Home am 28 Januar 2018, 06:30:17

Titel: Linux::Inotify2 geht nicht in fhem
Beitrag von: LT@Home am 28 Januar 2018, 06:30:17
Hi zusammen - ich möchte mit Inotify2 ein Verzeichnis überwachen - als "standalone-Code" klappt das - in fhem ausgeführt geht das nicht - woran kann das liegen? Rechte sind vorhanden:


##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;
use Linux::Inotify2;

sub myUtils_Initialize($$) {
    my ($hash) = @_;

    my $SMSInbox = "/var/spool/gammu/inbox";

    # create a new object
    our $inotify = new Linux::Inotify2;

    # create watch
    if ($inotify->watch ($SMSInbox, IN_CLOSE_WRITE | IN_CLOSE_NOWRITE | IN_CREATE | IN_DELETE | IN_MOVED_TO | IN_MOVED_FROM, sub {
        my $event = shift;
        Log 1, "Notify-Event on $event->fullname, $event->name, $event->mask";
    })) {
        Log 1, "Notifier installed for $SMSInbox";
    } else {
        Log 1, "Notifier not installed for $SMSInbox : $!";
    }
}
Titel: Antw:Linux::Inotify2 geht nicht in fhem
Beitrag von: CoolTux am 28 Januar 2018, 07:10:13
Schau dir bitte die myUtilsTemplate.pm Datei an. Dort steht wie und wo Du Deinen eigenen Code einfügen kannst in eine myUtils. So ist es falsch wie Du es gemacht hast.
Titel: Antw:Linux::Inotify2 geht nicht in fhem
Beitrag von: rudolfkoenig am 28 Januar 2018, 10:18:53
Weiterhin muss man regelmaesig (per InternalTimer?) $inotify->poll aufrufen, was FHEM sinnlos belastet.

Wenn man es richtig machen will:
- Ein FHEM-Modul bauen mit DefFn und ReadFn
- im DefFn $inotify anlegen, "$hash->{FD} = $inotify->fileno" und "$selectlist{$hash->{NAME}} = $hash" setzen.
- im ReadFn $inotify->poll aufrufen
Das ist natuerlich skizzenhaft und nicht getestet.
Titel: Antw:Linux::Inotify2 geht nicht in fhem
Beitrag von: marvin78 am 29 Januar 2018, 15:28:30
Ich habe für meinen Gebrauch zufällig vor ein paar Wochen ein Modul dafür gebastelt. Das habe ich nun etwas verfeinert und im git eingecheckt. Ggf. ist es hilfreich:

https://forum.fhem.de/index.php/topic,83538.new.html
Titel: Antw:Linux::Inotify2 geht nicht in fhem
Beitrag von: LT@Home am 03 Februar 2018, 09:56:21
@marvin: sieht gut aus (das Modul) - ich habs installiert - jetzt würd ich erwarten, dass im log von fhem events geloggt werden  - werden sie aber nicht...
Titel: Antw:Linux::Inotify2 geht nicht in fhem
Beitrag von: marvin78 am 03 Februar 2018, 10:10:48
Bitte im Modulthread (https://forum.fhem.de/index.php/topic,83538.new.html) weiter machen. Und dort dann bitte genaue Infos über deine Umgebung geben (list vom inotify-Device, Filesystem, mask etc.). So kann ich nur raten. Auch muss ich nun raten, welches Log du meinst. Es gibt Readings und es gibt Events bei richtiger Konfiguration.

Wichtig: inotify - das Linuxy-Kernelmodul kann nur Änderungen im lokalen Filesystem erkennen.