FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: curt am 09 Oktober 2018, 03:21:16

Titel: [Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 09 Oktober 2018, 03:21:16
Hallo,

entweder geht das gar nicht - oder ich stelle mich mal wieder zu blöd an:

Ich habe eine iCal-Datei für Geburtstage von Hand gebaut, ich merke mir die doch nicht wirklich. So ein Geburtstag ist jedes Jahr - die ICS-Datei ist valid: Sie liegt lokal (ich mag keine Google- oder Apple-Dienste). Daran scheitert es nicht, es gibt die ICal-Datei bei mir lokal.

Device myCalView eingebunden - und in FTUI werden auch Termine angezeigt. Prima. Sehr schön.

Nur leider werden die Termine ab dem Dateibeginn (1. Januar) angezeigt. Für eine Geburtstagserinnerung wäre es aber viel schöner, wenn die nächsten fünf Geburtstage ab HEUTE angezeigt werden. Ist doch logisch, ich muss noch eine Karte schreiben oder einen Wein kaufen.

Die "data-start"-Optionen scheinen mein Problem nicht abzubilden. Ich will ja die nächsten fünf Termine wissen, ganz unabhängig davon, wann die genau sind.

Wie mache ich es denn, dass die nächsten fünf Termine (einschließlich heute - da muss ich ja das Geburtstagskind anrufen!) mir gezeigt werden?
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: SirBen am 09 Oktober 2018, 05:56:57
Moin,
ich habe zwar keinen lokalen Kalender, sollte ja aber genau so funktionieren:
Dein Calendar device muss das Attribut hideOlderThan haben. Ich habe es auf 1d (1Tag) gestellt.
LG
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 09 Oktober 2018, 06:08:47
Danke für Deinen Hinweis.

Leider kennt meine CALVIEW-Device dieses ATTR gar nicht. Von daher kann ich es auch nicht setzen. (Ja, das System ist aktuell.)
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: OdfFhem am 09 Oktober 2018, 06:35:29
Hallo,

das Attribut hideOlderThan sowie hideLaterThan muss/kann im Calendar-Device gesetzt werden.

Viele Grüße
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: SirBen am 09 Oktober 2018, 07:20:07
P.S. Man beachte den Unterschied Calview und Calendar.
Calview hat bei mir auch kein entsprechendes Attr.

LG
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 10 Oktober 2018, 20:12:49
Ich bedanke mich für die bisherigen Hinweise.

Ja, ich habe das Attribut nun verstanden. Leider funktioniert das Ganze noch immer nicht: Es wird leider vom 1.Januar beginnend angezeigt. Dabei muss ich zugeben, dass ich Schwierigkeiten habe, das Zusammenspiel von Calendar, Calview, rg-Script, Widget-Calview zu durchdringen - welches auch noch durch nicht mehr zutreffende Forenbeiträge wegen Versionswechseln erschwert wird. Dazu kommt, dass der Wiki-Beitrag vmtl. veraltet ist sowie die CalView-Referenz Optionen zwar nennt, deren Bedeutung aber nicht erklärt. [¹]

Momentan neige ich dazu, alles zu löschen und sodann http://www.juergenstechnikwelt.de/smarthome-2/smarthome-mit-fhem-umsetzung-meines-abfallkalenders/ nachzubauen und schrittweise anzupassen.

Noch viel besser wäre allerdings, wenn jemand einen funktionierenden Geburtstagskalender (am allerbesten mit Altersberechnung) hat - und sagt: "Ok, ich zeige mal im Forum, wie ich das gemacht habe."

Das wäre der Traum. Man wird ja nochmal träumen dürfen.

[¹] Bitte nicht falsch verstehen - mir ist klar, das das ein open-source-Projekt ist, in das die Entwickler Kraft und Zeit investieren - und ich nichts zu fordern habe. Das liegt mir auch fern, ich habe große Hochachtung vor jedem Entwickler dieses Projekts. Und bedanke mich an dieser Stelle! (Ich wollte lediglich meine Schwierigkeiten beschreiben, nicht mehr.)
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: OdfFhem am 11 Oktober 2018, 06:49:20
Hallo,

statt alles zu löschen, wäre es wahrscheinlich zielführender, den (evtl. anonymisierten) Ist-Zustand von Calendar- sowie CALVIEW-Device zu posten (list-Kommando oder "Raw definition").

Zusätzlich wäre ein (evtl. anonymisierter) Auszug aus der ics-Datei noch hilfreich.

Viele Grüße
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 12 Oktober 2018, 00:06:41
list Calendar

Internals:
   DEF        ical file www/calendar/geburtstage.ics 86400
   NAME       Geburtstage
   NOTIFYDEV  global
   NR         729
   NTFY_ORDER 50-Geburtstage
   STATE      triggered
   TYPE       Calendar
   READINGS:
     2018-10-11 00:49:29   lastUpdate      2018-10-11 00:49:29
     2018-10-08 02:34:42   modeAlarm       
     2018-10-10 00:49:29   modeAlarmOrStart synthetic000009;synthetic000019;synthetic000014;synthetic000004
     2018-10-08 02:34:42   modeAlarmed     
     2018-10-08 02:34:42   modeChanged     
     2018-10-08 02:34:42   modeEnd         
     2018-10-08 02:34:42   modeEnded       
     2018-10-10 00:49:29   modeStart       synthetic000009;synthetic000019;synthetic000014;synthetic000004
     2018-10-08 02:34:42   modeStarted     
     2018-10-08 03:44:53   modeUpcoming    synthetic000024
     2018-10-11 00:49:29   nextUpdate      2018-10-12 00:49:29
     2018-10-11 00:49:29   nextWakeup      2018-10-12 00:49:29
     2018-10-11 00:49:29   state           triggered
Attributes:
   group      Calendar
   hideOlderThan 1d
   room       99_System


list myCalView

Internals:
   DEF        Geburtstage next
   INTERVAL   43200
   KALENDER   Geburtstage
   NAME       myCalView
   NR         731
   NTFY_ORDER 50-myCalView
   STATE      t: 9 td: 0 tm: 0
   TYPE       CALVIEW
   READINGS:
     2018-10-11 12:49:29   c-term          9
     2018-10-11 12:49:29   c-today         0
     2018-10-11 12:49:29   c-tomorrow      0
     2018-10-11 12:49:29   state           t: 9 td: 0 tm: 0
     2018-10-11 12:49:29   t_001_bdate     26.01.2018
     2018-10-11 12:49:29   t_001_btime     00:00
     2018-10-11 12:49:29   t_001_categories 
     2018-10-11 12:49:29   t_001_daysleft  -258
     2018-10-11 12:49:29   t_001_daysleftLong in -258 Tagen
     2018-10-11 12:49:29   t_001_description 
     2018-10-11 12:49:29   t_001_location   
     2018-10-11 12:49:29   t_001_mode      next
     2018-10-11 12:49:29   t_001_source    Geburtstage
     2018-10-11 12:49:29   t_001_sourcecolor red
     2018-10-11 12:49:29   t_001_summary    A Geburtstag
     2018-10-11 12:49:29   t_001_timeshort 00:00 -
     2018-10-11 12:49:29   t_001_weekday   5
     2018-10-11 12:49:29   t_001_weekdayname Freitag
     2018-10-11 12:49:29   t_002_bdate     30.04.2018
     2018-10-11 12:49:29   t_002_btime     00:00
     2018-10-11 12:49:29   t_002_categories 
     2018-10-11 12:49:29   t_002_daysleft  -164
     2018-10-11 12:49:29   t_002_daysleftLong in -164 Tagen
     2018-10-11 12:49:29   t_002_description 
     2018-10-11 12:49:29   t_002_location   
     2018-10-11 12:49:29   t_002_mode      next
     2018-10-11 12:49:29   t_002_source    Geburtstage
     2018-10-11 12:49:29   t_002_sourcecolor red
     2018-10-11 12:49:29   t_002_summary   Frank Geburtstag
     2018-10-11 12:49:29   t_002_timeshort 00:00 -
     2018-10-11 12:49:29   t_002_weekday   1
     2018-10-11 12:49:29   t_002_weekdayname Montag
     2018-10-11 12:49:29   t_003_bdate     06.08.2018
     2018-10-11 12:49:29   t_003_btime     00:00
     2018-10-11 12:49:29   t_003_categories 
     2018-10-11 12:49:29   t_003_daysleft  -66
     2018-10-11 12:49:29   t_003_daysleftLong in -66 Tagen
     2018-10-11 12:49:29   t_003_description 
     2018-10-11 12:49:29   t_003_location   
     2018-10-11 12:49:29   t_003_mode      next
     2018-10-11 12:49:29   t_003_source    Geburtstage
     2018-10-11 12:49:29   t_003_sourcecolor red
     2018-10-11 12:49:29   t_003_summary   B Geburtstag
     2018-10-11 12:49:29   t_003_timeshort 00:00 -
     2018-10-11 12:49:29   t_003_weekday   1
     2018-10-11 12:49:29   t_003_weekdayname Montag
     2018-10-11 12:49:29   t_004_bdate     21.09.2018
     2018-10-11 12:49:29   t_004_btime     00:00
     2018-10-11 12:49:29   t_004_categories 
     2018-10-11 12:49:29   t_004_daysleft  -20
     2018-10-11 12:49:29   t_004_daysleftLong in -20 Tagen
     2018-10-11 12:49:29   t_004_description 
     2018-10-11 12:49:29   t_004_location   
     2018-10-11 12:49:29   t_004_mode      next
     2018-10-11 12:49:29   t_004_source    Geburtstage
     2018-10-11 12:49:29   t_004_sourcecolor red
     2018-10-11 12:49:29   t_004_summary   E Geburtstag
     2018-10-11 12:49:29   t_004_timeshort 00:00 -
     2018-10-11 12:49:29   t_004_weekday   5
     2018-10-11 12:49:29   t_004_weekdayname Freitag
     2018-10-11 12:49:29   t_005_bdate     13.12.2018
     2018-10-11 12:49:29   t_005_btime     00:00
     2018-10-11 12:49:29   t_005_categories 
     2018-10-11 12:49:29   t_005_daysleft  63
     2018-10-11 12:49:29   t_005_daysleftLong in 63 Tagen
     2018-10-11 12:49:29   t_005_description 
     2018-10-11 12:49:29   t_005_location   
     2018-10-11 12:49:29   t_005_mode      next
     2018-10-11 12:49:29   t_005_source    Geburtstage
     2018-10-11 12:49:29   t_005_sourcecolor red
     2018-10-11 12:49:29   t_005_summary   D Geburtstag
     2018-10-11 12:49:29   t_005_timeshort 00:00 -
     2018-10-11 12:49:29   t_005_weekday   4
     2018-10-11 12:49:29   t_005_weekdayname Donnerstag
     2018-10-11 12:49:29   t_006_bdate     26.01.2019
     2018-10-11 12:49:29   t_006_btime     00:00
     2018-10-11 12:49:29   t_006_categories 
     2018-10-11 12:49:29   t_006_daysleft  107
     2018-10-11 12:49:29   t_006_daysleftLong in 107 Tagen
     2018-10-11 12:49:29   t_006_description 
     2018-10-11 12:49:29   t_006_location   
     2018-10-11 12:49:29   t_006_mode      next
     2018-10-11 12:49:29   t_006_source    Geburtstage
     2018-10-11 12:49:29   t_006_sourcecolor red
     2018-10-11 12:49:29   t_006_summary    A Geburtstag
     2018-10-11 12:49:29   t_006_timeshort 00:00 -
     2018-10-11 12:49:29   t_006_weekday   6
     2018-10-11 12:49:29   t_006_weekdayname Samstag
     2018-10-11 12:49:29   t_007_bdate     30.04.2019
     2018-10-11 12:49:29   t_007_btime     00:00
     2018-10-11 12:49:29   t_007_categories 
     2018-10-11 12:49:29   t_007_daysleft  201
     2018-10-11 12:49:29   t_007_daysleftLong in 201 Tagen
     2018-10-11 12:49:29   t_007_description 
     2018-10-11 12:49:29   t_007_location   
     2018-10-11 12:49:29   t_007_mode      next
     2018-10-11 12:49:29   t_007_source    Geburtstage
     2018-10-11 12:49:29   t_007_sourcecolor red
     2018-10-11 12:49:29   t_007_summary   C Geburtstag
     2018-10-11 12:49:29   t_007_timeshort 00:00 -
     2018-10-11 12:49:29   t_007_weekday   2
     2018-10-11 12:49:29   t_007_weekdayname Dienstag
     2018-10-11 12:49:29   t_008_bdate     06.08.2019
     2018-10-11 12:49:29   t_008_btime     00:00
     2018-10-11 12:49:29   t_008_categories 
     2018-10-11 12:49:29   t_008_daysleft  299
     2018-10-11 12:49:29   t_008_daysleftLong in 299 Tagen
     2018-10-11 12:49:29   t_008_description 
     2018-10-11 12:49:29   t_008_location   
     2018-10-11 12:49:29   t_008_mode      next
     2018-10-11 12:49:29   t_008_source    Geburtstage
     2018-10-11 12:49:29   t_008_sourcecolor red
     2018-10-11 12:49:29   t_008_summary   B GeburtstagMutti Annelies
     2018-10-11 12:49:29   t_008_timeshort 00:00 -
     2018-10-11 12:49:29   t_008_weekday   2
     2018-10-11 12:49:29   t_008_weekdayname Dienstag
     2018-10-11 12:49:29   t_009_bdate     21.09.2019
     2018-10-11 12:49:29   t_009_btime     00:00
     2018-10-11 12:49:29   t_009_categories 
     2018-10-11 12:49:29   t_009_daysleft  345
     2018-10-11 12:49:29   t_009_daysleftLong in 345 Tagen
     2018-10-11 12:49:29   t_009_description 
     2018-10-11 12:49:29   t_009_location   
     2018-10-11 12:49:29   t_009_mode      next
     2018-10-11 12:49:29   t_009_source    Geburtstage
     2018-10-11 12:49:29   t_009_sourcecolor red
     2018-10-11 12:49:29   t_009_summary   E Geburtstag
     2018-10-11 12:49:29   t_009_timeshort 00:00 -
     2018-10-11 12:49:29   t_009_weekday   6
     2018-10-11 12:49:29   t_009_weekdayname Samstag
Attributes:
   group      _KalenderView_
   maxreadings 300
   modes      next
   room       06 Kalender
   sourcecolor Feiertage:blue,Ferien:brown,Geburtstage:red


cat www/calendar/geburtstage.ics

BEGIN:VCALENDAR
PRODID:-//calcurse//NONSGML v4.0.0//EN
VERSION:2.0
BEGIN:VEVENT
DTSTART:20180126
RRULE:FREQ=YEARLY;BYMONTH=0;BYMONTHDAY=26
SUMMARY: A Geburtstag
END:VEVENT
BEGIN:VEVENT
DTSTART:20180430
RRULE:FREQ=YEARLY;BYMONTH=04;BYMONTHDAY=30
SUMMARY:C Geburtstag
END:VEVENT
BEGIN:VEVENT
DTSTART:20180806
RRULE:FREQ=YEARLY;BYMONTH=08;BYMONTHDAY=06
SUMMARY:B Geburtstag
END:VEVENT
BEGIN:VEVENT
DTSTART:20180921
RRULE:FREQ=YEARLY;BYMONTH=09;BYMONTHDAY=21
SUMMARY:E Geburtstag
END:VEVENT
BEGIN:VEVENT
DTSTART:20181213
RRULE:FREQ=YEARLY;BYMONTH=12;BYMONTHDAY=13
SUMMARY:D Geburtstag
END:VEVENT
END:VCALENDAR


Das hier habe ich noch, in fhem.cfg

define rg_KALENDER readingsGroup <Datum>,<Tag>,<Zeit>,<Termin>,<Ort>\
myCalView:t_001_bdate,t_001_weekday,t_001_timeshort,t_001_summary,t_001_location\
myCalView:t_002_bdate,t_002_weekday,t_002_timeshort,t_002_summary,t_002_location\
myCalView:t_003_bdate,t_003_weekday,t_003_timeshort,t_003_summary,t_003_location\
myCalView:t_004_bdate,t_004_weekday,t_004_timeshort,t_004_summary,t_004_location\
myCalView:t_005_bdate,t_005_weekday,t_005_timeshort,t_005_summary,t_005_location\
myCalView:t_006_bdate,t_006_weekday,t_006_timeshort,t_006_summary,t_006_location\
myCalView:t_007_bdate,t_007_weekday,t_007_timeshort,t_007_summary,t_007_location\
myCalView:t_008_bdate,t_008_weekday,t_008_timeshort,t_008_summary,t_008_location\
myCalView:t_009_bdate,t_009_weekday,t_009_timeshort,t_009_summary,t_009_location\
myCalView:t_010_bdate,t_010_weekday,t_010_timeshort,t_010_summary,t_010_location\
myCalView:t_011_bdate,t_011_weekday,t_011_timeshort,t_011_summary,t_011_location\
myCalView:t_012_bdate,t_012_weekday,t_012_timeshort,t_012_summary,t_012_location\
myCalView:t_013_bdate,t_013_weekday,t_013_timeshort,t_013_summary,t_013_location\
myCalView:t_014_bdate,t_014_weekday,t_014_timeshort,t_014_summary,t_014_location\
myCalView:t_015_bdate,t_015_weekday,t_015_timeshort,t_015_summary,t_015_location\
myCalView:t_016_bdate,t_016_weekday,t_016_timeshort,t_016_summary,t_016_location\
myCalView:t_017_bdate,t_017_weekday,t_017_timeshort,t_017_summary,t_017_location\
myCalView:t_018_bdate,t_018_weekday,t_018_timeshort,t_018_summary,t_018_location\
myCalView:t_019_bdate,t_019_weekday,t_019_timeshort,t_019_summary,t_019_location\
myCalView:t_020_bdate,t_020_weekday,t_020_timeshort,t_020_summary,t_020_location
attr rg_KALENDER nameStyle style="font-weight:bold;;text-decoration:underline;;"
attr rg_KALENDER nonames 1
attr rg_KALENDER notime 1
attr rg_KALENDER room 06 Kalender
attr rg_KALENDER valueFormat {\
  if ($READING =~ /bdate$/)\
  {\
    my $readingStart = $READING;;\
    $readingStart =~ s/bdate$//;;\
    if (0 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))\
    {\
      "Heute";;\
    }\
    elsif (1 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))\
    {\
      "Morgen";;\
    }\
    else\
    {\
      # the follwoing line strips the year of the date (remove it if needed)\
      substr($VALUE, 0, 5);;\
    }\
  }\
  elsif ($READING =~ /weekday$/)\
  {\
    my $readingStart = $READING;;\
    $readingStart =~ s/weekday$//;;\
    \
     # the follwoing line strips the weekday down to 3 chars (remove it if needed)\
    substr($VALUE, 0, 3);;\
  }\
  elsif ($READING =~ /summary$/)\
  {\
    my $readingStart = $READING;;\
    $readingStart =~ s/summary$//;;\
    my $age = ReadingsVal($DEVICE, $readingStart.'age', undef);;\
    if (defined($age))\
    {\
      $VALUE.' ('.$age.')';;\
    }\
    else\
    {\
      $VALUE;;\
    }\
  }\
}
attr rg_KALENDER valueStyle {\
  my $readingStart = $READING;;\
  $readingStart =~ s/(t_\d+_).+/$1/;;\
  'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"'\
}


Und in 99_myUtils.pm

# https://forum.fhem.de/index.php/topic,36244.0.html
sub getCalendar(){
   my $ret;
   my $year=strftime("%Y",localtime);
   $ret = system("wget -O feiertage.ics http://www.schulferien.org/iCal/Feiertage/icals/Feiertage_Baden_Wuerttemberg_".$year.".ics");
   $ret = system("wget -O ferien.ics http://www.schulferien.org/iCal/Ferien/icals/Ferien_Baden_Wuerttemberg_".$year.".ics");

};   

sub getDayStatus(){
   my $ret;
   my $msg;
   my @lines;
   my $date;
   my $desc;
   #strftime "%d-%m",localtime
   
   $ret = fhem("get Feiertage text modeAlarmOrStart");
   if( $ret ne ""){
     @lines = split('\n',$ret);
     $date  = substr($lines[0],0,8);
     $desc  = substr($lines[0],15);
     $msg = "$desc $date";
     fhem("set Tagesstatus $desc");
     fhem("set Tagesmode Feiertag");
   }else{
     $ret = fhem("get Ferien text modeAlarmOrStart");
     if( $ret ne ""){
       @lines = split('\n',$ret);
       $date  = substr($lines[0],0,8);
       $desc  = substr($lines[0],15);
       $msg = "$desc $date";
       fhem("set Tagesstatus $desc");
       fhem("set Tagesmode Ferien");
     }else{
       if( strftime("%u",localtime) > 5 ){
         $msg = "Wochenende";
         fhem("set Tagesstatus $msg");
         fhem("set Tagesmode $msg");
       }else{
         $msg = "Arbeitstag";
         fhem("set Tagesstatus $msg");
         fhem("set Tagesmode $msg");
       }
     }
   }
   return $msg;
}

