Set Befehle über ein alias als webcmd

Begonnen von maddinthebrain, 17 Juni 2020, 10:22:59

Vorheriges Thema - Nächstes Thema

maddinthebrain

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
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

Beta-User

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)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

maddinthebrain

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
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

maddinthebrain

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...
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors