Modul für Terminansicht CALVIEW

Begonnen von chris1284, 08 Februar 2014, 13:18:31

Vorheriges Thema - Nächstes Thema

bjoernbo

Hallo, ich habe folgendes Problem festgestellt! ("alte Version")
Wenn sich Google nach 24 Stunden aktualisiert habe ich fast 60 Minuten keinen Zugriff auf FHEM. Heute war es so arg, das ich über FTP die .cfg angepasst habe und alles mit Google und MyView auszementiert habe. Jetzt funzt hem wieder, allerdings ohne Googlekalender.

Anbei mein Auszug, vielleicht erkennt jem. einen "Anfängerfehler" Danke.

define Googlekalender Calendar ical url https://www.google.com/calendar/ical/kalendername.cal%40googlemail.com/private-xxxxxxxxxx35c2/basic.ics 86400
define myView CALVIEW Googlekalender 1
attr myView maxreadings 8
attr myView room Kalender
attr myView userReadings next
define kalenderTermine readingsGroup <%time_calendar> myView
attr kalenderTermine alias Termine
attr kalenderTermine group Kalender
attr kalenderTermine mapping %READING
attr kalenderTermine nonames 1
attr kalenderTermine notime 1
attr kalenderTermine room Kalender,Status
attr kalenderTermine valueFormat { substr($READING,6,2).".".substr($READING,3,2).".".substr($READING,0,2)." - ".substr($READING,9,5)." "."$VALUE" }


Raspberry Pi 3 - FB6490C - Synology NAS DS916+ - NETATMO - HUE - SIEMENS G-Tag'S - FTUI - EchoDOT -

chris1284

Zitatwenn sich google aktualisiert....
hat für mich nichts mit calview zu tun sondern dem calendar.
da dies in aktueller version (update gemacht?) keine probleme macht kann, wenn es wirklich 60 minuten fhem blockiert, nur der kalender selbts (teste mal einen nue erstellten kalender bei google mit ein paar neuen terminen) sein oder deine netzwerk-/internetverbindung

eldrik

Hi,

woran kann es liegen, dass bei mir z.B ein zweiter ganztägiger Termin "verschluckt" wird?

DEF
muellabfuhr 2
INTERVAL
43200
KALENDER
muellabfuhr
MODES
all
NAME
muellabfuhr_vorschau
NR
15455
STATE
Initialized
TYPE
CALVIEW


eadings
15-01-16@00:00
Bioabfall 2-wö
2015-01-09 21:53:43
15-01-23@00:00
Restabfall 8-wö
2015-01-09 21:53:43
15-01-29@00:00
Wertstoffsack
2015-01-09 21:53:43
15-01-30@00:00
Bioabfall 2-wö
2015-01-09 21:53:43


Calendar liefert mir bei einem

get muellabfuhr text all 8

16.01.15 00:00 Wertstoffsack
16.01.15 00:00 Bioabfall 2-wö
23.01.15 00:00 Restabfall 8-wö
29.01.15 00:00 Wertstoffsack
30.01.15 00:00 Bioabfall 2-wö
05.02.15 00:00 Papiertonne
12.02.15 00:00 Wertstoffsack
13.02.15 00:00 Bioabfall 2-wö


Ich benutze die letzte Version aus dem ersten Posting!

Greetz
Eldrik

chris1284

er verschluckt einer der beiden am selben tag zur selben zeit. problem ist bekannt und ist in arbeit. es kann keine 2 readings mit gleichem namen geben. er schreibt erst reading 16.01.15 00:00 Wertstoffsack
und überschreibt es dann ( da name gleich 16.01.15 00:00) mit dem neuen wert Bioabfall 2-wö. somit nur 1 termin.

workaround -> einen der beiden zb um 00:01 starten lassen

chris1284

#139
anbei eine version zum testen. die sortierung klappt, auch wenn ich sie nicht ganz verstehe.
(kennt jemand eine gute, deutsche erklärung des Schwartzian Transform oder kann mir folgenden code erklären
my @sdata = map  $_->[0],
            sort { $b->[1][2] <=> $a->[1][2] or  # year
                   $b->[1][1] <=> $a->[1][1] or  # month
                   $b->[1][0] <=> $a->[1][0] }   # day
            map  [$_, [split /\./, $_->{date}]], @data;


ich habe schon herausgefunden dass das tauschen von $a und $b zum aufsteigenden / absteigendem sortieren führt)

pro termin hat man nun immer (auch bei today und tomorrow)
Zitatbdate
         btime
         summary
         edate
         etime

