Modul für Terminansicht CALVIEW

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

Vorheriges Thema - Nächstes Thema

eddtima

Hi Chris,

großes Kompliment an Dich und die Ko-Worker zu diesem tollen Modul! Klasse Arbeit, das Sahnehäubchen ist das Modul für die Tablet UI! Damit wird der Familienkalender zur Realität und bestimmt manche Ehe gerettet ;-)

Till
FHEM auf Odroid N2, FTUI, etwa 110 Homematic Devices verschiedenster Coleur, BMWi3, Gardena, Hue, Sonos, Alexa, Harmony Hub, Samsung TV

eddtima

Ja, es funktioniert wie es soll ... scheint insgesamt aber nur wenig getestet zu werden, gerade mal 13 mal (inkl. uns beiden) runtergeladen worden ...
FHEM auf Odroid N2, FTUI, etwa 110 Homematic Devices verschiedenster Coleur, BMWi3, Gardena, Hue, Sonos, Alexa, Harmony Hub, Samsung TV

eddtima

@uniqueck: Ich bin auch über die ReadingGroup gegangen, genau wie in http://forum.fhem.de/index.php/topic,19922.0.html unter 1) -3) beschrieben, kein oldstyling.
FHEM auf Odroid N2, FTUI, etwa 110 Homematic Devices verschiedenster Coleur, BMWi3, Gardena, Hue, Sonos, Alexa, Harmony Hub, Samsung TV

moonsorrox

#438
kann mir jemand sagen warum ich diesen Fehler bekomme..?
Zitat2015.09.23 13:01:04 3: at_KalenderTermine_S: syntax error at (eval 202398) line 4, at EOF
2015.09.23 12:51:04 3: at_KalenderTermine_S: syntax error at (eval 196652) line 4, at EOF

das "at" liest aus dem Calview "View_S" die Termine aus, was auch funktioniert. Nur eben immer dieser Fehler..!
Ich habe 2 weitere Calview die identisch sind, da ist dieser Fehler nicht.. Den Code habe ich schon mal aus diesen kopiert, aber der Fehler tritt wieder auf.
EDITH://auch bei den anderen beiden tritt dieser Fehler auf... hatte aber keine Zeit dem bisher nachzugehen

Code vom at aus dem DEF:

+*00:10:00 {
  my $i;
  my $modtext = "<Datum>,<Uhrzeit>,<Datum - Ende>,<Zeit - Ende>,<Ereignis>,<Ort>,<Kalender> ";
  for($i= 1;;$i<=20;;$i++){
  $modtext .= "View_S:.t_".sprintf('%03d',$i)."_bdate,t_".sprintf('%03d',$i)."_btime,t_".sprintf('%03d',$i)."_edate,t_".sprintf('%03d',$i)."_etime,t_".sprintf('%03d',$i)."_summary,t_".sprintf('%03d',$i)."_source " ;}
  fhem("modify rg_Termine_S $modtext");
  fhem("save");
}
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Hans Franz

Hallo,
$modtext .= "View_S:.t_".sprintf('%03d',$i)."_bdate,t_".sprintf('%03d',$i)."_btime,t_".sprintf('%03d',$i)."_edate,t_".sprintf('%03d',$i)."_etime,t_".sprintf('%03d',$i)."_summary,t_".sprintf('%03d',$i)."_source " ;}

Vermutlich.

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

moonsorrox

Zitat von: Hans Franz am 23 September 2015, 13:40:05
Hallo,
$modtext .= "View_S:.t_".sprintf('%03d',$i)."_bdate,t_".sprintf('%03d',$i)."_btime,t_".sprintf('%03d',$i)."_edate,t_".sprintf('%03d',$i)."_etime,t_".sprintf('%03d',$i)."_summary,t_".sprintf('%03d',$i)."_source " ;}

Vermutlich.

Gruß
Hans

nein, leider liegt es daran wohl nicht..!
Es müssen auch zwei "}" sein am Anfang sind ja auch zwei öffnende "{"
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Hans Franz

Hallo,
Sorry, nicht genau hingeschaut.
Die doppelten Semikola in for (i=1;;$i<=20;;$i++) könnten die Ursache sein.

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

moonsorrox

Zitat von: Hans Franz am 28 September 2015, 22:49:18
Hallo,
Sorry, nicht genau hingeschaut.
Die doppelten Semikola in for (i=1;;$i<=20;;$i++) könnten die Ursache sein.

Gruß
Hans

Fehler habe ich heute nun gefunden, es lag einfach an meiner Konfiguration ich hatte eine weitere Anzeige Option hinzugefügt und in dieser war der Fehler drin, es ging um den Ort den ich hinzugefügt habe und da ich kein Perl Profi bin hatte ich hier etwas falsch geschrieben
Um diesen Teil handelte es sich:
t_".sprintf('%03d',$i)."_location,
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

ChHerrm

Hallo, erstmal ein großes danke für die Kalenderfunktion! Läuft auch bei mir endlich ganz gut und die Grundfunktion läuft, ich habe jedoch noch ein aber:

Ich bekomme keine vernünftige Aktualisierung hin :( Nur wenn ich set ChristophKalender update
get ChristophKalender full modeUpcoming
in die cfg schreibe funktioniert das Ganze. Dann erhalte ich aber auch zu jedem Ereignis einen Error beim Speichern. Versuche ich etwas anderes zum Aktualisieren (per at oder ein notify mit einer Schaltfläche) bringt das nichts, ich muss in die cfg und dann diese erneut Speichern. Was mache ich dabei falsch, wie kann ich das auf einfachstem Wege aktualisieren lassen?  :-\
Hier mein vollständiger Code:

define ChristophKalender Calendar ical file /home/XYZ.ics 60

set ChristophKalender update
get ChristophKalender full modeUpcoming

define Erinnerung CALVIEW ChristophKalender 1 60
attr Erinnerung maxreadings 6

define Termine readingsGroup <Datum>,<Beginn>,<Beschreibung>,<bis>

attr Termine group Kalender
attr Termine nameStyle style="font-size:18px"
attr Termine noheading 1
attr Termine nonames 1
attr Termine nostate 1
attr Termine notime 1
attr Termine room Wohnzimmer


define at_kalenderTermine at +*00:01:00 {\
my $i;; \
my $modtext = "<Datum>,<Beginn>,<Beschreibung>,<bis> ";;\
for($i= 1;;$i<= ReadingsVal("Erinnerung","c-tomorrow", 0);;$i++){\
$modtext .= "Erinnerung:<Morgen>,tomorrow_".sprintf('%03d',$i)."_btime,tomorrow_".sprintf('%03d',$i)."_summary,tomorrow_".sprintf('%03d',$i)."_etime ";;}\
for($i= 1;;$i<= ReadingsVal("Erinnerung","c-today", 0);;$i++){\
$modtext .= "Erinnerung:<Heute>,today_".sprintf('%03d',$i)."_btime,today_".sprintf('%03d',$i)."_summary,today_".sprintf('%03d',$i)."_etime ";;}\
for($i= 1;;$i<= ReadingsVal("Erinnerung","c-term", 0);;$i++){\
$modtext .= "Erinnerung:t_".sprintf('%03d',$i)."_bdate,t_".sprintf('%03d',$i)."_btime,t_".sprintf('%03d',$i)."_summary,t_".sprintf('%03d',$i)."_etime ";;}\
fhem("modify Termine $modtext");;\
}


Besten Dank für jede Hilfe!


PS: Bei der Erkennung von morgen und heute gibts auch noch starke Probleme, aber eins nach dem anderen :-\

chris1284

set ChristophKalender update
get ChristophKalender full modeUpcoming


das gehört nicht in die fhem-cfg sondern in ein at, wobei das "get" garnicht benötigt wird, außer du willst dir daten direkt aus calendar im webif ansehen (dann brauchst du aber kein calview).
des weiteren kannst du den update-interval im calendar selbt einstellen und benötigst kein at

define at_kalenderTermine at +*00:01:00

alle 1 minute die rg zu aktualisieren ist etwas heftig und sinnlos da der kalender sich default alle 1 stunder aktualisiert und die rg aus dem calview gefüttert wird (welches sich default auch nur alles 12h updated)

du musst halt das update des calendar mit dem von calview und dem von der rg in einklang bringen (je nach dem wie oft du am calendar was änderst wie zb neuer termine erstellst)

der ablauf ist somit so:

update calendar -> update calview -> update rg
zb per at
calendar 12:00 uhr -> calview 12:03 -> rg 12:06
oder per at ohne feste zeit

calendar +*01:00:00 -> calview +*01:03:00 -> rg +*01:06:00  das in die cfg, reboot von fhem und die timer starten so das sie genau so nacheinander folgen (da wenn du sie so eingibst immer die zeit ab der definition gerechnet wird und wenn du 3h zum definieren brauchst startet der erste calview viel später  ;) )

kvo1

Hi chris1284,

wobei sich ja die/die Kalender per <interval> (falls vorhanden) aktualisieren und es doch kein "at" darf.
Nur die readingsgroup selbst wird doch über "at" aktualisiert (nach meinem Verständnis !?

gruss
klaus

RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

chris1284

Zitat von: chris1284 am 03 Oktober 2015, 08:45:25
des weiteren kannst du den update-interval im calendar selbt einstellen und benötigst kein at

hab ich auch geschrieben  ;)

kvo1

Zitat von: chris1284 am 04 Oktober 2015, 19:51:01
hab ich auch geschrieben  ;)
sorry , wer lesern kann und dann noch wirklich liest , ist klar im Vorteil  ;)
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

ChHerrm

Okay danke schon für die Hilfe! So ähnlich hatte ich es auch aus den vielen Seiten herausgelesen und es mit at versucht. Hier mein (erfolgloser) Versuch:

define ChristophKalender Calendar ical file /home/pi/NAS/vonWindows/KalenderCH.ics 60

define Erinnerung at +*00:03:00 CALVIEW ChristophKalender 1
attr Erinnerung maxreadings 6


define Termine at +*00:04:00 readingsGroup <Datum>,<Beginn>,<Beschreibung>,<bis>

attr Termine group Kalender
attr Termine nameStyle style="font-size:18px"
attr Termine noheading 1
attr Termine nonames 1
attr Termine nostate 1
attr Termine notime 1
attr Termine room Wohnzimmer


define at_kalenderTermine at +*00:05:00 {\
my $i;; \
my $modtext = "<Datum>,<Beginn>,<Beschreibung>,<bis> ";;\
for($i= 1;;$i<= ReadingsVal("Erinnerung","c-tomorrow", 0);;$i++){\
$modtext .= "Erinnerung:<Morgen>,tomorrow_".sprintf('%03d',$i)."_btime,tomorrow_".sprintf('%03d',$i)."_summary,tomorrow_".sprintf('%03d',$i)."_etime ";;}\
for($i= 1;;$i<= ReadingsVal("Erinnerung","c-today", 0);;$i++){\
$modtext .= "Erinnerung:<Heute>,today_".sprintf('%03d',$i)."_btime,today_".sprintf('%03d',$i)."_summary,today_".sprintf('%03d',$i)."_etime ";;}\
for($i= 1;;$i<= ReadingsVal("Erinnerung","c-term", 0);;$i++){\
$modtext .= "Erinnerung:t_".sprintf('%03d',$i)."_bdate,t_".sprintf('%03d',$i)."_btime,t_".sprintf('%03d',$i)."_summary,t_".sprintf('%03d',$i)."_etime ";;}\
fhem("modify Termine $modtext");;\
}


Aber wenn ich kein set und get einbinde, funktioniert in der Form leider nichts. Es erscheint nur die Anzeige:

Termine         Next: 22:24:10

Dass die zeitlichen Abstände noch ziemlich unsinnig sind, ist klar. Handelt sich erstmal nur um einen Test. Später reicht das 1x pro Tag auf jeden Fall aus. Also wo habe ich noch Fehler in diesem Code? ??? Danke für eure Geduld :-[

kvo1

@ChHerrm

versuch dochmal mein Beispiel aus Antwort #430 nachzubauen !
Das sind zwar 3 Kalender , kannst Du aber einfach einkürzen !
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB