Schulferien und Calendarfunktion

Begonnen von raspklaus, 11 Juni 2014, 11:31:41

Vorheriges Thema - Nächstes Thema

raspklaus

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 ?



strauch

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?!
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

raspklaus

so hat es aber eine Zeit lang funktioniert.

Ich hatte dies aus einem anderen Post

strauch

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.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

raspklaus

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

betateilchen

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)}

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

strauch

@betateilchen, dann hab ich heute mal wieder ein Tag nicht umsonst gelebt.... danke.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

raspklaus

wie sieht dann der gesamte Syntax zur gewünschten Funktion aus ?


betateilchen

Ich habe oben die komplette funktionierende Lösung gepostet. Was willst Du noch? Lies doch einfach.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

raspklaus

Sorry, bin recht neu bei FHEM.

Wo plaziere ich denn dann mein Notify ?

betateilchen

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?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

strauch

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

FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.