Autor Thema: Modul für Terminansicht CALVIEW  (Gelesen 225106 mal)

Offline chris1284

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3832
Modul für Terminansicht CALVIEW
« am: 08 Februar 2014, 13:18:31 »
Hallo,

UPDATE: https://forum.fhem.de/index.php/topic,63575.0.html

Das Modul legt ein Device an, setzt als Reagings alle Termine aus einem bestehenden Kalender des Moduls 57_Calender.
Vorausetzung: ein Kalender auf  Modul 57_Calendar beruhend

Doku um es einzubinden hier http://fhem.de/commandref.html#CALVIEW

Das Attribut "maxreadings" kann die Anzahl der angezeigten Termine anpassen.
Das Attribut "oldStyledReadings" ändert das Format der Readings in die Form [2015.01.01-00:00 Neujahr]

default-Readings
(http://forum.fhem.de/index.php?action=dlattach;topic=19922.0;attach=24885;image)
oldStyledReadings
(http://forum.fhem.de/index.php?action=dlattach;topic=19922.0;attach=24887;image)

Beispiel readingsGroup mit den Standard-Readings
1. leere readingsgroup definieren:
define rg_ViewAll readingsGroup <Zeile>,<Start>,<Start Zeit>,<Summary>,<Ende>,<End Zeit>1.a) der rg das Attribut nonames 1 geben
2. ein notify definieren welches die readingsGroup dynamisch mit leben füllt wenn sich calview au grund eines calendar-updates aktualisiert hat
[code]define ntf_ViewAll notify View_All:t:.* {
my $i;
my $modtext = "<Datum>,<Zeit>,<Termin>,<Ort>,<Quelle> ";

for($i= 1;$i<= ReadingsVal("View_All","c-today", 0);$i++){
$modtext .= "View_All:<Heute>,today_".sprintf('%03d',$i)."_btime,today_".sprintf('%03d',$i)."_summary,today_".sprintf('%03d',$i)."_location,today_".sprintf('%03d',$i)."_source ";}

for($i= 1;$i<= ReadingsVal("View_All","c-tomorrow", 0);$i++){
$modtext .= "View_All:<Morgen>,tomorrow_".sprintf('%03d',$i)."_btime,tomorrow_".sprintf('%03d',$i)."_summary,tomorrow_".sprintf('%03d',$i)."_location,tomorrow_".sprintf('%03d',$i)."_source ";}

for($i= 1;$i<= ReadingsVal("View_All","c-term", 0);$i++){
$modtext .= "View_All:t_".sprintf('%03d',$i)."_bdate,t_".sprintf('%03d',$i)."_btime,t_".sprintf('%03d',$i)."_summary,t_".sprintf('%03d',$i)."_location,t_".sprintf('%03d',$i)."_source ";}

fhem("modify rg_View_All $modtext");
fhem("SAVE");
}

!Ihr müsst ViewAll mit eurem Namen des CALVIEW devices ersetzen!
dann ein calendar update und sowohl calview als auch rg sollten schön gefüllt sein mit neuen readings

(http://forum.fhem.de/index.php?action=dlattach;topic=19922.0;attach=24890;image)

Beispiel readingsGroup mit Attribut "oldStyledReadings" = 1
define kalenderTermine readingsGroup <%time_calendar>,<Text>,<Zuletzt erfasst> myView
attr kalenderTermine alias Termine
attr kalenderTermine group _KalenderView_
attr kalenderTermine mapping %READING
attr kalenderTermine room Kalender

Gruß
Christian
« Letzte Änderung: 20 März 2017, 07:23:04 von chris1284 »
#HP Proliant MicroServer Gen8: FHEM, SAMBA, Docker:PLEX, HABridge,Homebridge
#CCU2 (bald 3): Heizung, Schalter, Sensoren, Remotes
#nanoCUL868: lacrossmode für Außensensor
#3 2Bay Nas im 2 täglichen Wechsel fürs Backup, überwacht in FHEM
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline holzwurm83

  • Sr. Member
  • ****
  • Beiträge: 749
Antw:[Beta] Modul für Terminansicht CALVIEW
« Antwort #1 am: 08 Februar 2014, 20:15:20 »
Hallo Christian,

danke für das Modul! Habe das auch gleich mal getestet. Ich habe nur das Problem das ich alle Termine aus einem Jahr angezeigt bekomme und das die Termine nicht in der richtigen Reihenfolge sind. Kannst du mir hier weiterhelfen?

- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Offline chris1284

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3832
Antw:[Beta] Modul für Terminansicht CALVIEW
« Antwort #2 am: 08 Februar 2014, 21:18:45 »
Stimmt, hab ich gerade getestet und nachvollziehen könne. Da ich die Werte so nehme wie sie aus dem Kalender kommen werden sie wohl dort nicht sortiert. Werde morgen mal schauen ob ich das hinbekomme.
#HP Proliant MicroServer Gen8: FHEM, SAMBA, Docker:PLEX, HABridge,Homebridge
#CCU2 (bald 3): Heizung, Schalter, Sensoren, Remotes
#nanoCUL868: lacrossmode für Außensensor
#3 2Bay Nas im 2 täglichen Wechsel fürs Backup, überwacht in FHEM

Offline chris1284

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3832
Antw:[Beta] Modul für Terminansicht CALVIEW
« Antwort #3 am: 09 Februar 2014, 13:20:05 »
Beim Testen sind nun einige Problem zusammen gekommen:
1.  57_Calender liefert unsortiert -> sortiere ich nun erstmal nach Datum (Uhrzeit geht noch nicht)
2. Das Webinterface sortiert Readings selbst aufsteigend und betrachtet nur den Tag und nicht das ganze Datum. Hier gibts 2 Lösungen meiner Meinung nach:

a) Ich schreib vor das Datum einer Nummer z.B:
Zitat
0-09.02.14-00:00 Chrischi Einkauf
1-12.02.14-00:00 Vodafone fristgerecht Kündigen!
2-15.02.14-00:00 Leichtverpackungen
3-16.02.14-00:00 Ani Einkauf
4-18.02.14-07:30 asda
5-18.02.14-00:00 Bioabfall
6-19.02.14-00:00 Restabfall
7-24.02.14-06:00 Vodafone fristgerecht Kündigen!
8-18.03.14-08:00 a
b) Ich verwende ein vom Frontend sortierbares Datumsformat wie
Zitat
14-02-12@00:00
[YY-MM-dd@hh:mm].

Was meinst du? Ich habe mal die Version b) angehängt.
« Letzte Änderung: 09 Februar 2014, 16:47:35 von chris1284 »
#HP Proliant MicroServer Gen8: FHEM, SAMBA, Docker:PLEX, HABridge,Homebridge
#CCU2 (bald 3): Heizung, Schalter, Sensoren, Remotes
#nanoCUL868: lacrossmode für Außensensor
#3 2Bay Nas im 2 täglichen Wechsel fürs Backup, überwacht in FHEM

Offline holzwurm83

  • Sr. Member
  • ****
  • Beiträge: 749
Antw:[Beta] Modul für Terminansicht CALVIEW
« Antwort #4 am: 09 Februar 2014, 14:49:34 »
Also ich finde b auch gut! Wie lässt du dir nur acht Einträge anzeigen? Bei mir schreibt er alle 100 Einträge in die readingGroup
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Offline Hans Franz

  • Sr. Member
  • ****
  • Beiträge: 547
Antw:[Beta] Modul für Terminansicht CALVIEW
« Antwort #5 am: 10 Februar 2014, 12:22:44 »
To do:
- Prüfung einbauen ob Kalender <Name> existiert -> über einen Tipp würde ich mich freuen

sub
CalendarPresent($)
{
    my ($Calendar) = @_;   
    my $xml_calendars = fhem("xmllist TYPE=Calendar");
    my $pos=index($xml_calendars,"name=\"".$Calendar."\"");
    my $ret = "False";
    if ($pos > -1) {
        $ret = "True";
        }
    return $ret
}

Printed leider in log :(
Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

Offline chris1284

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3832
Antw:[Beta] Modul für Terminansicht CALVIEW
« Antwort #6 am: 10 Februar 2014, 12:39:04 »
Danke für den Tipp, werde es heute Abend mal versuchen einzubauen / umzusetzen.

@holzwurm83: Tja, das kann man limitieren, ist aber noch nicht im Modul. Bei mir gibt es wohl ein Problem mit dem Kalender (irgendwo ist eine uralte ics / oder Werte gecached). Auf meinem 2. fhem-Server sind es auch mehr Einträge.

Wer ich heute Abend auch versuchen mi einzubauen.
#HP Proliant MicroServer Gen8: FHEM, SAMBA, Docker:PLEX, HABridge,Homebridge
#CCU2 (bald 3): Heizung, Schalter, Sensoren, Remotes
#nanoCUL868: lacrossmode für Außensensor
#3 2Bay Nas im 2 täglichen Wechsel fürs Backup, überwacht in FHEM

Offline chris1284

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3832
Antw:[Beta] Modul für Terminansicht CALVIEW
« Antwort #7 am: 10 Februar 2014, 21:42:29 »
Hallo Hanz,

habe es gerade über list [Kalendername] TYPE probiert, schreibt aber auch nur ins Log...
Werde ich morgen weiter versuchen und mir auch deiner Version noch  einmal anschauen.

@holzwurm83: ich habe gerade getestet. Was sind das für Termine bei dir? Ich habe mir mal einen Serientermin täglich, nicht endend eingestellt. Ich komme nicht auf solch eine lange Terminliste.
#HP Proliant MicroServer Gen8: FHEM, SAMBA, Docker:PLEX, HABridge,Homebridge
#CCU2 (bald 3): Heizung, Schalter, Sensoren, Remotes
#nanoCUL868: lacrossmode für Außensensor
#3 2Bay Nas im 2 täglichen Wechsel fürs Backup, überwacht in FHEM

Offline holzwurm83

  • Sr. Member
  • ****
  • Beiträge: 749
Antw:[Beta] Modul für Terminansicht CALVIEW
« Antwort #8 am: 10 Februar 2014, 22:06:11 »
@holzwurm83: ich habe gerade getestet. Was sind das für Termine bei dir? Ich habe mir mal einen Serientermin täglich, nicht endend eingestellt. Ich komme nicht auf solch eine lange Terminliste.

Das sind Ganztagestermine die über das Jahr geplant sind.
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Offline chris1284

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3832
Antw:[Beta] Modul für Terminansicht CALVIEW
« Antwort #9 am: 11 Februar 2014, 06:16:47 »
Habe ein Attr "maxreadings" eingebaut. Das setzen und danach "set update" und es sollte die gewünschte Anzahl an readings vorhanden sein.
Hab es im ersten Post angehängt.
« Letzte Änderung: 11 Februar 2014, 06:31:15 von chris1284 »
#HP Proliant MicroServer Gen8: FHEM, SAMBA, Docker:PLEX, HABridge,Homebridge
#CCU2 (bald 3): Heizung, Schalter, Sensoren, Remotes
#nanoCUL868: lacrossmode für Außensensor
#3 2Bay Nas im 2 täglichen Wechsel fürs Backup, überwacht in FHEM

Offline Hans Franz

  • Sr. Member
  • ****
  • Beiträge: 547
Antw:[Beta] Modul für Terminansicht CALVIEW
« Antwort #10 am: 11 Februar 2014, 10:31:43 »
Hallo,

So geht's, glaube ich:
{calendar_exists("NRW_Ferien")}
sub
calendar_exists($)
{
    my ($Calendar) = @_;
    my $spec = devspec2array("NAME=$Calendar");
    my $ret = "False";
    if ($spec > 0) {
        $ret = "True";
        }
    return $ret
}

Gruß
Hans
Edit:
vlt. auch:
{defined($defs{"NRW_Ferien"})}liefert 1, wenn Kalender definiert ist.
« Letzte Änderung: 11 Februar 2014, 15:39:08 von Hans Franz »
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

Offline chris1284

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3832
Antw:[Beta] Modul für Terminansicht CALVIEW
« Antwort #11 am: 11 Februar 2014, 17:33:27 »
Habe mich hierfür entschieden, Danke für den Tipp Hans

return "invalid Calendername \"$calender\", define it first" if((devspec2array("NAME=$calender")) != 1 );
{defined($defs{"NRW_Ferien"})} wäre aber auch gegangen, auch dafür Danke.
#HP Proliant MicroServer Gen8: FHEM, SAMBA, Docker:PLEX, HABridge,Homebridge
#CCU2 (bald 3): Heizung, Schalter, Sensoren, Remotes
#nanoCUL868: lacrossmode für Außensensor
#3 2Bay Nas im 2 täglichen Wechsel fürs Backup, überwacht in FHEM
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline holzwurm83

  • Sr. Member
  • ****
  • Beiträge: 749
Antw:[Beta] Modul für Terminansicht CALVIEW
« Antwort #12 am: 11 Februar 2014, 19:59:21 »
Habe ein Attr "maxreadings" eingebaut. Das setzen und danach "set update" und es sollte die gewünschte Anzahl an readings vorhanden sein.
Hab es im ersten Post angehängt.

Danke! So habe ich mir das vorgestellt!
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Offline brmpfl

  • Jr. Member
  • **
  • Beiträge: 88
Antw:Modul für Terminansicht CALVIEW
« Antwort #13 am: 18 Februar 2014, 19:55:43 »
Hai,

Danke für's Modul. Funktioniert wie beschrieben.

3 Sachen, die ich mir wünschen würde:
- Die Ansicht: 14-02-12@00:00 finde ich persönlich eher "gewöhnungsbedürftig"
- Bei Terminen wird immer nur die Startzeit angezeigt
- Die Notwendigkeit, zur Anzeige der Daten aus 57_Calender zusätzliche Devices definieren zu müssen.
Aus meiner Sicht wäre es hier optimal, bei der Definition eines Calendar-Devices  gleich eine entsprechende (ggf. konfigurierbare) View automatisch zu erhalten.
:)
Hajo

