Werte-Mapping

Begonnen von beaune, 12 Juli 2021, 12:53:53

Vorheriges Thema - Nächstes Thema

beaune

Hallo,

ich würde gerne in fhemweb andere Werte darstellen als die, die im JSON-Telegramm übertragen werden, also ein Wertemapping durchführen. Dabei hatten ich an etwas gedacht, wie es z.B. in HTTPMOD gelöst ist:
set01IMap  false:off, true:on
Wie sollte man so etwas in einem MQTT2-Device lösen?

Konkreter Anwendungsfall:
In der getList ist dieses Reading definiert:
Hc1SFMode:noArg Hc1SFMode_0_value ebusd/f47/Hc1SFMode/get

Und in der setList:
Hc1SFMode_0_value:none,onedayholiday,onedaybankholiday  ebusd/f47/Hc1SFMode/set $EVTPART1
Ziel ist jetzt, dass man in fhemWeb deutsche Begriffe als Auswahlliste bekommt, so wie sie auch der Heizungsregler anzeigt, also z.B. "Ein Tag außer Haus", was "onedayholiday" entsprechen würde.

Wie kamm man sowas elegant für ein MQTT2-Device in fhem abbilden? Hab da spontan nichts gefunden...

Beta-User

Moin.

Vorab: Es wäre hilfreich, wenn du immer eine RAW-Definition (einschließlich setstate-Zeilen) liefern könntest (und hier optimalerweise auch Info, über welchen Topic ggf. welche Antwort kommt).

Was du hier ansprichst, sind m.E. zwei unterschiedliche Aspekte:
a) jsonMap = Ändern der "key"-Namen der eingehenden Nachrichten und (vielleicht?)
b) Umwandeln von eingehenden Werten, die in den "keys" stehen.

Teil a) könnte (auszugsweise, bezogen auf den Beispiel) so aussehen:attr DEVICE jsonMap Hc1SFMode_0_value:Hc1SFMode
attr DEVICE getList Hc1SFMode:noArg Hc1SFMode ebusd/f47/Hc1SFMode/get
attr DEVICE setList Hc1SFMode:none,onedayholiday,onedaybankholiday  ebusd/f47/Hc1SFMode/set $EVTPART1

Zu Teil b) gibt es einige wenige Beispiele in mqtt2.template. Die Codes sind nicht unbedingt selbsterklärend, im Kern geht es darum, den JSON-String "vorzubehandeln" und die Werte "FHEM-like" zu ändern, bevor sie durch json2nameValue() (j2nv) aufgedröselt werden. MAn. "einfacher" ist 6channel_ethernet_board_6input_split, es gibt dann noch was komplizierteres, aber ebenfalls (bzgl. ebus) nicht uninteressantes z.B. in tasmota_zigbee2tasmota_light_dimmer: Da wird nur der "innere JSON" an j2nv() übergeben ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files