Aktualisierungsproblem bei readingsgroup (Alterntiven?)

Begonnen von juemuc, 22 Februar 2024, 22:15:39

Vorheriges Thema - Nächstes Thema

juemuc

Hallo,

ich habe mir über ein HTTPMOD-Device die Pollenvorhersage für 3 Tage ermittelt. Hierbei sind in den Readings die Werte 0 - 3 vorhanden. Über ein Readingsgroup-Device im ZUsammenspiel mit einem Dummy filtere ich nun die Readings heraus, die für den definierten Tag (heute, morgen, übermorgen) die Readings anzeigt, die einen Wert > 0 haben.
Das Problem ist nun, wenn ich den Tag wechsele, aktualisiert die Anzeige Readingsgroup-Device nicht. Ich muss erst im Browser "refreshen". Das ist umständlich. Gibt es Alternativen?

Hier die Definitionen:
Pollenvorhersage:
defmod PM HTTPMOD https://www.wetteronline.de/pollen?gid=x0463&lat=48.029&locationname=H%C3%B6henkirchen-Siegertsbrunn&lon=11.713 10800
attr PM reading01Name message
attr PM reading01XPath //div[@id="pollenreport_catchline"]/text()
attr PM reading02Name 0_Ambrosia
attr PM reading02XPath //div[@id="pollen_tabelle"]/div[1]/div[3]/@data-day0
attr PM reading03Name 0_Ampfer
attr PM reading03XPath //div[@id="pollen_tabelle"]/div[1]/div[6]/@data-day0
attr PM reading04Name 0_Beifuss
attr PM reading04XPath //div[@id="pollen_tabelle"]/div[1]/div[9]/@data-day0
attr PM reading05Name 0_Birke
attr PM reading05XPath //div[@id="pollen_tabelle"]/div[1]/div[12]/@data-day0
attr PM reading06Name 0_Buche
attr PM reading06XPath //div[@id="pollen_tabelle"]/div[1]/div[15]/@data-day0
attr PM reading07Name 0_Erle
attr PM reading07XPath //div[@id="pollen_tabelle"]/div[1]/div[18]/@data-day0
attr PM reading08Name 0_Esche
attr PM reading08XPath //div[@id="pollen_tabelle"]/div[1]/div[21]/@data-day0
attr PM reading09Name 0_Gräser
attr PM reading09XPath //div[@id="pollen_tabelle"]/div[1]/div[24]/@data-day0
attr PM reading10Name 0_Hasel
attr PM reading10XPath //div[@id="pollen_tabelle"]/div[1]/div[27]/@data-day0
attr PM reading11Name 0_Pappel
attr PM reading11XPath //div[@id="pollen_tabelle"]/div[1]/div[30]/@data-day0
attr PM reading12Name 0_Roggen
attr PM reading12XPath //div[@id="pollen_tabelle"]/div[1]/div[33]/@data-day0
attr PM reading13Name 0_Ulme
attr PM reading13XPath //div[@id="pollen_tabelle"]/div[1]/div[36]/@data-day0
attr PM reading14Name 0_Wegerich
attr PM reading14XPath //div[@id="pollen_tabelle"]/div[1]/div[39]/@data-day0
attr PM reading15Name 0_Weide
attr PM reading15XPath //div[@id="pollen_tabelle"]/div[1]/div[42]/@data-day0
attr PM reading16Name 1_Ambrosia
attr PM reading16XPath //div[@id="pollen_tabelle"]/div[1]/div[3]/@data-day1
attr PM reading17Name 1_Ampfer
attr PM reading17XPath //div[@id="pollen_tabelle"]/div[1]/div[6]/@data-day1
attr PM reading18Name 1_Beifuss
attr PM reading18XPath //div[@id="pollen_tabelle"]/div[1]/div[9]/@data-day1
attr PM reading19Name 1_Birke
attr PM reading19XPath //div[@id="pollen_tabelle"]/div[1]/div[12]/@data-day1
attr PM reading20Name 1_Buche
attr PM reading20XPath //div[@id="pollen_tabelle"]/div[1]/div[15]/@data-day1
attr PM reading21Name 1_Erle
attr PM reading21XPath //div[@id="pollen_tabelle"]/div[1]/div[18]/@data-day1
attr PM reading22Name 1_Esche
attr PM reading22XPath //div[@id="pollen_tabelle"]/div[1]/div[21]/@data-day1
attr PM reading23Name 1_Gräser
attr PM reading23XPath //div[@id="pollen_tabelle"]/div[1]/div[24]/@data-day1
attr PM reading24Name 1_Hasel
attr PM reading24XPath //div[@id="pollen_tabelle"]/div[1]/div[27]/@data-day1
attr PM reading25Name 1_Pappel
attr PM reading25XPath //div[@id="pollen_tabelle"]/div[1]/div[30]/@data-day1
attr PM reading26Name 1_Roggen
attr PM reading26XPath //div[@id="pollen_tabelle"]/div[1]/div[33]/@data-day1
attr PM reading27Name 1_Ulme
attr PM reading27XPath //div[@id="pollen_tabelle"]/div[1]/div[36]/@data-day1
attr PM reading28Name 1_Wegerich
attr PM reading28XPath //div[@id="pollen_tabelle"]/div[1]/div[39]/@data-day1
attr PM reading29Name 1_Weide
attr PM reading29XPath //div[@id="pollen_tabelle"]/div[1]/div[42]/@data-day1
attr PM reading30Name 2_Ambrosia
attr PM reading30XPath //div[@id="pollen_tabelle"]/div[1]/div[3]/@data-day2
attr PM reading31Name 2_Ampfer
attr PM reading31XPath //div[@id="pollen_tabelle"]/div[1]/div[6]/@data-day2
attr PM reading32Name 2_Beifuss
attr PM reading32XPath //div[@id="pollen_tabelle"]/div[1]/div[9]/@data-day2
attr PM reading33Name 2_Birke
attr PM reading33XPath //div[@id="pollen_tabelle"]/div[1]/div[12]/@data-day2
attr PM reading34Name 2_Buche
attr PM reading34XPath //div[@id="pollen_tabelle"]/div[1]/div[15]/@data-day2
attr PM reading35Name 2_Erle
attr PM reading35XPath //div[@id="pollen_tabelle"]/div[1]/div[18]/@data-day2
attr PM reading36Name 2_Esche
attr PM reading36XPath //div[@id="pollen_tabelle"]/div[1]/div[21]/@data-day2
attr PM reading37Name 2_Gräser
attr PM reading37XPath //div[@id="pollen_tabelle"]/div[1]/div[24]/@data-day2
attr PM reading38Name 2_Hasel
attr PM reading38XPath //div[@id="pollen_tabelle"]/div[1]/div[27]/@data-day2
attr PM reading39Name 2_Pappel
attr PM reading39XPath //div[@id="pollen_tabelle"]/div[1]/div[30]/@data-day2
attr PM reading40Name 2_Roggen
attr PM reading40XPath //div[@id="pollen_tabelle"]/div[1]/div[33]/@data-day2
attr PM reading41Name 2_Ulme
attr PM reading41XPath //div[@id="pollen_tabelle"]/div[1]/div[36]/@data-day2
attr PM reading42Name 2_Wegerich
attr PM reading42XPath //div[@id="pollen_tabelle"]/div[1]/div[39]/@data-day2
attr PM reading43Name 2_Weide
attr PM reading43XPath //div[@id="pollen_tabelle"]/div[1]/div[42]/@data-day2
attr PM readingOMap noburden:0, weakburden:1, moderateburden:2, strongburden:3
attr PM room Wetter/Zeit
attr PM showBody 0
attr PM showError 0
attr PM showMatched 1
attr PM stateFormat message
attr PM userReadings timeStamp {my $date = join("." => reverse split('-', (split(' ',ReadingsTimestamp("PM","LAST_REQUEST",0)))[0]))." ";;my @timehhmmss = split( " ", ReadingsTimestamp("PM","LAST_REQUEST",""));; my @time = split(/:/,$timehhmmss[1]);; return $date." / ".$time[0].":".$time[1]." Uhr"}

Tag-Auswahl: 
defmod Tag_Pollenflug dummy
attr Tag_Pollenflug devStateStyle style="text-align:right"
attr Tag_Pollenflug group Pollenflug
attr Tag_Pollenflug room Wetter/Zeit
attr Tag_Pollenflug setList 0 1 2
attr Tag_Pollenflug stateFormat {if (ReadingsVal('Tag_Pollenflug','state',0) eq "0"){"Heute"} else {if (ReadingsVal('Tag_Pollenflug','state',0) eq "1"){"Morgen"} else {if (ReadingsVal('Tag_Pollenflug','state',0) eq "2"){"Übermorgen"}}}}
attr Tag_Pollenflug webCmd 0:1:2
Darstellung über Readingsgroup:
defmod rgPollenflug readingsGroup PM
attr rgPollenflug group Pollenflug
attr rgPollenflug mapping {my @name = split(/_/,$READING);; return $name[1]}
attr rgPollenflug noheading 1
attr rgPollenflug nolinks 1
attr rgPollenflug notime 1
attr rgPollenflug room Wetter/Zeit
attr rgPollenflug valueFormat { return $VALUE if ($READING =~ ReadingsNum('Tag_Pollenflug','state',0) && $VALUE > 0);; return undef;; }
attr rgPollenflug valueStyle { BalkenPollen($VALUE) }
BalkenPollen() ist in der 99_myUtils.pm defininiert.

Wer hat eine Idee? Anbei noch ein Screenshot der Darstellung in FTUI3.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Aurel_B

Ohne dass ich mich mit ReadingsGroup auskenne: wie soll denn die ReadingsGroup mitbekommen, dass sich der State deines Dummies "Tag_Pollenflug" geändert hat? Fehlt da nicht noch eine Art notify? Und zwar auf das PM Gerät: damit sollte - nach meinem Verständnis - auch die ReadingsGroup aktualisiert werden?

juemuc

Das passiert automatisch. Das ist ja genau der Vorteil einer readingsgroup. Es wird nur nicht dem Browser mitgeteilt. Ein Refresh im Browser zeigt dann die neuen Werte.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Aurel_B

Ok, ich verstehe. Ich habe jetzt ein wenig mit deinem Beispiel rumgespielt, bin bis jetzt aber nicht auf einen grünen Zweig gekommen. Anderer Ansatz: was ist, wenn du deine Readings in der ReadingsGroup Definition filterst? Dann sollte - soweit ich das verstanden habe nach Lesen der commandref - ein Update möglich sein? Also quasi nicht nur "defmod rgPollenflug readingsGroup PM" sondern "defmod rgPollenflug readingsGroup PM <hier kommt der Filter basierend auf Tag_Pollenflug state>"? Wie gesagt, ich kenne mich 0 aus mit ReadingsGroups, daher konnte ich bislang auch keinen gescheiten Filter zusammenstellen der die ReadingsGroup gemäss State von Tag_Pollenflug filtert.

juemuc

Ich bräuchte dann aber einen Tipp, wie ich den Filter aus "valueFormat" in die Definition bekomme.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Aurel_B

Keine Ahnung, ich konnte auf die Schnelle auch keinen Filter erstellen resp. die Syntax erschliesst sich mir so nicht. Ich denke allerdings, das müsste so klappen weil: mit deiner bisherigen Vorangehensweise bekommt ja die ReadingsGroup gar nicht mit, wenn sich "Tag_Pollenflug" ändert. In dem du den Filter in die Defition von "rgPollenflug" aufnimmst müsste, meiner Meinung nach, Änderungen von "Tag_Pollenflug" dann auch die ReadingsGroup triggern?

juemuc

Hat jemand von den "readingsgroup-Spezialisten" eine Idee?

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).