Modul für Terminansicht CALVIEW

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

Vorheriges Thema - Nächstes Thema

klausw

Zitat von: KernSani am 13 Januar 2015, 22:20:10
Grundsätzlich finde ich den Gedanken gut, aber bitte nur optional, also m.E. eher attribut, wenn kein's da ist wird auch nix betankt... Ich hätte z.B. gerne die Option, nicht alle readings zu zeigen (Beim Abfallkalender nur Datum und Text).
Was dargestellt werden soll, könnte natürlich auch über ein Attribut auswählbar gemacht werden.
Aber das soll Chris entscheiden, schließlich mach er sich die Arbeit  8)
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

klausw

Zitat von: klausw am 12 Januar 2015, 00:32:20
leider klappt es mit dem Notify nicht (ich nutzen den gleichen code wie vorher im at)
Im notify steht ein % für das auslösende Ereignis und muss durch %% ersetzt weden. Dann klappt es auch.
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

chris1284

Zitat von: KernSani am 13 Januar 2015, 22:20:10
Grundsätzlich finde ich den Gedanken gut, aber bitte nur optional, also m.E. eher attribut, wenn kein's da ist wird auch nix betankt...
in die richtung wird es, denke ich, auch gehen. attribute sind klickbar, einfach einzubauen (für den user) und es bleibt optional.
Zitat von: KernSani am 13 Januar 2015, 22:20:10
Ich hätte z.B. gerne die Option, nicht alle readings zu zeigen (Beim Abfallkalender nur Datum und Text).

nun ja, dafür gibt es ja die readingsgroup. da kannst  (im at/notify) ja festlegen was diese anzeigen soll. für jede mögliche readingkonstruktion ein attribut würde  glaube ich den rahmen sprengen
(da es ja bereits anfragen gab wie 00:00 in ganztägig wandel, usw).

@klausw: kannst du mir sagen wie ich steuern kann dass das modul in der commandref nicht unter "Devices" sondern "Helper modules" geführt wird? ich habe den html teil mal mit calendar verglichen aber nichts gefunden.

das einchecken und ändern der change/history/maintainer hat über tortoise svn super geklappt

KernSani

nun ja, dafür gibt es ja die readingsgroup. da kannst  (im at/notify) ja festlegen was diese anzeigen soll[/quote]
Das ist der Grund, warum ich es optional haben wollte. Ich will vermeiden dass mir der Kalender eine weitere readingsgroup angelegt.  ;
Danke
Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

klausw

Zitat von: chris1284 am 14 Januar 2015, 18:44:37
@klausw: kannst du mir sagen wie ich steuern kann dass das modul in der commandref nicht unter "Devices" sondern "Helper modules" geführt wird? ich habe den html teil mal mit calendar verglichen aber nichts gefunden.
ich vermute, du musst in den Dateien
/fhem/docs/commandref_frame.html
/fhem/docs/commandref_frame_DE.html

dein Modul alphabetisch in die Helpermodules einfügen.
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

klausw

Hallo Chris,

mit sind zwei Dinge aufgefallen:

- Termine, die über Mitternacht gehen (z.B. von 18:00 bis 8:00 am nächsten Tag) werden zu Mitternacht des ersten Termintages gelöscht.

