Hallo zusammen,
es gibt nun für Synology User einen neuen Baustein zur Synology File Station Integration, neben den schon bestehenden Modulen SSCam, SSCal und SSChatBot.
Anwendungsgebiet ist die Übertragung von Files/Verzeichnisinhalten von und zur Synology Diskstation ohne die Notwendigkeit der Einrichtung von Laufwerk-Mounts. Außerdem werden alle Übertragungen asynchron nicht blockierend ausgeführt.
Wartungszeiten bzw. Sleep-Zeiten der Diskstation werden toleriert und die gepufferten Übertragungen nachgeholt sobald
die Diskstation wieder verfügbar ist.
Das Modul 50_SSFile ist im Beta-Status und wird noch weiterentwickelt, aber grundlegende Funktionen sind bereits implementiert. Es kann über den nachfolgenden Download bezogen werden.
Bitte den Befehl so komplett mit den Ausführungszeichen am Anfang und Ende in der FHEMWEB Kommandozeile eingeben:
"wget -qO ./FHEM/50_SSFile.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/50_SSFile.pm"
FHEM danach restarten.
Es steht eine deutsche Hilfe zur Verfügung, die mit
help SSFile de
aufgerufen werden kann und alle implementierte Funktionen enthält.
Weiterhin habe ich begonnen eine Wiki-Seite für SSFile zu erstellen -> https://wiki.fhem.de/wiki/SSFile_-_Integration_der_Synology_File_Station
Die Definition eines Devices ist sehr einfach:
define SynFile SSFile <IP-Adresse der Diskstation>
Die Verwendung von HTTPS und vom Standard abweichenden Ports ist ebenfalls möglich, z.B:
define SynFile SSFile 192.168.2.20 9001 https
Nach der Definition ist der verwendete User und Paßwort einzugeben mit:
set <Name> credentials <User> <Passwort>
Danach ist das Device einsatzbereit.
Ich freue mich auf eure Testergebnisse. Da der Haupteinsatz des Moduls vermutlich im Bereich Backup/Restore angesiedelt sein wird, ist auch auch eine Integration in das Modul 98_backupToStorage mit CoolTux geplant wenn ein entsprechender Reifegrad erreicht ist.
Wichtig !! FHEM muß aktuell sein, insbesondere die Libraries im Verzeichnis /opt/fhem/lib/FHEM/SynoModules
Grüße,
Heiko
Das finde ich interessant, also gleich mal angelegt.
PERL WARNING: Parentheses missing around "my" list at ./FHEM/50_SSFile.pm line 337.
Aber Device vorhanden.
Kleiner Programmierfehler ... ist korrigiert.
Bitte auch den roten Zusatz im Threadstart beachten. Hatte ich heute früh vergessen zu erwähnen.
Hallo,
als Synology Nutzer ist soetwas für mich natürlich äußerst interessant, also gleichmal gemäß Anleitung installiert (ohne Fehlermeldung) und ein erstes jpg file aus dem Ordner "/opt/fhem/www/snapshots" auf die Diskstation kopiert. Also "set SynFile Upload /opt/fhem/www/snapshots/YiCam1_snapshot_1.jpg" dest=/ShareFHEM
Meine Erwartungshaltung wäre gewesen, das er das jpg file direkt in den Ordner ShareFHEM schreibt. Es wurde jedoch der komplette Pfad mitkopiert, das jpg steht also jetzt im Ordner /ShareFHEM/opt/fhem/www/snapshots, was habe ich nicht bzw. falsch bedacht?
Gruß und auch schon Mal besten Dank für das Modul
Thomas
Hallo Thomas,
Zitat
Meine Erwartungshaltung wäre gewesen, das er das jpg file direkt in den Ordner ShareFHEM schreibt. Es wurde jedoch der komplette Pfad mitkopiert, das jpg steht also jetzt im Ordner /ShareFHEM/opt/fhem/www/snapshots, was habe ich nicht bzw. falsch bedacht?
Hast du alles richtig gemacht. Das ist von mir so implementiert, damit die Struktur der Quelle erhalten bleibt und man gleich sieht was das Ursprungsverzeichnis war. Das Verhalten ist in der Hilfe in diesem Satz "versteckt":
Zitat
In Ordnern werden die Inhalte inklusive Subordnern ausgelesen und zur Destination Struktur erhaltend übertragen.
Würdest du den Befehl z.B. so schreiben:
set SynFile Upload "./www/snapshots/YiCam1_snapshot_1.jpg" dest=/ShareFHEM
würde das File auf der Syno landen unter:
/ShareFHEM/www/snapshots
Eine Übersicht deiner Uploads siehst du mit
set SynFile listUploadsDone
Ich könnte bei Bedarf aber noch einen Qualifier bereitstellen mit dem die Übertragung nicht Struktur erhaltend passiert, d.h. alles in dem angegebenen Ordner landet ohne Unterverzeichnisstruktur.
Grüße,
Heiko
Habe gleich einen neuen Qualifier für Upload integriert:
struc= (optional) true: alle Objekte werden inkl. ihrer Verzeichnisstruktur im Zielpfad gespeichert (default)
(optional) false: alle Objekte werden ohne die ursprüngliche Verzeichnisstruktur im Zielpfad gespeichert
Wenn du also jetzt angeben würdest:
set SynFile Upload "/opt/fhem/www/snapshots/YiCam1_snapshot_1.jpg" dest=/ShareFHEM struc=false
landet alles direkt im Pfad "/ShareFHEM" ohne Berücksichtigung der Quellstruktur.
Grüße,
Heiko
wow, das ist ja schneller als die Polzei erlaubt ;)
Danke für die Erklärungen und auch für die Erweiterungen, um diese zu bekommen, nehme ich an, den wget ... Befehl nochmal ausführen und danach FHEM neu starten, richtig? Dann will ich mich mal mit dem Hilfe File beschäftigen. Ich schätze es kommt noch die ein oder andere Frage, zumal ich mich momentan sowohl mit diesem Modul als auch mit dem SSChat Modul von dir beschäftige.
Ich will versuchen mit Hilfe dieser beiden Module Bilder meiner Überwachungskamera außerhalb von FHEM zu sichern und mir außerdem neue Bilder zu schicken zu lassen. Mal sehen wie weit ich komme ;)
nochmals Danke für deinen Einsatz und die Module
Thomas
ZitatDanke für die Erklärungen und auch für die Erweiterungen, um diese zu bekommen, nehme ich an, den wget ... Befehl nochmal ausführen und danach FHEM neu starten, richtig?
Ja richtig. Solange das Modul noch nicht offiziell eingecheckt ist so verfahren wie im ersten Post beschrieben.
Ich arbeite auch immer weiter am Modul und dem Wiki um alles so gut es geht zu erläutern wenn es die Zeit erlaubt.
Immer gerne fragen wenn etwas unklar ist.
Grüße,
Heiko
Danke,
dann habe ich auch gleich die erste Frage: Inwieweit kann ich beim Upload/Download mit Wildcards arbeiten. Hintergrund ist der das ich ein IPCAM Device definiert habe, das mir bei Auslösung über ein notify, 5 Bilder YiCam1_snapshot_1.jpg bis YiCam1_snapshot_5.jpg speichert Diese Bilder möchte ich nachdem sie gespeichert wurden auf meine Diskstation übertragen. Ein Versuch das ganze so zu machen
set SynFile Upload "./www/snapshots/YiCam1_snapshot_.*.jpg" dest=/ShareFHEM
bringt im Log die Fehlermeldung
2020.10.29 21:37:40 3: SynFile - The object "./www/snapshots/YiCam1_snapshot_.*.jpg" doesn't exist, ignore it for upload
Schön wäre auch wenn man bei der Angabe des Zieles (dest) das aktuelle Datum mit Uhrzeit als Ordnername mit übergeben könnte, oder geht sowas schon und ich hab es wieder überlesen.
danke im Voraus und ich hoffe ich fordere nicht zuviel, aber du hattest ja gesagt
ZitatIch arbeite auch immer weiter am Modul und dem Wiki um alles so gut es geht zu erläutern wenn es die Zeit erlaubt.
Immer gerne fragen wenn etwas unklar ist.
;)
Gruß und noch einen schönen Abend
Thomas
ZitatInwieweit kann ich beim Upload/Download mit Wildcards arbeiten
Momentan noch nicht. Für den Upload kann ich es wahrscheinlich implementieren.
ZitatSchön wäre auch wenn man bei der Angabe des Zieles (dest) das aktuelle Datum mit Uhrzeit als Ordnername mit übergeben könnte
Denke auch das will ich versuchen mit vorzusehen.
Zitat...aber du hattest ja gesagt...
Und auch so gemeint :D
LG
Habe es umgesetzt, dass Datum/Uhrzeit als Bestandteil der Upload-Destination verwendet werden kann.
Man verwendet %-POSIX Wildcards, zB:
%d : Tag des Monats (01..31)
%m : Monat (01..12)
%Y : Jahr (1970...)
%w : Wochentag (0..6); beginnend mit Sonntag (0)
%j : Tag des Jahres (001..366)
%U : Wochennummer des Jahres, wobei Wochenbeginn = Sonntag (00..53)
%W : Wochennummer des Jahres, wobei Wochenbeginn = Montag (00..53)
Alle Möglichkeiten-> https://metacpan.org/pod/POSIX::strftime::GNU
Als Beispiel:
"./log" dest=/home/upload/%Y_%m_%d_%H_%M_%S mode=full struc=false
Update liegt im contrib.
Einfach nur Wahnsinn, was für eine Geschwindigkeit. Danke, Danke. Heute ist der Rechner aber aus bei mir. Morgen werde ich dann mal meine Pläne umschmeißen und testen :)
Gute Nacht
Thomas
ZitatEinfach nur Wahnsinn, was für eine Geschwindigkeit.
Das war Zufall, weil ich so etwas in einem anderen Modul auch eingebaut hatte und wußte wie ich es schnell integrieren kann. ;)
Mit den Wildcards muß ich mich erstmal befassen, habe ich so auch noch nicht umgesetzt.
Jetzt habe ich auch die Wildcard-Unterstützung eingebaut.
Damit kann man nun den Upload z.B. so gestalten:
"./log/*.txt,./log/archive/fhem-2019-12*.*" dest=/home/upload mode=full
Es würden nur Textfiles aus dem Unterverzeichnis ./log und Files aus ./log/archive hochgeladen deren Namen auf fhem-2019-12*.* matched.
ACHTUNG: gilt nur für Filenamen, nicht Verzeichnisse mit Wildcards angeben
Liegt wieder im contrib, download wie gehabt.
ZitatEinfach nur Wahnsinn, was für eine Geschwindigkeit. Danke, Danke. Heute ist der Rechner aber aus bei mir. Morgen werde ich dann mal meine Pläne umschmeißen und testen :)
Gute Nacht
Thomas
Manchmal klappt es doch nicht so,wie man es gerne hätte. Bin leider erst jetzt dazu gekommen die ganzen neuen Features zu probieren, ich bin begeistert was jetzt alles geht. Jetzt noch die Integration in CoolTux neues Backup Tool und als Diskstation Nutzer hat man (wiedermal) einen echten Mehrwert durch die Integration in FHEM. Top und vielen Dank
Gruß Thomas
PS: jetzt werde ich mich mal intensiver mit dem SSChat Modul beschäftigen
Tipp: In der gerade hochgeladenen Version wird auch ein Event eines hochgeladenen Files erstellt, z.B.
2020-10-31 15:07:44.081 SSFile SynFile Upload: local File "./log/archive/fhem-2019-09-34.log" to remote File "/home/upload/log/archive/fhem-2019-09-34.log"
Damit kann man sich mit einem eigenen Filelog / DbLog eine Backuphistorie erstellen und nachschauen wann was wohin auf die Synology geladen wurde.
Es ist noch eine Löschfunktion für Objekte auf der Synology DS hinzugekommen.
deleteRemoteObject "<File>[,<File>,...]" | "<Ordner>[,<Ordner>,...]" [<args>]
Löscht die angegebenen Files oder Verzeichnisse auf der Synology Diskstation. Mehrere Objekte sind durch Komma zu trennen. Verzeichnissse sind ohne "/" am Ende einzugeben. Alle angegebenen Objekte sind insgesamt in " einzuschließen.
Optional kann als <args> angegeben werden:
recursive= true: Dateien innerhalb eines Ordners rekursiv löschen. (default)
false: Nur erste Ebene Datei/Ordner löschen. Wenn ein zu löschender Ordner eine Datei enthält, wird ein Fehler auftreten, weil der Ordner nicht direkt gelöscht werden kann.
Beispiele:
set <Name> deleteRemoteObject "/backup/Carport-20200625-1147065130.jpg"
set <Name> deleteRemoteObject "/backup/log,/backup/cookie - old.txt"
set <Name> deleteRemoteObject "/backup/log/archive" recursive=false
Liegt wieder in meinem contrib. Download wie beschrieben im ersten Post.
Achtung !! fHEM muss aktuell von heute 03.11. sein weil auch die Libs aktualisiert wurden.
Hallo zusammen,
ich habe ein kleines Bugfix des Moduls in mein contrib geladen.
An dem Beitrag im Wiki (https://wiki.fhem.de/wiki/SSFile_-_Integration_der_Synology_File_Station) habe ich ebenfalls weitergearbeitet.
VG
Hallo zusammen,
In habe einen Wiki-Beitrag (https://wiki.fhem.de/wiki/SSFile_-_Integration_der_Synology_File_Station#Backup_des_FHEM_Filesystems_.C3.BCber_Synology_Kalendereinplanung) erstellt, wie mit dem Synology Modulen SSCal und SSFile eine übersichtliche und Kalender gestützte Sicherungslösung für die Verzeichnisse des FHEM-Servers aufgebaut werden kann.
Schöne Feiertage,
Heiko
Hallo,
bei mir funktioniert der Zugriff aus die DS nicht. Komme bis zu apiInfo und es werden mir die verschiedenen Versionen im Pop-Up angezeigt. Wenn ich aber ein File upload oder nur die get fileStationInfo durchführe kommt folgende Fehlermeldung.
2021.01.06 17:40:22 3: SynFile - no session ID found - get new one
2021.01.06 17:40:23 3: SynFile - Login of User abc unsuccessful. Code: 400 - No such account or incorrect password - try again
2021.01.06 17:40:24 3: SynFile - Login of User abc unsuccessful. Code: 400 - No such account or incorrect password - try again
2021.01.06 17:40:24 3: SynFile - Login of User abc unsuccessful. Code: 400 - No such account or incorrect password - try again
2021.01.06 17:40:24 2: SynFile - ERROR - Login or privilege of user abc unsuccessful
User ist auf der DS angelegt und für das entsprechende Verzeichnis sowie File Station berechtigt.
list:
Internals:
CREDENTIALS Set
DEF 192.168.178.86 5001 https
FUUID 5ff5afd4-f33f-6389-9e52-56eb8b18c151d74c
MODE Manual
MODEL unspecified
NAME SynFile
NR 172
OPIDX 4
OPMODE backgroundTask
PROTOCOL https
RESEND next planned SendQueue start: immediately by next entry
SERVERADDR 192.168.178.86
SERVERPORT 5001
STATE <b>letzter Update:</b> lastUpdate\ <br>\ 1:login Error
TYPE SSFile
VERSION 0.7.6
HELPER:
CREDENTIALS xxxxxxxxxxxxxx
LOGINRETRIES 3
PACKAGE FHEM::SSFile
VERSION 0.7.6
VERSION_API 1.2.0
VERSION_ErrCodes 1.3.4
VERSION_SMUtils 1.20.7
OLDREADINGS:
READINGS:
2021-01-06 17:40:24 Error No such account or incorrect password
2021-01-06 17:40:24 Errorcode 400
2021-01-06 17:40:22 QueueLength 1
2021-01-06 17:00:05 nextUpdate undefined
2021-01-06 17:40:24 state login Error
Attributes:
alias Backup auf Synology (API)
devStateIcon .*running:control_arrow_rightward .*done|.*Upload\squeue\sfill\sfinished:control_on_off:startQueue .*Error:control_arrow_rightward@red .*Initialized:control_standby@orange
excludeFromUpload ./FHEM/FhemUtils/cacheSSCam.*,\ ./www/SVGcache.*
group Backup
icon system_backup
interval 0
noAsyncFillQueue 0
room SSFile
showPassInLog 0
stateFormat <b>letzter Update:</b> lastUpdate\ <br>\ 1:state
Über eine Tip würde ich mich freuen.
Danke
Grüße
Hallo,
hast du eventuell Sonderzeichen wie @ $ % & in deinem Passwort ?
Ansonsten verbose 5 einschalten und z.B. ein get <> fileStationInfo ausführen. Die Ausgabe bitte posten.
Wenn du das Attr showPassInLog = 1 setzt, siehst du auch das verwendete Passwort im Log. Vllt. siehst du dort schon etwas. Diese Ausgabe natürlich nicht posten. ;)
Grüße,
Heiko
Danke, aber verbose 5 nur im SSFile Device einschalten. Das ist einfach übersichlicher.
Verbose 5 auf SSFlie - nach fileStationInfo Request:
2021.01.06 20:24:29 4: SynFile - ####################################################
2021.01.06 20:24:29 4: SynFile - ### start Synology File operation fileStationInfo
2021.01.06 20:24:29 4: SynFile - ####################################################
2021.01.06 20:24:29 4: SynFile - API hash values already set - ignore get apisites
2021.01.06 20:24:29 3: SynFile - no session ID found - get new one
2021.01.06 20:24:29 4: SynFile - --- Begin Function login ---
2021.01.06 20:24:29 4: SynFile - Credentials read from RAM: fhem ********
2021.01.06 20:24:29 4: SynFile - HTTP-Call login will be done with httptimeout-Value: 60 s
2021.01.06 20:24:29 4: SynFile - Call-Out now: https://192.168.178.87:5001/webapi/auth.cgi?api=SYNO.API.Auth&version=6&method=Login&account=fhem&passwd=*****&format="sid"
2021.01.06 20:24:30 5: SynFile - JSON decoded: $VAR1 = {
'error' => {
'code' => 400
},
'success' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' )
};
2021.01.06 20:24:30 3: SynFile - Login of User fhem unsuccessful. Code: 400 - No such account or incorrect password - try again
2021.01.06 20:24:30 4: SynFile - --- Begin Function login ---
2021.01.06 20:24:30 4: SynFile - Credentials read from RAM: fhem ********
2021.01.06 20:24:30 4: SynFile - HTTP-Call login will be done with httptimeout-Value: 60 s
2021.01.06 20:24:30 4: SynFile - Call-Out now: https://192.168.178.87:5001/webapi/auth.cgi?api=SYNO.API.Auth&version=6&method=Login&account=fhem&passwd=*****&format="sid"
2021.01.06 20:24:30 5: SynFile - JSON decoded: $VAR1 = {
'success' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
'error' => {
'code' => 400
}
};
2021.01.06 20:24:30 3: SynFile - Login of User fhem unsuccessful. Code: 400 - No such account or incorrect password - try again
2021.01.06 20:24:30 4: SynFile - --- Begin Function login ---
2021.01.06 20:24:30 4: SynFile - Credentials read from RAM: fhem ********
2021.01.06 20:24:30 4: SynFile - HTTP-Call login will be done with httptimeout-Value: 60 s
2021.01.06 20:24:30 4: SynFile - Call-Out now: https://192.168.178.87:5001/webapi/auth.cgi?api=SYNO.API.Auth&version=6&method=Login&account=fhem&passwd=*****&format="sid"
2021.01.06 20:24:31 5: SynFile - JSON decoded: $VAR1 = {
'success' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
'error' => {
'code' => 400
}
};
2021.01.06 20:24:31 3: SynFile - Login of User fhem unsuccessful. Code: 400 - No such account or incorrect password - try again
2021.01.06 20:24:31 4: SynFile - --- Begin Function login ---
2021.01.06 20:24:31 4: SynFile - Credentials read from RAM: fhem ********
2021.01.06 20:24:31 2: SynFile - ERROR - Login or privilege of user fhem unsuccessful
Ja, sieht soweit "gut" aus, d.h. normal. Die Synology akzeptiert die Credentials nicht.
Setze dir das Attr showPassInLog = 1 und checke den Wert für passwd in dem Call
Zitat
Call-Out now: https://192.168.178.87:5001/webapi/auth.cgi?api=SYNO.API.Auth&version=6&method=Login&account=fhem&passwd=*****&format="sid"
Ich gehe davon aus, dass "fhem" ein gültiger Syno-User ist mit entsprechenden Rechten für die Applikation und Verzeichnisse.
fhem ist ein User mit den entsprechenden Berechtigungen auf File Station sowie ein Verzeichnis.
Wenn ich im Browser den Call eingebe bekomme ich folgende Rückmeldung {"error":{"code":400},"success":false}
Auf der DS sehe ich im Protokoll das der Zugriff erfolreich war.
Wenn ich nun eine erneute Abfrage fileStationInfo via Fhem mache, bekomme ich folgendes.
2021.01.06 20:56:25 4: SynFile - ####################################################
2021.01.06 20:56:25 4: SynFile - ### start Synology File operation fileStationInfo
2021.01.06 20:56:25 4: SynFile - ####################################################
2021.01.06 20:56:25 4: SynFile - API hash values already set - ignore get apisites
2021.01.06 20:56:25 3: SynFile - no session ID found - get new one
2021.01.06 20:56:25 4: SynFile - --- Begin Function login ---
2021.01.06 20:56:25 4: SynFile - Credentials read from RAM: fhem *****
2021.01.06 20:56:25 4: SynFile - HTTP-Call login will be done with httptimeout-Value: 60 s
2021.01.06 20:56:25 4: SynFile - Call-Out now: https://192.168.178.87:5001/webapi/auth.cgi?api=SYNO.API.Auth&version=6&method=Login&account=fhem&passwd=*****&format="sid"
2021.01.06 20:56:26 5: SynFile - JSON decoded: $VAR1 = {
'error' => {
'code' => 400
},
'success' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' )
};
DS meldet im Protokoll wieder Zugriff erfolgreich ... :o
ZitatDS meldet im Protokoll wieder Zugriff erfolgreich ...
Nein, Browser und Modul melden das gleiche:
{"error":{"code":400},"success":false}
ist identisch zu
'error' => {
'code' => 400
},
'success' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' )
};
success ist ein boolean Wert und dem Fall false.
Ein erfolgreicher login sieht so aus:
2021.01.06 21:07:40.814 5: SynFile - JSON decoded: {
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
'data' => {
'sid' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'is_portal_port' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' )
}
}
Ach sorry, du meintest ja das DS Protokoll :-[
Hallo,
Seit dem neuen Jahr(ist aber wohl nicht der Grund) funktioniert mein SSfile device leider nicht mehr.
es kommt folgender Fehler:
malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/50_SSFile.pm line 1276.
ich musste dann die definition von Hand aus der config nehmen, weil mein FHEM immer abstürzte.
Wenn ich es jetzt neu anlegen will, kommt der Fehler.
Ich hatte es laut Wiki angelegt, um mein backup damit zu machen.
Auf meiner Diskstation hat sich nichts geändert.
Woran liegts?
Gruß
Carlos
Moin Carlos,
in deinem FHEM gibt es ein File /FHEM/FhemUtils/Uploads_SSFile_<Name des Devices>.
Der Inhalt ist offensichtlich nicht so wie er sein sollte. Lösche es mal bitte komplett und lege dein Device dann an.
Aber ich muß die Stelle ändern und einen solchen Fehler abfangen. FHEM darf deswegen nicht abstürzen.
Ich schaue mir das heute Abend genauer an.
Edit: Benne das File besser irgendwie um. Dann können wir später mal reinschauen was da eigentlich drin steht oder du hängst es hier einfach mal an.
Grüße,
Heiko
Danke das hat geholfen.
Das file war leer, 0B groß.
Löschen hat geholfen.
Mir ist die Platte voll gelaufen, das hat wohl dazu geführt, dass ein leere file angelegt wurde.
Danke und Gruß
Carlos
Hallo Carlos, @all,
in meinem contrib habe ich eine neue Version bereitgestellt.
Es wird FHEM Crash vermieden falls der Inhalt des Upload Cachefiles korrupt sein sollte.
Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben und danach FHEM restarten:
"wget -qO ./FHEM/50_SSFile.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/50_SSFile.pm"
LG,
Heiko
Hallo Heiko,
Super Modul Danke für deine Arbeit.
Ich habe eine Frage: entweder verstehe ich es falsch oder ich hab etwas falsch eingerichtet.....
Bin nach dem WIKi vorgegangen und es funkt alles so weit.
Nun zu meiner Frage: wird durch den Kalendereintrag und durch den Aufruf von SSFile autom. ein Backup von FHEM erstellt? - ich glaube nein (oder ich hab was falsch erstellt?)
Wenn ich vorher manuell ein Backup anstosse dann wird dieses mitkopiert (daraus schliesse ich - es werden nur die Files auf die Synology geschrieben)
Das Backup.tar hat allerdings im fhem backup Ordner eine Größe von 38,3 MB und am Synology die Sicherung nur 36,6 MB. Die Uhrzeit des Files ist ident?
Danke für deine Hilfe
LG
Helmut
Hallo Helmut,
erstmal freut es mich dass es bei dir problemlos läuft. :)
Zitat
Nun zu meiner Frage: wird durch den Kalendereintrag und durch den Aufruf von SSFile autom. ein Backup von FHEM erstellt? - ich glaube nein (oder ich hab was falsch erstellt?)
Ich glaube die Frage ist etwa falsch formuliert. Es sollte vermutlich heißen ob ein File Backup.tar erstellt wird.
Dem ist nicht so. Die Files aus ../FHEM/ werden so wie sie sind, d.h. nicht komprimiert und zusammengepackt auf die Synology in das Zielverzeichnis geschrieben.
Was wann wohin geschrieben wurde siehst du mit
set <> listUploadsDone
Auf dem Zielverzeichnis der Syno siehst du alle gesicherten Verzeichnisse und Files im Klarformat.
Cooltux arbeitet noch daran sein backupToStorage mit SSFile zu verheiraten um damit das Backup.tar zu erstellen und dann nur dieses mit SSFile-Schnittstelle zur Syno zu übertragen.
Warum Backup.tar größer ist als die 1:1 Sicherung kann ich nicht sagen. Vllt. wird in Backup.tar mehr reingepackt als der FHEM Ordner.
Im SSFile hast du nichts mit dem Attr excludeFromUpload ausgeschlossen ?
Hinweis: Solltest du Files mit "@" im Namen haben, werden diese per default nicht kopiert. (Habe gerade gesehen, dass ich ein paar Attribute in der commandref vergessen habe zu beschreiben)
LG,
Heiko
Hallo Heiko,
danke. Dann funktioniert ja alles bestens. Dann lasse ich mein AT fürs lokale BU und kopiere dann mit deinem Modul aufs NAS.
Habe Full und inkr. Backup getestet -> funktioniert sehr gut.
Jetzt wollte ich alte Backups am RPi damit löschen:
defmod di_DelBU DOIF ([11:30:00]) ("find /opt/fhem/backup -type f -mtime +1 -delete") DOELSE
attr di_DelBU do always
Aber das hat leider nicht funktioniert - muss ich weitersuchen.....
Gruß
Helmut
Hallo Heiko
ich habe jetzt alles vom Testsystem auf eines meiner beiden Prod Systeme übertragen.
Da das eine Produktionssystem in der 80m entfernten Garage steht und das NAS im Arbeitszimmer kommt es anscheinend zu Timeouts
Kann ich das einstellen?
Hier ein Log vom SSFile mit Verbose 5
<FILE>
--wNWT9spu8GvTg4TJo1iN--
2021.03.21 12:19:33 2: SynFile - ERROR message: write to http://10.0.0.101:5000 timed out
2021.03.21 12:19:33 2: SynFile - ERROR - "upload" SendQueue index "244" not executed. Restart SendQueue in 5 s (retryCount 1).
2021.03.21 12:19:38 4: SynFile - ####################################################
2021.03.21 12:19:38 4: SynFile - ### start Synology File operation upload
2021.03.21 12:19:38 4: SynFile - ####################################################
2021.03.21 12:19:38 4: SynFile - API hash values already set - ignore get apisites
2021.03.21 12:19:38 4: SynFile - start SendQueue entry index "244" (upload) for operation.
2021.03.21 12:19:38 5: SynFile - HTTP-Call will be done with timeout: 20 s
2021.03.21 12:19:38 4: SynFile - Call-Out: http://10.0.0.101:5000/webapi/entry.cgi?api=SYNO.FileStation.Upload&version=2&method=upload&_sid=qTTJ-qbUMNCC9PWlv5RMvTSJpiTnrrOEbE6t1ntPHBQOBzMEs5aTkLYHrfJfuZERghhNuIIaap4EANzU2gX6aI
2021.03.21 12:19:38 5: SynFile - POST data (string <FILE> will be replaced with content of ./backup/FHEM-20210321_104046.tar.gz):
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="path"
/FHEM-PoolProd/2021_03_21_Full/backup
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="create_parents"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="overwrite"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="mtime"
1616319702000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="crtime"
1616319702000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="file"; filename="FHEM-20210321_104046.tar.gz"
Content-Type: application/octet-stream
<FILE>
--wNWT9spu8GvTg4TJo1iN--
2021.03.21 12:19:59 2: SynFile - ERROR message: write to http://10.0.0.101:5000 timed out
2021.03.21 12:19:59 2: SynFile - ERROR - "upload" SendQueue index "244" not executed. Restart SendQueue in 20 s (retryCount 2).
2021.03.21 12:20:20 4: SynFile - ####################################################
2021.03.21 12:20:20 4: SynFile - ### start Synology File operation upload
2021.03.21 12:20:20 4: SynFile - ####################################################
2021.03.21 12:20:20 4: SynFile - API hash values already set - ignore get apisites
2021.03.21 12:20:20 4: SynFile - start SendQueue entry index "244" (upload) for operation.
2021.03.21 12:20:20 5: SynFile - HTTP-Call will be done with timeout: 20 s
2021.03.21 12:20:20 4: SynFile - Call-Out: http://10.0.0.101:5000/webapi/entry.cgi?api=SYNO.FileStation.Upload&version=2&method=upload&_sid=qTTJ-qbUMNCC9PWlv5RMvTSJpiTnrrOEbE6t1ntPHBQOBzMEs5aTkLYHrfJfuZERghhNuIIaap4EANzU2gX6aI
2021.03.21 12:20:20 5: SynFile - POST data (string <FILE> will be replaced with content of ./backup/FHEM-20210321_104046.tar.gz):
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="path"
/FHEM-PoolProd/2021_03_21_Full/backup
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="create_parents"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="overwrite"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="mtime"
1616319702000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="crtime"
1616319702000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="file"; filename="FHEM-20210321_104046.tar.gz"
Content-Type: application/octet-stream
<FILE>
--wNWT9spu8GvTg4TJo1iN--
2021.03.21 12:20:43 2: SynFile - ERROR message: write to http://10.0.0.101:5000 timed out
2021.03.21 12:20:43 2: SynFile - ERROR - "upload" SendQueue index "244" not executed. Restart SendQueue in 60 s (retryCount 3).
2021.03.21 12:21:43 4: SynFile - ####################################################
2021.03.21 12:21:43 4: SynFile - ### start Synology File operation upload
2021.03.21 12:21:43 4: SynFile - ####################################################
2021.03.21 12:21:43 4: SynFile - API hash values already set - ignore get apisites
2021.03.21 12:21:43 4: SynFile - start SendQueue entry index "244" (upload) for operation.
2021.03.21 12:21:43 5: SynFile - HTTP-Call will be done with timeout: 20 s
2021.03.21 12:21:43 4: SynFile - Call-Out: http://10.0.0.101:5000/webapi/entry.cgi?api=SYNO.FileStation.Upload&version=2&method=upload&_sid=qTTJ-qbUMNCC9PWlv5RMvTSJpiTnrrOEbE6t1ntPHBQOBzMEs5aTkLYHrfJfuZERghhNuIIaap4EANzU2gX6aI
2021.03.21 12:21:43 5: SynFile - POST data (string <FILE> will be replaced with content of ./backup/FHEM-20210321_104046.tar.gz):
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="path"
/FHEM-PoolProd/2021_03_21_Full/backup
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="create_parents"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="overwrite"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="mtime"
1616319702000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="crtime"
1616319702000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="file"; filename="FHEM-20210321_104046.tar.gz"
Content-Type: application/octet-stream
<FILE>
--wNWT9spu8GvTg4TJo1iN--
2021.03.21 12:22:04 2: SynFile - ERROR message: write to http://10.0.0.101:5000 timed out
2021.03.21 12:22:05 2: SynFile - ERROR - "upload" SendQueue index "244" not executed. Restart SendQueue in 60 s (retryCount 4).
2021.03.21 12:22:39 3: CUL_HM set Abstellraum_Schloss lock noArg
2021.03.21 12:22:48 3: CUL_HM set AbstellraumLicht off noArg
2021.03.21 12:23:05 4: SynFile - ####################################################
2021.03.21 12:23:05 4: SynFile - ### start Synology File operation upload
2021.03.21 12:23:05 4: SynFile - ####################################################
2021.03.21 12:23:05 4: SynFile - API hash values already set - ignore get apisites
2021.03.21 12:23:05 4: SynFile - start SendQueue entry index "244" (upload) for operation.
2021.03.21 12:23:05 5: SynFile - HTTP-Call will be done with timeout: 20 s
2021.03.21 12:23:05 4: SynFile - Call-Out: http://10.0.0.101:5000/webapi/entry.cgi?api=SYNO.FileStation.Upload&version=2&method=upload&_sid=qTTJ-qbUMNCC9PWlv5RMvTSJpiTnrrOEbE6t1ntPHBQOBzMEs5aTkLYHrfJfuZERghhNuIIaap4EANzU2gX6aI
2021.03.21 12:23:05 5: SynFile - POST data (string <FILE> will be replaced with content of ./backup/FHEM-20210321_104046.tar.gz):
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="path"
/FHEM-PoolProd/2021_03_21_Full/backup
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="create_parents"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="overwrite"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="mtime"
1616319702000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="crtime"
1616319702000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="file"; filename="FHEM-20210321_104046.tar.gz"
Content-Type: application/octet-stream
<FILE>
--wNWT9spu8GvTg4TJo1iN--
2021.03.21 12:23:27 2: SynFile - ERROR message: write to http://10.0.0.101:5000 timed out
2021.03.21 12:23:27 2: SynFile - ERROR - "upload" SendQueue index "244" not executed. Restart SendQueue in 1800 s (retryCount 5).
2021.03.21 12:53:27 4: SynFile - ####################################################
2021.03.21 12:53:27 4: SynFile - ### start Synology File operation upload
2021.03.21 12:53:27 4: SynFile - ####################################################
2021.03.21 12:53:27 4: SynFile - API hash values already set - ignore get apisites
2021.03.21 12:53:27 4: SynFile - start SendQueue entry index "244" (upload) for operation.
2021.03.21 12:53:27 5: SynFile - HTTP-Call will be done with timeout: 20 s
2021.03.21 12:53:27 4: SynFile - Call-Out: http://10.0.0.101:5000/webapi/entry.cgi?api=SYNO.FileStation.Upload&version=2&method=upload&_sid=qTTJ-qbUMNCC9PWlv5RMvTSJpiTnrrOEbE6t1ntPHBQOBzMEs5aTkLYHrfJfuZERghhNuIIaap4EANzU2gX6aI
2021.03.21 12:53:27 5: SynFile - POST data (string <FILE> will be replaced with content of ./backup/FHEM-20210321_104046.tar.gz):
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="path"
/FHEM-PoolProd/2021_03_21_Full/backup
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="create_parents"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="overwrite"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="mtime"
1616319702000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="crtime"
1616319702000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="file"; filename="FHEM-20210321_104046.tar.gz"
Content-Type: application/octet-stream
<FILE>
--wNWT9spu8GvTg4TJo1iN--
2021.03.21 12:53:48 2: SynFile - ERROR message: write to http://10.0.0.101:5000 timed out
2021.03.21 12:53:48 2: SynFile - ERROR - "upload" SendQueue index "244" not executed. Restart SendQueue in 1800 s (retryCount 6).
jump to the top
Danke für deine Hilfe
helmut
Moin Helmut,
ja, Attr timeout probieren.
LG
Hallo Heiko,
Danke - habe jetzt das auf meinem Haus und Pool Rai eingerichtet und funktioniert perfekt.
Danke. Jetzt heißt es auf die Erweiterung von CoolTux warten ......
Wenn ich was testen kann bitte melden
LG
Helmut
Guten Abend
Habe eine Frage: ich habe einen alten Kalender am NAS gelöscht - NAS neugestartet und auch FHEM neugestartet
ABER in der Kalenderauswahl bei usedCalendars erscheint noch immer der alte und beim Neustart von FHEM wird auch dieser verwendet
Wo hat sic h der eingefressen - Wo kann ich den in FHEM löschen
Danke
Helmut
Hallo Helmut.
ein
get <> getCalendars
ruft die Kalender auf der Syno ab (und zeigt sie auch an).
Danach mit dem Attr usedCalendars den neuen/richtigen Kalender auswählen sollte das tun was du möchtest.
Edit: Falsches Forum für SSCal ;)
LG,
Heiko
Hallo heiko,
Danke und sorry
Gruß
Helmut
Hey Heiko,
habe dein Modul übers Wochenende installiert und auch das von dir beschriebene automatische Backup mit dem Kalender eingerichtet.
Heute Nacht ist mir FHEM dann mehrfach neu gestartet.
Als ich dann heute morgen versucht habe den Fehler zu reproduzieren wurde das erste Mal leider der Upload immer wieder wegen TimeOut unterbrochen (wobei ich hier eigentlich keine Netzwerkprobleme habe, die Diskstation ist am selben Switch wie mein FHEM-System).
Nachdem ich das Device neu erstellt habe und vorsichtshalber noch einen Timeout von 60s eingerichtet habe ist der Fehler wieder erschienen dass FHEM sich bei mir neu startet wenn ich den Befehl "set SynFile Upload "./" dest=/FHEM-Prod/%Y_%m_%d_Full" gebe
Hier mal das Log auf Verbose 5:
2021.05.24 11:28:36 4: SynFile - Object "./contrib/DS_Starter/Icons/weather_night_snow_rain_heavy.svg" uploaded
2021.05.24 11:28:36 4: SynFile - Opmode "upload" finished successfully, Sendqueue index "51" deleted.
2021.05.24 11:28:36 4: SynFile - Start next SendQueue entry...
2021.05.24 11:28:36 4: SynFile - ####################################################
2021.05.24 11:28:36 4: SynFile - ### start Synology File operation upload
2021.05.24 11:28:36 4: SynFile - ####################################################
2021.05.24 11:28:36 4: SynFile - API hash values already set - ignore get apisites
2021.05.24 11:28:36 4: SynFile - start SendQueue entry index "52" (upload) for operation.
2021.05.24 11:28:36 5: SynFile - HTTP-Call will be done with timeout: 60 s
2021.05.24 11:28:36 4: SynFile - Call-Out: http://192.168.178.10:5000/webapi/entry.cgi?api=SYNO.FileStation.Upload&version=2&method=upload&_sid=<secret>
2021.05.24 11:28:36 5: SynFile - POST data (string <FILE> will be replaced with content of ./sounds/Video�berwachung.mp3):
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="path"
/FHEM-Prod/2021_05_24_Full/sounds
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="create_parents"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="overwrite"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="mtime"
1483960624000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="crtime"
1599050179000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="file"; filename="Video�berwachung.mp3"
Content-Type: application/octet-stream
<FILE>
--wNWT9spu8GvTg4TJo1iN--
malformed UTF-8 character in JSON string, at character offset 37 (before "\x{fffd}chung.mp3","...") at ./FHEM/50_SSFile.pm line 1660.
Liegt das evtl. am Umlaut in der Datei?
Gruß Cobra
Hi Cobra,
ja der Absturz hängt mit Sicherheit mit dem Fehler
Zitat
malformed UTF-8 character in JSON string, at character offset 37 (before "\x{fffd}chung.mp3","...") at ./FHEM/50_SSFile.pm line 1660.
zusammen. Allerdings übertrage ich auch Files mit Umlauten. Ganz so einfach scheint es nicht zu sein.
Werde ich mir heute Abend mal anschauen, jetzt zieht erstmal das herrliche Wetter.
Und danke !!!! :D Hat mich sehr gefreut und trinke auch ein Pfingstbier auf dein Wohl !
LG,
Heiko
Lass es dir schmecken und genieß das Wetter ;-)
Hallo Cobra,
habe eine neue Version ins contrib geladen.
Ich konnte den Fehler bei mir nicht nachstellen, hoffe aber, dass ich den Absturz jetzt verhindern konnte.
Hier mal ein Logauszug wenn ich Dateien mit Umlauten übertrage:
2021.05.24 19:11:01.331 4: SynFile - ####################################################
2021.05.24 19:11:01.332 4: SynFile - ### start Synology File operation upload
2021.05.24 19:11:01.333 4: SynFile - ####################################################
2021.05.24 19:11:01.345 4: SynFile - API hash values already set - ignore get apisites
2021.05.24 19:11:01.346 4: SynFile - start SendQueue entry index "30" (upload) for operation.
2021.05.24 19:11:01.347 5: SynFile - HTTP-Call will be done with timeout: 20 s
2021.05.24 19:11:01.347 4: SynFile - Call-Out: http://192.168.2.10:5000/webapi/entry.cgi?api=SYNO.FileStation.Upload&version=2&method=upload&_sid=GB7Sf-Z7pF5NQRVNpOpb2wiHlGLDz3PojPQB8acRIGsTEjYNFMorxBbYt1vAWMccFNaeJ_gsAyJ0FtVTGhd3vQ
2021.05.24 19:11:01.348 5: SynFile - POST data (string <FILE> will be replaced with content of ./log/2teAlarmübersicht.txt):
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="path"
/FHEM-Test/log
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="create_parents"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="overwrite"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="mtime"
1621871084000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="crtime"
1621871099000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="file"; filename="2teAlarmübersicht.txt"
Content-Type: application/octet-stream
<FILE>
--wNWT9spu8GvTg4TJo1iN--
2021.05.24 19:11:01.845 5: SynFile - JSON returned: {
'data' => {
'pid' => 11695,
'blSkip' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
'progress' => 1,
'file' => "2teAlarm\x{fc}bersicht.txt"
},
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
}
2021.05.24 19:11:01.847 5: SynFile - Header returned:
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 24 May 2021 17:11:01 GMT
Content-Type: text/plain; charset="UTF-8"
Connection: close
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
2021.05.24 19:11:01.848 4: SynFile - Object "./log/2teAlarmübersicht.txt" uploaded
2021.05.24 19:11:01.938 4: SynFile - Opmode "upload" finished successfully, Sendqueue index "30" deleted.
2021.05.24 19:11:01.951 4: SynFile - Start next SendQueue entry...
2021.05.24 19:11:01.952 4: SynFile - ####################################################
2021.05.24 19:11:01.953 4: SynFile - ### start Synology File operation upload
2021.05.24 19:11:01.953 4: SynFile - ####################################################
2021.05.24 19:11:01.967 4: SynFile - API hash values already set - ignore get apisites
2021.05.24 19:11:01.967 4: SynFile - start SendQueue entry index "31" (upload) for operation.
2021.05.24 19:11:01.968 5: SynFile - HTTP-Call will be done with timeout: 20 s
2021.05.24 19:11:01.968 4: SynFile - Call-Out: http://192.168.2.10:5000/webapi/entry.cgi?api=SYNO.FileStation.Upload&version=2&method=upload&_sid=GB7Sf-Z7pF5NQRVNpOpb2wiHlGLDz3PojPQB8acRIGsTEjYNFMorxBbYt1vAWMccFNaeJ_gsAyJ0FtVTGhd3vQ
2021.05.24 19:11:01.969 5: SynFile - POST data (string <FILE> will be replaced with content of ./log/AlarmÜbersicht.txt):
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="path"
/FHEM-Test/log
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="create_parents"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="overwrite"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="mtime"
1621871063000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="crtime"
1621871074000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="file"; filename="AlarmÜbersicht.txt"
Content-Type: application/octet-stream
<FILE>
--wNWT9spu8GvTg4TJo1iN--
2021.05.24 19:11:03.340 5: SynFile - JSON returned: {
'data' => {
'file' => "Alarm\x{dc}bersicht.txt",
'progress' => 1,
'blSkip' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
'pid' => 11722
},
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
}
2021.05.24 19:11:03.341 5: SynFile - Header returned:
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 24 May 2021 17:11:03 GMT
Content-Type: text/plain; charset="UTF-8"
Connection: close
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
2021.05.24 19:11:03.341 4: SynFile - Object "./log/AlarmÜbersicht.txt" uploaded
2021.05.24 19:11:03.418 4: SynFile - Opmode "upload" finished successfully, Sendqueue index "31" deleted.
Teste mal bitte bei dir.
LG,
Heiko
Hey Heiko,
FHEM startet jetzt zwar nicht mehr neu aber der Upload bleibt trotzdem hängen.
Hier mal das LOG:
2021.05.24 20:31:36 4: SynFile - Start next SendQueue entry...
2021.05.24 20:31:36 4: SynFile - ####################################################
2021.05.24 20:31:36 4: SynFile - ### start Synology File operation upload
2021.05.24 20:31:36 4: SynFile - ####################################################
2021.05.24 20:31:36 4: SynFile - API hash values already set - ignore get apisites
2021.05.24 20:31:36 4: SynFile - start SendQueue entry index "57" (upload) for operation.
2021.05.24 20:31:36 5: SynFile - HTTP-Call will be done with timeout: 60 s
2021.05.24 20:31:36 4: SynFile - Call-Out: http://192.168.178.10:5000/webapi/entry.cgi?api=SYNO.FileStation.Upload&version=2&method=upload&_sid=<secret>
2021.05.24 20:31:36 5: SynFile - POST data (string <FILE> will be replaced with content of ./sounds/Bio M�ll.mp3):
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="path"
/FHEM-Prod/2021_05_24_Full/sounds
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="create_parents"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="overwrite"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="mtime"
1483960622000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="crtime"
1599050179000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="file"; filename="Bio M�ll.mp3"
Content-Type: application/octet-stream
<FILE>
--wNWT9spu8GvTg4TJo1iN--
2021.05.24 20:31:36 5: SynFile - JSON returned: undef
2021.05.24 20:31:36 5: SynFile - Header returned:
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 24 May 2021 18:31:36 GMT
Content-Type: text/plain; charset="UTF-8"
Connection: close
Vary: Accept-Encoding
Set-Cookie: id=-y2GinJKgQ72ISMxbqwDz4f4fSyTcq2_R0ZcJOO0xgMSe_A6pufqnWWjhKRhjUFO5K4f612wbK2mXWih7xP090;expires=Mon, 31-May-2021 18:31:36 GMT;path=/;HttpOnly
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
2021.05.24 20:31:36 1: PERL WARNING: Use of uninitialized value $error in pattern match (m//) at ./FHEM/50_SSFile.pm line 1705.
2021.05.24 20:31:36 1: PERL WARNING: Use of uninitialized value $errorcode in concatenation (.) or string at ./FHEM/50_SSFile.pm line 1711.
2021.05.24 20:31:36 1: PERL WARNING: Use of uninitialized value $error in concatenation (.) or string at ./FHEM/50_SSFile.pm line 1711.
2021.05.24 20:31:36 2: SynFile - ERROR - Operation upload was not successful. Errorcode: -
2021.05.24 20:31:36 2: SynFile - ERROR - "upload" SendQueue index "57" not executed. Restart SendQueue in 5 s (retryCount 1).
2021.05.24 20:31:41 4: SynFile - ####################################################
2021.05.24 20:31:41 4: SynFile - ### start Synology File operation upload
2021.05.24 20:31:41 4: SynFile - ####################################################
2021.05.24 20:31:42 4: SynFile - API hash values already set - ignore get apisites
2021.05.24 20:31:42 4: SynFile - start SendQueue entry index "57" (upload) for operation.
2021.05.24 20:31:42 5: SynFile - HTTP-Call will be done with timeout: 60 s
2021.05.24 20:31:42 4: SynFile - Call-Out: http://192.168.178.10:5000/webapi/entry.cgi?api=SYNO.FileStation.Upload&version=2&method=upload&_sid=<secret>
2021.05.24 20:31:42 5: SynFile - POST data (string <FILE> will be replaced with content of ./sounds/Bio M�ll.mp3):
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="path"
/FHEM-Prod/2021_05_24_Full/sounds
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="create_parents"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="overwrite"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="mtime"
1483960622000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="crtime"
1599050179000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="file"; filename="Bio M�ll.mp3"
Content-Type: application/octet-stream
<FILE>
--wNWT9spu8GvTg4TJo1iN--
2021.05.24 20:31:42 5: SynFile - JSON returned: undef
2021.05.24 20:31:42 5: SynFile - Header returned:
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 24 May 2021 18:31:42 GMT
Content-Type: text/plain; charset="UTF-8"
Connection: close
Vary: Accept-Encoding
Set-Cookie: id=-y2GinJKgQ72ISMxbqwDz4f4fSyTcq2_R0ZcJOO0xgMSe_A6pufqnWWjhKRhjUFO5K4f612wbK2mXWih7xP090;expires=Mon, 31-May-2021 18:31:42 GMT;path=/;HttpOnly
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
2021.05.24 20:31:42 2: SynFile - ERROR - Operation upload was not successful. Errorcode: -
2021.05.24 20:31:42 2: SynFile - ERROR - "upload" SendQueue index "57" not executed. Restart SendQueue in 20 s (retryCount 2).
2021.05.24 20:32:02 4: SynFile - ####################################################
2021.05.24 20:32:02 4: SynFile - ### start Synology File operation upload
2021.05.24 20:32:02 4: SynFile - ####################################################
2021.05.24 20:32:02 4: SynFile - API hash values already set - ignore get apisites
2021.05.24 20:32:02 4: SynFile - start SendQueue entry index "57" (upload) for operation.
2021.05.24 20:32:02 5: SynFile - HTTP-Call will be done with timeout: 60 s
2021.05.24 20:32:02 4: SynFile - Call-Out: http://192.168.178.10:5000/webapi/entry.cgi?api=SYNO.FileStation.Upload&version=2&method=upload&_sid=<secret>
2021.05.24 20:32:02 5: SynFile - POST data (string <FILE> will be replaced with content of ./sounds/Bio M�ll.mp3):
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="path"
/FHEM-Prod/2021_05_24_Full/sounds
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="create_parents"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="overwrite"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="mtime"
1483960622000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="crtime"
1599050179000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="file"; filename="Bio M�ll.mp3"
Content-Type: application/octet-stream
<FILE>
--wNWT9spu8GvTg4TJo1iN--
2021.05.24 20:32:03 5: SynFile - JSON returned: undef
2021.05.24 20:32:03 5: SynFile - Header returned:
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 24 May 2021 18:32:02 GMT
Content-Type: text/plain; charset="UTF-8"
Connection: close
Vary: Accept-Encoding
Set-Cookie: id=-y2GinJKgQ72ISMxbqwDz4f4fSyTcq2_R0ZcJOO0xgMSe_A6pufqnWWjhKRhjUFO5K4f612wbK2mXWih7xP090;expires=Mon, 31-May-2021 18:32:02 GMT;path=/;HttpOnly
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
2021.05.24 20:32:03 2: SynFile - ERROR - Operation upload was not successful. Errorcode: -
2021.05.24 20:32:03 2: SynFile - ERROR - "upload" SendQueue index "57" not executed. Restart SendQueue in 60 s (retryCount 3).
2021.05.24 20:33:04 4: SynFile - ####################################################
2021.05.24 20:33:04 4: SynFile - ### start Synology File operation upload
2021.05.24 20:33:04 4: SynFile - ####################################################
2021.05.24 20:33:04 4: SynFile - API hash values already set - ignore get apisites
2021.05.24 20:33:04 4: SynFile - start SendQueue entry index "57" (upload) for operation.
2021.05.24 20:33:04 5: SynFile - HTTP-Call will be done with timeout: 60 s
2021.05.24 20:33:04 4: SynFile - Call-Out: http://192.168.178.10:5000/webapi/entry.cgi?api=SYNO.FileStation.Upload&version=2&method=upload&_sid=<secret>
2021.05.24 20:33:04 5: SynFile - POST data (string <FILE> will be replaced with content of ./sounds/Bio M�ll.mp3):
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="path"
/FHEM-Prod/2021_05_24_Full/sounds
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="create_parents"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="overwrite"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="mtime"
1483960622000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="crtime"
1599050179000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="file"; filename="Bio M�ll.mp3"
Content-Type: application/octet-stream
<FILE>
--wNWT9spu8GvTg4TJo1iN--
2021.05.24 20:33:05 5: SynFile - JSON returned: undef
2021.05.24 20:33:05 5: SynFile - Header returned:
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 24 May 2021 18:33:05 GMT
Content-Type: text/plain; charset="UTF-8"
Connection: close
Vary: Accept-Encoding
Set-Cookie: id=-y2GinJKgQ72ISMxbqwDz4f4fSyTcq2_R0ZcJOO0xgMSe_A6pufqnWWjhKRhjUFO5K4f612wbK2mXWih7xP090;expires=Mon, 31-May-2021 18:33:04 GMT;path=/;HttpOnly
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
2021.05.24 20:33:05 2: SynFile - ERROR - Operation upload was not successful. Errorcode: -
2021.05.24 20:33:05 2: SynFile - ERROR - "upload" SendQueue index "57" not executed. Restart SendQueue in 60 s (retryCount 4).
2021.05.24 20:34:05 4: SynFile - ####################################################
2021.05.24 20:34:05 4: SynFile - ### start Synology File operation upload
2021.05.24 20:34:05 4: SynFile - ####################################################
2021.05.24 20:34:05 4: SynFile - API hash values already set - ignore get apisites
2021.05.24 20:34:05 4: SynFile - start SendQueue entry index "57" (upload) for operation.
2021.05.24 20:34:05 5: SynFile - HTTP-Call will be done with timeout: 60 s
2021.05.24 20:34:05 4: SynFile - Call-Out: http://192.168.178.10:5000/webapi/entry.cgi?api=SYNO.FileStation.Upload&version=2&method=upload&_sid=<secret>
2021.05.24 20:34:05 5: SynFile - POST data (string <FILE> will be replaced with content of ./sounds/Bio M�ll.mp3):
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="path"
/FHEM-Prod/2021_05_24_Full/sounds
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="create_parents"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="overwrite"
true
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="mtime"
1483960622000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="crtime"
1599050179000
--wNWT9spu8GvTg4TJo1iN
content-disposition: form-data; name="file"; filename="Bio M�ll.mp3"
Content-Type: application/octet-stream
<FILE>
--wNWT9spu8GvTg4TJo1iN--
2021.05.24 20:34:05 5: SynFile - JSON returned: undef
2021.05.24 20:34:05 5: SynFile - Header returned:
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 24 May 2021 18:34:05 GMT
Content-Type: text/plain; charset="UTF-8"
Connection: close
Vary: Accept-Encoding
Set-Cookie: id=-y2GinJKgQ72ISMxbqwDz4f4fSyTcq2_R0ZcJOO0xgMSe_A6pufqnWWjhKRhjUFO5K4f612wbK2mXWih7xP090;expires=Mon, 31-May-2021 18:34:05 GMT;path=/;HttpOnly
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
2021.05.24 20:34:05 2: SynFile - ERROR - Operation upload was not successful. Errorcode: -
2021.05.24 20:34:05 2: SynFile - ERROR - "upload" SendQueue index "57" not executed. Restart SendQueue in 1800 s (retryCount 5).
Gruß Cobra
Das ist schonmal ein Fortschritt.
Hast du mal geschaut ob das File trotzdem ordentlich übertragen wird ?
Irgendwie verstehe ich momentan noch nicht was bei deinem System anders ist als bei meinem.
Die Datei wurde übertragen, allerdings wird danach die Queue nicht mehr weiter verarbeitet in FHEM.
Kann es vielleicht daran liegen dass diese Dateien mit einfachen Anführungszeichen auf dem Raspberry hinterlegt sind?
Die Datei in dem Fall liegt zB so auf dem Raspberry
'Bio M'$'\374''ll.mp3'
Bei den Dateien handelt es sich um ein Soundpaket was ich mir (glaube ich) von EQ3 geladen habe für Speaker-Ansagen.
Die einfachen Anführungszeichen sind es sicherlich nicht, eher die Kodierung. Wenn die Datei einfach "Bio Müll.mp3" heißen würde, wäre vermutlich alles i.O.
Ich habe nochmal eine Testversion ins contrib geladen.
Also ich bin jetzt nicht der Linux Spezi, aber ich glaube dein Raspi benutzt kein utf-8, sondern ISO-8859-1 Zeichenkodierung.
Denn \374 (octal) ist das "ü" in der ISO-8859-1 Kodierung (http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/iso88591_list_de).
Hey Heiko,
perfekt, mit der neuen Version läuft er durch ohne zu murren.
Ist zwar noch nicht ganz fertig mit der Komplett-Sicherung aber die ersten 2000 Dateien sind geschafft ;-)
Vielen Dank für deinen Einsatz.
Ok, dann werde ich ein Attribut einbauen zur Umschaltung.
Denn mit der veränderten Version werden meine Dateien mit Umlaut nicht richtig abgespeichert.
Ich vermute es hängt mit der locale Einstellung im Linux zusammen.
Wenn ich es fertig eingebaut habe stelle ich die Version wieder zur Verfügung.
Schön dass es jetzt bei dir auch läuft :)
Ich habe noch eine Seite gefunden die hilfreich sein könnte -> https://unix.stackexchange.com/questions/303712/how-can-i-enable-utf-8-support-in-the-linux-console
Eventuell könntest du utf-8 bei dir prüfen bzw. einschalten (apt-get install locales, dpkg-reconfigure locales etc.)
Aber das nur nebenbei. Das Attr baue ich trotzdem ein um die Umschaltmöglichkeit zu haben.
LG
Eigentlich bin ich die ganze Zeit davon ausgegangen dass utf-8 bei mir läuft.
Ist zumindest beim mir in den Einstellungen aktiviert:
Das wirft meine Theorie wieder über den Haufen ;)
Du kannst ja mal einfach eine Datei "Übeltäter.txt" in deinem FHEM-Verzeichnis anlegen und diese übertragen. Mal schauen was dann passiert.
Jetzt weiß ich was du damit meinst dass deine Umlaute nicht richtig abgespeichert werden :-D
Vielleicht ist bei mir damals beim Kopieren der Sounddateien auch einfach was schief gelaufen.
Frisch angelegte Übeltäter-Datei sieht im Raspberry gut aus, auf der Syno so:
Ja genau. :)
Da kann man mit einem Attr nichts machen wenn man eventuell richtig kodierte Dateinamen und solche wie deine Sounddateien vorliegen hat.
Ich habe versucht eine automatische Erkennung der Kodierung einzubauen. Kannst nochmal aus dem contrib ziehen und testen.
Perfekt, mit der Version werden sowohl die Soundfiles als auch der "Übeltäter" korrekt übertragen.
Sehr schön :)
Machen wir erstmal Schluß für heute. Morgen teste ich noch etwas weiter ob alles klappt.
Das Modul werde ich demnächst auch mal finalisieren und ins Repo einchecken.
Also gute Nacht und bis morgen.
LG
Danke dir.
Wünsch dir ebenso ne gute Nacht ;-)
Wenn es morgen was zum Testen gibt kann ich allerdings erst ab 19 Uhr :-D
Gn8
Hallo,
also auch bei meinen Tests hat alles Bestens funktioniert. Habe ebenfalls eine solche Datei wie deine mp3 erstellt.
Übertragung und Dateibenennung völlig. ok.
Habe die finalisierte Datei ins contrib geladen.
Grüße,
Heiko
Hallo zusammen,
ich habe es heute im Laufe des Tages geschafft das Modul für das FHEM Repo zu finalisieren.
Es ist eingecheckt und wird ab morgen früh als offizielles FHEM Modul über Update verteilt.
LG,
Heiko
Ich habe ein Problem mit dem Zugriff aus FHEM auf die Synology.
Folglich Post: https://forum.fhem.de/index.php/topic,126445.0.html
Kann jemand helfen?
Guten Tag
ich habe meine Synology erfolgreich mit dem Modul in FHEM integriert und ich kann händisch eine Datei von der Synology auf den FHEM-Server downloaden.
Nun möchte ich diesen Download nun alle 10 Minuten automatisch durchführen lassen (es sind JSON-Dateien mit Sensor-Werten). Kann ich das mit dem Modul oder muss ich das anders programmieren?
Besten Dank
Zitat
Nun möchte ich diesen Download nun alle 10 Minuten automatisch durchführen lassen (es sind JSON-Dateien mit Sensor-Werten). Kann ich das mit dem Modul oder muss ich das anders programmieren?
Du kannst mit einem einfachen at-Device die Befehle in den benötigten Intervallen an das SSFile Device absetzen und regelmäßig Daten übertragen.
LG,
Heiko