[gelöst] Simples Homebridgemapping für MQTT Device

Begonnen von Borkk, 13 Februar 2022, 19:08:34

Vorheriges Thema - Nächstes Thema

Borkk

Hallo Zusammen,

ich habe mal eine vermutlich einfach zu lösende Frage. Um einen alten aber sehr guten Luftreiniger von Beurer smart zu machen, habe ich auf den Einschalter einen Swichtbot geklebt. Er betätigt den Taster zum ein und ausschalten. Den Bot steuere ich über einen ESP32 per MQTT. Der Gag bei der Sache ist der Switch Mode. Das bedeutet, wenn ich einen "set wz_feuchte on" schicke, drückt der Swichtbot 1x auf den Taster, schaltet das Gerät an und behält im state ON. Sende ich ein off. Drückt er wieder auf den Knopf und der state springt auf OFF. Das ist zwar keine 100% sicher Rückmeldung über den Status des Luftreinigers aber besser als nichts.

Soweit funktioniert das ganze auch völlig problemlos.

Nun möchte ich das Gerät in HomeKit integrieren. Dazu haben ich ein simples Homebridgemapping wie folgt angelegt:
On=state,valueOn=ON,valueOff=OFF,cmdOn=on,cmdOff=off
(der Arduino Code liefert den state in Großbuchstaben)

In dem Gerät der Homebridge GUI, funktioniert das auch exakt so wie ich es möchte:
   1x drücken= Gerät on -> Kachel bleibt on 
   nochmal drücken= Gerät off -> Kachel off.

Im Homekit klapp das leider nicht. Hier passiert folgendes:
  1x drücken = Gerät on -> Kachel ist kurz on und springt dann auf off
  nochmal Drücken = keine Funktion mehr

Was mache ich falsch?

Hier ein List des MQTT Device:
Internals:
   CID        esp32_2
   DEF        esp32_2
   DEVICETOPIC wz_feuchte
   FUUID      61fae0d5-f33f-1248-badf-e9ea314df39a57c0
   FVERSION   10_MQTT2_DEVICE.pm:0.255640/2022-01-26
   IODev      myBroker
   LASTInputDev myBroker
   MSGCNT     21368
   NAME       wz_feuchte
   NR         378
   STATE      OFF
   TYPE       MQTT2_DEVICE
   myBroker_CONN myBroker_192.168.23.185_54146
   myBroker_MSGCNT 21368
   myBroker_TIME 2022-02-13 18:45:59
   READINGS:
     2022-02-10 13:30:35   IODev           myBroker
     2022-02-13 18:45:11   assumedstate    OFF
     2022-02-13 18:45:11   batt            93
     2022-02-13 09:52:05   command         REQUESTSETTINGS
     2022-02-13 09:52:05   firmware        4.9
     2022-02-13 09:52:05   hold            0
     2022-02-13 09:52:05   inverted        false
     2022-02-09 15:04:57   json2nameValueErrorText json2nameValue: no closing } found
     2022-02-09 15:04:57   json2nameValueInput {"status":"getset0+swi
     2022-02-13 18:45:59   lastwill        online
     2022-02-13 18:45:11   mode            PressOnOff
     2022-02-13 18:45:59   rssi            -73
     2022-02-13 18:45:11   state           OFF
     2022-02-13 18:45:11   status          idle
     2022-02-10 13:31:34   subscriptions   switchbot/esp32_2/bot/switchbottwo/set switchbot/esp32_2/holdPress switchbot/esp32_2/requestInfo switchbot/esp32_2/requestSettings switchbot/esp32_2/rescan switchbot/esp32_2/setHold switchbot/esp32_2/setMode
     2022-02-13 09:52:05   timers          0
     2022-02-13 08:13:30   value           5
   hmccu:
Attributes:
   DbLogExclude .*
   alexaName  Wohnzimmer Feuchte
   alexaRoom  Wohnzimmer
   alias      Luft Waescher
   cmdIcon    on:general_an off:general_aus
   devStateIcon OFF:humidity@grey ON:humidity@blue
   event-on-change-reading .*
   genericDeviceType switch
   group      Schalter
   homebridgeMapping On=state,valueOn=ON,valueOff=OFF,cmdOn=on,cmdOff=off
   icon       mqtt_bridge_2
   readingList esp32_2:switchbot/esp32_2:.* { json2nameValue($EVENT) }
esp32_2:switchbot/esp32_2/lastwill:.* lastwill
esp32_2:switchbot/esp32_2/bot/switchbottwo/assumedstate:.* assumedstate
esp32_2:switchbot/esp32_2/bot/switchbottwo/attributes:.* { json2nameValue($EVENT) }
esp32_2:switchbot/esp32_2/bot/switchbottwo/state:.* state
esp32_2:switchbot/esp32_2/bot/switchbottwo/status:.* { json2nameValue($EVENT) }
esp32_2:switchbot/esp32_2/bot/switchbottwo/settings:.* { json2nameValue($EVENT) }
esp32_2:switchbot/esp32_2/esp32/rssi:.* rssi
   room       14 Wohnzimmer,Homekit
   setList    on switchbot/esp32_2/bot/switchbottwo/set ON
off switchbot/esp32_2/bot/switchbottwo/set OFF
   webCmd     on:off

 
Proxmox & Docker:  FHEM, Raspberrymatic, ConBee3, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana, HmIP Akt- /Sensoren, Shelly´s, Alexa, ASC, Gardena, E-Paper, FritzBox; (Tado° x), iBeacon, OLED ; ESP32/8266, SwitchBot ... (Netatmo & Homekit über HomeAssistant)

DeeSPe

Das homebridgeMapping an sich sieht gut aus.
Was sagt denn die Konsole von Homebridge beim Schalten über die WebGUI und über die Home App? Dort sollte doch ein Unterschied zu sehen sein.
Hast Du mal testweise probiert das homebridgeMapping zuerst zu "clear"en?
attr wz_feuchte homebridgeMapping clear On=state,valueOn=ON,valueOff=OFF,cmdOn=on,cmdOff=off

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Beta-User

Vielleicht noch ein paar Anmerkungen zum Device an sich:
switchbot/esp32_2/bot/switchbottwo/state:.* { { state => lc $EVENT } }Könnte dazu führen, dass immer Kleinschriebung verwendet wird und dann das mapping insgesamt entfallen kann.

Vielleicht kann ein ergänzendes setStateList mit "on off" helfen, dass die Sprachsteuerung weiß, dass ein Übergangszustand gesetzt wurde, der vom Device noch nicht bestätigt wurde (dazu müßte man wissen, ob ggf. Anweisungen bestätigt werden).

Ob eocr mit ".*" hier glücklich gewählt ist, wäre auch die Frage.

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

Borkk

Zitat von: Beta-User am 16 Februar 2022, 11:43:39
Vielleicht noch ein paar Anmerkungen zum Device an sich:
switchbot/esp32_2/bot/switchbottwo/state:.* { { state => lc $EVENT } }Könnte dazu führen, dass immer Kleinschriebung verwendet wird und dann das mapping insgesamt entfallen kann.

Der "clear" hat nichts gebracht aber das mappen in Kleinbuchstaben hat die Lösung gebracht. Ich hab das homenridgemapping jetzt gelöscht und es klappt einwandfrei.

Vielen Dank :) 
Proxmox & Docker:  FHEM, Raspberrymatic, ConBee3, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana, HmIP Akt- /Sensoren, Shelly´s, Alexa, ASC, Gardena, E-Paper, FritzBox; (Tado° x), iBeacon, OLED ; ESP32/8266, SwitchBot ... (Netatmo & Homekit über HomeAssistant)