[GELÖST] DWDpollenflug Binding und Formatierung mit MAP

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
thomas_w

[GELÖST] DWDpollenflug Binding und Formatierung mit MAP

Beitrag von thomas_w »

Frage:
Wie kann ich den gemessenen Originalwert und den per mapping ermittelten Text gleichzeitig, aber separat ausgeben.

So sieht es jetzt aus:
OpenHabWeatherMaps.JPG
Binding:
DWD Pollenflugindex

Things:

Code: Alles auswählen

Bridge dwdpollenflug:bridge:dwd "DWD pollen count Bridge" [refresh="15"] {
    Thing region region112 "DWD pollen count region" @ "APIS" [regionID="112"]
    Thing region partregion113 "DWD pollen count partregion" @ "APIS" [regionID="113"]
}
Items:

Code: Alles auswählen

String pollenTodayGrasses "Pollenflug-Gräser [MAP(pollen.map):%s]" {channel="dwdpollenflug:region:dwd:region112:grasses#today"}
In der pollen.map Transformation wird 0 in den Text keine (0) übersetzt. Also Text und Wert in einem Label.

Transform (MAP):

Code: Alles auswählen

0=keine (0)
0-1=keine bis gering (0-1)
1=gering (1)
1-2=gering bis mittel (1-2)
2=mittel (2)
2-3=mittel bis hoch (2-3)
3=hoch (3)
-1=keine Daten
-=keine Daten
NULL=keine Daten
Ziel:
Was ich anzeigen möchte wäre sowas...(auch wenn es den Wert 2,8 bei diesem Binding so gar nicht gibt)

..."Pollenflug-Gräser [MAP(pollen.map):%s] [%0.1f]"


=> Pollenflug-Gräser mittel (2,8)

Hoffe die Frage ist halbweg klar...

Danke und Grüße
Thomas
von udo1toni » 14. Jun 2020 16:40
Du hast im Label keinen dynamischen Teil. Ergänze das Label mit [%s] um den String so wie er ist auszugeben.
Gehe zur vollständigen Antwort
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von thomas_w am 14. Jun 2020 16:57, insgesamt 1-mal geändert.

Benutzeravatar
udo1toni
Beiträge: 13953
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: DWDpollenflug Binding und Formatierung mit MAP

Beitrag von udo1toni »

Ich verstehe nicht so ganz, worauf Du damit hinaus willst. Das Binding liefert schlicht keine solchen Werte. Es handelt sich um einen String, nicht um eine Zahl. DWD liefert auch nur exakt diesen String. Du kannst im Mapping natürlich statt (1-2) auch (1.5) schreiben, aber das stellt streng genommen eine Verfälschung der Daten dar. ;)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

thomas_w

Re: DWDpollenflug Binding und Formatierung mit MAP

Beitrag von thomas_w »

udo1toni hat geschrieben: 13. Jun 2020 14:24 Ich verstehe nicht so ganz, worauf Du damit hinaus willst.
So bin jetzt ein gutes Stück weiter um zu zeigen, was ich eigentlich erreichen möchte.

Ziel:
In der Sitemap sollte das Item pollenTodayGrassesOutput mit dem Wert mittel bis hoch (2-3) ausgegeben werden.


Frage:
Warum wird mein - in einer rule befülltes - Item pollenTodayGrassesOutput nicht auf der Sitemap ausgegeben? Wie im logging zu sehen ist, wird mein spezielle Output Item pollenTodayGrassesOutput korrekt gefüllt.

xyz.sitemap;

Code: Alles auswählen

            // DWD Polleninformation 
            Text item=pollenTodayGrasses  valuecolor=[=="3"="#f00014",
                                                      =="2-3"="#f00014",
                                                      =="2"="#ff9900",
                                                      =="1-2"="#ff9900",
                                                      =="1"="#8E8787",
                                                      =="0-1"="#8E8787"] icon="lawnmower"

            Text item=pollenTodayGrassesOutput  icon="lawnmower"
dwdpollenflug.items:

Code: Alles auswählen

String pollenTodayGrasses "Pollen Gräser Binding" {channel="dwdpollenflug:region:dwd:region112:grasses#today"}