EDIT ihr könnt aber auch das attribut "oldStyledReadings" nutzen um es auf die alte ansicht zurück zu stellen.
auch hier soltle die sortierung und mehrere gleichzeitige termine funktionieren!

die maxreadings sind für die anzahl der termine zu sehen. (also bei 100 terminen sind es 500 readings!!!)
die anzahl der readings kann 190 (950 t_* readings) nicht überschreiten. die tomorrow und today readings zählen nicht zu maxreadings. diese beschränkung ist nur im modul wegen der readingnummerierung. da ich nicht denke das jemand mehr als 190 termine hat, habe ich 950 als grenze gewählt (welche bei bedarf erweitert werden kann). der google-feiertagskalender für 2 jahre hat gerade mal 66 termine (  330 readings ;) )

bitte testen on die sortierung bei euch passt und ob auch alle gleichzeitigen termien erscheinen

chris1284

update siehe oben!! Version 7002

klausw

#141
Zitat von: chris1284 am 10 Januar 2015, 19:57:07
update siehe oben!! Version 7002
Gibt es eigentlich eine einfache Lösung, die Termine im readingsgroup darzustellen?
Also um nicht jede terminzeile einzeln in die definition reinzuschreiben.
Ich stehe mit den regex bisschen auf Kriegsfuß :/
View_Kalender_Daniela:.*_bdate,.*_btime,.*_summary
zeigt jedenfalls alles in einer Zeile an
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

bjoernbo

ein ganztägiges Ereignis geht doch von 00:00 bis 23:59 Uhr, oder ?  Kann man dies nicht vorher abfragen mit "IF" und wenn das Ereignis "TRUE" ist, schreibe "ganztägiges Ereignis" ??

Raspberry Pi 3 - FB6490C - Synology NAS DS916+ - NETATMO - HUE - SIEMENS G-Tag'S - FTUI - EchoDOT -

chris1284

Zitat von: bjoernbo am 10 Januar 2015, 22:36:07
ein ganztägiges Ereignis geht doch von 00:00 bis 23:59 Uhr, oder?

nein, ebend noch im googlekalender geschautund in der ics selbst => Di, 6. Januar, 00:00 – Mi, 7. Januar, 00:00 (selbst ooutlook macht ganztägige termine von 00:00-00:00)

ZitatKann man dies nicht vorher abfragen mit "IF" und wenn das Ereignis "TRUE" ist, schreibe "ganztägiges Ereignis" ??

man müsste prüfen ob startzeit 00:00, endatum=startdatum+1 und endzeit 00:00. wo würdest du das "ganztägiges Ereignis" hinschreiben (reading-technisch und welcher style)?


chris1284

#144
Zitat von: klausw am 10 Januar 2015, 22:28:13
Gibt es eigentlich eine einfache Lösung, die Termine im readingsgroup darzustellen?

für die neuen readings bin auch noch am schauen, aktuell für einen termin von heute und morgen habe ich

<Datum>,<Uhrzeit>,<Titel>,<Enddatum>,<Endzeit>
View_Abfall:<heute>,today_001_btime,today_001_summary,today_001_edate,today_001_etime
View_Abfall:<morgen>,tomorrow_001_btime,tomorrow_001_summary,tomorrow_001_edate,tomorrow_001_etime


für den alten style (attribut "oldStyledReadings" auf 1 und ein set update) gilt noch das beispiel aus dem wiki/ post1

RoBra81



Zitat von: chris1284 am 11 Januar 2015, 08:39:46
wo würdest du das "ganztägiges Ereignis" hinschreiben (reading-technisch und welcher style)?

Bei meiner Version habe ich bei ganztägigen Ereignissen statt der Startzeit "ganztägig"  drin stehen...

der-Lolo

Gestern Abend habe ich auch endlich mal etwas Zeit gefunden einen Kalender in meine Config zu integrieren.
Danke für CALVIEW - es funktioniert auf Anhieb wie beschrieben.

Als erstes würde ich gerne meinen Geburtstagskalender in meine Oberfläche integrieren - funktioniert auch soweit, das was mir nicht gefällt wird hier ja bereits ausgiebig diskutiert.

Es geht natürlich um die ganztags Geschichte, auch ich würde mich wünschen wenn das @00:00 verschwindet, ich würde sogar gerne noch weiter gehen und die Jahreszahl ausblenden, ist ja eigentlich klar das der Termin in 2015 ist. Dafür vielleicht eher das Wochentagkürzel hinzu... weil ja Geburtstage an Frei oder Samstagen einen ganz anderen Stellenwert haben ;-)

Ich schreibe jetzt hier hauptsächlich damit ich "auf empfang" bleibe in diesem Thread.
Danke Chris fürs Modul!