- Zeile 33:
my $test = qx(fhem(\"list $calender TYPE\"));
im 57_CALVIEW.pm Modul erzeugt folgenden Fehler im Raspi Prompt:
sh: 1: Syntax error: word unexpected (expecting ")")
Ich habe sie rausgelöscht, das die Variable nicht weiter verwendet wird.
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

chris1284

Zitat- Termine, die über Mitternacht gehen (z.B. von 18:00 bis 8:00 am nächsten Tag) werden zu Mitternacht des ersten Termintages gelöscht.

da hier nur termine die der calendar führt gelistet werden würde ich sagen das dieser den termin rausgenommen hat (aus modeStarted).


die zeile habe ich rausgenommen, war ein noch vom testen, Danke!

MaJu

Hallo Christian,

Danke für das Modul, ich werde es auch zeitnah einbauen und testen. Und natürlich nutzen, da im WebViewControl der Google-Kalender nicht als iFrame eingebunden werden kann.

Darf ich Vorschläge machen?
In der ReadingsGroup steht in meinen Augen noch zu viel drin. Zum Einen vor Allem die Sekunden bei der Zeit. Die Termine liegen ja immer auf vollen Minuten, das rausnehmen der immer gleichen Anzeige von :00 Sekunden macht es übersichtlicher.

Werden mehrtägige Termine eigentlich an jedem Tag dargestellt? Dann wäre die Bis-Angabe irreführend.

Wird die Bis-Angabe überhaupt benötigt? Gerade auch bei deinem Abfallkalender ist, wie für mich persönlich bei allen Terminen, in einer solchen Übersicht vor allem die Startzeit und der Betreff relevant, evtl. noch der Ort.

Ideal wäre ja eine tageweise Gruppierung der Termine, damit das Datum nur einmal pro Tag dasteht und nicht vor jedem Termin, das erhöht oftmals wieder die Übersichtlichkeit, aber ich glaube das ist nicht so einfach umzusetzen.

Je mehr Dinge, die nicht gebraucht werden, nicht angezeigt werden, desto besser eignet sich das Modul zur Anzeige auf dem Floorplan :-)

Verstehe es bitte nicht als meckern, sondern als Vorschläge zur Optimierung :-)

Mario.
Erlebnisreiche Grüße aus Leipzig!

chris1284

#173
Es ist ehr gedacht dass das Modul erstmal alles als Readings hält. Über Readingsgroup / Reagingsproxy / dummy kannst du dir alles so anpassen wie du willst. Anbei mal eine Bild meiner Kalender-Readingsgroups. Da jeder User andere Ansichten zur, für ihn optimalen, Darstellung hat muss man auf einen Nenner kommen.
Zitat
Ideal wäre ja eine tageweise Gruppierung der Termine, damit das Datum nur einmal pro Tag dasteht und nicht vor jedem Termin, das erhöht oftmals wieder die Übersichtlichkeit, aber ich glaube das ist nicht so einfach umzusetzen.
das bekommst du mit dem vorgeschriebenen Format von readings nicht hin [Name] [wert] [Times Tamp]. man müsste alle Texte /Termine eines tage in ein reading schrieben ->das sieht unübersichtlich und nicht schön aus. ich habe dir mal so ein readingbeispiel aus meinem wetterwarnungs-dummy angehängt.

du kannst ja eine rg nur für "heute" bauen und alles ausblenden bis auf den Text.

MaJu

Du hast Recht, das ist eine Frage der Anwendung von ReadingsGroup.
Bisher habe ich mich einfach noch nicht rangewagt, den Readingsinhalt aufzusplitten, dass also die Sekunden nicht mit angegeben werden. Aber irgendwann ist immer das erste Mal. Ich werde es versuchen.

Das mit dem "heute" müsste weitergehen und sich dynamisch aufbauen. So, wie es bei den meisten Kalender-Apps für Mobiltelefone in der Listenansicht ist:
- 15.01.2015 -
09:00 Frisör
12:00 Mittag mit Klaus @ Pizzeria Roma

- 16.01.2015 -
08:00 Treff mit Daniel @ Bahnhof, vor Gleis 3
09:00 Meeting mit Chef
11:00 Nachbesprechung im Team

- 17.01.2015 -
.
.
.

Aber wie gesagt vermute ich, dass das einfach zu kompliziert wäre.
Erlebnisreiche Grüße aus Leipzig!

RoBra81

