NEWS
Synology-NAS-Ordnerüberwachung möglich? *gelöst*
-
@mickym Ja, den Punkt habe ich gerade aktiviert. Jetzt muss ich nur noch wissen, wie ich das installiere.
-
@surfer09 Hab mein Posting gerade aktualisiert
-
@mickym Danke, es geht voran! Habe die neue Node jetzt eingebaut, aber dennoch bekomme ich immer noch keine Ausgabe im Debug bei Neuerstellung einer Datei...
-
@surfer09 Die funktioniert etwas anders
Als erstes musst Du angeben, bis zur welcher Verzeichnistiefe Du überwachst:
Ich habe mal 5 Ebenen angegeben.
Dann brauchst Du je 1 Node für Create, Delete und Update.
Create ist nur bei Neuerstellung von Dateien
Delete Löschen von Dateien
Update Aktualisieren von Dateiensiehe mein Screenshot
-
@mickym Also so..?
-
@surfer09 Ja und hast Du die Verzeichnistiefe angegeben?
-
-
@surfer09 Jo und passiert nichts wenn eine neue Datei in Y angelegt wird? Und bei Dir halt ggf. schauen, ob Y: auch Rechte hast. Also über Explorer mal Datei anlegen, beschreiben oder löschen. Ggf. versuchst Du es erst mal mit einem lokalen Verzeichnis um zu schauen, ob die Netzkommunikation hier dazwischen funkt.
-
@mickym Also die Berechtigung kann ich ausschließen, weil ich die Testdatei die ganze Zeit schon über den IO-Broker Server erstelle und lösche.
Lokal funktioniert das ganze Spiel mit den Nodes. Über das Netzlaufwerk klappt das allerdings nicht.. -
@mickym Nun wenn es lokal funktioniert und Du Laufwerksbuchstaben nutzt dann weiss ich auch nicht so recht.
net use Y: \\server\share /user: name password
- ich habe nun die Ressource wie oben zugeordnet.
Ich glaube es ist ein Berechtigungsproblem - gerade unter Windows - wenn das Laufwerk unter einer anderen Benutzer zugewiesen wurde, scheint es ein Problem zu geben.
Ja hab das nun verifziert, wenn das Y: Laufwerk unter einem anderen Benutzer zugewiesen wurde, dann funktioniert die Überwachung nicht.
Insofern ist der Einwand von @liv-in-sky wahrscheinlich sehr berechtigt und unter Windows kann man das auch nicht so schnell ändern.
Ich würde mal Deine Maschine runterfahren und mich als iobroker user das Netzlaufwerk zuordnen. Es dürfte aus meiner Sicht ein Berechtigungsproblem sein, wenn man versucht unter verschiedenen Benutzern eine Netzwerkresource unter Windows zu nutzen. -
@mickym Schade, dann wird das wohl unter Windows doch nicht so einfach sein...
Wie bekomme ich denn das Passwort für den iobroker Benutzer raus? Ich würde sonst gerne das Netzlaufwerk einmal mit dem Benutzer verbinden und es dann erneut testen. -
So was ich mal gemacht habe ist, dass ich geschaut habe, dass das Laufwerk Y: bereits bei Anmeldung zugewiesen wird.
Bzw. die Flows neu gestartet werden.
Ich hab das Laufwerk Y: zugeordnet:
und dann den Flow neu gestartet.
-
So, ich habe gerade auch nochmal das versucht umzusetzen, was du beschrieben hattest. Der IO-Broker Dienst startet mit dem Windowsbenutzer io-broker, mit diesem wird ebenfalls das Netzlaufwerk Y:\ verbunden (Benutzer io-broker habe ich auch auf dem NAS angelegt mit Lese-/Schreibrecht auf die zu überwachende Freigabe).
NODE-RED Instanz neu gestartet, Datei in dem Ordner abgelegt - es passiert immer noch nichts in der Debug-Ausgabe -
@surfer09 Also bei mir gehts es:
Aber wie gesagt - ich habs auch schon mal gehabt, dass es nicht gegangen ist, wenn das irgendwie anderes verbunden war. Musst halt mal so zu probieren, dass beim Starten die Zuordnung bereits da ist - musst halt rumprobieren. Das ist halt nun schwierig - aber es scheint unter bestimmten Umständen zu funktionieren unter welchen nicht, ist mir aber auch nicht ganz klar.
-
@mickym Ich habe jetzt so einiges durch getestet - funktioniert leider nicht bei mir.
Werde mir dann etwas anderes überlegen müssen das abzufragen.
Dennoch vielen Dank an dich für deine Hilfe! -
@surfer09 In dem Thread den ich zu Anfang gepostet habe, da gibts ein Javascript vielleicht funktioniert das ja.
-
@mickym Ja, das Skript hatte ich mir auch schon angesehen. Aber von Java habe ich leider noch weniger Ahnung um das so umzubauen, dass es auf meine Zwecke zugeschnitten ist.
-
@surfer09 sagte in Ordnerüberwachung möglich?:
@mickym Ja, das Skript hatte ich mir auch schon angesehen. Aber von Java habe ich leider noch weniger Ahnung um das so umzubauen, dass es auf meine Zwecke zugeschnitten ist.
Probiere mal das hier, es ist nur der Pfad in Zeile 9 anzupassen. Gemeldet werden neue, geänderte und gelöschte Dateien
- wenn es einen Fehler wg. chokidar gibt, dieses in der JS-Instanz eintragen, ich brauchte es nicht
- evtl. muss der Windows-Pfad mit // anstatt mit \\ angegeben werden, also z.B. Y:// anstatt Y:\\
/* * Purpose: überwacht Pfade und Dateien * Date: 29.10.2021 * Author: @fastfoot * */ const chokidar = require('chokidar'); const Pfad = 'Y://'; const options = { ignored: /(^|[\/\\])\../, // ignoriert dotfiles polling: !true, // Polling aus, sollte an sein für netzwerkdateien cwd: Pfad, // Basisverzeichnis, wird dann aus dem Dateinamen entfernt persistent: !true, // Bedeutung ist mir nicht klar :-) ignoreInitial: true, // verhindert Meldungen zu Dateien beim Skriptstart depth: 0 // Ordnertiefe } const watcher = chokidar.watch(Pfad, options) .on('add', path => { notify(`Die Datei ${path} wurde hinzugefügt`); }) .on('change', path => { notify(`Die Datei ${path} wurde geändert`); }) .on('unlink', path => { notify(`Die Datei ${path} wurde gelöscht`); }) //Wichtig beim Beenden des Skriptes onStop(() => { watcher.close() .then(log('Watcher gestoppt', 'warn')) }) function notify(text) { sendTo('telegram.0', { text }); log(text); }
Danke an @OliverIO für den Tipp!
-
Ich würde gerne nochmal meine Meinung einbringen
Für mich macht es wenig Sinn diese Anfrage über iobroker mit Javascript oder nodered zu machen. Iobroker hat genug zu tun, Verbindungen aufrecht zu halten und diese Aufgabe sollte der Nas Server übernehmen. Mit einem 5 Zeilen Linux Script kann das mit sehr einfachen Befehlen erledigt werden
Nas erzeugt ein File (Touch), wartet 60 Sekunden und überprüft dann ( find cnewer), ob im order ein File ist, das neuer ist als das zuvor erzeugte File. Ist ein File vorhanden, dass neuer ist, sendet der Nas via curl an iobroker und setzt einen dp
So wenig Ressourcen wie möglich
Wollte es nur nochmal loswerden
-
@liv-in-sky Also auch der JS-Controller nutzt zB diese LIB(chokidar) weshalb ich schonmal glaube dass das recht ressourcenschonend ist. Wenn ich das richtig verstanden habe ist das event-getrieben und frisst demnach nicht allzuviel Brot
Es wäre dennoch interessant zu wissen wie es sich tatsächlich verhält. Deine vorgeschlagene Lösung es über eine Shell zu lösen halte ich hingegen für nicht so gut da sie immer nur pollen kann. Vielleicht kann ja jd das mal mit htop etc prüfen, ich bin zu doof das zu interpretieren.