// Formatierte Output Items für sitemap
String pollenTodayGrassesOutput "Pollen Gräser Output"
pollen.map:

Code: Alles auswählen

0=keine
0-1=keine bis gering
1=gering
1-2=gering bis mittel
2=mittel
2-3=mittel bis hoch
3=hoch
-1=keine Daten (-1)
-=keine Daten (-)
NULL=keine Daten (NULL)
In der Rule habe ich momentan noch ein currentDateTime Item, dass jede Minute ausgelöst wird. Das habe ich nur da drin, damit die .rules regelmässig jede Minute ausgelöst wird. Damit läßt sich besser testen.

dwdpollenflug.rules:

Code: Alles auswählen

rule "DWD Pollenflug Itemausgabe Formatieren (dwdpollenflug.rules)"
when
    Channel "dwdpollenflug:region:dwd:region112:grasses#today" triggered or 
    Item currentDateTime changed
then 

    // aktuellen Item value abholen und als String formatierenm Transform mit MAP + ursprünglichen Wert  
    var outStr = transform('MAP', 'pollen.map', pollenTodayGrasses.state.toString) + ' (' + pollenTodayGrasses.state.toString + ')'

    // Logging neuer Wert
    logInfo('dwdpollenflug.rules changed outStr:',outStr)

    // Output Item mit zusammen gesetzten Werten füllen
    pollenTodayGrassesOutput.postUpdate(outStr)

    logInfo('pollenTodayGrassesOutput.state',pollenTodayGrassesOutput.state.toString)
end


logging:

Code: Alles auswählen

2020-06-14 16:18:25.134 [vent.ItemStateChangedEvent] - currentDateTime changed from 2020-06-14T16:17:25.137+0200 to 2020-06-14T16:18:25.139+0200
2020-06-14 16:18:25.140 [INFO ] [.dwdpollenflug.rules changed outStr:] - mittel bis hoch (2-3)
2020-06-14 16:18:25.150 [INFO ] [cript.pollenTodayGrassesOutput.state] - mittel bis hoch (2-3)
OpenHabWeatherMaps.JPG
Tipps?

Danke und Grüße
Thomas
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 13953
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: DWDpollenflug Binding und Formatierung mit MAP

Beitrag von udo1toni »

Du hast im Label keinen dynamischen Teil. Ergänze das Label mit [%s] um den String so wie er ist auszugeben.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

thomas_w

Re: DWDpollenflug Binding und Formatierung mit MAP

Beitrag von thomas_w »

udo1toni hat geschrieben: 14. Jun 2020 16:40 Du hast im Label keinen dynamischen Teil. Ergänze das Label mit [%s] um den String so wie er ist auszugeben.
Danke Udo!

Bingo, dass wars.... :D :D

dwdpollenflug.items:

Code: Alles auswählen

String pollenTodayGrasses "Pollen Gräser Binding" {channel="dwdpollenflug:region:dwd:region112:grasses#today"}

// Formatierte Output Items für sitemap
String pollenTodayGrassesOutput "Pollen Gräser Output [%s]"
OpenHabWeatherMaps.JPG
Was mir jetzt noch fehlt ist die flexible Farbe (siehe links Icon mit dem roten 2-3) abhängig vom Wert. Keine Ahnung wo ich das nun ergänzen könnte...!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 13953
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: [GELÖST] DWDpollenflug Binding und Formatierung mit MAP

Beitrag von udo1toni »

Das geht wie beim Original :) nur dass Du nun den kompletten Text eintragen musst, und Du kannst Nur == verwenden, da ein Text nicht größer oder kleiner sein kann, das ungleich (!=) aber für alle Werte zutrifft, bis auf den einen.

Frage am Rande: Was versprichst Du Dir davon? Schließlich geht das ganze ja auch hervorragend mit dem Mapping und Du brauchst dazu keine Rule...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

thomas_w

Re: [GELÖST] DWDpollenflug Binding und Formatierung mit MAP

Beitrag von thomas_w »

udo1toni hat geschrieben: 14. Jun 2020 18:37 Das geht wie beim Original :) nur dass Du nun den kompletten Text eintragen musst, und Du kannst Nur == verwenden, da ein Text nicht größer oder kleiner sein kann, das ungleich (!=) aber für alle Werte zutrifft, bis auf den einen.

Frage am Rande: Was versprichst Du Dir davon? Schließlich geht das ganze ja auch hervorragend mit dem Mapping und Du brauchst dazu keine Rule...
Zum einen empfinde ist ein fixes Ersetzen von "1-2" durch "xyz (1-2)" irgendwie als unflexibel und nicht "atomar", zum anderen habe ich eine etwas detailiertere Umsetzung vor, bei der ich sowohl den Text als auch den dahinter liegenden Wert sehen möchte. Dafür habe ich jetzt quasi geübt.

Das mit den Farben fällt dann wohl erst mal unter den Tisch. Mal schauen ....

Benutzeravatar
udo1toni
Beiträge: 13953
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: [GELÖST] DWDpollenflug Binding und Formatierung mit MAP

Beitrag von udo1toni »

So ist openHAB nicht gedacht. :) wenn Du drüber nachdenkst, wirst Du sicher zugeben müssen, dass Du Dir viel Arbeit für nichts machst.
Das Mapping stellt für jeden möglichen Wert eine Übersetzung zur Verfügung. Die angehängten Zahlenwerte möchte man vielleicht gar nicht haben (dann lässt man sie im Mapping einfach weg).
Du kannst in der Sitemap auch zwei Ansichten des selben Items anzeigen (einmal mit Mapping, einmal ohne), damit die Anzeige atomar ist ;)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

thomas_w

Re: [GELÖST] DWDpollenflug Binding und Formatierung mit MAP

Beitrag von thomas_w »

udo1toni hat geschrieben: 14. Jun 2020 23:14 So ist openHAB nicht gedacht. :) wenn Du drüber nachdenkst, wirst Du sicher zugeben müssen, dass Du Dir viel Arbeit für nichts machst.
Keine Ahnung für was openHAB gedacht ist.... bei mir ist ja keine Arbeit, sondern Hobby.


1) Was mich eher wundert, ist das die DWD Pollenanzeige heute nichts liefert, sondern nur einen Strich: - (Nachts hatte ich openHAB /Raspi herunter gefahren und heute frü neu gestartet). Das sah die Anzeige so aus:

Pollen Gräser -

Erst nachdem ich in der dwdpollenflug.rules das Logging wieder aktivert habe (Kommentare raus) und als WHEN event wieder zusätzlich den currentDateTime vom ntp Bindung (changed jede Minute) wieder aktivert habe, ändert sich die Anzeige auf: hoch (3)

OpenHabWeatherMaps2.JPG

Das rules Channel "dwdpollenflug:region:dwd:region112:grasses#today" triggered ändert sich wohl nur einmal am Tag und/oder OH cached gewaltig. Wie kann man den Cache beim Hochfahren leeren?

udo1toni hat geschrieben: 14. Jun 2020 23:14 Das Mapping stellt für jeden möglichen Wert eine Übersetzung zur Verfügung. Die angehängten Zahlenwerte möchte man vielleicht gar nicht haben (dann lässt man sie im Mapping einfach weg).
Du kannst in der Sitemap auch zwei Ansichten des selben Items anzeigen (einmal mit Mapping, einmal ohne), damit die Anzeige atomar ist ;)

2) Die zwei Items "hoch" und "(3)" so eng nebeneinander anzuzeigen, dafür habe ich bisher keine Lösung gefunden
OpenHabWeatherMaps3.JPG

Aktuell bin ich ja noch in der Testphase und versuche herauszufinden was geht und was man besser bleiben läßt.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 13953
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: [GELÖST] DWDpollenflug Binding und Formatierung mit MAP

Beitrag von udo1toni »

Der Punkt ist, dass exakt diese Anzeige über das Mapping zur Verfügung steht. Du machst Dir das Leben nur unnötig schwer (siehe auch die Notwendigkeit, die Rule minütlich auszuführen...), und das nur, weil Du glaubst, dass das dann korrekter wäre...
Ist nicht böse gemeint, aber das ist halt schlicht unnötig.

Gesendet von meinem SM-G973F mit Tapatalk

openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten