Hallo zusammen,
ich benutze die Kalenderfunktion für die Schulferien. Gestern hat es noch funktioniert heute nicht mehr:
# Schulferien
define Bayern_Ferien Calendar ical url http://www.schulferien.org/iCal/Ferien/icals/Ferien_Bayern_" . $year . ".ics 21600
attr Bayern_Ferien alias Schulferien
define Bayern_Ferientag dummy
attr Bayern_Ferientag devStateIcon 0:FS20.off 1:FS20.on
define Bayern_Ferien.notify notify Bayern_Ferien { \ fhem "set Bayern_Ferientag " . (ReadingsVal("Bayern_Ferien", "modeStart", "") =~ "schulferien" ? 1: 0) }
Bisher kam im Log:
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x2bbdfb0)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x2b594f0)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x2ba4278)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x22c5dc8)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x2d36bf0)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x2b2f508)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x2c206b8)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x2a68b70)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x2dc7300)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x2c1d3d8)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x2cbfdc8)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x22a28f8)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x2df56b0)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x2e08780)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x2bbdfb0)
2014.06.09 09:20:41 3: Bayern_Ferien.notify return value: SCALAR(0x2d33670)
Nach einem Neustart heute kommt nur noch :
2014.06.11 10:35:22 1: Calendar Bayern_Ferien: Not an ical file at URL
Ich kann mir das Ganze nicht erklären. Wo liegt der Fehler ?
Zitat von: raspklaus am 11 Juni 2014, 11:31:41
# Schulferien
define Bayern_Ferien Calendar ical url http://www.schulferien.org/iCal/Ferien/icals/Ferien_Bayern_" . $year . ".ics 21600
Ich kann mir das Ganze nicht erklären. Wo liegt der Fehler ?
klappt das bei dir? Bei mir klappt das nicht mit $year, ich muss das bei mir per Hand eintragen. Vielleicht klappt das bei dir auch nicht so richtig richtig?!
Selbst wenn es theoretisch funktionieren KÖNNTE, wäre es syntaktisch grottenfalsch.
Im define solltest Du keine Strings-Zusammensetzung verwenden, das bekommt fhem so nicht gebacken. Grundsätzlich kann man sowas schon machen, dann müsste man das aber über eine fhem-Funktion ausführen.
define Bayern_Ferien Calendar ical url http://www.schulferien.org/iCal/Ferien/icals/Ferien_Bayern_2014.ics 21600
funktioniert jedenfalls problemlos.
so hat es aber eine Zeit lang funktioniert.
Ich hatte dies aus einem anderen Post
Vermutlich ein Post von mir. Da hatte ich auch schon auf die Probleme hingewiesen. Aber auch mit ein er Funktion in der myUtils habe ich es nicht hinbekommen (was aber auch eher an mir liegen dürfte):
sub ferien {
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
$Jahr+=1900;
return "http://www.schulferien.org/iCal/Ferien/icals/Ferien_Nordrhein_Westfalen_" . $Jahr . ".ics";
}
define Bayern_Ferien Calendar ical url {ferien} 21600
Zudem müsste man einmal im Jahr die definition "neu laden" mit einem at, von alleine dürfte das nicht passieren. Wahrscheinlich wäre es einfach wenn die URL ein Attribut wäre.... Aber ich kenne mich da auch nicht gut aus.
Bei der Eingabe von
{fhem("http://www.schulferien.org/iCal/Ferien/icals/Ferien_Bayern_" . $year . ".ics")}
kommt zwar eine Fehlermeldung aber die URL wird richtig zusammengesetzt angezeigt
Du musst die Funktion um das define bauen ;)
sub defineFerien($) {
my ($year) = @_;
my $url = "http://www.schulferien.org/iCal/Ferien/icals/Ferien_Bayern_$year.ics";
CommandDefine(undef, "Bayern_Ferien Calendar ical url $url 21600");
return;
}
in fhem selbst würde ich mir ein notify anlegen, das auf global:INITIALIZED reagiert und nach dem vollständigen fhem Start diese Funktion aufruft:
define makeFerien notify global:INITIALIZED {defineFerien($year)}
Zitat von: raspklaus am 11 Juni 2014, 12:15:17
kommt zwar eine Fehlermeldung aber die URL wird richtig zusammengesetzt angezeigt
ja und? Wenn ich {3+5} eingebe, kommt 8 raus. Das ist zwar auch richtig, hilft aber genausowenig.
@betateilchen, dann hab ich heute mal wieder ein Tag nicht umsonst gelebt.... danke.
?
wie sieht dann der gesamte Syntax zur gewünschten Funktion aus ?
Ich habe oben die komplette funktionierende Lösung gepostet. Was willst Du noch? Lies doch einfach.
Sorry, bin recht neu bei FHEM.
Wo plaziere ich denn dann mein Notify ?
Schreibs auf einen Zettel zu all den anderen notifies und häng den Zettel an die Wand. Vielleicht klappts ja.
MANN!
Wo kommt ein notify hin: In die fhem Konfiguration. Wohin sonst?
Zitat von: betateilchen am 11 Juni 2014, 12:50:01
?
Na ich hab wieder was dazu gelernt und deshalb einen Tag nicht umsonst gelebt :-)
Gesendet von meinem Nexus 4 mit Tapatalk
Also ersetzt die Zeile
define Bayern_Ferien notify global:INITIALIZED {defineFerien($year)}
die Zeile
define Bayern_Ferien Calendar ical url {ferien} 21600
Richtig ?
der Rest kommt in die MyUtils
jepp....