sub checkCalendars($){

  my ($period) = @_;

  #-- Start oder Alarm stündlich
  if( ($period eq 'hour') || ($period eq '') ){
    my $text;
    my $hash = $defs{'Termin'};
    $text = fhem("get Muell text modeAlarmOrStart");
    $text = "--" if (!$text);
    $text = "--" if ($text eq "");
    #fhem("set Termin ".$text);
    return $text;
   
  #-- Vorschau täglich oder wenn neu gestartet
  }elsif( ($period eq 'day') || (ReadingsVal("Termin","today",0) eq "today") ){
    my $stoday    = strftime('%2d.%2m.%2y', localtime(time));
    my $stomorrow = strftime('%2d.%2m.%2y', localtime(time+86400));
    my $stwodays  = strftime('%2d.%2m.%2y', localtime(time+2*86400));
    my @today     = ();
    my @tomorrow  = ();
    my @twodays   = ();
    my (@lines,$line,@linarr);

    @lines = split('\n',fhem("get Muell text modeAlarmOrStart"));
    foreach $line (@lines){
      #-- line looks as
      #   18.05.15 07:00 Restmüllabfuhr
      chomp($line);
      @linarr = split(' ',$line);
      if( $linarr[0] eq $stoday ){
        push(@today,$linarr[1]." ".$linarr[2]);
      }elsif( $linarr[0] eq $stomorrow ){
        push(@tomorrow,$linarr[1]." ".$linarr[2]);
      }elsif( $linarr[0] eq $stwodays ){
        push(@twodays,$linarr[1]." ".$linarr[2]);
      }     
    }
   
    @lines = split('\n',fhem("get Muell text modeUpcoming"));
    foreach $line (@lines){
      #-- line looks as
      #   18.05.15 07:00 Restmüllabfuhr
      chomp($line);
      @linarr = split(' ',$line);
      if( $linarr[0] eq $stoday ){
        push(@today,$linarr[1]." ".$linarr[2]);
      }elsif( $linarr[0] eq $stomorrow ){
        push(@tomorrow,$linarr[1]." ".$linarr[2]);
      }elsif( $linarr[0] eq $stwodays ){
        push(@twodays,$linarr[1]." ".$linarr[2]);
      }     
    }
    $defs{'Termin'}{READINGS}{'today'}{VAL}    = join(" ",@today);
    $defs{'Termin'}{READINGS}{'tomorrow'}{VAL} = join(" ",@tomorrow);
    $defs{'Termin'}{READINGS}{'twodays'}{VAL}  = join(" ",@twodays);
   
    return "today: ".join(" ",@today)."\ntomorrow: ".join(" ",@tomorrow)."\ntwodays: ".join(" ",@twodays);
  }
}

Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: OdfFhem am 12 Oktober 2018, 06:29:18
Ich kann zwar erst heute Abend etwas testen, aber ich vermute, dass in der ics-Datei die DTEND-Angaben "fehlen". Ohne scheint der Termin kein Ende zu haben.
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 13 Oktober 2018, 01:10:35
@OdfFhem
DTEND ist es möglicherweise nicht: Jährlich wiederkehrende Geburtstage haben haben kein Ende. Der ical-Generator hat das vermutlich richtig gemacht.

