[ControlMiniDash]Fhemweb Widget für Thermostat,KlimaControl,....,

Begonnen von schwatter, 25 Oktober 2025, 12:09:21

Vorheriges Thema - Nächstes Thema

schwatter

Nabend,

Update im ersten Post für Arcsliderwidget.

  • Mehrfachladen vom Widget unterbunden. Dadurch wird es in set/get nicht mehr dynamisch erzeugt.


Gruß schwatter


schwatter

Nabend,

Update im ersten Post für Arcsliderwidget.

  • Der Arc-Slider startet jetzt vom gemessenen Wert (measured-temp) statt vom Sollwert, für harmonischere Ring- und Button-Positionen.
  • Unbenutzte Buttons werden jetzt komplett ausgeblendet.
  • Die 3 Position Luftfeuchte ist jetzt ausblendbar mit #.

Beispiel:
attr HmIP_KLHR_STHD webCmd controlMD auto:manu:boost:on:off
attr HmIP_KLHR_STHD widgetOverride controlMD:controlminidash,measured-temp,#,desired-temp,HEATING_COOLING,#,#,#,#,#,#


Gruß schwatter

schwatter

#32
Moin,

Update im ersten Post für Arcsliderwidget.

  • Anstatt Readings zum individualisieren, wird jetzt userattr verwendet.

Hier ein funktionierendes Beispiel:
defmod widgetControlUserAttr dummy
attr widgetControlUserAttr userattr btn1Cmd btn1Color btn1Icon btn2Cmd btn2Color btn2Icon btn3Cmd btn3Color btn3Icon btn4Cmd btn4Color btn4Icon btn5Cmd btn5Color btn5Icon btn6Cmd btn6Color btn6Icon
attr widgetControlUserAttr btn1Cmd set widgetControlUserAttr state cooling
attr widgetControlUserAttr btn1Color blue
attr widgetControlUserAttr btn1Icon data:image/svg+xml;;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M20.79%2C13.95L18.46%2C14.57L16.46%2C13.44V10.56L18.46%2C9.43L20.79%2C10.05L21.31%2C8.12L19.54%2C7.65L20%2C5.88L18.07%2C5.36L17.45%2C7.69L15.45%2C8.82L13%2C7.38V5.12L14.71%2C3.41L13.29%2C2L12%2C3.29L10.71%2C2L9.29%2C3.41L11%2C5.12V7.38L8.5%2C8.82L6.5%2C7.69L5.92%2C5.36L4%2C5.88L4.47%2C7.65L2.7%2C8.12L3.22%2C10.05L5.55%2C9.43L7.55%2C10.56V13.45L5.55%2C14.58L3.22%2C13.96L2.7%2C15.89L4.47%2C16.36L4%2C18.12L5.93%2C18.64L6.55%2C16.31L8.55%2C15.18L11%2C16.62V18.88L9.29%2C20.59L10.71%2C22L12%2C20.71L13.29%2C22L14.7%2C20.59L13%2C18.88V16.62L15.5%2C15.17L17.5%2C16.3L18.12%2C18.63L20%2C18.12L19.53%2C16.35L21.3%2C15.88L20.79%2C13.95M9.5%2C10.56L12%2C9.11L14.5%2C10.56V13.44L12%2C14.89L9.5%2C13.44V10.56Z%22%20%2F%3E%3C%2Fsvg%3E
attr widgetControlUserAttr btn2Cmd { fhem("set widgetControlUserAttr desired-temp ".(ReadingsVal("widgetControlUserAttr","desired-temp",0)-0.5)) }
attr widgetControlUserAttr btn2Color blue
attr widgetControlUserAttr btn2Icon data:image/svg+xml;;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M19%2C19V5H5V19H19M19%2C3A2%2C2%200%200%2C1%2021%2C5V19A2%2C2%200%200%2C1%2019%2C21H5A2%2C2%200%200%2C1%203%2C19V5C3%2C3.89%203.9%2C3%205%2C3H19M17%2C11V13H7V11H17Z%22%20%2F%3E%3C%2Fsvg%3E
attr widgetControlUserAttr btn3Cmd set widgetControlUserAttr state off
attr widgetControlUserAttr btn3Icon data:image/svg+xml;;;;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M12%2C20A8%2C8%200%200%2C1%204%2C12A8%2C8%200%200%2C1%2012%2C4A8%2C8%200%200%2C1%2020%2C12A8%2C8%200%200%2C1%2012%2C20M12%2C2A10%2C10%200%200%2C0%202%2C12A10%2C10%200%200%2C0%2012%2C22A10%2C10%200%200%2C0%2022%2C12A10%2C10%200%200%2C0%2012%2C2Z%22%20%2F%3E%3C%2Fsvg%3E
attr widgetControlUserAttr btn4Cmd set widgetControlUserAttr state heating
attr widgetControlUserAttr btn4Color red
attr widgetControlUserAttr btn4Icon data:image/svg+xml;;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M8.5%204.5L5.4%209.5L8.5%2014.7L5.2%2020.5L3.4%2019.6L6.1%2014.7L3%209.5L6.7%203.6L8.5%204.5M14.7%204.4L11.6%209.5L14.7%2014.5L11.4%2020.3L9.6%2019.4L12.3%2014.5L9.2%209.5L12.9%203.5L14.7%204.4M21%204.4L17.9%209.5L21%2014.5L17.7%2020.3L15.9%2019.4L18.6%2014.5L15.5%209.5L19.2%203.5L21%204.4%22%20%2F%3E%3C%2Fsvg%3E
attr widgetControlUserAttr btn5Cmd { fhem("set widgetControlUserAttr desired-temp ".(ReadingsVal("widgetControlUserAttr","desired-temp",0)+0.5)) }
attr widgetControlUserAttr btn5Color red
attr widgetControlUserAttr btn5Icon data:image/svg+xml;;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M19%2C19V5H5V19H19M19%2C3A2%2C2%200%200%2C1%2021%2C5V19A2%2C2%200%200%2C1%2019%2C21H5A2%2C2%200%200%2C1%203%2C19V5C3%2C3.89%203.9%2C3%205%2C3H19M11%2C7H13V11H17V13H13V17H11V13H7V11H11V7Z%22%20%2F%3E%3C%2Fsvg%3E
attr widgetControlUserAttr btn6Cmd set widgetControlUserAttr state on
attr widgetControlUserAttr btn6Color green
attr widgetControlUserAttr btn6Icon data:image/svg+xml;;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M12%2C20A8%2C8%200%200%2C1%204%2C12A8%2C8%200%200%2C1%2012%2C4A8%2C8%200%200%2C1%2020%2C12A8%2C8%200%200%2C1%2012%2C20M12%2C2A10%2C10%200%200%2C0%202%2C12A10%2C10%200%200%2C0%2012%2C22A10%2C10%200%200%2C0%2022%2C12A10%2C10%200%200%2C0%2012%2C2M12%2C7A5%2C5%200%200%2C0%207%2C12A5%2C5%200%200%2C0%2012%2C17A5%2C5%200%200%2C0%2017%2C12A5%2C5%200%200%2C0%2012%2C7Z%22%20%2F%3E%3C%2Fsvg%3E
attr widgetControlUserAttr readingList measured-temp humidity desired-temp state
attr widgetControlUserAttr room Test
attr widgetControlUserAttr setList measured-temp humidity desired-temp state
attr widgetControlUserAttr subType Thermostat
attr widgetControlUserAttr webCmd climacontrol
attr widgetControlUserAttr widgetOverride climacontrol:controlminidash,measured-temp,humidity,desired-temp,state,#,#,#,#,#,#

setstate widgetControlUserAttr heating
setstate widgetControlUserAttr 2025-11-30 11:51:37 desired-temp 20.0
setstate widgetControlUserAttr 2025-11-30 11:42:42 humidity 56
setstate widgetControlUserAttr 2025-11-30 11:42:48 measured-temp 19
setstate widgetControlUserAttr 2025-11-30 11:51:21 state heating



So langsam wird es was für das SVN. Wikizugang habe ich schonmal beantragt.

