[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