gelöst: ON/OFF in on/off transformieren?

Begonnen von moontear, 27 April 2021, 12:02:31

Vorheriges Thema - Nächstes Thema

moontear

Ich probiere ein HMCCUDEV device über MQTT zu steuern.

Leider kommt über MQTT ON/OFF (groß geschrieben) und das funktioniert nicht.

Folgendes funktioniert:
set HM_LC_Sw1PBU_FM_Licht on
set HM_LC_Sw1PBU_FM_Licht control on


Folgendes funktioniert nicht:
set HM_LC_Sw1PBU_FM_Licht ON
set HM_LC_Sw1PBU_FM_Licht control ON


Ich habe bereits mit substitute probiert:
substitute CONTROL!(true|1|ON):on,(false|0|OFF):off;;ON!ON:on;;OFF!OFF:off

Leider bringt das nichts. Ist substitute nicht das richtige? Kann ich attribute irgendwie anders transformieren von groß auf klein?

PS:
mqttPublish  state:topic=home/light/licht/state
mqttSubscribe  state:stopic=home/light/licht/set


(Wenn die die MQTT Messages manuell setze mit on/off (kleingeschrieben) funktioniert auch alles)

LuckyDay

ZitatLeider kommt über MQTT ON/OFF (groß geschrieben)

den Teil solltest hier mal erklären. in fhem schreibt man "eigentlich" alles klein.

Otto123

#2
Hi,

attr eventMap wäre ein Standard FHEM Feature

Aber ich würde auch besser die Quelle ändern als überall das Ziel umzubiegen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

moontear

Zitat von: Otto123 am 27 April 2021, 12:10:46
attr eventMap wäre ein Standard FHEM Feature

Aber ich würde auch besser die Quelle ändern als überall das Ziel umzubiegen.

eventMap, das wars!

eventMap  { usr=>{ 'ON' => 'on', 'OFF' => 'off'} }

Ich bin voll mit dir dass ich lieber sauber "on" schicken würde, anstatt "ON". Noch weiß ich leider nicht wie ich das mit Homeassistant bewerkstelligen kann - deswegen erstmal Workaround.

Otto123

ich hatte nur an die einfache Variante gedacht:
eventMap on:ON off:OFF
Aber mit Deiner ist es weniger Eingriff. Ich bin mittlerweile sehr zögerlich mit eventMap, das führt manchmal zu undurchsichtigem Verhalten.

Du musst doch irgendeine MQTT Brücke haben? Dort einfach sowas wie lc($EVENT) in Richtung FHEM?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

moontear

Ich verwende die `MQTT_GENERIC_BRIDGE` da kann ich auch transformieren? Extern verwende ich eclipse-mosquitto im Container wüsste da aber noch 0% wo ich da transformationen einbauen kann. Das sind wirklich die ersten Gehversuche mit MQTT.

Beta-User

"expression" (in mqttSubscribe) müsste dein Stichwort sein.
Ungetestet:
state:expression={$value="lc $value"}
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

moontear

<3 Super! Richtig gute Info, danke!

Ich hab mittlerweile auch herausgefunden dass ich in Homeassistant die MQTT Werte transformieren kann: https://www.home-assistant.io/integrations/switch.mqtt/

In der config:
  "state_on": "on",
  "state_off": "off",
  "payload_on": "on",
  "payload_off": "off"


Bisschen viel Text, aber besser als in FHEM irgendwelche Transformationen zu machen wenn es schon sauber ankommen kann.