Gruß schwatter

schwatter

Nabend,

ich habe unter Ankündigungen keine Schreibrechte. Daher mache ich das hier.


Ich glaube, ich muss noch einen Hinweis in der Commandref unter widgetOverride ablegen?
Habe ich noch etwas vergessen?

Gruß schwatter

appi

hallo Schwatter
das ist ja ein super Widget, endlich geht's mit Fhem in die richtige Richtung weiter.
Ich glaub langsam ich kann bei Fhem bleiben und muss mich nicht mit HA beschäftigen. 😁

Besten Dank

appi

Hallo
soweit funktioniert das Widget schon recht gut.
Ich bin mit dem Sollwert im Konflikt.... In meiener Installation (KNX) habe ich ein Objekt für Sollwert setzen im Regler und eins für Sollwert lesen aus dem Regler. Somit können Aenderungen im Regler und in der Fhem gemacht werden und der jeweils Andere bekommt die Aenderung mit.
Gibt es eine Möglichkeit das einfach zu implementieren oder habe ich etwas falsch verstanden?

gruss


schwatter

#36
Morgen,

mh, ich kenne KNX nicht vom Aufbau in Fhem. Bzw, wie die Devices sich darstellen. Ist Objekt = Device?.
Ich würde das Widget in dem Device setzen, in dem die Temperatur per set gesetzt wird. Und wenn
es 2 Devices sind, eins für get und eins für set, die Temp vom get-Device per notify in das set-Device
setzen.

Das ist das Beispiel:
attr <device> widgetOverride climacontrol:controlminidash,measured-temp,humidity,desired-temp,state,#,#,#,#,#,#
Die beiden Readings measured-temp und desired-temp sind wichtig:
measured-temp = Ein Reading, Name egal. Wichtig, muss gemessene Temperatur liefern.
humidity = Ein Reading, Name egal. Für Luftfeuchtigkeit oder mit # einfach ausblenden.
desired-temp = Ein Reading, Name egal. Wichtig, muss gewünschte Temperatur setzen.
state = Ein Reading, Name egal. Zur freien Verfügung.

Gruß schwatter

Damian

Sollte das Reading der Soll-Temperatur zum Auslesen anders sein als mit set zum Setzen, dann kannst das Widget über DOIF definieren, da geht so was. Man kann sogar die Soll-Temperatur des Widgets im DOIF per setreading setzen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

appi

Besten Dank für eure Hilfe, aber ich kapier das nicht.... sorry.

Ich kann aus dem KNX Device  das Reading desired-tem im DoIF Device setzen und bekomme es auch angezeigt. perfekt.
Wenn ich aber im DoIF Device mit dem Arc-Slider eine neue desired-temp setze bekomme ich das Reading nicht im KNX Device geändert.

Anbei das DoIF:
defmod di_Klima_Buero DOIF {}
attr di_Klima_Buero alias Klima Büro Widget
attr di_Klima_Buero event_Readings measured-temp: [EG_Buero_Klima:measured-temp-get-num-only],\
temp_soll: [EG_Buero_Klima:temp_soll_num_only],\
valve: [EG_Buero_Klima:getG4]
attr di_Klima_Buero room Buero
attr di_Klima_Buero uiTable {package ui_Table;;;;}\\
card([[EG_Buero_Klima:getG2:col],[EG_Buero_Klima:getG3:col]],"Büro","temp_inside",15,40,undef,undef,["Ist °C,red","Soll °C,#287afc"],\&temp_hue,"1","180,,,,,,200",undef,undef)|\
widget([di_Klima_Buero:measured-temp],'controlminidash,measured-temp,#,temp_soll,valve,sani_heating_manual@controlMode.manual,rc_MINUS@temp-5,sani_heating_boost@boost,sani_heating_automatic@controlMode.automatic,rc_PLUS@temp+5,sani_heating_mode@night_day',"set desired-temp")

