57_CALVIEW - Erweiterungsmodul für 57_CALENDAR

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

Vorheriges Thema - Nächstes Thema

curt

Danke für den Hinweis.

Das Codefragment aus #221 dieses Threads habe ich nun händisch (jaja) in fhem.cfg eingetragen. Und es wird von FHEM auch akzeptiert, das ist schon mal schön. Nur zeigt es außer einer leeren Tabelle nichts an. Weil da wohl die konkrete Verbindung zu meinem CALVIEW-define fehlt. Wie man die macht, weiß ich leider auch nicht.

So sieht das bei mir aus (Feiertage ist bei mir das Calendar-device): define myCalView CALVIEW Feiertage 2
attr myCalView group _KalenderView_
attr myCalView maxreadings 10
attr myCalView modes next
attr myCalView room 06 Kalender
#attr myCalView mapping %READING
#attr myCalView modes next

(Die letzten beiden auskommentiert, die scheint es nicht mehr zu geben.

Kannst Du (oder jemand) mir bitte sagen, wie man das richtig macht?
RPI 4 - Jeelink HomeMatic Z-Wave

mumpitzstuff

Poste mal beides zusammen. Dein CALVIEW Device und deine ReadingsGroup dazu. Die ReadingsGroup musst du natürlich angepasst haben und dein CALVIEW Device entsprechend eingetragen haben...

curt

define Feiertage Calendar ical file www/calendar/feiertage_sachsen-anhalt_2018.ics 86400
attr Feiertage room Kontrollraum


define myCalView CALVIEW Feiertage 2
attr myCalView group _KalenderView_
attr myCalView maxreadings 10
attr myCalView modes next
attr myCalView room 06 Kalender
#attr myCalView mapping %READING
#attr myCalView modes next

define rg_KALENDER readingsGroup <Datum>,<Tag>,<Zeit>,<Termin>,<Ort>\
KALENDER_VIEW:t_001_bdate,t_001_weekday,t_001_timeshort,t_001_summary,t_001_location\
KALENDER_VIEW:t_002_bdate,t_002_weekday,t_002_timeshort,t_002_summary,t_002_location\
KALENDER_VIEW:t_003_bdate,t_003_weekday,t_003_timeshort,t_003_summary,t_003_location\
KALENDER_VIEW:t_004_bdate,t_004_weekday,t_004_timeshort,t_004_summary,t_004_location\
KALENDER_VIEW:t_005_bdate,t_005_weekday,t_005_timeshort,t_005_summary,t_005_location\
KALENDER_VIEW:t_006_bdate,t_006_weekday,t_006_timeshort,t_006_summary,t_006_location\
KALENDER_VIEW:t_007_bdate,t_007_weekday,t_007_timeshort,t_007_summary,t_007_location\
KALENDER_VIEW:t_008_bdate,t_008_weekday,t_008_timeshort,t_008_summary,t_008_location\
KALENDER_VIEW:t_009_bdate,t_009_weekday,t_009_timeshort,t_009_summary,t_009_location\
KALENDER_VIEW:t_010_bdate,t_010_weekday,t_010_timeshort,t_010_summary,t_010_location\
KALENDER_VIEW:t_011_bdate,t_011_weekday,t_011_timeshort,t_011_summary,t_011_location\
KALENDER_VIEW:t_012_bdate,t_012_weekday,t_012_timeshort,t_012_summary,t_012_location\
KALENDER_VIEW:t_013_bdate,t_013_weekday,t_013_timeshort,t_013_summary,t_013_location\
KALENDER_VIEW:t_014_bdate,t_014_weekday,t_014_timeshort,t_014_summary,t_014_location\
KALENDER_VIEW:t_015_bdate,t_015_weekday,t_015_timeshort,t_015_summary,t_015_location\
KALENDER_VIEW:t_016_bdate,t_016_weekday,t_016_timeshort,t_016_summary,t_016_location\
KALENDER_VIEW:t_017_bdate,t_017_weekday,t_017_timeshort,t_017_summary,t_017_location\
KALENDER_VIEW:t_018_bdate,t_018_weekday,t_018_timeshort,t_018_summary,t_018_location\
KALENDER_VIEW:t_019_bdate,t_019_weekday,t_019_timeshort,t_019_summary,t_019_location\
KALENDER_VIEW: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").'"'\
}

RPI 4 - Jeelink HomeMatic Z-Wave

mumpitzstuff

Ersetze mal in der Readingsgroup KALENDER_VIEW durch myCalView.

curt

Ahh - Prinzip nun verstanden, danke!

Allerdings - ich weiß nicht ob das nun bug oder feature ist: Alle Termine sind weiß auf gelb. Auf den ersten Blick finde ich aber nur einmal "white" und habe das durch blue ersetzt - was ihn nicht sonderlich beeindruckte. Wird in dieser Konstruktion etwa die Schriftfarbe automatisiert je nach TAgesdifferenz verändert? Oder mache ich etwas falsch?

Und bitte noch eine Frage:
Da sind ja mehrere Kalender im Spiel, in den Beispielen Ferien, Feiertage, Abfall. Wie bekommt man denn mehrere Kalender in nur eine solche Tabelle?
RPI 4 - Jeelink HomeMatic Z-Wave

mumpitzstuff

Keine Ahnung wo das Gelb her kommt, aus der readingsGroup jedenfalls nicht. Da wird nur in Abhängigkeit vom Attribut sourcecolor die Schriftfarbe gesetzt. Der default Wert ist weiß. sourcecolor ist ein Attribut in deinem CALVIEW Device.

Theoretisch kann man mehrere Kalender in einer Readingsgroup anzeigen lassen, dann passt aber die Reihenfolge der Termine nicht mehr. Besser ist es ein CALVIEW mit allen Terminen zu haben und davon eine readingsGroup zu erstellen.

curt

Zitat von: mumpitzstuff am 15 April 2018, 01:11:43
sourcecolor ist ein Attribut in deinem CALVIEW Device.

Ahhh - da wäre ich nicht im Traum darauf gekommen. War noch etwas hakelig - aber jetzt habe ich es. Danke!

Zitat von: mumpitzstuff am 15 April 2018, 01:11:43
Theoretisch kann man mehrere Kalender in einer Readingsgroup anzeigen lassen, dann passt aber die Reihenfolge der Termine nicht mehr. Besser ist es ein CALVIEW mit allen Terminen zu haben und davon eine readingsGroup zu erstellen.

Wie würde man das denn mit CALVIEW anstellen? Ich habe beispielhaft
define Feiertage Calendar ical file www/calendar/feiertage_sachsen-anhalt_2018.ics 86400
attr Feiertage room Kontrollraum

define Ferien Calendar ical file www/calendar/ferien_sachsen-anhalt_2018.ics 86400
attr Ferien room Kontrollraum

define myCalView CALVIEW Feiertage 2
attr myCalView group _KalenderView_
attr myCalView maxreadings 10
attr myCalView modes next
attr myCalView room 06 Kalender
attr myCalView sourcecolor Feiertage:black
#attr myCalView mapping %READING
#attr myCalView modes next

define rg_KALENDER readingsGroup <Datum>,<Tag>,<Zeit>,<Termin>,<Ort>\
...


Es wäre sehr schön, wenn Du das auch noch erklären würdest.
RPI 4 - Jeelink HomeMatic Z-Wave

mumpitzstuff

#232
define <Name> CALVIEW <Kalendername(n) getrennt durch ','> <next> <updateintervall in sek (default 43200)>

Ich würde vermuten, das du ein CALVIEW Device erzeugen kannst und dort mehrere Calender Devices angeben kannst (durch Komma getrennt).

define test CALVIEW calender1,calender2,calender3 next 43200

Vergiss dann aber nicht die readingsGroup wieder an den neuen CALVIEW Namen anzupassen.

curt

#233
Du vermutest richtig. Ich habe das alles dank Deiner freundlichen Hinweise gut hinbekommen. Nun habe ich einen ganz einfachen Kalender (nur) mit Ferien und Feiertagen eines Bundeslandes. Dafür danke ich Dir herzlich.

Mein Problem war, dass ich am besten am Beispiel lerne. Bei calendar und calview gibt es aber keine Beispiele. Entweder sind die veraltet oder (vielleicht) sehr gut in dutzenden Forumseiten versteckt. Ich vermute, dass es vielen Anfängern ähnlich wie mir geht. Daher kann ich nun anbieten, meine derzeitige Einfach-Konfiguration als Beispiel in das Wiki einzuarbeiten. (Gern können wir meine Konfiguration vorher kritisch nochmals durchgehen.)

Übrigens habe ich eine neue Frage:
Vielleicht will man ja einen eigenen Kalender erstellen. Ich habe verstanden, dass Apple-Nutzer wegen des Formats iCal im Vorteil sind. Ich habe verstanden, dass ich mir online einen google-Kalender basteln kann. Beides widerstrebt mir, das ist privat.

Die Frage ist: Gibt es in den vielen dutzend Unterseiten einen Beitrag, der erklärt, dass die Erstellung und Fortführung eines iCal-Kalenders innerhalb von FHEM möglich ist - und wie man das macht?

(Sollte ich die Frage in einem neuen Thread stellen?)
RPI 4 - Jeelink HomeMatic Z-Wave

caldir65

Moin,
ich habe jetzt nicht alles verfolgt, auf was für Hardware Dein Fhem z.B. hier läuft, aber wenn das Gerät performant genug ist, kannst Du z.Bsp. auch einen NextCloud-Server (mit nginx als Webserver) installieren, der dann Deine Kalender per Caldav auslieferst. Und wenn Du im Router keine Freigabe nach draußen erstellst, bleibt das hübsch privat/lokal.

In Fhem selber ist mir ein Modul nicht bekannt, welches einen ical erstellen / weiterschreiben kann ...

Gruß Christoph

ps: ich habe das so gelöst, aber mit Freigabe, und die ganze Familie greift darauf zu ;-)

Gesendet von meinem SM-G930F mit Tapatalk

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.

mumpitzstuff

Such mal nach baikal oder radicale. Beides sind Tools die so was können.

curt

Zitat von: mumpitzstuff am 16 April 2018, 06:58:12
Such mal nach baikal oder radicale. Beides sind Tools die so was können.

Zitat von: caldir65 am 16 April 2018, 06:31:34
Moin,
... auch einen NextCloud-Server (mit nginx als Webserver) installieren, der dann Deine Kalender per Caldav auslieferst.

Hilfe - da steht überall als erstes "Server/Client". Ich will doch keine Groupware nachbauen. Und vor Datenbanken jeder Art drücke ich mich seit fast 30 Jahren im Privaten konsequent. Nein, das mal lieber nicht.

Ich habe seit 200x einen simplen Perl-basierten Kalender, den baute mir ein Freund. Der tut ansich noch ganz gut, Kalendertermine sind heute ja nicht schöner als 2006. Datenbasis ist eine Datei, etwas CSV-ähnlich. Entweder lasse ich das umstricken oder ich schiebe über die komplette Datenbasis regelmäßig ein weiteres Perlscript, was mir dann ical-Format raushaut - welches ich aber erstmal verstehen muss ... dazu gleich.

Für erste Eingabetests fand ich für Gnome Day Planner 0.11 - auch nicht so der Traum: Fenstergröße nicht veränderbar, man kommt nicht an alle Felder. Ok, für Tests reicht es. Und das ging beim dritten Test prompt schief: Bei Geburtstagen fand FHEM die Sache gar nicht mehr lustig - und spielte nicht mit. Warum auch immer - ich habe noch nicht die Stelle/das Log gefunden, was das wissen könnte.

Reine Vermutung: Das Modul findet Attribute X-DP-* nicht gut.

Zitat von: caldir65 am 16 April 2018, 06:31:34
In Fhem selber ist mir ein Modul nicht bekannt, welches einen ical erstellen / weiterschreiben kann ...

Das ist wirklich schade. - Ich traue mich gar nicht zu fragen: Gibt es denn FHEM-Anwendungsbeispiele, die mit Freitextfeldern arbeiten, also im Webbrowser Formulare (FORM) erzeugen - und die FHEM anschließend irgendwie weiterverarbeitet?
RPI 4 - Jeelink HomeMatic Z-Wave

Cybers

#237
Hallo,

ich möchte bei einem Reading (t_001_location) den Text ändern, wenn der Text einen bestimmten Inhalt hat:

nach dem Update des Kalenders hat das Reading t_001_location folgenden Inhalt: Brunnenweg, Köln

jetzt möchte ich, daß immer, wenn dieses Reading diesen Inhalt hat, das Reading auf "Home" gesetzt wird.

das hat bis vor einiger Zeit erfolgreich mit userReading funktioniert:
attr userReadings t_001_location:t_001_location.* {ReadingsVal($name,"t_001_location",0)=~/^Brunnenweg/?"Home":ReadingsVal($name,"t_001_location",0)}

Leider geht das irgendwie nicht mehr. Kann mir da einer weiterhelfen?

Gruß, Sascha
FHEM 6.2 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

Mave

Moin,

ich habe folgendes Problem:
Obwohl ich das Intervall auf 6 Stunden gestellt habe, werden ständig (mal nach 30 Minuten, mal nach 2 Stunden, ganz selten mal nach den gewünschten 6 Stunden) meine Kalender eingelesen, was Perfmon immer wieder mit Aussetzern von 20 bis 50 Sekunden quittiert.

Vielen Dank.

Grüße Mave

Mave

Eine genauere Recherche hat ergeben, dass es nur einer von zwei Kalendern ist, der ständig getriggert wird.
Wer oder was verursacht den Trigger und wie kann man das abstellen?

Grüße Mave