Hallo zusammen,
Ich habe ein Homeconnect Gerät ist fhem eingerichtet. Dieses lässt sich wunderbar steuern. Jedoch ist das eher umständlich, da die Set Befehle sehr merkwürdig sind.
Das Listing schaut so aus:
Internals:
CFGFN
DEF hcconn SIEMENS-LC91BUR50-68A40E332636
FUUID 5ee682d7-f33f-ab72-cc89-b821c880bde9f618
NAME LC91BUR50
NR 4748
STATE Idle
TYPE HomeConnect
aliasname Dunstabzugshaube
brand Siemens
commandPrefix Cooking.Common.Program.Hood.
eventChannelTimeout 1592379276
haId SIEMENS-LC91BUR50-68A40E332636
hcconn hcconn
programs Venting,DelayedShutOff
retrycounter 0
type Hood
vib LC91BUR50
Helper:
DBLOG:
BSH.Common.Option.ElapsedProgramTime:
logmysql:
TIME 1592331240.05783
VALUE 120 seconds
BSH.Common.Root.ActiveProgram:
logmysql:
TIME 1592331245.06785
VALUE -
BSH.Common.Setting.PowerState:
logmysql:
TIME 1592331245.06785
VALUE BSH.Common.EnumType.PowerState.Off
BSH.Common.Status.LocalControlActive:
logmysql:
TIME 1592328982.3373
VALUE 0
BSH.Common.Status.OperationState:
logmysql:
TIME 1592331245.06785
VALUE BSH.Common.EnumType.OperationState.Inactive
BSH.Common.Status.RemoteControlActive:
logmysql:
TIME 1592295203.26379
VALUE 1
BSH.Common.Status.RemoteControlStartAllowed:
logmysql:
TIME 1592295203.26379
VALUE 1
Cooking.Common.Option.Hood.IntensiveLevel:
logmysql:
TIME 1592328856.07655
VALUE Cooking.Hood.EnumType.IntensiveStage.IntensiveStageOff
Cooking.Common.Option.Hood.VentingLevel:
logmysql:
TIME 1592328856.07655
VALUE Cooking.Hood.EnumType.Stage.FanStage02
Cooking.Common.Setting.Lighting:
logmysql:
TIME 1592341146.23137
VALUE false
Cooking.Common.Setting.LightingBrightness:
logmysql:
TIME 1592331096.11692
VALUE 10 %
state:
logmysql:
TIME 1592331245.06785
VALUE Idle
READINGS:
2020-06-16 20:14:00 BSH.Common.Option.ElapsedProgramTime 120 seconds
2020-06-16 20:14:05 BSH.Common.Root.ActiveProgram -
2020-06-16 20:14:05 BSH.Common.Setting.PowerState BSH.Common.EnumType.PowerState.Off
2020-06-16 19:36:22 BSH.Common.Status.LocalControlActive 0
2020-06-16 20:14:05 BSH.Common.Status.OperationState BSH.Common.EnumType.OperationState.Inactive
2020-06-16 10:13:23 BSH.Common.Status.RemoteControlActive 1
2020-06-16 10:13:23 BSH.Common.Status.RemoteControlStartAllowed 1
2020-06-16 19:34:16 Cooking.Common.Option.Hood.IntensiveLevel Cooking.Hood.EnumType.IntensiveStage.IntensiveStageOff
2020-06-16 19:34:16 Cooking.Common.Option.Hood.VentingLevel Cooking.Hood.EnumType.Stage.FanStage02
2020-06-16 22:59:06 Cooking.Common.Setting.Lighting false
2020-06-16 20:11:36 Cooking.Common.Setting.LightingBrightness 10 %
2020-06-16 20:14:05 state Idle
Attributes:
alias Dunstabzugshaube
room GoogleAssistant,Küche
webCmd BSH.Common.Root.SelectedProgram:startProgram:stopProgram
So wird Licht über den Befehl set LC91BUR50 Cooking.Common.Setting.Lighting 1
eingeschaltet. Der Status des gleichlautenden Readings wechselt dann von false auf true. :o In der Befehlsliste ist aber nur das Feld Cooking.Common.Setting.Lighting im Dropdownmenü. Das zusätzliche Befehlsfeld enthält in Prosa das Reding plus false bzw. true. Also gemäß Cooking.Common.Setting.Lighting.False
Zum Einschalten muss man nun das alles Löschen und stattdessen eine 1 schreiben und wegschicken.
Ich würde das gerne über eine setlist und webcmd lösen habe aber nicht so recht eine Idee, da die Beispiele im Commandref doch deutlich einfacher strukturiert sind.
Viele Grüße
Martin
eventMap?
Ansonsten sollte man das m.E. mal mit dem Modulautor diskutieren, ob es da nicht Ansätze auf Modulebene gäbe, um das anwenderfreundlicher zu gestalten... (Möglichst gleich unter Berücksichtigung möglichst "generischerer Reading- und setter-Namen"; gibt dazu zwar erst erste Ansätze, die hier zu finden sind: https://wiki.fhem.de/wiki/DevelopmentGuidelinesReadings, aber im Developer-Bereich (?) auch eine jüngere, weiter greifende Diskussion)
ja, eventMap hatte ich auch schon ins Auge gefasst.
würde es so machen
attr eventmap /set LC91BUR50 Cooking.Common.Setting.Lighting 1:Licht on/set LC91BUR50 Cooking.Common.Setting.Lighting 0:Licht off/
Das mit dem Modurator werde ich in einem entsprechenden Thread thematisieren.
Grüße Martin
Das wird vermutlich nicht funktionieren.
Eher so:
attr eventmap /Cooking.Common.Setting.Lighting 1:Licht on/Cooking.Common.Setting.Lighting 0:Licht off/
Da hier auch noch Unterschiede in sende- und Empfangsrichtung dazukommen, ist es eher die "{usr=>{...}..."-Form, die du hier benötigst. Gibt leider nicht so viele Beispiele dazu, und auch die commandref ist eher spärlich: https://fhem.de/commandref_modular.html#FHEMWEB.
Generell wäre die Frage, ob man das Licht hier nicht in ein separates Gerät auslagert. Sollte mit readingsProxy funktionieren, ist aber vermutlich auch nicht ganz trivial.
Genau sowas hatte ich ja schon befürchtet. Das ist nicht trivial. Wie muss ich denn weitermachen wenn ich das Eventmap erstellt habe? Alleine damit bringt das ja noch nix...
Na ja, die Reading/setter-Bezeichnungen müssen ggf. zu der eventMap passen. Etwas mehr Infos zum Zusammenwirken der diversen Attribute findest du in https://wiki.fhem.de/wiki/DeviceOverview_anpassen und den dort verlinkten Artikeln, etwas mehr zu "speziellen" eventMap-funktionen noch auch hier: https://forum.fhem.de/index.php/topic,43023.msg350289.html#msg350289.