Hallo!
Zunächst: ich bin blutiger Anfänger in FHEM und Perl, beiße mich aber schon ganz gut durch.
Hier im Forum hab ich eine Routine gefunden, um Kalendereinträge in Fhem zu importieren, bzw. die Kalenderdatei automatisch zu aktualisieren. Allerdings bekomme ich dabie immer eine Fehlermeldung:
Calendar Ferien: retrieved no or empty data
sub getCalendar(){
my $ret;
my $year=strftime("%Y",localtime);
$ret = system("sudo wget -O feiertage.ics https://www.ferienwiki.de/exports/feiertage/2018/de/rheinland-pfalz");
$ret = system("sudo wget -O ferien.ics http://www.ferienwiki.de/exports/ferien/2018/de/rheinland-pfalz");
};
Gebe ich aber folgenden Befehl direkt bei FHEM in die Konsole ein, dann wird die gewünschte Datei erzeugt/aktualisiert.
{system("sudo wget -O ferien.ics http://www.ferienwiki.de/exports/ferien/2018/de/rheinland-pfalz")}
Wo ist der Unterschied, bzw. wieso funktiniert das im Script nicht?
Wenn ich noch irgendwelche weiteren Infos benötigt, dann bitte einfach danach fragen.
Besten Dank für Eure Hilfe!
Warum willst du es erst als Datei speichern? Das Kalendermodul kann doch direkt mit URLs umgehen, oder übersehe ich etwas?
Zitat von: Amenophis86 am 19 Januar 2018, 18:03:56
Das Kalendermodul kann doch direkt mit URLs umgehen
das Calendar-Modul zu benutzen wäre für einen
Zitat von: Bozan am 19 Januar 2018, 17:49:18
Zunächst: ich bin blutiger Anfänger in FHEM und Perl
blutigen Anfänger vermutlich eine zu primitive Lösung...
Hallo Bozan,
um auf Deine eigentliche Frage einzugehen, ich habe Deinen Code so wie er ist in meine 99_myUtils kopiert und er funktioniert.
Eine Sache fällt mir auf: Du brauchst kein sudo, wozu auch?!
Das Problem ist also nicht der Code sondern die Art wie Du ihn bei Dir eingebunden hast, dazu hast Du leider nicht geschrieben.
Hier noch was zum lesen. -> https://wiki.fhem.de/wiki/99_myUtils_anlegen
Gruß Otto
Hallo Otto,
besten Dank für Deine Antwort. Schön, wenn jemand konstruktiv vorgeht.
Ich werde mir die Doku im wiki noch einmal vornehmen, evtl. finde ich dann die Ursache.
Imemrhin gut zu wissen, dass es am Code nicht liegt.
Sollte ich nicht weiterkommen, schreibe ich noch einmal meine gesamte myUtils.
Schönen Abend noch,
Bozan
Zitat von: Bozan am 19 Januar 2018, 19:20:05
besten Dank für Deine Antwort. Schön, wenn jemand konstruktiv vorgeht.
Mir ist jetzt nicht ganz klar was an meiner Aussage nicht konstruktiv war, wenn ich dich auf eine einfachere Lösung hinweisen möchte. Aber Joa, viele Wege führen nach Rom.
Er meinte Otto damit glaube ich.
Eigentlich steht in der myUtilsTemplate.pm unter Edit Files alles Wesentliche drin.
@Bozan
Nur mal interessehalber - und die Frage ist ernst gemeint:
was willst Du mit der ics-Datei manuell machen, was das Calendar-Modul damit nicht out-of-the-box kann?
Zitat von: CoolTux am 19 Januar 2018, 20:11:54
Er meinte Otto damit glaube ich.
Also meinte er mit nicht konstruktiv auch mich und das wollte ich wissen :)
Mach Dir nix draus.
"Blutige Anfänger" neigen gernem und oft dazu, Rückfragen und Hinweise auf andere (vorhandene) Module als "nicht konstruktiv" zu betrachten.
Dabei übersehen sie allerdings die Tatsache, dass es Hilfewilligen oftmals leichter fällt, eine Lösung vorzuschlagen, wenn man das eigentliche Ziel hinter einer Frage kennt.
Guten Morgen!
So, gestern hatte ich leider nicht mehr genug Zeit ui antworten.
Zunächst: das Problem lag tatsächlich im Aufbau der myUtils. Ich hatte die Zeilen ans Ende kopiert und dabei völlig aus dem Auge verloren, dass die datei mit 1; zu enden hat... Anfängerfehler eben...
Doch das hat mich nun gut weitergebracht, da ich bei der genauen Durchsicht des Codes auf ein paar weitere Denkfehler gestossen war. Nun verstehe ich den kopierten Code deutlich besser und werde dann (wenn wieder etwas mehr zeit ist) bestimmt auch den rest noch hinbekommen.
Schritt für Schritt eben.
Warum ich es nicht über das Calender Modul mache? Ich nutze das Calender Modul, allerdings geht es eben hierbei darum, die Kalenderdatei regelmäßig und vor allem automatisiert zu aktualisieren. Sprich einmal im Jahr ein Download der ics-Datei. Dafür hatte ich eben genau so einen beispielcode gefunden.
Das "sudo" stand dort natürlich nicht drin, das war lediglich einer meiner Versuche, die Fehlermeldung weg zu bekommen, da ich glaubte, dass evtl. die Rechtevergabe das Problem sei... was es aber ja nicht war.
Danke also zunächst, jetzt kann ich weiter "basteln". Es ist ja noch kein Meister vom Himmel gefallen.
Können wir das dann auf "gelöst" setzen (Subject des ersten Posts ändern und [Gelöst] davor schreiben? Oder möchtest du den Thread offen lassen, bis du es endgültig geschafft hast?
Ah, Mist... Nicht schliessen, sondern das Subject des ersten Post ändern... Bitte mal hier (https://forum.fhem.de/index.php/topic,71806.0.html) nachlesen
Sry, musste jetzt nochmal öffnen.
Also A) musst du deinen Code anpassen, wenn er jedes Jahr die Datei holen soll, weil die Jahreszeit in der URL ist. B) macht es in meinen Augen immer noch mehr Sinn das Kalendermodul die Arbeit machen zu lassen und diese kann man zB zu Beginn des Jahres (zB ein at) über defmod die Definition ändern, welche automatisch das aktuelle Jahr einsetzt. So sparst du dir die ganzen Probleme, welche du aktuell hast. Aber wie gesagt, viele Wege führen nach Rom.
Naja den Ansatz hatte er doch my $year=strftime("%Y",localtime);
Nur fand dann $year keinen Einzug in die Download URL :o
Die Einbindung der aktuellen Jahreszahl hatte ich zunächst noch rausgenommen, um mögliche Fehlerquellen schon einmal auszuschließen. Das wird nun eben noch geändert.
Mit dem at habe ich nun auch die Zeitabhängige Ausführung eingestellt. Das funzt nun auch.
Erstaunlich ist aber, dass ich jetzt doch "sudo" einfügen musste, da ich sonst diese Fehlermeldung bekomme:
feiertage.ics: Keine Berechtigung
ferien.ics: Keine Berechtigung
Woran liegt das? Ist an sich kein Problem, dann eben "sudo wget"... aber was ist möglicherweise die Ursache?
Weil Du eventuell beide Dateien initial schon mal dorthin kopiert hast als anderer User? Und fhem darf jetzt nicht schreiben? :D
Was sagt ls -l /opt/fhem/*.ics
Bingo! Das wars. Hatte schon vorab eine leere datei erstellt gehabt.
Danke für den Tipp!
Diese Aussage
Zitat von: Bozan am 20 Januar 2018, 15:05:31
Ist an sich kein Problem, dann eben "sudo wget"... aber was ist möglicherweise die Ursache?
und die Tatsache das fhem einfach für alles sudo kann ist für mich immer "das dü(nn|mm)ste Brett was man bohren kann". :o
Gruß Otto
Joa und da kommen wir mal auf den Anfang zurück, wo empfohlen wird alles über das Kalender Modul zu machen und solche Gefahren und Probleme nicht aufkommen zu lassen. Aber Hey, kann es nur immer wieder sagen "Viele Wege führen nach Rom" (auch steinige und gefährliche) :D
Aber Bozan hat so gelernt wie man eine Sub in der 99_myUtils.pm unterbringt ;D
Zitat von: Bozan am 20 Januar 2018, 10:30:57
Ich nutze das Calender Modul, allerdings geht es eben hierbei darum, die Kalenderdatei regelmäßig und vor allem automatisiert zu aktualisieren. Sprich einmal im Jahr ein Download der ics-Datei.
Den jährlichen Download würde ich nicht in FHEM machen (wie kommt auf so eine Idee?), sondern per cronjob auf Betriebssystemebene. Dann kann ich bei wget oder curl immer den gleichen Namen der Zieldatei angeben und das Calendar-device muss überhaupt nicht angepasst werden, weil die ics Datei immer den gleichen Namen hat.