FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Müller am 21 März 2020, 17:10:42

Titel: calendar calview
Beitrag von: Müller am 21 März 2020, 17:10:42
Hallo,

ich mir das Calendar module eingerichtet und würde gerne events in FHEM anzeigen lassen.
Mit Calview sehe ich nun in FHEM auch schön die events.

Wie stelle ich nun die update ein (Aktualisierung der Werte ?) - passiert das automatisch, wenn sich der Kalender aktualisiert?

Ein reading heißt: "Abfuhrtermin Restabfall/Wertstoffe am 23.03.2020" (Wird so von unseren Abfallbetreiber vorgegeben.) Ich würde diesen Eintrag gerne kürzen auf "Restabfall/Wertstoffe". Am liebsten ohne jeden Kalendereintrag einzeln zu bearbeiten.
Titel: Antw:calendar calview
Beitrag von: Otto123 am 21 März 2020, 17:34:46
Hallo,

meine Meinung: CALVIEW ist so nützlich wie ein Kropf. Zum Termine anschauen hast Du doch deinen Kalender (APP)
Du willst doch mit den events was machen? Wozu denn anzeigen?

Was genau willst DU tun?

Gruß Otto
Titel: Antw:calendar calview
Beitrag von: Müller am 21 März 2020, 17:43:50
Hallo Otto,

ich hätte gerne ein Symbol für den jeweiligen Abfalltermin in FHEM.
Blaue Tonne, gelber Sack, ....
Titel: Antw:calendar calview
Beitrag von: Otto123 am 21 März 2020, 17:49:39
:)
Symbole kann ich schlecht :)

Aber mal mein Abfallkalender
defmod AbfallKalender Calendar ical url https://calendar.google.com/calendar/ical/bumf5n64fr8s8f99vlfu06a87k%40group.calendar.google.com/private-058f78026c3b29446a489b2202aa3f53/basic.ics 86400
attr AbfallKalender cutoffOlderThan 0
attr AbfallKalender hideOlderThan 0
attr AbfallKalender onCreateEvent { $e->{alarm}= $e->{start}-43200 }
attr AbfallKalender room Abfall
attr AbfallKalender userReadings nextWasteDays {my $zeit=fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1);;\
             if (!defined $zeit) {$zeit=0} \
my $day = int(($zeit + 86399 - time)/86400);;\
             $day?eval{$day>1?$day:"morgen"}:"heute"},\
Tonne {fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1)}


Da deine Einträge anders heißen müsste man die beim Auslesen umwandeln. Mit Perl geht das relativ leicht. Wenn Du da Hilfe brauchst solltest Du mal die Varianten posten.
Da mein Entsorger einen nicht wirklich  nutzbaren Kalender liefert, baue ich den immer nach: 4 Serientermine und ein handvoll Ausnahmen erspart mir viel Ärger mit den "Praktikanten" beim Entsorger.

Gruß Otto
Titel: Antw:calendar calview
Beitrag von: pcbastler am 21 März 2020, 18:00:24
Ich hab das mit FTUI gelöst:

data-type="symbol" data-background-icon="none"
data-device="Anzeige_Abfall" data-get="Kal_Abfall_Hausmuell_days" data-get-warn=".*(\d+).*"
data-get-on='["off","0","1","[2-9]{1}","[0-9]{2}"]'


Eine angepasste hübsche Oberfläche finde ich für die Anzeige relevanter Werte praktischer.
Titel: Antw:calendar calview
Beitrag von: Müller am 21 März 2020, 18:14:34
Mein Problem ist dass der Eintrag "Abfuhrtermin Restabfall/Wertstoffe am 23.03.2020" immer anders ist. (Anderes Datum). Ich bräuchte also einen Ausdruck der mir nur das zweite Wort herausfiltert, in diesem Fall "Restabfall/Wertstoffe".

Wenn dies nicht möglich ist, muss ich halt einmal hinsetzen und die Einträge anpassen.
Titel: Antw:calendar calview
Beitrag von: Otto123 am 21 März 2020, 18:38:49
Als Idee / Test für die FHEM Kommandozeile:
{my $val="Abfuhrtermin Restabfall/Wertstoffe am 23.03.2020";;my @tonne = split (" ",$val);;return $tonne[1] }
Titel: Antw:calendar calview
Beitrag von: Müller am 21 März 2020, 18:54:24
in der Kommandozeile tut sich hier nix
Titel: Antw:calendar calview
Beitrag von: Otto123 am 21 März 2020, 18:55:51
Dann hast Du ein anderes FHEM als ich  :o

Ich meine die weiße Zeile oben in der Weboberfläche von FHEM
Titel: Antw:calendar calview
Beitrag von: Müller am 21 März 2020, 19:11:31
Hatte ich eigentlich auch dort eingetragen. Habe es nun ein zweites Mal gemacht.

Nun bekomme ich folgende Event

23.03.2020 06:00 11h Restabfall Wertstoffe
27.03.2020 06:00 11h Abfuhrtermin Hecken- und Baumschnitt am 27.03.2020
30.03.2020 06:00 11h Abfuhrtermin Bioabfall am 30.03.2020
06.04.2020 06:00 11h Abfuhrtermin Restabfall/Wertstoffe am 06.04.2020
14.04.2020 06:00 11h Abfuhrtermin Bioabfall am 14.04.2020
20.04.2020 06:00 11h Abfuhrtermin Restabfall/Wertstoffe am 20.04.2020
27.04.2020 06:00 11h Abfuhrtermin Bioabfall am 27.04.2020
....

Titel: Antw:calendar calview
Beitrag von: Otto123 am 21 März 2020, 19:15:19
wie meinst Du das?  :o Wo bekommst Du mit meiner Testzeile Events?  :o

Was genau hast Du getan?
Titel: Antw:calendar calview
Beitrag von: Müller am 21 März 2020, 19:25:23
ich hatte deine Zeile in das weiße Feld eingetragen und return gedrückt.
Titel: Antw:calendar calview
Beitrag von: Otto123 am 21 März 2020, 19:41:57
Und in dem Du meine Zeile in das weiße Feld einträgst - bekommst Du Events wie in deinem Beitrag #9 geschrieben? Das kapier ich nicht.

wir können gern weiter in knappen Einzeilern kommunizieren - irgendwann hab ich dann keine Lust mehr.
Titel: Antw:calendar calview
Beitrag von: Müller am 21 März 2020, 20:21:06
Hallo Otto,

ich glaube wir sprechen aneinander vorbei. Ich danke dir für deine Hilfe.
Aber wenn ich jeden Kalendereintrag manuell ändere, komme ich vielleicht doch einfacher ans Ziel?

Die events habe ich nach
get Abfallkalender events
bekommen.

Danke nochmals für die Hilfsbereitschaft.