Ich vermute, dass es schon viel früher scheitert, dass meine gesamte Konfiguration hinkt. Daher habe ich folgendes gemacht:

1) Kalender für Tests gewechselt - nun Feiertage Sachsen-Anhalt 2018 von schulferien.org. Da dürfte die Kodierung des iCal-Files korrekt sein.

2) Alles mit Cal in Zusammenhang stehende aus 99_myUtils.pm gelöscht - da gibt es nun KEINE Perl-Funktionen in Zusammenhang mit Calendar, CalView, 57_CalView mehr. Null. Njete. (Das hatte ich kopiert, Jahr 2015, vermutlich obsolent. Also nun weg.)

Ergebnis der Veranstaltung ist:
* FHEM selbst zeigt in meinem Kalender-Raum alle Feiertage an, auch die vergangenen. Beginnend mit Neujahr 2018.
* FTUI-Tablet zeigt gar keine Feiertage an - nicht einmal falsche.

Ist die grundsätzliche Definition define myCalView CALVIEW Feiertage next überhaupt korrekt? Oder muss da 0 oder 1 oder 2 stehen? (Referenz und Wiki sind sich da nicht einig.)

Fehlt mir da irgend etwas? Eine PERL-Funktion? Ein Trigger? Oder was ganz anderes?

Magst Du mir mal Deine Konfiguration zeigen (gern als PN)?
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: OdfFhem am 13 Oktober 2018, 03:09:44
Ich habe es jetzt mal in meiner Testinstanz ausprobiert.

Szenario #1: Ich habe die ics-Datei aus #7 auf einen Eintrag reduziert, dann ein Calendar-Device angelegt und abschließend ein CALVIEW-Device.


BEGIN:VCALENDAR
PRODID:-//calcurse//NONSGML v4.0.0//EN
VERSION:2.0
BEGIN:VEVENT
DTSTART:20180126
RRULE:FREQ=YEARLY;BYMONTH=01;BYMONTHDAY=26
SUMMARY: A Geburtstag
END:VEVENT
END:VCALENDAR


defmod Testkalender Calendar ical file FHEM/test.ics 86400
attr Testkalender hideOlderThan 3600s


defmod TestkalenderView CALVIEW Testkalender 1
attr TestkalenderView modes next


--> Ergebnis: 26.01.2018 sowie 26.01.2019 werden im CALVIEW-Device angezeigt.

Szenario #2: Ich habe die ics-Datei aus #7 auf einen Eintrag reduziert und ein DTEND hinzugefügt, dann ein Calendar-Device angelegt und abschließend ein CALVIEW-Device.


BEGIN:VCALENDAR
PRODID:-//calcurse//NONSGML v4.0.0//EN
VERSION:2.0
BEGIN:VEVENT
DTSTART:20180126
DTEND:20180127
RRULE:FREQ=YEARLY;BYMONTH=01;BYMONTHDAY=26
SUMMARY: A Geburtstag
END:VEVENT
END:VCALENDAR


defmod Testkalender Calendar ical file FHEM/test.ics 86400
attr Testkalender hideOlderThan 3600s


defmod TestkalenderView CALVIEW Testkalender 1
attr TestkalenderView modes next


--> Ergebnis: nur der 26.01.2019 wird im CALVIEW-Device angezeigt.

==> Die ics-Datei aus #7 scheint zwar korrekt, aber das Calendar-Device erwartet wohl auf jeden Fall eine DTEND-Angabe.


Laut RFC5545 gilt
Zitat
The "DTEND" property for a "VEVENT" calendar component specifies the non-inclusive end of the event. For cases where a "VEVENT" calendar component specifies a "DTSTART" property with a DATE value type but no "DTEND" nor "DURATION" property, the event's duration is taken to be one day.

Daher habe ich noch ein drittes und viertes Szenario getestet.


BEGIN:VCALENDAR
PRODID:-//calcurse//NONSGML v4.0.0//EN
VERSION:2.0

BEGIN:VEVENT
DTSTART;VALUE=DATE:20180101
RRULE:FREQ=YEARLY
SUMMARY:Geburtstag #1
END:VEVENT

END:VCALENDAR


--> Ergebnis: 01.01.2018 sowie 01.01.2019 werden im CALVIEW-Device angezeigt.


BEGIN:VCALENDAR
PRODID:-//calcurse//NONSGML v4.0.0//EN
VERSION:2.0

BEGIN:VEVENT
DTSTART;VALUE=DATE:20180101T000000
DTEND;VALUE=DATE:20180101T235959
RRULE:FREQ=YEARLY
SUMMARY:Geburtstag #1
END:VEVENT

END:VCALENDAR


--> Ergebnis: nur der 01.01.2019 wird im CALVIEW-Device angezeigt.


==> Ohne DTEND scheint das Calendar-Device nicht (korrekt) zu funktionieren. Entweder muss also eine DTEND-Angabe in der ics-Datei enthalten sein oder der Modulautor muss eine Modulanpassung vornehmen.
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 13 Oktober 2018, 03:33:25
Der Teil war mir klar. Ich nehme aber mal @Dr. Boris Neubert @System rein:
Boris, das Modul Calendar behandelt wiederkehrende Termine falsch: Siehe oben.

@OdfFhem
Das ist aber gar nicht meine Baustelle - notfalls bekommt jeder Termin ein DTEND 2068-12-31, da sind wir nicht zimperlich.

Mein Problem ist, dass die Geburtstage (andere Termine) nicht "ab heute" dargestellt werden. Und das betrifft sowohl CalView (vergangene Termine werden dargestellt) als auch FTUI Widget Calview (gar kein Termin wird dargestellt.

Ohne Frage sitzt das Problem vor dem Bildschirm - und das bin ich. Ich finde leider keine so einigermaßen nachvollziehbare Anleitung, lediglich vermutlich veraltete solche. Lies bitte meinen Beitrag #9 nochmals, da versuchte die die Problemlage darzustellen.

Ich danke Dir für Deine selbstlosen Mühen.

P.S: @chris1284
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: OdfFhem am 13 Oktober 2018, 03:49:37
Scheinbar existiert hier tatsächlich ein Verständnisproblem.

DTEND gibt nicht das Ende des Geburtstagszyklus an - also das Ende der Wiederholungen, sondern nur das Ende des Geburtstages des ersten Jahres.

DTEND 2068-12-31 bringt also gar nichts, da der erste und alle Geburtstage der Folgejahre dann bis zum 31.12.2068 dauern würden.

Also eher

DTSTART:20180126
DTEND:20180127


statt


DTSTART:20180126
DTEND:20680127


Die Wiederholungen laufen automatisch so lange, bis der Geburtstag aus der Datei entfernt wird.
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 13 Oktober 2018, 04:01:41
Zitat von: OdfFhem am 13 Oktober 2018, 03:49:37
Scheinbar existiert hier tatsächlich ein Verständnisproblem.

Eins?
Wenn ich das könnte, würde ich Dich hier nicht nerven. Ich kann es nicht - und das hat wohl weniger mit DTEND zu tun.

Aber kurz zum Thema DTSTART/DTEND:
Meine Mutter ist am 11.11.1911 geboren - beispielhaft. Also setze ich DTSTART/DTEND auf genau diesen Tag? In der zusätzlichen Hoffnung, dass die im Forum schon besprochene Altersberechnung dann klappen wird?
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: OdfFhem am 13 Oktober 2018, 04:30:43
Um das gesamte Problem zu lösen, sollten wir das Problem in mehrere Schritte unterteilen.

Dein erstes Problem ist ja schon mal, dass die definierten Geburtstage nicht enden.
Damit Geburtstage enden und bereits vergangene Geburtstage nicht mehr angezeigt werden, ist es notwendig, in der ics-Datei eine DTEND-Angabe je Geburtstag einzupflegen.

Zur Lösung gibt es u.a. zwei Möglichkeiten:
1) DTEND als Folgetag (11.11.1911,00:00:00 - 12.11.1911,00:00:00)

DTSTART:19111111
DTEND:19111112


oder

2) DTSTART und DTEND am gleichen Tag, aber mit expliziter Start- und Endezeit (11.11.1911,00:00:00 - 11.11.1911,23:59:59)

DTSTART;VALUE=DATE:19111111T000000
DTEND;VALUE=DATE:19111111T235959


Wenn die ics-Datei entsprechend angepasst und der Kalender neu geladen wurde, sollten keine vergangenen Geburtstage mehr angezeigt werden.


Erst wenn dieses erste Teilproblem gelöst ist, sollten wir uns um FTUI und Altersberechnung kümmern.



Edit: Folgende Kombination scheint  auch zu funktionieren

DTSTART:19111111
DTEND:19111111
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: OdfFhem am 13 Oktober 2018, 05:20:05
Ich habe mir schon mal angesehen, was für eine Altersberechnung zu tun ist.

Ganz ohne eigene Perl-Routinen, bietet sich die bereits im CALVIEW-Device integrierte Funktionalität an.

Dazu muss nur das Geburtsjahr in der ics-Datei in einem der Felder SUMMARY oder DESCRIPTION angegeben
und die Attribute isbirthday sowie yobfield im CALVIEW-Device gesetzt werden.

Schon hat man ein zusätzliches Reading pro Geburtstag, in dem das berechnete Alter hinterlegt ist.



Ein lauffähiges Beispiel mit Altersberechnung und FTUI-Darstellung könnte dann z.B. so aussehen:


BEGIN:VCALENDAR
PRODID:-//calcurse//NONSGML v4.0.0//EN
VERSION:2.0
BEGIN:VEVENT
DTSTART:19111111
DTEND:19111111
RRULE:FREQ=YEARLY
SUMMARY: Geburtstag meiner Mutter
DESCRIPTION: 1911
END:VEVENT
END:VCALENDAR



defmod Testkalender Calendar ical file FHEM/test.ics 86400
attr Testkalender hideOlderThan 3600s



defmod TestkalenderView CALVIEW Testkalender 1
attr TestkalenderView isbirthday 1
attr TestkalenderView modes next
attr TestkalenderView yobfield _description



<div data-type="calview" data-device="TestkalenderView" data-get="all"
                         data-detail='["bdate","summary","age","daysleftLong"]'
                         data-detailwidth='["15","55","10","20"]'
data-showempty="true"
data-sourcecolor="yes"
data-dateformat="long"
data-timeformat="short"
data-oneline="yes"/>

Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 13 Oktober 2018, 06:02:24
Zitat von: OdfFhem am 13 Oktober 2018, 05:20:05
Ich habe mir schon mal angesehen, was für eine Altersberechnung zu tun ist.

Du hast doch gerade gesagt, dass wir ganz schrittweise vorgehen wollen? (Ja, ich weiß, dass die Altersberechnung geht.)

Ich habe nun Deine Testversion umgesetzt, vielleicht sogar falsch umgesetzt:

cat geburtstage.ics
BEGIN:VCALENDAR
PRODID:-//calcurse//NONSGML v4.0.0//EN
VERSION:2.0
BEGIN:VEVENT
DTSTART:19111111
DTEND:19111111
RRULE:FREQ=YEARLY
SUMMARY: Geburtstag meiner Mutter
DESCRIPTION: 1911
END:VEVENT
END:VCALENDAR


Ergebnis der Veranstaltung ist, dass ich den Termin weder in FHEM noch in FTUI sehe. Da ist genau NICHTS!

Das Reading selbst scheint zu existieren: list Geburtstage

Internals:
   DEF        ical file www/calendar/geburtstage.ics 86400
   NAME       Geburtstage
   NOTIFYDEV  global
   NR         729
   NTFY_ORDER 50-Geburtstage
   STATE      triggered
   TYPE       Calendar
   READINGS:
     2018-10-13 05:37:23   lastUpdate      2018-10-13 05:37:23
     2018-10-08 02:34:42   modeAlarm       
     2018-10-13 05:31:43   modeAlarmOrStart
     2018-10-08 02:34:42   modeAlarmed     
     2018-10-08 02:34:42   modeChanged     
     2018-10-08 02:34:42   modeEnd         
     2018-10-08 02:34:42   modeEnded       
     2018-10-13 05:31:43   modeStart       
     2018-10-08 02:34:42   modeStarted     
     2018-10-13 05:31:43   modeUpcoming    synthetic000004
     2018-10-13 05:37:23   nextUpdate      2018-10-14 05:37:23
     2018-10-13 05:37:23   nextWakeup      2018-10-14 05:37:23
     2018-10-13 05:37:23   state           triggered
Attributes:
   group      Calendar
   hideLaterThan 20d
   hideOlderThan 2d
   room       99_System


<seufzt>
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: OdfFhem am 13 Oktober 2018, 07:40:33
Dass Du nichts siehst, liegt daran, dass Du nicht genau die Testversion übernommen hast.

Das Attribut hideLaterThan blendet alle Geburtstage, die erst in 20 oder mehr Tagen sind, aus.
Darunter fällt dann auch der 11.11.

Also das Attribut entweder auf einen größeren Wert setzen oder (zunächst einmal) löschen.



Edit: Anschließend auf jeden Fall noch einmal das Calendar-Device reloaden.
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: Prof. Dr. Peter Henning am 13 Oktober 2018, 10:54:36
ZitatIch habe nun Deine Testversion umgesetzt, vielleicht sogar falsch umgesetzt:

Es ist oben bereits eindeutig erklärt worden, dass ein Eintrag immer ein DTEND-Tag haben muss, das einen anderen (späteren) Wert als den von DTSTART beinhaltet. Entweder später am gleichen Tag, oder an einem beliebigen Folgetag.

Ebenso ist klar gesagt worden, dass das Attribut hideLaterThan im Calender-Device zu setzen ist.

Mein Tipp @curt: Vielleicht einfach genauer lesen, was als Antwort gegeben wurde - das hätte in diesem Thread 2/3 der Nachfragen erspart.

Zu Thema der händischen Erzeugung von ical-Files: Das sollte man bleiben lassen, weil es sehr fehleranfällig ist. Wie wir oben gesehen haben ...

Stattdessen besser eine einfache XML-Datei erzeugen,

<?xml version="1.0" encoding="UTF-8"?>
<birthdays>
  <birthday>
      <name>X.</name>
      <date>29. April 1958</date>
  </birthday>
    <birthday>
        <name>Y...</name>
        <date>1. November 1960</date>
    </birthday>
    <birthday>
        <name>R...</name>
        <date>27. Dezember 1988</date>
    </birthday>
    <birthday>
        <name>R...</name>
        <date>25. November 1991</date>
    </birthday>
    <birthday>
        <name>D..</name>
        <date>20. Januar 2000</date>
    </birthday>
</birthdays>

Ferner diese Datei hier als calendartransform.xsl abspeichern
<?xml version="1.0" encoding="UTF-8"?>
<!--
########################################################################################
#
# calendartransform.xsl
#
# Prof. Dr. Peter A. Henning 2012
#
########################################################################################
#
#  This programm is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  The GNU General Public License can be found at
#  http://www.gnu.org/copyleft/gpl.html.
#  A copy is found in the textfile GPL.txt and important notices to the license
#  from the author is found in LICENSE.txt distributed with these scripts.
#
#  This script is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
########################################################################################
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="1.0">
    <xsl:template match="/">
        BEGIN:VCALENDAR
        VERSION:2.0
        METHOD:PUBLISH
        PRODID:Prof. Dr. Peter A. Henning
        <xsl:apply-templates select="//restmuell">
            <xsl:with-param name="text">Restmüllabfuhr</xsl:with-param>
        </xsl:apply-templates>
        <xsl:apply-templates select="//altpapier">
            <xsl:with-param name="text">Altpapiersammlung</xsl:with-param>
        </xsl:apply-templates>
        <xsl:apply-templates select="//wertstoffmuell">
            <xsl:with-param name="text">Wertstoffmüllabfuhr</xsl:with-param>
        </xsl:apply-templates>
        <xsl:apply-templates select="//birthdays">
            <xsl:with-param name="text">Geburtstage</xsl:with-param>
        </xsl:apply-templates>
        END:VCALENDAR
    </xsl:template>
    <xsl:template match="termin">
        <xsl:param name="text"/>
        <xsl:variable name="r1" select="substring-after(.,', ')"/>
        <xsl:variable name="d" select="substring-before($r1,'. ')"/>
        <xsl:variable name="r2" select="substring-after($r1,'. ')"/>
        <xsl:variable name="m" select="substring-before($r2,' ')"/>
        <xsl:variable name="mm">
            <xsl:choose>
                <xsl:when test="$m='Januar'">01</xsl:when>
                <xsl:when test="$m='Februar'">02</xsl:when>
                <xsl:when test="$m='März'">03</xsl:when>
                <xsl:when test="$m='April'">04</xsl:when>
                <xsl:when test="$m='Mai'">05</xsl:when>
                <xsl:when test="$m='Juni'">06</xsl:when>
                <xsl:when test="$m='Juli'">07</xsl:when>
                <xsl:when test="$m='August'">08</xsl:when>
                <xsl:when test="$m='September'">09</xsl:when>
                <xsl:when test="$m='Oktober'">10</xsl:when>
                <xsl:when test="$m='November'">11</xsl:when>
                <xsl:when test="$m='Dezember'">12</xsl:when>
            </xsl:choose>   
        </xsl:variable>
        BEGIN:VEVENT
        CREATED:20180207T210000Z
        LAST-MODIFIED:20180207T210000Z
        DTSTAMP:20180207T210000Z
        DTSTART;VALUE=DATE:2018<xsl:value-of select="$mm"/><xsl:value-of select="$d"/>T050000Z
        DTEND;VALUE=DATE:2018<xsl:value-of select="$mm"/><xsl:value-of select="$d"/>T160000Z
        SUMMARY:<xsl:value-of select="$text"/>
        TRANSP:TRANSPARENT
        UID:<xsl:text>M_2018</xsl:text><xsl:value-of select="$mm"/><xsl:value-of select="$d"/>
        BEGIN:VALARM
        TRIGGER:-PT12H
        ACTION:DISPLAY
        END:VALARM
        END:VEVENT
    </xsl:template>
    <xsl:template match="birthday">
        <xsl:param name="text"/>
        <xsl:variable name="name" select="name"/>
        <xsl:variable name="date" select="date"/>
        <xsl:variable name="d" select="substring-before($date,'. ')"/>
        <xsl:variable name="r2" select="substring-after($date,'. ')"/>
        <xsl:variable name="m" select="substring-before($r2,' ')"/>
        <xsl:variable name="mm">
            <xsl:choose>
                <xsl:when test="$m='Januar'">01</xsl:when>
                <xsl:when test="$m='Februar'">02</xsl:when>
                <xsl:when test="$m='März'">03</xsl:when>
                <xsl:when test="$m='April'">04</xsl:when>
                <xsl:when test="$m='Mai'">05</xsl:when>
                <xsl:when test="$m='Juni'">06</xsl:when>
                <xsl:when test="$m='Juli'">07</xsl:when>
                <xsl:when test="$m='August'">08</xsl:when>
                <xsl:when test="$m='September'">09</xsl:when>
                <xsl:when test="$m='Oktober'">10</xsl:when>
                <xsl:when test="$m='November'">11</xsl:when>
                <xsl:when test="$m='Dezember'">12</xsl:when>
            </xsl:choose>   
        </xsl:variable>
        BEGIN:VEVENT
        CREATED:20180207T210000Z
        LAST-MODIFIED:20180207T210000Z
        DTSTAMP:20180207T210000Z
        DTSTART;VALUE=DATE:2018<xsl:value-of select="$mm"/><xsl:value-of select="$d"/>T000000
        DTEND;VALUE=DATE:2018<xsl:value-of select="$mm"/><xsl:value-of select="$d"/>T235900
        RRULE:FREQ=YEARLY
        SUMMARY:<xsl:value-of select="$name"/>
        TRANSP:TRANSPARENT
        UID:<xsl:text>M_2018</xsl:text><xsl:value-of select="$mm"/><xsl:value-of select="$d"/>
        BEGIN:VALARM
        TRIGGER:-PT36H
        ACTION:DISPLAY
        END:VALARM
        END:VEVENT
    </xsl:template>
