Hauptmenü

calendar calview

Begonnen von Müller, 21 März 2020, 17:10:42

Vorheriges Thema - Nächstes Thema

pcbastler

naja, eine ical-Datei ist auch nur Text. Evtl. kommt man mit einem ordentlichen Editor uns Suchen&Ersetzen schneller ans Ziel.
jm2c Frank

Müller

#16
Hallo Otto,

na gut, probieren wir es

hier sind die details von CALVIEW, nachdem ich
{my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;my @tonne = split (" ",$val);;return $tonne[1]} angewandt habe.

Deinen ersten Code ist nicht benutzt.

defmod Abfall CALVIEW Abfallkalender 1
attr Abfall devStateIcon Wertstoffe:bag@orange Restabfall:muelltonne@black Baumschnitt:scene_garden@green Biotonne:muelltonne@brown
attr Abfall devStateStyle style="text-align:left;;;;font-weight:normal;;;;"
attr Abfall group Info
attr Abfall maxreadings 2
attr Abfall modes next
attr Abfall room Baßler,Baßler_komplett,test
attr Abfall stateFormat t_001_weekdayname\
t_001_bdate\
t_001_summary
attr Abfall userReadings {my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;;;my @tonne = split (" ",$val);;;;return $tonne[1]}

setstate Abfall Montag\
23.03.2020\
Abfuhrtermin Restabfall/Wertstoffe am 23.03.2020
setstate Abfall 2020-03-21 21:19:02 c-term 2
setstate Abfall 2020-03-21 21:19:02 c-today 0
setstate Abfall 2020-03-21 21:19:02 c-tomorrow 0
setstate Abfall 2020-03-21 21:19:02 state t: 2 td: 0 tm: 0
setstate Abfall 2020-03-21 21:19:02 t_001_bdate 23.03.2020
setstate Abfall 2020-03-21 21:19:02 t_001_btime 06:00
setstate Abfall 2020-03-21 21:19:02 t_001_categories
setstate Abfall 2020-03-21 21:19:02 t_001_daysleft 2
setstate Abfall 2020-03-21 21:19:02 t_001_daysleftLong in 2 Tagen
setstate Abfall 2020-03-21 21:19:02 t_001_description Abfuhrtermin Restabfall/Wertstoffe in Böhl-Iggelheim am 23.03.2020
setstate Abfall 2020-03-21 21:19:02 t_001_duration 39600
setstate Abfall 2020-03-21 21:19:02 t_001_edate 23.03.2020
setstate Abfall 2020-03-21 21:19:02 t_001_etime 17:00
setstate Abfall 2020-03-21 21:19:02 t_001_location  in Böhl-Iggelheim
setstate Abfall 2020-03-21 21:19:02 t_001_mode next
setstate Abfall 2020-03-21 21:19:02 t_001_source Abfallkalender
setstate Abfall 2020-03-21 21:19:02 t_001_sourcecolor white
setstate Abfall 2020-03-21 21:19:02 t_001_summary Abfuhrtermin Restabfall/Wertstoffe am 23.03.2020
setstate Abfall 2020-03-21 21:19:02 t_001_timeshort 06:00 - 17:00
setstate Abfall 2020-03-21 21:19:02 t_001_weekday 1
setstate Abfall 2020-03-21 21:19:02 t_001_weekdayname Montag
setstate Abfall 2020-03-21 21:19:02 t_002_bdate 27.03.2020
setstate Abfall 2020-03-21 21:19:02 t_002_btime 06:00
setstate Abfall 2020-03-21 21:19:02 t_002_categories
setstate Abfall 2020-03-21 21:19:02 t_002_daysleft 6
setstate Abfall 2020-03-21 21:19:02 t_002_daysleftLong in 6 Tagen
setstate Abfall 2020-03-21 21:19:02 t_002_description Abfuhrtermin Hecken- und Baumschnitt in Böhl-Iggelheim am 27.03.2020
setstate Abfall 2020-03-21 21:19:02 t_002_duration 39600
setstate Abfall 2020-03-21 21:19:02 t_002_edate 27.03.2020
setstate Abfall 2020-03-21 21:19:02 t_002_etime 17:00
setstate Abfall 2020-03-21 21:19:02 t_002_location  in Böhl-Iggelheim
setstate Abfall 2020-03-21 21:19:02 t_002_mode next
setstate Abfall 2020-03-21 21:19:02 t_002_source Abfallkalender
setstate Abfall 2020-03-21 21:19:02 t_002_sourcecolor white
setstate Abfall 2020-03-21 21:19:02 t_002_summary Baumschnitt
setstate Abfall 2020-03-21 21:19:02 t_002_timeshort 06:00 - 17:00
setstate Abfall 2020-03-21 21:19:02 t_002_weekday 5
setstate Abfall 2020-03-21 21:19:02 t_002_weekdayname Freitag