chris1284

@der-Lolo:
in der Version von gestern ist das @ raus.
Zitatist ja eigentlich klar das der Termin in 2015 ist.
naja, im google-feiertagskalender sind auch alle 2016 termine drin. des weiteren habe ich noch nicht getestet wie sich das auf die sortierung der readings im alten style auswirkt.

@all: evtl. baue ich 00:00 zu "ganztägig" als attr ein, mal schauen.

ich habe reading für die anzahl der termine gesamt, termine heute, termine morgen eingebaut.
dazu wird entsprechend state gesetzt. das dient dafür eine (dynamisch modifizierte) readingsgroup zu manipulieren so das immer nur so viele termine wie vorhanden angezeigt werden.

Zitat
View_Abfall t: 5 td: 0 tm: 2
View_Feiertage t: 66 td: 0 tm: 0

hier die Lösung für eine Readingsgroup für Termine im neuen Syle

leere readingsgroup definieren:

Zitatdefine rg_View_Abfall readingsGroup <Zeile>,<Start>,<Start Zeit>,<Summary>,<Ende>,<End Zeit>

ein at definieren (zeit natürlich anpassen, alle 5 minuten ist denke ich nicht notwendig wenn ihr calendar und calview nur einmal am tag aktualisiert):
define at_rg_View_Abfall at +*00:05 {}
dann folgenden code reinkopieren

+*00:05 {
my $i;
my $modtext = "<Datum>,<Uhrzeit>,<Text>,<Endet am>,<End um> ";
for($i= 1;$i<= ReadingsVal("View_Abfall","c-tomorrow", 0);$i++){
$modtext .= "View_Abfall:<Morgen>,tomorrow_".sprintf('%03d',$i)."_btime,tomorrow_".sprintf('%03d',$i)."_summary,tomorrow_".sprintf('%03d',$i)."_edate,tomorrow_".sprintf('%03d',$i)."_etime ";}
for($i= 1;$i<= ReadingsVal("View_Abfall","c-today", 0);$i++){
$modtext .= "View_Abfall:<Heute>,today_".sprintf('%03d',$i)."_btime,today_".sprintf('%03d',$i)."_summary,today_".sprintf('%03d',$i)."_edate,today_".sprintf('%03d',$i)."_etime ";}
for($i= 1;$i<= ReadingsVal("View_Abfall","c-term", 0);$i++){
$modtext .= "View_Abfall:t_".sprintf('%03d',$i)."_bdate,t_".sprintf('%03d',$i)."_btime,t_".sprintf('%03d',$i)."_summary,t_".sprintf('%03d',$i)."_edate,t_".sprintf('%03d',$i)."_etime ";}
fhem("modify rg_View_Abfall $modtext");
}


wer nur today, tomorrow oder t_ haben will löscht entsprechend aus dem at die for-schleife der nicht gewünschten readings
man könnte das nat. auch in ein notify packen so das es immer nach einer änderung in calendar ausgeführt wird (vor ins notify einfach ein "set <calviewname> update")

anbei das neue modul und ein screenshot der rg

chris1284

Ich habe nochmal alles in Post 1 aktualisiert (Anleitung, Bilder, Modul) und werde mich nun kümmern das es eingechecked wird!
Wenn alles passt wird auch die Commandref verfügbar sein und der Wiki Eintrag geändert

tagedieb

#149
Hallo zusammen und noch ein "gesundes neues"

für chris1284 ein grosses Dankeschön für das Modul und seine Zeit und Mühe  :)

ich habe mir heute das Modul installiert , jedoch komme an einer Stelle nicht weiter   :(
und bin mir sicher, das ich den Wald vor lauter Bäumen nicht sehe
Es wäre schön, wenn mir jemand helfen könnte

ich hätte gern die zeilen State, c-today, c-tomorrow und c-term ausgeblendet

Ich freue mich über einen Hinweis

Grüsse tagedieb

PS habe die Version von heute 17 Uhr....

FHEM 5.6 auf Cubitruck
CUL und Cul 868 und 2 HM LAN an Zbox
Remoteserver auf 2.Zboxi
HM-CC-RT-DN,HM-LC-Bl1PBU-FM,HM-LC-SW1-FM,HM-LC-SW4-PCB,HM-LC-Sw1PBU-FM,HM-PB-2-WM55,HM-PB-6-WM55,HM-SCI-3-FM,HM-SEC-RHS,HM-SEC-SC,HM-SEC-SC-2,HM-SEC-TIS,HM-WDS10-TH-O u.viele mehr
diverse IT Empfänger und LW3