Guten Morgen,
Für das Gruppieren hätte ich eine vermutlich relativ einfache Idee (auch wenn ich es nicht zwingend bräuchte): du könntest für jedes reading t_xx_bdate noch ein Reading t_xx_bdate_grouping einführen, das nur für den ersten Termin des Tages existiert. Dann könnte man sich dieses in der ReadingsGroup anzeigen lassen und hätte für jeden Tag nur eine Anzeige...

Ronny

Cybers

Hallo,

Termine die morgen stattfinden werden in der Readingsgroup zweimal angezeigt, einmal mit "Morgen" im Feld Datum was ja auch grundsätzlich richtig ist und dann noch einmal  mit dem Datum im Datum-Feld.

Hier meine Define für die Readingsgroup (ist aber auch die aus dem ersten Post):
define at_kalenderTermine at +*00:01 {\
my $i;; \
my $modtext = "<>,<%time_calendar>,<Uhrzeit>,<Beschreibung>,<bis> ";;\
for($i= 1;;$i<= ReadingsVal("Kalendereintrag","c-tomorrow", 0);;$i++){\
$modtext .= "Kalendereintrag:<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("Kalendereintrag","c-today", 0);;$i++){\
$modtext .= "Kalendereintrag:<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("Kalendereintrag","c-term", 0);;$i++){\
$modtext .= "Kalendereintrag: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 kalenderTermine $modtext");;\
}


Kann man das ändern?
FHEM 6.3 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

chris1284

Entweder im Modul oder du musst in deinem at eine Prüfung im bereich
for($i= 1;;$i<= ReadingsVal("Kalendereintrag","c-term", 0);;$i++){...} einbauen die

t_".sprintf('%03d',$i)."_bdate mit dem heutigen datum vergleicht und entsprechend diese zeile nicht in $modtext schiebt. ca. so
for($i= 1;;$i<= ReadingsVal("Kalendereintrag","c-term", 0);;$i++){
if (t_ ... eq [datumheute]){}else {der normale code}}

Cybers

wenn ich das define in folgendes ändere
define at_kalenderTermine at +*00:01 {\
my $i;; \
my $modtext = "<>,<%time_calendar>,<Uhrzeit>,<Beschreibung>,<bis> ";;\
for($i= 1;;$i<= ReadingsVal("Kalendereintrag","c-tomorrow", 0);;$i++){\
$modtext .= "Kalendereintrag:<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("Kalendereintrag","c-today", 0);;$i++){\
$modtext .= "Kalendereintrag:<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("Kalendereintrag","c-term", 0);;$i++){if (t_ ... eq [datumheute]){}else {\
$modtext .= "Kalendereintrag: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 kalenderTermine $modtext");;\
}}

wird nichts mehr angezeigt und ich bekomme folgende Eintrag im Log:
}"
syntax error at (eval 172) line 11, near ";
Global symbol "$modtext" requires explicit package name at (eval 172) line 10.
2015.01.16 15:14:53 3: at_kalenderTermine: syntax error at (eval 172) line 8, near "... eq"
FHEM 6.3 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

chris1284

oha, das war nur ein sinngemäßes beispiel... den code musst du dir noch anpassen / richtg schreiben. da ich nicht zu haus bin und es nicht testen kann gibt keine syntaxgarantie. du musst das fettgedructe noch mit leben füllen
Zitatdefine at_kalenderTermine at +*00:01 {\
my $i;; \
my $modtext = "<>,<%time_calendar>,<Uhrzeit>,<Beschreibung>,<bis> ";;\
for($i= 1;;$i<= ReadingsVal("Kalendereintrag","c-tomorrow", 0);;$i++){\
$modtext .= "Kalendereintrag:<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("Kalendereintrag","c-today", 0);;$i++){\
$modtext .= "Kalendereintrag:<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("Kalendereintrag","c-term", 0);;$i++){\
if(ReadingsVal("Kalendereintrag","t_".sprintf('%03d',$i)."_bdate","") eq [hier musst du oirgendwie das datum in fhem auslesen])){}
else{
$modtext .= "Kalendereintrag: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 kalenderTermine $modtext");;\
}