Das hier die Anzeige in der ersten Zeile:

Montag 23.03.2020 Abfuhrtermin Restabfall/Wertstoffe am 23.03.2020
FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

Müller

Vielleicht hat pcbastler Recht?
FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

TomLee

#18
Hallo,

@Otto
für die Lösung aus dem Array ein Element rauszufischen wär ich damals dankbar gewesen.

@Müller

hier mal zu userReadings einlesen (besonders trigger der fehlt im nächsten Beispiel)

Zum ausprobieren im Calendar-Device, nicht im CALVIEW:

nextWaste {my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;my @tonne = split (" ",$val);;return $tonne[1]}

Und Danke, dieser Thread hat mir devstateIcon wieder klarer gemacht.

Ein Icon zum jeweiligen Abfalltermin (einfach devstateIcon erweitern, stateformat so lassen):

attr <calendardevice> devStateIcon 1.Restabfall/Wertstoffe:muelltonne@grey 1.Bioabfall:muelltonne@green 1.Schadstoffmobil:muelltonne@red
attr <calendardevice> devStateIcon stateFormat 1:nextWaste


Gruß

Thomas

Otto123

Ich hatte nichts von CALVIEW gesagt - außer das man das nicht braucht. :(

Das userreadings ist für das CALENDAR Device - wie Thomas schon gesagt hat.
Und bitte die semikolon nicht immer wieder vervielfachen!

Poste doch am Besten mal das CALENDAR Device wenn Du nicht klar kommst. Also offenbar
list Abfallkalender

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Müller

Ok, ich habe das userreading gestern falsch gesetzt (calView). Habe es wieder gelöscht und im Kalender gesetzt. (semicolon ? ich habe deinen Code kopiert und eingesetzt....)

Internals:
   DEF        ical url https://calendar.google.com/calendar/ical/50ujuclvps8b64ijie7j4bsq08%40group.calendar.google.com/private-4f60dac22c9d8dfeb5cd3c0185ca1234/basic.ics [3600]
   FUUID      5e401ebe-f33f-a4d3-7971-aec51037be18403d
   NAME       Abfallkalender
   NOTIFYDEV  global
   NR         256
   NTFY_ORDER 50-Abfallkalender
   STATE      1:nextwaste
   TYPE       Calendar
   READINGS:
     2020-03-22 07:19:01   calname         Abfallkalender
     2020-03-22 07:19:01   lastUpdate      2020-03-22 07:19:00
     2020-02-09 16:01:19   modeAlarm       
     2020-03-16 17:00:00   modeAlarmOrStart
     2020-02-09 16:01:19   modeAlarmed     
     2020-03-16 17:15:30   modeChanged     
     2020-03-17 17:15:30   modeEnd         
     2020-03-16 17:15:30   modeEnded       
     2020-03-16 17:00:00   modeStart       
     2020-03-16 06:15:30   modeStarted     
     2020-03-22 07:19:01   modeUpcoming    eb2c229e7d20652c9ee9ecb6dad4bc1e;6de264ced9184b7988e8cdb62a5757ce;623a55005bef5d879a4dc882d1842296;e556fc50d43d614329d2eff325842937;9d0621a0d2fcd6ab8ad297285e898b5a;f0bef6370009bb4ff03ba0c2c0a6639b;508d406cfe5592c3e3757dfa4e8f5d74;a588d359837ac5128a5828ea64ee34c0;9147c2b7d484af29bfe990df8fef41c8;96ce5896696a3e86da06808e7a25403d;4a6a67b98e4980e3de2303d6cfc571af;e79cea3ec4e6f6b4ce0ee3d65cd60271;f7081b8706701413ff0f4e4b368ad63b;a3c6a17bd44addf5ef7b2552b467bef1;e4ca1ac58b21c710d6d0a203ff1c31be;569a76c5540116c19bc7d8348bc88ac5;b264a80a4cfd89e8028e79b0c0aa902e;9a7a8370c9e97d292046ac2f23ce8a16;e1212bb2126b368c9c091e12dd1811b3;471de91708cb279a264e4aa619222deb;519eba8bea6ca674e05df4c0374e0c06;56955cac74b225f1f9f9be4e5401c6dd;40433f710b2e7ca5b5a5bc1d149ea812;9625b1fe8ebafb84985c9afc5b945a4e;5d69bf439d7e67983b98bac76743b42e;3c0bc404a3e52add418ed81cab1a6f00;d6ec7dc4923ec43ca2b01f759bbc85b9;ffd989a044ea2efe3d6e27255c74ee39;4844b03204bd9568f3600db2522e02b9;b5856b7fea58a1712ed4beb81e7124a2;b9789bff775c7956e2a1a33903fdbf86;d3898e8142b44ed81aac4d089ecde0f2;50505d85e981916c10a79fb1bdd1729d;2eb21d2bd19461c93fe2666de1f6c140;b72825ca44fa537f93cfd2cf02dc199a;1580b803817b589ebc354dd480d592b1;10e72a3fb50ccec8b68a93ae2d97e696;2fbff84b2c192fa9317fc5903f57b978;82a92275c812e1c2a4bc35b70ba701f0;6e89bc916214b7f0471918f153687f15;182939e6dd3483dce88859e12a17ab67;f1fc691a10d8b6d236dd8be453fa762e;e6be24e373dd7ec326897322d872142e;47b1c283bd7a4e4c480f381ffedf6f12;7bddd77a4f687098300485652c8754bd;c0b423eeafa29ef05a37bf3c452c6dad;e01f673c4be4e8cb3f4ed1e0600dd60b;da419930e3a662e3e030e8e54d996464;995e241f4a389e45d23af3ac35b4f085
     2020-03-22 07:19:01   nextUpdate      2020-03-22 08:19:00
     2020-03-22 07:19:01   nextWakeup      2020-03-22 08:19:00
     2020-03-22 07:19:01   state           triggered
Attributes:
   cutoffOlderThan 1d
   room       test
   userReadings {my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;my @tonne = split (" ",$val);;return $tonne[1]}


FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

Müller

ich lese mich mal bei "userreading mit "Split" erstellen/kürzen" ein.

https://forum.fhem.de/index.php?topic=58059.0

Letztendlich möchte ich das reading "Abfuhrtermin Restabfall/Wertstoffe am 23.03.2020" kürzen in "Restabfall/Wertstoffe"
FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

Otto123

#22
Ich sage ja immer: Zwischen Copy und Paste gehört der Kopf!

userReadings:
attr device userReadings Readingname {Perlausdruck}

Du hast zwar wild kopiert aber vergessen dem Reading einen Namen zu geben. Ich habe zuletzt nur den Perlcode gepostet!

Und mein perlcode macht genau das:  "Letztendlich möchte ich das reading "Abfuhrtermin Restabfall/Wertstoffe am 23.03.2020" kürzen in "Restabfall/Wertstoffe""
Aber offenbar hast Du das bisher nicht getestet und verstanden. :o
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Prof. Dr. Peter Henning

Zitatich lese mich mal bei "userreading mit "Split" erstellen/kürzen" ein.

Man kann Perl nicht erlernen, indem man die ad-hoc-Beispiele und Fragen im Anfängerforum liest. Besser hier: https://wiki.selfhtml.org/wiki/Perl


Und vor allem: Anfängerdoku zu FHEM lesen. Denn wenn man mit FHEM erfolreich sein will, muss man wenigstens die Nomenklatur kennen (also z.B. verstehen, was Events sind, sic).


LG

pah


Müller

Danke, eine kleine Erläuterung hilft meinem Kopf.....

Beim Kalender (Modul calendar)
attr Abfallkalender userReadings event {my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;my @tonne = split (" ",$val);;return $tonne[1]}
funktioniert.

Beim CALVIEW Modul
attr Abfall Readings event {my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;my @tonne = split (" ",$val);;return $tonne[1]}
wird die ungekürzte Version angezeigt

müsste dies in Calview nicht auch funktionieren ?
(Calview ist für mich ganz nett, weil ich auf verschiedene Readings zugreifen kann: Wochentag, Datum)


@PAH: Ja, ich gebe zu davor habe ich mich bisher gedrückt, werde es mal nachholen....
FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

Otto123

ZitatBeim CALVIEW Modul
...
wird die ungekürzte Version angezeigt
Weil dieser Code mit der Variablen $name einen Befehl absetzt der ein CALENDAR Device abfragt (das wo dieser Code implementiert ist)
Das kann per Copy und Paste nicht bei einem x-beliebigen anderen Device funktionieren.

Das funktioniert sicher auch bei CALVIEW, wenn Du diesen Code richtig modifiziert im CALVIEW Device implementierst. Genau deswegen hatte ich dir ja nur den Ansatz in Perl gezeigt (#6).
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Otto123

Ich will Dir mal noch meine Codezeile erklären, vielleicht hilft das bei der Umsetzung innerhalb calview
{ - hier beginnt der Perlblock
my $val=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1); - hier wird eine Variable erzeugt und mit einem Wert (String) gefüllt.
my @tonne = split (" ",$val); - hier wird der String ($val) in ein array zerlegt in dem beim Leerzeichen getrennt wird
return $tonne[1] - hier wird der 2te Wert im Array zurück gegeben (Der Index zählt ab 0)
} - hier endet der Perlblock

Du kannst den String wie in meinem allerersten Beispiel einfach mit Text füllen, oder Du kannst den Text aus einem Reading lesen.
ReadingsVal(Device,Reading,Defaultwert)
ReadingsVal("Abfall","t_001_description","er ror") Also im ganzen Satz:
my $val=ReadingsVal("Abfall","t_001_description","er ror");
Du kannst das in der FHEM Kommandozeile testen:
{my $val=ReadingsVal("Abfall","t_001_description","er ror");;my @tonne = split (" ",$val);;return $tonne[1]}
Du kannst Dir damit in deinem Calview Device auch ein UserReadings bauen.

Ich hoffe das hilft :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Müller

Super Otto,

vielen Dank für deine Geduld und deine Erklärungen, wirklich nett von dir, dass du dir die Zeit dafür genommen hast.

viele Grüße
FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

TomLee

Wenn das jetzt klappt, mein Vorschlag für ein passendes Icon zu dem userReading klappt in jedem Device, also auch hier:

Zitatattr <calviewdevicename> devStateIcon 1.Restabfall/Wertstoffe:muelltonne@grey 1.Bioabfall:muelltonne@green 1.Schadstoffmobil:muelltonne@red
attr <calviewdevicename> devStateIcon stateFormat 1:nextWaste <-- ersetzen durch deinen userReading Name

Gruß Thomas

TomLee

Zitat(Calview ist für mich ganz nett, weil ich auf verschiedene Readings zugreifen kann: Wochentag, Datum)

Wochentag, Datum und Icon für den nächsten Termin im Calendar-Device (von dort holt doch CalView die Werte):

attr Abfallkalender defaultFormat "$T1 $S"
attr Abfallkalender devStateIcon 1.Restabfall/Wertstoffe:muelltonne@grey 1.Bioabfall:muelltonne@brown 1.Schadstoffmobil:muelltonne@red 1.Hecken-.und.Baumschnitt:muelltonne@green
attr Abfallkalender room Kalender
attr Abfallkalender stateFormat 1:nextWaste\
nextWaste am nextWastedate
attr Abfallkalender userReadings nextWaste {\
my $var=fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);;\
my @tonne = split (/ /,$var);;\
return $tonne[1]\
},\
nextWastedays {\
my $var =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);;\
return $var\
},\
nextWastedate { \
my $date = fhem('get '.$name.' events format:custom="$T1" limit:from=0,count=1');;\
my @dat = split (/ /,$date);;\
return $dat[0];;\
},\
nextWasteweekday {\
my @days = qw/Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag/;;\
my $date = fhem('get '.$name.' events format:custom="$T1" limit:from=0,count=1');;\
my @date = split /\./,$date;;\
return $days[(localtime(timelocal(0,0,0,$date[0],$date[1]-1,$date[2]-1900)))[6]];;}

Den Code über die Raw Definition oder das + hinzufügen/ergänzen