Offline chris1284

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3832
Antw:Modul für Terminansicht CALVIEW
« Antwort #14 am: 18 Februar 2014, 21:59:35 »
Hallo Hajo,

schön das es noch weitere Interessenten gibt.

Zur Ansicht: Damit bin ich auch noch nicht 100% zu Frieden. Habe mal das Forum durchsucht und bin der Meinung ich sollte ich an der Namensgebung der Devices orientieren um möglichst den Standard einzuhalten.
Das bedeutet erlaubt sind A-Za-z0-9.:_, Es ist recht einfach das Format des Readings zu ändern (evtl. sogar per "Auswahl" um es zu individualisieren). Dazu kommt noch das sortiertverhalten des Frontends welches ich nicht beeinflussen kann. Über Vorschläge für ein besser lesbares Format freue ich mich natürlich :-)

Zu Bei Terminen wird immer nur die Startzeit angezeigt: Es geht nur <Readingname><Wert> hier  <Startdatum><Text>. Ich kann das Ende mit in <Startdatum:Ende> oder <Text : Ende > nehmen

Wenn ich den 3. Punkt verstehe willst du den Kalender definieren und sofort die View erstellt haben. Da 57_Calender nicht mein Modul ist müsstest du den Entwickler ansprechen. Ich wüsste nicht wie ich darauf mit meinem Modul reagieren könnte.

Ich werde spätestens am WE mehr Zeit zum Basteln haben und sehen was ich umsetzten kann.

Gruß
Christian
#HP Proliant MicroServer Gen8: FHEM, SAMBA, Docker:PLEX, HABridge,Homebridge
#CCU2 (bald 3): Heizung, Schalter, Sensoren, Remotes
#nanoCUL868: lacrossmode für Außensensor
#3 2Bay Nas im 2 täglichen Wechsel fürs Backup, überwacht in FHEM