</xsl:stylesheet>

und mit dem Mini-Perl-Programm
use XML::LibXSLT;
use XML::LibXML;

my $xml_parser  = XML::LibXML->new;
my $xslt_parser = XML::LibXSLT->new;

my $xml         = $xml_parser->parse_file('birthday.xml');
my $xsl         = $xml_parser->parse_file('calendartransform.xsl');

my $stylesheet  = $xslt_parser->parse_stylesheet($xsl);
my $results     = $stylesheet->transform($xml);

print $stylesheet->output_string($results);

daraus eine wirklich (!) gültige ical-Datei erzeugen. Geht übrigens auch für Mülltermine...

LG

pah
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 13 Oktober 2018, 21:25:48
@OdfFhem
Zitat von: OdfFhem am 13 Oktober 2018, 07:40:33
Dass Du nichts siehst, liegt daran, dass Du nicht genau die Testversion übernommen hast.
Das Attribut hideLaterThan blendet alle Geburtstage, die erst in 20 oder mehr Tagen sind, aus.
Darunter fällt dann auch der 11.11.

Du hast recht. Irgendwann ist es spät und man sieht den Wald vor lauter Bäumen nicht mehr.

Zitat von: OdfFhem am 13 Oktober 2018, 05:20:05
Ich habe mir schon mal angesehen, was für eine Altersberechnung zu tun ist.
Ganz ohne eigene Perl-Routinen, bietet sich die bereits im CALVIEW-Device integrierte Funktionalität an.

Heute habe ich mich schrittweise durchgearbeitet.
Wow. Perfekt. - Danke vor allem, dass nicht nur sagtest, dass das geht, sondern den Code hier öffentlich zeigtest.

Aus meiner Sicht gehört das Codebeispiel #15 in https://wiki.fhem.de/wiki/FTUI_Widget_Calview machst Du das oder soll ich das machen? Oder @chris1284 ?

OdfFhem: Wenn ich meinen Papporden "Selbstloser Helfer" verleihen dürfte, würde ich ihn Dir verleihen. Danke!

P.S: Dein Codebeispiel (sanft verändert) nun in https://wiki.fhem.de/wiki/FTUI_Widget_Calview
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 13 Oktober 2018, 21:35:47
@System
Zitat von: Prof. Dr. Peter Henning am 13 Oktober 2018, 10:54:36
Es ist oben bereits eindeutig erklärt worden, dass ein Eintrag immer ein DTEND-Tag haben muss,

Und das sagt wer? Das mag ja für das FHEM-Universum gelten. Aber dann hält es sich nicht an den Standard, dieser heißt RFC 5545. Dort steht klar, dass DTEND nicht zwingend ist. Dort steht darüber hinaus ganz konkret, wie zu verfahren ist, wenn DTEND fehlt.

Aus meiner Sicht bedeutet das, dass FHEM-Calendar sich an diesem Punkt nicht an den Standard hält. Kann man machen. Aber das bedeutet, dass eigentlich valide iCal scheitern.

Und ja: Meine iCal-Datei war valide, erzeugt von calcurse. Nicht von Hand erzeugt, wie Du annahmst.

Zitat von: Prof. Dr. Peter Henning am 13 Oktober 2018, 10:54:36
Ebenso ist klar gesagt worden, dass das Attribut hideLaterThan im Calender-Device zu setzen ist.

Mit welcher Begründung?

Zitat von: Prof. Dr. Peter Henning am 13 Oktober 2018, 10:54:36
Stattdessen besser eine einfache XML-Datei erzeugen,

Interessanter Ansatz. Ändert aber nichts daran, dass externe iCal, die standardkonform kein DTEND haben, bei FHEM-Calendar scheitern.

Nenne dieses Posting halt Bugreport.
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: OdfFhem am 14 Oktober 2018, 02:59:48
@curt
Wenn man helfen kann und gerade Zeit hat, sollte Unterstützung kein Problem sein.

Bzgl. der Wiki-Pflege muss ich derzeit noch passen. Aber ich bin drauf und dran, mir einen Zugang geben zu lassen. Was ich bis dahin anbieten kann, ist das kontrolllesen des abgeänderten Wikis - falls gewünscht.

Übrigens habe ich #15 noch mal korrigiert, da die Prozentangaben in data-detailwidth ein wenig zu großzügig waren. Die neuen Angaben habe ich allerdings nicht getestet.
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: Prof. Dr. Peter Henning am 14 Oktober 2018, 05:12:04
@curt: Bei dem Tonfall erübrigt sich weitere Unterstützung.

pah
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 14 Oktober 2018, 05:30:36
@System
Zitat von: Prof. Dr. Peter Henning am 14 Oktober 2018, 05:12:04
@curt: Bei dem Tonfall erübrigt sich weitere Unterstützung.

Du meinst jetzt Deinen Tonfall?
Ja, den fand ich unangemessen. Das muss ich sehr deutlich sagen. Wir reden auf gleicher Ebene, auf Augenhöhe - oder gar nicht.

Ich habe tatsächlich den Eindruck, dass Du mit sachlicher Kritik nicht umgehen kannst - Du hast keine Unsachlichkeit von mir gelesen. Und wirst die auch nicht lesen. Das wäre weit unter meinem Niveau.

Zurück zur Sache,  RFC 5545. Dort steht:

Zitat
If such a "VEVENT" has a "DTEND" property, it MUST be specified as a DATE value also.

If  --> falls

Zitat
The "DTEND" property for a "VEVENT" calendar component specifies the non-inclusive end of the event. For cases where a "VEVENT" calendar component specifies a "DTSTART" property with a DATE value type but no "DTEND" nor "DURATION" property, the event's duration is taken to be one day.

Wenn es kein DTEND gibt, hast Du das Ende des gleichen Tages zu codieren. Steht ganz klar da.

Letzte Anmerkung:
Dein Beitrag erschüttert mich.
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: Beta-User am 14 Oktober 2018, 08:21:40
Schau mal in der cref nach Calendar "on CreateEvent". Da ist ein Plugin beschrieben...
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: Prof. Dr. Peter Henning am 14 Oktober 2018, 08:56:39
Ich empfehle einfach, die Antworten hier im Forum genauso aufmerksam zu lesen, wie RFCs.

LG

pah
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: OdfFhem am 14 Oktober 2018, 11:08:58
@curt
In #15 war noch ein Schreibfehler.

falsch
date-oneline="yes"
richtig
data-oneline="yes"

Das Attribut data-oneline - steuert, ob eine zu lange Spalte abgeschnitten  oder umgebrochen wird - ist im zugehörigen Wiki-Artikel nicht beschrieben. Da ich gesehen habe, dass Du dabei bist, den Wiki-Artikel zu überarbeiten, könntest Du ja vielleicht das fehlende Attribut nachtragen.

Zur weiteren Steuerung von oneline gab es noch folgende zusätzliche Steuerattribute; diese scheinen aber nicht mehr unterstützt zu werden. "..." wird nun wohl standardmäßig beim Abschneiden gesetzt.

data-onelinesum ; Werte=yes/no ; Wird das Feld summary abgeschnitten, dann ... am Ende setzen
data-onelinedesc ; Werte=yes/no ; Wird das Feld description abgeschnitten, dann ... am Ende setzen
data-onelineloc ; Werte= yes/no ; Wird das Feld location abgeschnitten, dann ... am Ende setzen


Daher das Attribut data-onelinesum aus #15 entfernt.
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 16 Oktober 2018, 23:36:53
Zitat von: OdfFhem am 14 Oktober 2018, 11:08:58
@curt
In #15 war noch ein Schreibfehler.

Danke für den Hinweis. Bei mir und im Wiki geändert.

Zitat von: OdfFhem am 14 Oktober 2018, 11:08:58
Zur weiteren Steuerung von oneline gab es noch folgende zusätzliche Steuerattribute; diese scheinen aber nicht mehr unterstützt zu werden. "..." wird nun wohl standardmäßig beim Abschneiden gesetzt.
...
Daher das Attribut data-onelinesum aus #15 entfernt.

In der zuständigen *.js steht
"// Modifications chris1284 13.09.2017 19:05 - nur noch oneline yes/no , onlinesum/desc/loc entfernt)" - das ist hier: /opt/fhem/www/tablet/js/widget_calview.js

BTW:
Das ist im Moment meine größte Baustelle. RPi mit offiziellem Display, Mini-X11 und als Browser Midori im Kioskmode. Dort wird jede Spalte einer Zeile umgebrochen. Nun ist natürlich schwer zu sagen, ob sich Midori oder eher das Widget knapp am Standard vorbei hangelt - mehr Verdächtige sind ja nicht auszumachen.

Midori - weil der nicht nach Hause telefoniert. Daher eigentlich ja das Mittel der Wahl.

Vielleicht kann @chris1284 kann dazu (Zeilenumbruch nach jedem data-detail-Wert etwas sagen. Oder mal schauen, wie er da die nächste Spalte formatiert.
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 20 Oktober 2018, 07:22:15
Im Code des Widget hat @OdfFhem ein bislang undokumentiertes "data-sourcecolor" gefunden. Es ist wie bei Calview in FHEM möglich, Einträge verschiedener Kalender unterschiedliche Farben zu geben. Er hat gleich ein Beispiel in Wiki https://wiki.fhem.de/wiki/FTUI_Widget_Calview eingearbeitet.

@chris1284
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 21 Oktober 2018, 02:50:41
@OdfFhem
ich denke, dass man sowas öffentlich diskutieren sollte - es gibt wohl ein Problem bei (nicht dokumentiert) weekdayname.

Wir waren an dieser Stelle (fhem.cfg):

attr <CALVIEW-Device> weekdayformat de-long
--> Montag .. Sonntag

attr <CALVIEW-Device> weekdayformat de-short
--> Mo .. So


Und bei FTUI:
data-detail='["weekdayname","bdate","summary"]'

Das fand ich für Geburtstage prima und wollte mir die de-short-Version einbauen ... und stolperte: In FTUI wird mir die long-Version angezeigt. Kannst Du das bei Dir bitte unabhängig testen?
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: OdfFhem am 21 Oktober 2018, 03:17:53
Ich habe bei mir
attr TestkalenderView weekdayformat de-short
und
set TestkalenderView update
eingegeben.

In FTUI wird alles wunschgemäß ausgegeben.

Ohne das set ... update wird die Änderung erst mit der nächsten autom. Aktualisierung wirksam.
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 21 Oktober 2018, 03:27:11
Zitat von: OdfFhem am 21 Oktober 2018, 03:17:53
Ohne das set ... update wird die Änderung erst mit der nächsten autom. Aktualisierung wirksam.

Stockfehler ...
Vorher war das Attribut bei mir überhaupt nicht gesetzt. Da nach dem Setzen sofort Resultate kamen, wäre ich nie im Traum darauf gekommen, noch ein Update für CalView anzustoßen.

Danke für den Hinweis.
Titel: Antw:[Widget Calview] Die fünf Termine ab heute
Beitrag von: curt am 06 November 2018, 00:52:19
Mein WidgetCalview-Spaltenproblem habe ich gelöst - und zwar an der Quelle. Wer schreibt, der bleibt - vielleicht hilft es ja anderen.

Basis ist ein Anzeigegerät, bestehend aus Raspberry Pi 3+, offizielles 7"-Touchscreendisplay, offizielles Gehäuse. Weiterhin Raspian sowie (nach Vorschlag C't 19/2018) extrem abgerüstetes X11. Autologin für User pi, dann wird via .bashrc der Browser im Kioskmode hochgezogen. Der Browser sollte schmal sein und insbesondere nicht nach Hause telefonieren wollen.

Als Browser hatte ich Midori. Und der zickte bei einigen Darstellungen rum, siehe oben.

Das Problem löste ich durch Installation des Browsers Vivaldi (deb-Paket für ARM gibt es).

Die Installation war etwas hakelig: dpkg -i scheiterte, da fünf Pakete fehlten. Installation der fünf Pakete scheiterte, da nun wieder die Paketverwaltung Vivaldi schon kannte ... also Vivaldi deinstallieren (dpkg -P). Fünf Pakete installieren (die ziehen noch weitere nach - aber bei weitem nicht so viel wie eine vollständige X11-Umgebung), dann Vivaldi neu installieren. Tut.