viele Grüße & bleibt gesund
Titel: Antw:calendar calview
Beitrag von: Otto123 am 21 März 2020, 20:29:49
Zitat von: Müller am 21 März 2020, 20:21:06
Aber wenn ich jeden Kalendereintrag manuell ändere, komme ich vielleicht doch einfacher ans Ziel?
Nein du wirst doch nicht den blöden Kalender ändern, hier ein Vorschlag.
Mein Code für die Erzeugung das Readings Tonne:
{fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1)}
Den bauen wir um - erstmal analog (Beitrag #6), kann man vielleicht besser machen :)
{my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;my @tonne = split (" ",$val);;return $tonne[1]}

Kannst Du das als userReadings testen?

Deine Termine sind keine ganzen Tage sondern Zeiten am Tag. Da müssen wir sicher auch noch etwas anpassen mit dem Reading für die Tage. Aber vielleicht brauchst Du das ja nicht.
Titel: Antw:calendar calview
Beitrag von: pcbastler am 21 März 2020, 21:00:46
naja, eine ical-Datei ist auch nur Text. Evtl. kommt man mit einem ordentlichen Editor uns Suchen&Ersetzen schneller ans Ziel.
jm2c Frank
Titel: Antw:calendar calview
Beitrag von: Müller am 21 März 2020, 21:29:15
Hallo Otto,

na gut, probieren wir es

hier sind die details von CALVIEW, nachdem ich
{my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;my @tonne = split (" ",$val);;return $tonne[1]} angewandt habe.

Deinen ersten Code ist nicht benutzt.

defmod Abfall CALVIEW Abfallkalender 1
attr Abfall devStateIcon Wertstoffe:bag@orange Restabfall:muelltonne@black Baumschnitt:scene_garden@green Biotonne:muelltonne@brown
attr Abfall devStateStyle style="text-align:left;;;;font-weight:normal;;;;"
attr Abfall group Info
attr Abfall maxreadings 2
attr Abfall modes next
attr Abfall room Baßler,Baßler_komplett,test
attr Abfall stateFormat t_001_weekdayname\
t_001_bdate\
t_001_summary
attr Abfall userReadings {my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;;;my @tonne = split (" ",$val);;;;return $tonne[1]}

setstate Abfall Montag\
23.03.2020\
Abfuhrtermin Restabfall/Wertstoffe am 23.03.2020
setstate Abfall 2020-03-21 21:19:02 c-term 2
setstate Abfall 2020-03-21 21:19:02 c-today 0
setstate Abfall 2020-03-21 21:19:02 c-tomorrow 0
setstate Abfall 2020-03-21 21:19:02 state t: 2 td: 0 tm: 0
setstate Abfall 2020-03-21 21:19:02 t_001_bdate 23.03.2020
setstate Abfall 2020-03-21 21:19:02 t_001_btime 06:00
setstate Abfall 2020-03-21 21:19:02 t_001_categories
setstate Abfall 2020-03-21 21:19:02 t_001_daysleft 2
setstate Abfall 2020-03-21 21:19:02 t_001_daysleftLong in 2 Tagen
setstate Abfall 2020-03-21 21:19:02 t_001_description Abfuhrtermin Restabfall/Wertstoffe in Böhl-Iggelheim am 23.03.2020
setstate Abfall 2020-03-21 21:19:02 t_001_duration 39600
setstate Abfall 2020-03-21 21:19:02 t_001_edate 23.03.2020
setstate Abfall 2020-03-21 21:19:02 t_001_etime 17:00
setstate Abfall 2020-03-21 21:19:02 t_001_location  in Böhl-Iggelheim
setstate Abfall 2020-03-21 21:19:02 t_001_mode next
setstate Abfall 2020-03-21 21:19:02 t_001_source Abfallkalender
setstate Abfall 2020-03-21 21:19:02 t_001_sourcecolor white
setstate Abfall 2020-03-21 21:19:02 t_001_summary Abfuhrtermin Restabfall/Wertstoffe am 23.03.2020
setstate Abfall 2020-03-21 21:19:02 t_001_timeshort 06:00 - 17:00
setstate Abfall 2020-03-21 21:19:02 t_001_weekday 1
setstate Abfall 2020-03-21 21:19:02 t_001_weekdayname Montag
setstate Abfall 2020-03-21 21:19:02 t_002_bdate 27.03.2020
setstate Abfall 2020-03-21 21:19:02 t_002_btime 06:00
setstate Abfall 2020-03-21 21:19:02 t_002_categories
setstate Abfall 2020-03-21 21:19:02 t_002_daysleft 6
setstate Abfall 2020-03-21 21:19:02 t_002_daysleftLong in 6 Tagen
setstate Abfall 2020-03-21 21:19:02 t_002_description Abfuhrtermin Hecken- und Baumschnitt in Böhl-Iggelheim am 27.03.2020
setstate Abfall 2020-03-21 21:19:02 t_002_duration 39600
setstate Abfall 2020-03-21 21:19:02 t_002_edate 27.03.2020
setstate Abfall 2020-03-21 21:19:02 t_002_etime 17:00
setstate Abfall 2020-03-21 21:19:02 t_002_location  in Böhl-Iggelheim
setstate Abfall 2020-03-21 21:19:02 t_002_mode next
setstate Abfall 2020-03-21 21:19:02 t_002_source Abfallkalender
setstate Abfall 2020-03-21 21:19:02 t_002_sourcecolor white
setstate Abfall 2020-03-21 21:19:02 t_002_summary Baumschnitt
setstate Abfall 2020-03-21 21:19:02 t_002_timeshort 06:00 - 17:00
setstate Abfall 2020-03-21 21:19:02 t_002_weekday 5
setstate Abfall 2020-03-21 21:19:02 t_002_weekdayname Freitag




Das hier die Anzeige in der ersten Zeile:

Montag 23.03.2020 Abfuhrtermin Restabfall/Wertstoffe am 23.03.2020
Titel: Antw:calendar calview
Beitrag von: Müller am 21 März 2020, 21:31:00
Vielleicht hat pcbastler Recht?
Titel: Antw:calendar calview
Beitrag von: TomLee am 21 März 2020, 21:49:44
Hallo,

@Otto
für die Lösung aus dem Array ein Element rauszufischen wär ich damals dankbar gewesen.

@Müller

hier mal zu userReadings (https://wiki.fhem.de/wiki/UserReadings) einlesen (besonders trigger der fehlt im nächsten Beispiel)

Zum ausprobieren im Calendar-Device, nicht im CALVIEW:

nextWaste {my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;my @tonne = split (" ",$val);;return $tonne[1]}

Und Danke, dieser Thread hat mir devstateIcon wieder klarer gemacht.

Ein Icon zum jeweiligen Abfalltermin (einfach devstateIcon erweitern, stateformat so lassen):

attr <calendardevice> devStateIcon 1.Restabfall/Wertstoffe:muelltonne@grey 1.Bioabfall:muelltonne@green 1.Schadstoffmobil:muelltonne@red
attr <calendardevice> devStateIcon stateFormat 1:nextWaste


Gruß

Thomas
Titel: Antw:calendar calview
Beitrag von: Otto123 am 21 März 2020, 22:42:09
Ich hatte nichts von CALVIEW gesagt - außer das man das nicht braucht. :(

Das userreadings ist für das CALENDAR Device - wie Thomas schon gesagt hat.
Und bitte die semikolon nicht immer wieder vervielfachen!

Poste doch am Besten mal das CALENDAR Device wenn Du nicht klar kommst. Also offenbar
list Abfallkalender

Gruß Otto
Titel: Antw:calendar calview
Beitrag von: Müller am 22 März 2020, 08:13:32
Ok, ich habe das userreading gestern falsch gesetzt (calView). Habe es wieder gelöscht und im Kalender gesetzt. (semicolon ? ich habe deinen Code kopiert und eingesetzt....)

Internals:
   DEF        ical url https://calendar.google.com/calendar/ical/50ujuclvps8b64ijie7j4bsq08%40group.calendar.google.com/private-4f60dac22c9d8dfeb5cd3c0185ca1234/basic.ics [3600]
   FUUID      5e401ebe-f33f-a4d3-7971-aec51037be18403d
   NAME       Abfallkalender
   NOTIFYDEV  global
   NR         256
   NTFY_ORDER 50-Abfallkalender
   STATE      1:nextwaste
   TYPE       Calendar
   READINGS:
     2020-03-22 07:19:01   calname         Abfallkalender
     2020-03-22 07:19:01   lastUpdate      2020-03-22 07:19:00
     2020-02-09 16:01:19   modeAlarm       
     2020-03-16 17:00:00   modeAlarmOrStart
     2020-02-09 16:01:19   modeAlarmed     
     2020-03-16 17:15:30   modeChanged     
     2020-03-17 17:15:30   modeEnd         
     2020-03-16 17:15:30   modeEnded       
     2020-03-16 17:00:00   modeStart       
     2020-03-16 06:15:30   modeStarted     
     2020-03-22 07:19:01   modeUpcoming    eb2c229e7d20652c9ee9ecb6dad4bc1e;6de264ced9184b7988e8cdb62a5757ce;623a55005bef5d879a4dc882d1842296;e556fc50d43d614329d2eff325842937;9d0621a0d2fcd6ab8ad297285e898b5a;f0bef6370009bb4ff03ba0c2c0a6639b;508d406cfe5592c3e3757dfa4e8f5d74;a588d359837ac5128a5828ea64ee34c0;9147c2b7d484af29bfe990df8fef41c8;96ce5896696a3e86da06808e7a25403d;4a6a67b98e4980e3de2303d6cfc571af;e79cea3ec4e6f6b4ce0ee3d65cd60271;f7081b8706701413ff0f4e4b368ad63b;a3c6a17bd44addf5ef7b2552b467bef1;e4ca1ac58b21c710d6d0a203ff1c31be;569a76c5540116c19bc7d8348bc88ac5;b264a80a4cfd89e8028e79b0c0aa902e;9a7a8370c9e97d292046ac2f23ce8a16;e1212bb2126b368c9c091e12dd1811b3;471de91708cb279a264e4aa619222deb;519eba8bea6ca674e05df4c0374e0c06;56955cac74b225f1f9f9be4e5401c6dd;40433f710b2e7ca5b5a5bc1d149ea812;9625b1fe8ebafb84985c9afc5b945a4e;5d69bf439d7e67983b98bac76743b42e;3c0bc404a3e52add418ed81cab1a6f00;d6ec7dc4923ec43ca2b01f759bbc85b9;ffd989a044ea2efe3d6e27255c74ee39;4844b03204bd9568f3600db2522e02b9;b5856b7fea58a1712ed4beb81e7124a2;b9789bff775c7956e2a1a33903fdbf86;d3898e8142b44ed81aac4d089ecde0f2;50505d85e981916c10a79fb1bdd1729d;2eb21d2bd19461c93fe2666de1f6c140;b72825ca44fa537f93cfd2cf02dc199a;1580b803817b589ebc354dd480d592b1;10e72a3fb50ccec8b68a93ae2d97e696;2fbff84b2c192fa9317fc5903f57b978;82a92275c812e1c2a4bc35b70ba701f0;6e89bc916214b7f0471918f153687f15;182939e6dd3483dce88859e12a17ab67;f1fc691a10d8b6d236dd8be453fa762e;e6be24e373dd7ec326897322d872142e;47b1c283bd7a4e4c480f381ffedf6f12;7bddd77a4f687098300485652c8754bd;c0b423eeafa29ef05a37bf3c452c6dad;e01f673c4be4e8cb3f4ed1e0600dd60b;da419930e3a662e3e030e8e54d996464;995e241f4a389e45d23af3ac35b4f085
     2020-03-22 07:19:01   nextUpdate      2020-03-22 08:19:00
     2020-03-22 07:19:01   nextWakeup      2020-03-22 08:19:00
     2020-03-22 07:19:01   state           triggered
Attributes:
   cutoffOlderThan 1d
   room       test
   userReadings {my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;my @tonne = split (" ",$val);;return $tonne[1]}


Titel: Antw:calendar calview
Beitrag von: Müller am 22 März 2020, 09:04:37
ich lese mich mal bei "userreading mit "Split" erstellen/kürzen" ein.

https://forum.fhem.de/index.php?topic=58059.0 (https://forum.fhem.de/index.php?topic=58059.0)

Letztendlich möchte ich das reading "Abfuhrtermin Restabfall/Wertstoffe am 23.03.2020" kürzen in "Restabfall/Wertstoffe"
Titel: Antw:calendar calview
Beitrag von: Otto123 am 22 März 2020, 10:23:39
Ich sage ja immer: Zwischen Copy und Paste gehört der Kopf!

userReadings:
attr device userReadings Readingname {Perlausdruck}

Du hast zwar wild kopiert aber vergessen dem Reading einen Namen zu geben. Ich habe zuletzt nur den Perlcode gepostet!

Und mein perlcode macht genau das:  "Letztendlich möchte ich das reading "Abfuhrtermin Restabfall/Wertstoffe am 23.03.2020" kürzen in "Restabfall/Wertstoffe""
Aber offenbar hast Du das bisher nicht getestet und verstanden. :o
Titel: Antw:calendar calview
Beitrag von: Prof. Dr. Peter Henning am 22 März 2020, 11:48:36
Zitatich lese mich mal bei "userreading mit "Split" erstellen/kürzen" ein.

Man kann Perl nicht erlernen, indem man die ad-hoc-Beispiele und Fragen im Anfängerforum liest. Besser hier: https://wiki.selfhtml.org/wiki/Perl


Und vor allem: Anfängerdoku zu FHEM lesen. Denn wenn man mit FHEM erfolreich sein will, muss man wenigstens die Nomenklatur kennen (also z.B. verstehen, was Events sind, sic).


LG

pah

Titel: Antw:calendar calview
Beitrag von: Müller am 22 März 2020, 12:18:17
Danke, eine kleine Erläuterung hilft meinem Kopf.....

Beim Kalender (Modul calendar)
attr Abfallkalender userReadings event {my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;my @tonne = split (" ",$val);;return $tonne[1]}
funktioniert.

Beim CALVIEW Modul
attr Abfall Readings event {my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;my @tonne = split (" ",$val);;return $tonne[1]}
wird die ungekürzte Version angezeigt

müsste dies in Calview nicht auch funktionieren ?
(Calview ist für mich ganz nett, weil ich auf verschiedene Readings zugreifen kann: Wochentag, Datum)


@PAH: Ja, ich gebe zu davor habe ich mich bisher gedrückt, werde es mal nachholen....
Titel: Antw:calendar calview
Beitrag von: Otto123 am 22 März 2020, 12:40:19
ZitatBeim CALVIEW Modul
...
wird die ungekürzte Version angezeigt
Weil dieser Code mit der Variablen $name einen Befehl absetzt der ein CALENDAR Device abfragt (das wo dieser Code implementiert ist)
Das kann per Copy und Paste nicht bei einem x-beliebigen anderen Device funktionieren.

Das funktioniert sicher auch bei CALVIEW, wenn Du diesen Code richtig modifiziert im CALVIEW Device implementierst. Genau deswegen hatte ich dir ja nur den Ansatz in Perl gezeigt (#6).
Titel: Antw:calendar calview
Beitrag von: Otto123 am 22 März 2020, 14:37:00
Ich will Dir mal noch meine Codezeile erklären, vielleicht hilft das bei der Umsetzung innerhalb calview
{ - hier beginnt der Perlblock
my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1); - hier wird eine Variable erzeugt und mit einem Wert (String) gefüllt.
my @tonne = split (" ",$val); - hier wird der String ($val) in ein array zerlegt in dem beim Leerzeichen getrennt wird
return $tonne[1] - hier wird der 2te Wert im Array zurück gegeben (Der Index zählt ab 0)
} - hier endet der Perlblock

Du kannst den String wie in meinem allerersten Beispiel einfach mit Text füllen, oder Du kannst den Text aus einem Reading lesen.
ReadingsVal(Device,Reading,Defaultwert)
ReadingsVal("Abfall","t_001_description","er ror") Also im ganzen Satz:
my $val=ReadingsVal("Abfall","t_001_description","er ror");
Du kannst das in der FHEM Kommandozeile testen:
{my $val=ReadingsVal("Abfall","t_001_description","er ror");;my @tonne = split (" ",$val);;return $tonne[1]}
Du kannst Dir damit in deinem Calview Device auch ein UserReadings bauen.

Ich hoffe das hilft :)

Gruß Otto
Titel: Antw:calendar calview
Beitrag von: Müller am 22 März 2020, 16:46:32
Super Otto,

vielen Dank für deine Geduld und deine Erklärungen, wirklich nett von dir, dass du dir die Zeit dafür genommen hast.

viele Grüße
Titel: Antw:calendar calview
Beitrag von: TomLee am 22 März 2020, 17:07:16
Wenn das jetzt klappt, mein Vorschlag für ein passendes Icon zu dem userReading klappt in jedem Device, also auch hier:

Zitatattr <calviewdevicename> devStateIcon 1.Restabfall/Wertstoffe:muelltonne@grey 1.Bioabfall:muelltonne@green 1.Schadstoffmobil:muelltonne@red
attr <calviewdevicename> devStateIcon stateFormat 1:nextWaste <-- ersetzen durch deinen userReading Name

Gruß Thomas
Titel: Antw:calendar calview
Beitrag von: TomLee am 23 März 2020, 17:02:39
Zitat(Calview ist für mich ganz nett, weil ich auf verschiedene Readings zugreifen kann: Wochentag, Datum)

Wochentag, Datum und Icon für den nächsten Termin im Calendar-Device (von dort holt doch CalView die Werte):

attr Abfallkalender defaultFormat "$T1 $S"
attr Abfallkalender devStateIcon 1.Restabfall/Wertstoffe:muelltonne@grey 1.Bioabfall:muelltonne@brown 1.Schadstoffmobil:muelltonne@red 1.Hecken-.und.Baumschnitt:muelltonne@green
attr Abfallkalender room Kalender
attr Abfallkalender stateFormat 1:nextWaste\
nextWaste am nextWastedate
attr Abfallkalender userReadings nextWaste {\
my $var=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;\
my @tonne = split (/ /,$var);;\
return $tonne[1]\
},\
nextWastedays {\
my $var =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);;\
return $var\
},\
nextWastedate { \
my $date = fhem('get '.$name.' events format:custom="$T1" limit:from=0,count=1');;\
my @dat = split (/ /,$date);;\
return $dat[0];;\
},\
nextWasteweekday {\
my @days = qw/Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag/;;\
my $date = fhem('get '.$name.' events format:custom="$T1" limit:from=0,count=1');;\
my @date = split /\./,$date;;\
return $days[(localtime(timelocal(0,0,0,$date[0],$date[1]-1,$date[2]-1900)))[6]];;}

Den Code über die Raw Definition oder das + hinzufügen/ergänzen