und das KNX Device:
defmod EG_Buero_Klima KNX 4/2/101:dpt9.001:desired-temp 4/1/1:dpt9.001:measured-temp:listenonly 4/2/1:dpt9.001:desired-temp-read:listenonly 4/3/1:dpt5.001:listenonly
attr EG_Buero_Klima IODev myKNXGW
attr EG_Buero_Klima alias Temp Büro
attr EG_Buero_Klima group Raumklima
attr EG_Buero_Klima room Buero,Klima/ Heizung
attr EG_Buero_Klima sortby 8
attr EG_Buero_Klima stateFormat Ist:getG2 | Soll:getG3 | Ventil:getG4
attr EG_Buero_Klima userReadings measured-temp-get-num-only:measured-temp-get.* { ReadingsNum($name, 'measured-temp-get', 0) }, temp_soll_num_only:desired-temp-read-get.* { ReadingsNum($name, 'desired-temp-read-get', 0) }, value_num_only:getG4.* { ReadingsNum($name, 'getG4', 0) }
attr EG_Buero_Klima webCmd value
attr EG_Buero_Klima widgetOverride value:16.5,17.5,18.5,19.5,20.5,21.5,22.5,23.5,24.5  g1

Um eine Hilfestellung wäre ich sehr dankbar.


Damian

Offenbar setzt du die Soll-Temperatur mit "set EG_Buero_Klima value <Wert>". Wo ist die dann im KNX-Device sichtbar?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

schwatter

Morgen appi,

kannst du bitte bei beiden Devices jeweils unten auf "Copy for forum.fhem.de" klicken und hier einstellen.
Vielleicht wird daraus das Problem ersichtlich.

Gruß schwatter

appi

Ich hab heute noch etwas geübt, allerdings mit mässigem Erfolg.....
Das widgetOverride direkt im KNX Device funktioniert eigentlich, ausser wenn ich die solltemp direkt am Thermostat an der Wand ändere bekommt dieses Device das nicht mit, weil der neue Soll im Reading solltemp_ist upgedatet wird.

define EG_Buero_Klima KNX 4/2/101:dpt9:solltemp:set:nosuffix 4/1/1:dpt9:measured_temp:get:nosuffix 4/2/1:dpt9:solltemp_ist:get:nosuffix 4/3/1:dpt5.001:valvepos:get:nosuffix
attr EG_Buero_Klima IODev myKNXGW
attr EG_Buero_Klima alias Temp Büro
attr EG_Buero_Klima btn5Cmd { fhem("set widgetControlUserAttr solltemp ".(ReadingsVal("widgetControlUserAttr","solltemp_ist",0)+0.5)) }
attr EG_Buero_Klima comment GAs: SollTemp-schreiben, IstTemp, SollTemp-lesen, ValvePosition
attr EG_Buero_Klima group Raumklima
attr EG_Buero_Klima room Buero,Klima/ Heizung
attr EG_Buero_Klima sortby 8
attr EG_Buero_Klima stateFormat Ist: measured_temp °C | Soll: solltemp_ist °C | Ventil: valvepos
attr EG_Buero_Klima webCmd climacontrol
attr EG_Buero_Klima widgetOverride climacontrol:controlminidash,measured_temp,#,solltemp,valvepos,#,#,#,#,#,#
#  CFGFN     
#  DEF        4/2/101:dpt9:solltemp:set:nosuffix 4/1/1:dpt9:measured_temp:get:nosuffix 4/2/1:dpt9:solltemp_ist:get:nosuffix 4/3/1:dpt5.001:valvepos:get:nosuffix
#  FUUID      693a69cd-f33f-fb60-6cfa-11e02ca9bd002cea
#  IODev      myKNXGW
#  LASTInputDev myKNXGW
#  MSGCNT    793
#  NAME      EG_Buero_Klima
#  NR        1229
#  STATE      Ist: 23.3 °C | Soll: 19.5 °C | Ventil: 0 %
#  STILLDONETIME 0
#  TYPE      KNX
#  eventCount 887
#  model      dpt9
#  myKNXGW_MSGCNT 793
#  myKNXGW_TIME 2025-12-11 15:55:46
#  GADDETAILS:
#    measured_temp:
#      CODE      04101
#      MODEL      dpt9
#      NO        2
#      OPTION    get
#      RDNAMEGET  measured_temp
#      RDNAMESET  measured_temp
#      SETLIST   
#    solltemp:
#      CODE      04265
#      MODEL      dpt9
#      NO        1
#      OPTION    set
#      RDNAMEGET  solltemp
#      RDNAMESET  solltemp
#      SETLIST   
#    solltemp_ist:
#      CODE      04201
#      MODEL      dpt9
#      NO        3
#      OPTION    get
#      RDNAMEGET  solltemp_ist
#      RDNAMESET  solltemp_ist
#      SETLIST   
#    valvepos:
#      CODE      04301
#      MODEL      dpt5.001
#      NO        4
#      OPTION    get
#      RDNAMEGET  valvepos
#      RDNAMESET  valvepos
#      SETLIST    :slider,0,1,100
#  GADTABLE:
#    04101      measured_temp
#    04201      solltemp_ist
#    04265      solltemp
#    04301      valvepos
#  Helper:
#  READINGS:
#    2025-12-11 13:45:02  IODev          myKNXGW
#    2025-12-11 15:55:46  last-sender    1.1.8
#    2025-12-11 15:55:46  measured_temp  23.3
#    2025-12-11 15:53:53  solltemp        22.0
#    2025-12-11 15:54:34  solltemp_ist    19.5
#    2025-12-11 15:55:46  state          23.3
#    2025-12-11 15:54:59  valvepos        0 %
#
setstate EG_Buero_Klima Ist: 23.3 °C | Soll: 19.5 °C | Ventil: 0 %
setstate EG_Buero_Klima 2025-12-11 13:45:02 IODev myKNXGW
setstate EG_Buero_Klima 2025-12-11 15:55:46 last-sender 1.1.8
setstate EG_Buero_Klima 2025-12-11 15:55:46 measured_temp 23.3
setstate EG_Buero_Klima 2025-12-11 15:53:53 solltemp 22.0
setstate EG_Buero_Klima 2025-12-11 15:54:34 solltemp_ist 19.5
setstate EG_Buero_Klima 2025-12-11 15:55:46 state 23.3
setstate EG_Buero_Klima 2025-12-11 15:54:59 valvepos 0 %



Da funktioniert die Version mit dem widgetOverride in einem separaten DoIF Device etwas besser.
Das KNX Device bekommt die Aenderungen des Soll im DoIF nicht mit , hier stehe ich nun etwas hilfloss da..

define di_Klima_Buero DOIF {}
attr di_Klima_Buero alias Klima Büro Widget
attr di_Klima_Buero event_Readings measured-temp: [EG_Buero_Klima:measured_temp],\
solltemp: [EG_Buero_Klima:solltemp],\
solltemp_ist: [EG_Buero_Klima:solltemp_ist],\
valve: [EG_Buero_Klima:valvepos]
attr di_Klima_Buero room Buero
attr di_Klima_Buero uiTable {package ui_Table;;;;}\\
card([[EG_Buero_Klima:measured_temp:col],[EG_Buero_Klima:solltemp_ist:col]],"Büro","temp_inside",15,40,undef,undef,["Ist °C,red","Soll °C,#287afc"],\&temp_hue,"1","180,,,,,,200",undef,undef)|\
widget([EG_Buero_Klima:measured-temp],'controlminidash,measured_temp,#,solltemp,valvepos,sani_heating_manual@controlMode.manual,rc_MINUS@temp-5,sani_heating_boost@boost,sani_heating_automatic@controlMode.automatic,rc_PLUS@temp+5,sani_heating_mode@night_day',"set solltemp")
#  CFGFN     
#  DEF        {}
#  FUUID      6939b694-f33f-fb60-cdbd-68861a665f10b40c
#  MODEL      Perl
#  NAME      di_Klima_Buero
#  NOTIFYDEV  global,EG_Buero_Klima
#  NR        1225
#  NTFY_ORDER 50-di_Klima_Buero
#  STATE      initialized
#  TYPE      DOIF
#  VERSION    30377 2025-10-12 09:46:59
#  eventCount 891
#  READINGS:
#    2025-12-11 16:37:05  measured-temp  23.1
#    2025-12-10 19:06:12  mode            enabled
#    2025-12-11 16:38:54  solltemp        23.0
#    2025-12-11 16:38:54  solltemp_ist    23
#    2025-12-10 19:06:12  state          initialized
#    2025-12-11 14:29:06  temp_soll      20.0
#    2025-12-10 19:10:40  temp_soll_num_only 20.5
#    2025-12-11 16:38:59  valve          0 %
#  Regex:
#    accu:
#    bar:
#    barAvg:
#    collect:
#      EG_Buero_Klima:
#        collect:
#          getG2      ^EG_Buero_Klima$:^getG2:
#          getG3      ^EG_Buero_Klima$:^getG3:
#          measured-temp ^EG_Buero_Klima$:^measured-temp:
#          measured_temp ^EG_Buero_Klima$:^measured_temp:
#          solltemo  ^EG_Buero_Klima$:^solltemo:
#          solltemp_ist ^EG_Buero_Klima$:^solltemp_ist:
#    event_Readings:
#      EG_Buero_Klima:
#        measured-temp:
#          measured_temp ^EG_Buero_Klima$:^measured_temp:
#        solltemp:
#          solltemp  ^EG_Buero_Klima$:^solltemp:
#        solltemp_ist:
#          solltemp_ist ^EG_Buero_Klima$:^solltemp_ist:
#        valve:
#          valvepos  ^EG_Buero_Klima$:^valvepos:
#    uiTable:
#      EG_Buero_Klima:
#        di_Klima_Buero_uiTable_c_1_0_0_0:
#          measured_temp ^EG_Buero_Klima$:^measured_temp:
#          solltemp_ist ^EG_Buero_Klima$:^solltemp_ist:
#        di_Klima_Buero_uiTable_c_1_1_0_0:
#          measured-temp ^EG_Buero_Klima$:^measured-temp:
#  card:
#  collect:
#    EG_Buero_Klima getG2:
#      24:
#        animate    0
#        dim        72
#        hours      24
#        last     
#        last_slot  1471159
#        last_v    22.3
#        max_value  22.3
#        max_value_slot 71
#        max_value_time 1765390947
#        min_value  22.3
#        min_value_slot 71
#        min_value_time 1765390947
#        name      EG_Buero_Klima
#        reading    getG2
#        ring      1
#        time      1765390987
#        type      col
#        value      22.3
#        times:
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          1765390283
#          1765390947
#        values:
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          22.3
#          22.3
#    EG_Buero_Klima getG3:
#      24:
#        animate    0
#        dim        72
#        hours      24
#        last     
#        last_slot  1471214
#        last_v    18.5
#        max_value  18.5
#        max_value_slot 16
#        max_value_time 1765390947
#        min_value  0
#        min_value_slot 71
#        min_value_time 1765457756
#        name      EG_Buero_Klima
#        reading    getG3
#        ring      1
#        time      1765457756
#        type      col
#        value      0
#        times:
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          1765390283
#          1765390947
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          1765457756
#        values:
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          18.5
#          18.5
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          0
#    EG_Buero_Klima measured-temp:
#      24:
#        animate    0
#        dim        72
#        hours      24
#        last     
#        last_slot  1471215
#        last_v    0
#        max_value  0
#        max_value_slot 71
#        max_value_time 1765458749
#        min_value  0
#        min_value_slot 71
#        min_value_time 1765458749
#        name      EG_Buero_Klima
#        reading    measured-temp
#        time      1765458749
#        type      col
#        value      0
#        times:
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          1765457756
#          1765458749
#        values:
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          0
#          0
#    EG_Buero_Klima measured_temp:
#      24:
#        animate    0
#        dim        72
#        hours      24
#        last     
#        last_slot  1471222
#        last_v    23
#        max_value  23.3
#        max_value_slot 69
#        max_value_time 1765464946
#        min_value  22.9
#        min_value_slot 68
#        min_value_time 1765463228
#        name      EG_Buero_Klima
#        reading    measured_temp
#        ring      1
#        time      1765467534
#        type      col
#        value      23.1
#        times:
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          1765460228
#          1765460822
#          1765462030
#          1765463228
#          1765464946
#          1765466227
#          1765467425
#        values:
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          22.9
#          22.9
#          22.9
#          22.9
#          23.3
#          23
#          23.1
#    EG_Buero_Klima solltemo:
#      24:
#        animate    0
#        dim        72
#        hours      24
#        last_slot  1471215
#        last_v   
#        max_value  0
#        max_value_slot 71
#        max_value_time 1765458749
#        min_value  0
#        min_value_slot 71
#        min_value_time 1765458749
#        name      EG_Buero_Klima
#        reading    solltemo
#        time      1765458749
#        type      col
#        value      0
#        times:
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          1765458749
#        values:
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          0
#    EG_Buero_Klima solltemp_ist:
#      24:
#        animate    0
#        dim        72
#        hours      24
#        last      23
#        last_slot  1471222
#        last_v    25
#        max_value  25.5
#        max_value_slot 68
#        max_value_time 1765463825
#        min_value  19
#        min_value_slot 71
#        min_value_time 1765466948
#        name      EG_Buero_Klima
#        reading    solltemp_ist
#        ring      1
#        time      1765467534
#        type      col
#        value      23
#        times:
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          1765460228
#          1765460822
#          1765462030
#          1765463825
#          1765464874
#          1765466061
#          1765466948
#        values:
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          undef
#          20
#          20
#          20
#          25.5
#          19.5
#          25
#          19
#  condition:
#    0         
#  event_Readings:
#    measured-temp  ::ReadingValDoIf($hash,'EG_Buero_Klima','measured_temp')
#    solltemp    ::ReadingValDoIf($hash,'EG_Buero_Klima','solltemp')
#    solltemp_ist  ::ReadingValDoIf($hash,'EG_Buero_Klima','solltemp_ist')
#    valve      ::ReadingValDoIf($hash,'EG_Buero_Klima','valvepos')
#  helper:
#    NOTIFYDEV  global,EG_Buero_Klima
#    event      last-sender: 1.1.8,valvepos: 0 %,0 %
#    globalinit 1
#    last_timer 0
#    sleeptimer -1
#    triggerDev EG_Buero_Klima
#    triggerEvents:
#      last-sender: 1.1.8
#      valvepos: 0 %
#      0 %
#    triggerEventsState:
#      last-sender: 1.1.8
#      valvepos: 0 %
#      state: 0 %
#  perlblock:
#    0          block_01
#  uiState:
#  uiTable:
#    dev        EG_Buero_Klima
#    header   
#<table uitabid='DOIF-di_Klima_Buero' class=' block wide uiTabledoif doif-di_Klima_Buero ' style='border-top:none;'>
#    package    package ui_Table;
#    reading    measured-temp
#    table:
#      0:
#        0:
#          0:
#            0          'error syntax error at (eval 2378030) line 1, at EOF
# in expression: \'
#      1:
#        0:
#          0:
#            0          package ui_Table;::DOIF_Widget($hash,$reg,'di_Klima_Buero_uiTable_c_1_0_0_0',card([::ReadingValDoIf($hash,'EG_Buero_Klima','measured_temp','','col'),::ReadingValDoIf($hash,'EG_Buero_Klima','solltemp_ist','','col')],"Büro","temp_inside",15,40,undef,undef,["Ist °C,red","Soll °C,#287afc"],\&temp_hue,"1","180,,,,,,200",undef,undef),"")
#        1:
#          0:
#            0          package ui_Table;::DOIF_Widget($hash,$reg,'di_Klima_Buero_uiTable_c_1_1_0_0',widget(::ReadingValDoIf($hash,'EG_Buero_Klima','measured-temp'),'controlminidash,measured_temp,#,solltemp,valvepos,sani_heating_manual@controlMode.manual,rc_MINUS@temp-5,sani_heating_boost@boost,sani_heating_automatic@controlMode.automatic,rc_PLUS@temp+5,sani_heating_mode@night_day',"set solltemp"),'EG_Buero_Klima','measured-temp')
#    tc:
#    td:
#      0:
#      1:
#    tr:
#
setstate di_Klima_Buero initialized
setstate di_Klima_Buero 2025-12-11 15:36:33 .col_72_EG_Buero_Klima_getG2_24_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1765390283,1765390947
setstate di_Klima_Buero 2025-12-11 15:36:33 .col_72_EG_Buero_Klima_getG2_24_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,22.3,22.3
setstate di_Klima_Buero 2025-12-11 15:36:33 .col_72_EG_Buero_Klima_getG3_24_times ,,,,,,,,,,,,,,,1765390283,1765390947,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1765457756
setstate di_Klima_Buero 2025-12-11 15:36:33 .col_72_EG_Buero_Klima_getG3_24_values ,,,,,,,,,,,,,,,18.5,18.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0
setstate di_Klima_Buero 2025-12-11 15:36:33 .col_72_EG_Buero_Klima_measured-temp_24_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1765457756,1765458749
setstate di_Klima_Buero 2025-12-11 15:36:33 .col_72_EG_Buero_Klima_measured-temp_24_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0
setstate di_Klima_Buero 2025-12-11 15:36:33 .col_72_EG_Buero_Klima_measured_temp_24_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1765460228,1765460822,1765462030,1765463228
setstate di_Klima_Buero 2025-12-11 15:36:33 .col_72_EG_Buero_Klima_measured_temp_24_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,22.9,22.9,22.9,22.9
setstate di_Klima_Buero 2025-12-11 15:36:33 .col_72_EG_Buero_Klima_solltemo_24_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1765458749
setstate di_Klima_Buero 2025-12-11 15:36:33 .col_72_EG_Buero_Klima_solltemo_24_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0
setstate di_Klima_Buero 2025-12-11 15:36:33 .col_72_EG_Buero_Klima_solltemp_ist_24_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1765460228,1765460822,1765462030,1765463228
setstate di_Klima_Buero 2025-12-11 15:36:33 .col_72_EG_Buero_Klima_solltemp_ist_24_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,20,20,20
setstate di_Klima_Buero 2025-12-11 16:37:05 measured-temp 23.1
setstate di_Klima_Buero 2025-12-10 19:06:12 mode enabled
setstate di_Klima_Buero 2025-12-11 16:38:54 solltemp 23.0
setstate di_Klima_Buero 2025-12-11 16:38:54 solltemp_ist 23
setstate di_Klima_Buero 2025-12-10 19:06:12 state initialized
setstate di_Klima_Buero 2025-12-11 14:29:06 temp_soll 20.0
setstate di_Klima_Buero 2025-12-10 19:10:40 temp_soll_num_only 20.5
setstate di_Klima_Buero 2025-12-11 16:38:59 valve 0 %





Damian

Normalerweise wird ein FHEM-Widget an ein Device gebunden und nicht an mehrere. Innerhalb des angegebenen Devices kann man die Reading angeben, die man haben will. Beim DOIF kann man im letzten Parameter zusätzlich definieren, wie der Wert gesetzt werden soll, insbesondere wenn die Angabe vom anzuzeigenden Wert abweicht.

Wenn solltemp_ist den aktuellen Wert beinhaltet und man per set EG_Buero_Klima solltemp <Wert> die Temperatur setzt, dann sollte es so funktionieren:


widget([EG_Buero_Klima:solltemp_ist],'controlminidash,measured_temp,#,solltemp_ist,valvepos,sani_heating_manual@controlMode.manual,rc_MINUS@temp-5,sani_heating_boost@boost,sani_heating_automatic@controlMode.automatic,rc_PLUS@temp+5,sani_heating_mode@night_day',"set solltemp")
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

schwatter

@appi

Probier mal ein userreading für dein Device EG_Buero_Klima

solltemp:solltemp_ist.* {
  my $s = ReadingsVal("EG_Buero_Klima","solltemp_ist","?");
  return $s;
}

Gruß schwatter