57_CALVIEW - Erweiterungsmodul für 57_CALENDAR

Begonnen von chris1284, 28 Dezember 2016, 18:12:33

Vorheriges Thema - Nächstes Thema

chris1284

aktuell noch nichts brauchbares (noch nicht)

blasterx

OK. Trotzdem ein großes Danke für das hervorragende Modul. Also ist das Reading t_xxx_weekday noch nicht nutzbar und die 2 in meinen Readings ist ein fiktiver Wert?

Gruß BlasterX
Gruß-BlasterX

chris1284

es ist immer der Weekday als Zahl von "heute". Ich habe es bisher nur hin bekommen in perl den Wekkday von Datum x über libdate-calc-perl (Date::Calc) einzubauen. Was bedeutet dass man sich ein perl Modul installieren müsste. Diese Version läuft hier einwandfrei und zeigt sauber den Wochentagsnamen sowie den Wochetag als Zahl. Ich habe nur ein Problem das einzuchecken weil nach einem Update das Modul nicht lauffähig wäre bis man den Heinweis ließt das man Date::Calc (cpan) oder libdate-calc-perl (apt paket) installiert.

Florian_GT

Zitat von: chris1284 am 09 Oktober 2017, 18:20:51
es ist immer der Weekday als Zahl von "heute". Ich habe es bisher nur hin bekommen in perl den Wekkday von Datum x über libdate-calc-perl (Date::Calc) einzubauen. Was bedeutet dass man sich ein perl Modul installieren müsste. Diese Version läuft hier einwandfrei und zeigt sauber den Wochentagsnamen sowie den Wochetag als Zahl. Ich habe nur ein Problem das einzuchecken weil nach einem Update das Modul nicht lauffähig wäre bis man den Heinweis ließt das man Date::Calc (cpan) oder libdate-calc-perl (apt paket) installiert.

Ich finde das ist ok. Du kannst ja die Leute entsprechend per Change Text und per Info hier benachrichtigen. Wenn sich daran jemand stören sollte, könnte man ja mal darüber nachdenken, ob man dafür nicht eine Funktion schreibt, Standardmäßig für jedes Module, wo dann die Abhängigkeiten angegeben werden, und wo dann in FHEM als auch im Log eine Info erscheint, sollte es nicht erfüllte Abhängigkeiten geben. Oder gar eine Routine die diese automatisch auf Wunsch installiert.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

mumpitzstuff

Warum brauchst du das für den weekday? Aktuell gibst du übrigens immer den weekday von morgen aus. Die Tage bis zum Termin rechnest du doch schon aus, deshalb ergibt sich dann:
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time + (86400 * Tage bis Termin));

Das Ergebnis steht dann in $wday. Oder hab ich einen Denkfehler drin?

chris1284

Vielen Dnak mumpitzstuff! Ich hatte nicht bedacht mit localtime zu rechnen...

Morgen ist das Modul im Fhem update, jetzt schon das widget sowie das Modul im github.
Es gibt 2 Readings neu: weekday (Wochentag Nr) weekdayname (der Wochentag ausgesprochen)
Es gibt ein neues Attribut weekdayname mit möglichen werten de-long, de-short,en-long,en-short

Werden weitere Sprachen benötigt könnte das sicher eingefügt werden

fretti

Hallo Chris,

vielen Dank für das tolle Widget mit den neuen Optionen.

Allerdings habe ich immer noch teilweise ein Problem mit den ganztägigen Terminen, mal sind sie richtig und manchmal steht immer noch 00:00 - 00:00 drin, obwohl sie lt. calView-Objekt von 00:00 des einen Tages bis 00:00 des Folgetages gehen (Bilder 1+2).

Außerdem bekomme ich im Widget das Alter nicht angezeigt, obwohl es im CalView-Objekt richtig drin steht (3. Bild).


<div data-type="calview"
            data-device="vMyCalendar"
            data-get="all"
            data-start="notomorrow"
            data-showempty="false"
            data-max="10"
            data-detail='["bdate","timeshort","summary","age"]'
            data-detailwidth='["15","30","50","5"]'
            data-oneline="yes"
            data-dateformat="short"
            data-timeformat="short"
            data-class="left-align top-narrow-10">
        </div> 


Hast Du eine Idee.

Und wenn ich einen noch einen Wunsch äußern darf.
Besteht die Möglichkeit beim Reading timeshort festzulegen, ob man nur die Anfangszeit, die Endzeit oder beides angezeigt bekommt?
Ich bräuchte nur die Anfangszeit, möchte aber nicht auf die "Ganztagstermine" verzichten.
Oder kann man das anders lösen.

Vielen Dank. Thomas
promox, debian, rpi, homematic, mqtt, dect, z2m

chris1284

das Alter im widget ist gefixed.
das Ganztagsproblem betrifft wohl aktuell nur Termine wo Start- und Endtag Monatsende und Anfang betreffen (die Prüfung ist sehr sehr simpel da sie nur schaut ist Startag + 1 = Endtag => beim Refo wäre das also nicht der Fall: 31 +1 = 32 und Endtag = 01....)

Ich schau es mir heute Nachmittag an

mumpitzstuff

#158
Das wird dein Problem bis auf ein paar Sonderfälle lösen.


if (($startDate ne $endDate) && ($startTime eq $endTime))
{
  $appointment = 'ganztägig';
}


Sonderfall (nicht abgedeckt):
start: 01.01.2017   00:00
end: 02.02.2017   18:00

100% Lösung:

Berechne dir vom Startdatum/Zeit die Sekunden von 1970 an und von Enddatum/Zeit ebenfalls. Liegen dazwischen mindestens 86400 Sekunden, dann ist das ein Ganztagsevent mit einer Länge von mehr als 24h. Wobei das natürlich eine Definitionsfrage ist, ob ein halber Tag + ein dreiviertel Tag ein Ganztagesevent darstellt oder eben nicht. Aber auch das könnte man abfangen, da würde die Abfrage dann aber wesentlich komplizierter sein. Wenn es wirklich nötig ist, dann kann ich mir dazu noch mal Gedanken machen.

mumpitzstuff

Falls jemand noch eine readingsgroup benötigt. Alles was ich gefunden habe, hat nur mit einem separaten Notify funktioniert... Maximal 20 Termine werden angezeigt, bei Bedarf kann das aber beliebig erweitert werden.


defmod rg_Kalender readingsGroup <Datum>,<Zeit>,<Termin>,<Ort>\
KALENDER_VIEW:t_001_bdate,t_001_timeshort,t_001_summary,t_001_location\
KALENDER_VIEW:t_002_bdate,t_002_timeshort,t_002_summary,t_002_location\
KALENDER_VIEW:t_003_bdate,t_003_timeshort,t_003_summary,t_003_location\
KALENDER_VIEW:t_004_bdate,t_004_timeshort,t_004_summary,t_004_location\
KALENDER_VIEW:t_005_bdate,t_005_timeshort,t_005_summary,t_005_location\
KALENDER_VIEW:t_006_bdate,t_006_timeshort,t_006_summary,t_006_location\
KALENDER_VIEW:t_007_bdate,t_007_timeshort,t_007_summary,t_007_location\
KALENDER_VIEW:t_008_bdate,t_008_timeshort,t_008_summary,t_008_location\
KALENDER_VIEW:t_009_bdate,t_009_timeshort,t_009_summary,t_009_location\
KALENDER_VIEW:t_010_bdate,t_010_timeshort,t_010_summary,t_010_location\
KALENDER_VIEW:t_011_bdate,t_011_timeshort,t_011_summary,t_011_location\
KALENDER_VIEW:t_012_bdate,t_012_timeshort,t_012_summary,t_012_location\
KALENDER_VIEW:t_013_bdate,t_013_timeshort,t_013_summary,t_013_location\
KALENDER_VIEW:t_014_bdate,t_014_timeshort,t_014_summary,t_014_location\
KALENDER_VIEW:t_015_bdate,t_015_timeshort,t_015_summary,t_015_location\
KALENDER_VIEW:t_016_bdate,t_016_timeshort,t_016_summary,t_016_location\
KALENDER_VIEW:t_017_bdate,t_017_timeshort,t_017_summary,t_017_location\
KALENDER_VIEW:t_018_bdate,t_018_timeshort,t_018_summary,t_018_location\
KALENDER_VIEW:t_019_bdate,t_019_timeshort,t_019_summary,t_019_location\
KALENDER_VIEW:t_020_bdate,t_020_timeshort,t_020_summary,t_020_location
attr rg_Kalender nonames 1
attr rg_Kalender notime 1
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";;\
    }\
  }\
}

caldir65

#160
Moin,

ich habe jetzt in der Sufu leider dazu nichts gefunden - werden evtl. im Kalender vorhandene Kategorien nicht mit ausgewertet? In meinen Readings ist jedenfalls nichts zu sehen, jedoch sind die Kategorien in der vom NextCloud abgeholten Kalender vorhanden:

BEGIN:VEVENT
DTSTAMP:20171030T080753Z
CREATED:20171030T073326Z
UID:libkcal-613483831.795
SEQUENCE:2
LAST-MODIFIED:20171030T080753Z
DESCRIPTION:einmaliger Feiertag wg. 500 Jahre Reformation Martin Luther
SUMMARY:Reformationstag
LOCATION:Bakum
CATEGORIES:Feiertag                              <=====
DTSTART;VALUE=DATE:20171031
DTEND;VALUE=DATE:20171101
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR


Dies ist jetzt nur ein Eintrag des fraglichen Kalenders ...

Hier die Kalenderdefinition:
ical url https://name:passwort@server/remote.php/dav/calendars/christoph/urlaubs-kalender/?export 86400

Ich würde die Kategorien nämlich gerne auswerten für verschiedene Aktionen innerhalb von fhem ... ;) (z.B. Roolofahren bei Urlaub etc :D)

Gruß, CHristoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 64GB SSD, Lubuntu 22.04LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

chris1284

Die Frage ist ob die CATEGORIES schon vom Kalender ausgewertet werden. Musst du mal schauen, wenn ja kann mans in CALVIEW einbauen

caldir65

Hm, zumindest ein get Kalender full all ergibt diesbezüglich nichts - ich habe einmal entsprechend für das Modul angefragt ...
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 64GB SSD, Lubuntu 22.04LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

Mave

Bei mir stehen für den heutigen Tage 2 Ganztagstermine - einmal mit "ganztags" und einmal mit "00:00-00:00".

Kann also nichts mit Monatsende zu tun haben....

chris1284

ich brauch start und ende beider termine aus den readings