[Gelöst] Wert aus dem Reading lesen

Begonnen von ingo46, 07 Februar 2023, 11:32:01

Vorheriges Thema - Nächstes Thema

ingo46

Hallo,

mein Wettersensor KS300 liefert folgendes Reading:

avg_day  T: -3.7 H: 94 W: 0.0 R: 0.0

Ich brauche den 4. Wert für:


define di_temp_2 DOIF ##
attr di_temp_2 uiTable {package ui_Table}
card([KS300:avg_day:col3d],"Regen","weather_rain_gauge",0,10,180,270,"mm",undef,"1,,fill:silver","130,1,1,0,1")


mit 'KS300:avg_day' wird der erste Wert genommen. Deshalb dachte ich es müsste 'KS300:avg_day.R' sein - leider falsch.

Wie muss es richtig sein?
Ingo

CoolTux

Du solltest die Frage besser im DOIF Forum stellen. Die Jungs wissen da schneller und "besser" Bescheid.

Einfach unten links auf verschieben gehen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Damian

#2
Zitat von: ingo46 am 07 Februar 2023, 11:32:01
Hallo,

mein Wettersensor KS300 liefert folgendes Reading:

avg_day  T: -3.7 H: 94 W: 0.0 R: 0.0

Ich brauche den 4. Wert für:


define di_temp_2 DOIF ##
attr di_temp_2 uiTable {package ui_Table}
card([KS300:avg_day:col3d],"Regen","weather_rain_gauge",0,10,180,270,"mm",undef,"1,,fill:silver","130,1,1,0,1")


mit 'KS300:avg_day' wird der erste Wert genommen. Deshalb dachte ich es müsste 'KS300:avg_day.R' sein - leider falsch.

Wie muss es richtig sein?
Ingo

Wie kommst du auf diese Syntax?

Da wirst du wohl mit einem user_Reading und etwas Regex hantieren müssen, bevor du den Wert an  card weiter gibst.

Edit: Gibt es denn bei KS300 nicht ein Reading für die Regenmenge?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ingo46

so sieht das komplette Reading aus:


ODev MapleCUL_0_868
avg_day T: -3.1 H: 93 W: 0.0 R: 0.0
avg_month T: 5.4 H: 45 W: 42.7 R: 43.3
checksum 8
cum_day 2023-02-07 04:49:39 T: -80556.1 H: 2420469 W: 0 R: 203.2
cum_month 6 T: 32.7 H: 272 W: 256.2 R: 43.3
humidity 93
israining no
rain 203.2
rain_raw 797
rain_raw_adj    797
state T: 0.1 H: 93 W: 0.0 R: 203.2 IR: no Wi: 0
temperature 0.1
tsecs 1675767553.79421
type_raw 7
unknown3 1
wind 0.0
windIndex 0


In 'rain' steht die gesamte Regenmenge - ich möchte aber nur die Regenmenge des Tages. Das wäre der 4. Wert von avg_day. Gibt es da eine Möglichkeit ihn aus dem Reading zu bekommen?

Ingo


                                 

Damian

Du kannst in dem Modul, wo du deine card einsetzt ein DOIF_Reading auf avg_day mit Ausgabeformatierung definieren, siehe: https://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ingo46

Hallo Damian,

ich habe ...#DOIF_Filtern_nach_Zahlen... gelesen - verstehe aber nicht, was zu tun ist - wo muss das 'DOIF_Reading auf avg_day' eingebaut werden und wie sieht aus?

Ingo

Damian

Zitat von: ingo46 am 07 Februar 2023, 18:52:42
Hallo Damian,

ich habe ...#DOIF_Filtern_nach_Zahlen... gelesen - verstehe aber nicht, was zu tun ist - wo muss das 'DOIF_Reading auf avg_day' eingebaut werden und wie sieht aus?

Ingo

Ich habe es jetzt direkt als Output-Parameter definiert, siehe: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Anzeige_eines_Werteverlaufs_und_des_aktuellen_Wertes_mit_Hilfe_der_SVG-Funktion_card

defmod di_temp_2 DOIF ##
attr di_temp_2 room Test
attr di_temp_2 uiTable {package ui_Table}\
\
card([KS300:avg_day:col3d:$_ =~ /R: (\d*.\d*)/;;$1],"Regen","weather_rain_gauge",0,10,180,270,"mm",undef,"1,,fill:silver","130,1,1,0,1")
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Wenn es ein Tagesdurchschnitt ist, der am Tagesende zurückgesetzt wird, dann würde ich dir die neue bar-Darstellung empfehlen: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Darstellung_kumulierter_Daten_als_S.C3.A4ulen

defmod di_temp_2 DOIF ##
attr di_temp_2 room Test
attr di_temp_2 uiTable {package ui_Table}\
\
card([KS300:avg_day:bar1month:$_ =~ /R: (\d*.\d*)/;;$1],"Regen","weather_rain_gauge",0,10,180,270,"mm",undef,"1,,fill:silver","130,1,1,0,1,halfring")
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ingo46

Hallo Damian,

danke - jetzt habe ich es verstanden!

Mein Fehler war, dass mir die Reihenfolge nicht bewusst war: Ich hatte 'card([KS300:avg_day:$_ =~ /R: (\d*.\d*)/;;$1]:col3d....' Im nachhinein ist nir dass jetzt klar.

Mit der neuen bar-Darstellung werde ich mich in den nächsten Tagen beschäftigen.

Ingo