taste mich so langsam vor, vermute für eine FHEM-readingsGroup gibt es keine (elegante) Darstellungsmöglichkeit?
Gruß, Dieter
Hallo Dieter,
ich habe mich nie intensiver mit readingsGroup beschäftigt. Hast du eine konkrete Vorstellung, was du in FHEMapp darstellen möchtest. Du kannst gern auch mal einen Screenshot aus deinem FHEM schicken. Dann kann ich Dir eine Empfehlung geben.
Grüße
Jens :)
Danke Jens,
hier mal ein Beispiel für eine readingsGroup.
Damit können Readings (verschiedener Devices) in einer Tabelle zusammengefasst werden, wobei mit verschiedenen Attributen formatiert und gestaltet werden kann:
- mit mapping so etwas wie Alias einführen
- mit valueFormat Zahlenwerte formatieren
- mit valueStyle bedingt formatieren
- mit valueIcon Icons einfügen
- ...
Mit solchen readingsGroup/Tabellen lassen sich dann Dashboards gestalten.
Möglicherweise lässt sich das mit FHEMapp z.B. mit list templates und "connected" devices realisieren; dazu müsste ich aber wahrscheinlich jeweils von vorne beginnen.
Der "Wunsch/Traum" wäre sicher, so eine ReadingGroup einfach 1:1 zu übernehmen ;D
define ThermoHygro readingsGroup\
netatmo_M03_00_00_07_d2_74:temp_cal,humi_cal,air_q\
HMS100TF_feac:temp_cal,humi_cal\
netatmo_D70_ee_50_04_82_be:temp_cal,humi_cal,air_q \
netatmo_M03_00_00_07_d0_f2:temp_cal,humi_cal,air_q\
MQTT2_airq1:temperature_1,humidity_1,air_q\
netatmo_M02_00_00_1b_18_2a:temperature,humidity \
HMS100T_9f90:temperature,"undef",temp_cal@HMS100TF_83dc
attr ThermoHygro mapping {'netatmo_M02_00_00_1b_18_2a' => 'Aussen', 'HMS100TF_feac' => 'Duschbad ', 'HMS100T_9f90' => 'Schrank/Keller', 'MQTT2_airq1' => 'Wohnzimmer'}
attr ThermoHygro style style="width:320px;;font-size:18px;;border-style:solid;;border-width:1px"
attr ThermoHygro valueFormat { temperature => " ; ;%.1f °C", temp_cal => " ; ;%.1f °C", temperature_1 => " ; ;%.1f °C", humidity => " ; ;%.1f ;%%", humi_cal => " ; ;%.1f ;%%", humidity_1 => " ; ;%.1f ;%%"}
attr ThermoHygro valueIcon {'air_q.good' => '10px-kreis-gruen', 'air_q.bad' => '10px-kreis-gelb', 'air_q.critical' => '10px-kreis-rot'}
attr ThermoHygro valueStyle { if ($READING =~ m/humi/ && $VALUE >= 60) { 'style="color:red"'} elsif ($READING =~ m/humi/ && $VALUE < 40) { 'style="color:blue"'} elsif ($READING =~ m/temp/ && $VALUE > 24) { 'style="color:red"'} elsif ($READING =~ m/temp/ && $VALUE < 6) { 'style="color:blue"'} else {'style="color:green"' }}
# DEF netatmo_M03_00_00_07_d2_74:temp_cal,humi_cal,air_q
#HMS100TF_feac:temp_cal,humi_cal
#netatmo_D70_ee_50_04_82_be:temp_cal,humi_cal,air_q
#netatmo_M03_00_00_07_d0_f2:temp_cal,humi_cal,air_q
#MQTT2_airq1:temperature_1,humidity_1,air_q
#netatmo_M02_00_00_1b_18_2a:temperature,humidity
#HMS100T_9f90:temperature,"undef",temp_cal@HMS100TF_83dc
# FUUID 5c44b2eb-f33f-4e46-e8b0-05ae6a2371a1b64e
# NAME ThermoHygro
# NR 216
# NTFY_ORDER 50-ThermoHygro
# STATE Initialized
# TYPE readingsGroup
# changed 0
# mayBeVisible 1
# CONTENT:
# HMS100TF_feac 1
# HMS100T_9f90 1
# MQTT2_airq1 1
# netatmo_D70_ee_50_04_82_be 1
# netatmo_M02_00_00_1b_18_2a 1
# netatmo_M03_00_00_07_d0_f2 1
# netatmo_M03_00_00_07_d2_74 1
# CONTENT2:
# HMS100TF_83dc 1
# DEVICES:
# ARRAY(0x62c63e0)
# ARRAY(0x638ff20)
# ARRAY(0x6529f60)
# ARRAY(0x63d68a8)
# ARRAY(0x610e728)
# ARRAY(0x6556d90)
# ARRAY(0x6320a58)
# DEVICES2:
# ARRAY(0x62c63e0)
# ARRAY(0x638ff20)
# ARRAY(0x6529f60)
# ARRAY(0x63d68a8)
# ARRAY(0x610e728)
# ARRAY(0x6556d90)
# ARRAY(0x6320a58)
# ARRAY(0x637f220)
# fhem:
# lastDefChange 4
# last_update 1695391508.5568
# helper:
# DEF
# valueStyle { if ($READING =~ m/humi/ && $VALUE >= 60) { 'style="color:red"'} elsif ($READING =~ m/humi/ && $VALUE < 40) { 'style="color:blue"'} elsif ($READING =~ m/temp/ && $VALUE > 24) { 'style="color:red"'} elsif ($READING =~ m/temp/ && $VALUE < 6) { 'style="color:blue"'} else {'style="color:green"' }}
# mapping:
# HMS100TF_feac Duschbad
# HMS100T_9f90 Schrank/Keller
# MQTT2_airq1 Wohnzimmer
# netatmo_M02_00_00_1b_18_2a Aussen
# positions:
# HMS100TF_83dc.temp_cal 7:2
# HMS100TF_feac.humi_cal 2:2
# HMS100TF_feac.temp_cal 2:1
# HMS100T_9f90.temperature 7:1
# MQTT2_airq1.air_q 5:3
# MQTT2_airq1.humidity_1 5:2
# MQTT2_airq1.temperature_1 5:1
# netatmo_D70_ee_50_04_82_be.air_q 3:3
# netatmo_D70_ee_50_04_82_be.humi_cal 3:2
# netatmo_D70_ee_50_04_82_be.temp_cal 3:1
# netatmo_M02_00_00_1b_18_2a.humidity 6:2
# netatmo_M02_00_00_1b_18_2a.temperature 6:1
# netatmo_M03_00_00_07_d0_f2.air_q 4:3
# netatmo_M03_00_00_07_d0_f2.humi_cal 4:2
# netatmo_M03_00_00_07_d0_f2.temp_cal 4:1
# netatmo_M03_00_00_07_d2_74.air_q 1:3
# netatmo_M03_00_00_07_d2_74.humi_cal 1:2
# netatmo_M03_00_00_07_d2_74.temp_cal 1:1
# recalc:
# undef
# ARRAY(0x65647c0)
# ARRAY(0x647e7b0)
# valueFormat:
# humi_cal %.1f %%
# humidity %.1f %%
# humidity_1 %.1f %%
# temp_cal %.1f °C
# temperature %.1f °C
# temperature_1 %.1f °C
# valueIcon:
# air_q.bad 10px-kreis-gelb
# air_q.critical 10px-kreis-rot
# air_q.good 10px-kreis-gruen
# values:
# formated:
# undef
# ARRAY(0x635cbd8)
# ARRAY(0x653c798)
# ARRAY(0x62577a0)
# orig:
# undef
# ARRAY(0x651ead0)
# ARRAY(0x672d670)
# ARRAY(0x6237af0)
# prefixsuffix:
# undef
# ARRAY(0x6172458)
# ARRAY(0x65936b0)
# ARRAY(0x621cf80)
#
Ich hab jetzt mal meine readingsGroup "ThermoHygro" in FHEMapp umgesetzt; dazu hab ich das list-template verwendet und connected devices benutzt, um die verschiedenen Thermometer-Devices (netatmo, HMS, MQTT2-Geräte) in die Liste zu bekommen.
Was mir jetzt noch fehlt:
Darstellung der readings air_q (good|bad|critical) durch Icons?
Einfärben der Meßwerte nach bestimmten Kriterien (rot wenn T>24°C etc.)
{
"template":"list",
"connected":{
"Dachstudio":"netatmo_M03_00_00_07_d2_74",
"Duschbad":"HMS100TF_feac",
"Dieter":"netatmo_D70_ee_50_04_82_be",
"Schlafzimmer":"netatmo_M03_00_00_07_d0_f2",
"Wohnzimmer":"MQTT2_airq1",
"Aussen":"netatmo_M02_00_00_1b_18_2a",
"Keller":"HMS100TF_83dc",
"Schrank":"HMS100T_9f90"
},
"home":false,
"dashboard":true,
"sortby": 1,
"setup": {
"expanded": true,
"iconSet": [
{ <to-do> },
{ <to-do> }
],
"listItems": [
{
"class1": "col-5 text-center",
"text1": ["Connected.Dachstudio.Readings.temp_cal.Value::Dachstudio:text"],
"text12": ["Connected.Dachstudio.Readings.air_q.Value::%s:text"],
"class2": "col-3 text-right",
"text2": ["Connected.Dachstudio.Readings.temp_cal.Value::%n.1 °C:text"],
"class3": "col-3 text-left",
"text3": ["Connected.Dachstudio.Readings.humi_cal.Value::%n.1 %:text"],
"divider": true
},
{
"class1": "col-5 text-center",
"text1": ["Connected.Duschbad.Readings.temp_cal.Value::Duschbad:text"],
"class2": "col-3 text-right",
"text2": ["Connected.Duschbad.Readings.temp_cal.Value::%n.1 °C:text"],
"class3": "col-3 text-left",
"text3": ["Connected.Duschbad.Readings.humi_cal.Value::%n.1 %:text"],
"divider": true
},
{
"class1": "col-5 text-center",
"text1": ["Connected.Dieter.Readings.temp_cal.Value::Dieter:text"],
"text12": ["Connected.Dieter.Readings.air_q.Value::%s:text"],
"class2": "col-3 text-right",
"text2": ["Connected.Dieter.Readings.temp_cal.Value::%n.1 °C:text"],
"class3": "col-3 text-left",
"text3": ["Connected.Dieter.Readings.humi_cal.Value::%n.1 %:text"],
"divider": true
},
{
"class1": "col-5 text-center",
"text1": ["Connected.Schlafzimmer.Readings.temp_cal.Value::Schlafzimmer:text"],
"text12": ["Connected.Schlafzimmer.Readings.air_q.Value::%s:text"],
"class2": "col-3 text-right",
"text2": ["Connected.Schlafzimmer.Readings.temp_cal.Value::%n.1 °C:text"],
"class3": "col-3 text-left",
"text3": ["Connected.Schlafzimmer.Readings.humi_cal.Value::%n.1 %:text"],
"divider": true
},
{
"class1": "col-5 text-center",
"text1": ["Connected.Wohnzimmer.Readings.temperature_1.Value::Wohnzimmer:text"],
"text12": ["Connected.Wohnzimmer.Readings.air_q.Value::%s:text"],
"class2": "col-3 text-right",
"text2": ["Connected.Wohnzimmer.Readings.temperature_1.Value::%n.1 °C:text"],
"class3": "col-3 text-left",
"text3": ["Connected.Wohnzimmer.Readings.humidity_1.Value::%n.1 %:text"],
"divider": true
},
{
"class1": "col-5 text-center",
"text1": ["Connected.Keller.Readings.temp_cal.Value::Keller:text"],
"class2": "col-3 text-right",
"text2": ["Connected.Keller.Readings.temp_cal.Value::%n.1 °C:text"],
"class3": "col-3 text-left",
"text3": ["Connected.Keller.Readings.humi_cal.Value::%n.1 %:text"],
"divider":true
},
{
"class1": "col-5 text-center",
"text1": ["Connected.Aussen.Readings.temperature.Value::Aussen:text"],
"class2": "col-3 text-right",
"text2": ["Connected.Aussen.Readings.temperature.Value::%n.1 °C:text"],
"class3": "col-3 text-left",
"text3": ["Connected.Aussen.Readings.humidity.Value::%n.1 %:text"],
"divider":true
},
{
"class1": "col-5 text-center",
"text1": ["Connected.Schrank.Readings.temperature.Value::Energieschrank:text"],
"class2": "col-3 text-right",
"text2": ["Connected.Schrank.Readings.temperature.Value::%n.1 °C:text"]
}
],
"info": {
"left1": ["Connected.Wohnzimmer.Readings.temperature_1.Value:::mdi-home-thermometer-outline"],
"left2": ["Connected.Wohnzimmer.Readings.temperature_1.Value:::mdi-water-percent"],
"mid1": [""],
"right2": [""]
}
}
}
Zitat von: grappa24 am 27 September 2023, 11:09:56Was mir jetzt noch fehlt:
Darstellung der readings air_q (good|bad|critical) durch Icons?
mittlerweile gelöst:
{ "val": "^good$", "icon": "mdi-quality-high" },
{ "val": "^bad$", "icon": "mdi-quality-medium" },
{ "val": "^critical$", "icon": "mdi-quality-low" }