Hallo,
ich habe mir über die Seite https://github.com/devWaves/SwitchBot-MQTT-BLE-ESP32 (https://github.com/devWaves/SwitchBot-MQTT-BLE-ESP32) den SwitchBot BLE geflasht. Funktioniert auch soweit.
Nun würde ich gerne eine saubere MQTT Auswertung bekommen, da ich demnächst ein zweites Gerät bekomme und diese Daten da ebenfalls mitkommen.
Gleichzeitig möchte ich beim senden auch das Gerät auswählen können. Bisher habe ich folgendes.
List:
Internals:
CFGFN
CID SwitchBotMQTT
DEF SwitchBotMQTT
FUUID 637a2370-f33f-5815-d860-3808dcfa505cb26a
IODev MQTT2_FHEM_Server
LASTInputDev MQTT2_FHEM_Server
MQTT2_FHEM_Server_CONN MQTT2_FHEM_Server_192.168.178.54_64757
MQTT2_FHEM_Server_MSGCNT 370
MQTT2_FHEM_Server_TIME 2022-11-20 14:08:10
MSGCNT 370
NAME MQTT2_SwitchBotMQTT
NR 22657
STATE status
TYPE MQTT2_DEVICE
eventCount 391
READINGS:
2022-11-20 13:54:08 IODev MQTT2_FHEM_Server
2022-11-20 13:54:19 _ switchbot/SwitchBotMQTT/curtain/curtainone
2022-11-20 13:54:19 avty_t switchbot/SwitchBotMQTT/lastwill
2022-11-20 13:56:09 batt 86
2022-11-20 13:56:09 battery 86
2022-11-20 13:56:09 calib true
2022-11-20 13:54:19 cmd_t ~/set
2022-11-20 13:55:39 command CLOSE
2022-11-20 13:54:19 dev_cla curtain
2022-11-20 13:54:19 device_identifiers_1 switchbot_CB:79:F8:F4:94:25
2022-11-20 13:54:19 device_manufacturer WonderLabs SwitchBot
2022-11-20 13:54:19 device_model Curtain
2022-11-20 13:54:19 device_name curtainone
2022-11-20 13:54:08 firmware v7.1
2022-11-20 13:54:19 icon mdi:cog
2022-11-20 14:08:10 lastwill online
2022-11-20 13:56:09 light 1
2022-11-20 13:54:19 name curtainone Position
2022-11-20 13:54:19 pl_off false
2022-11-20 13:54:19 pl_on true
2022-11-20 13:54:19 pl_stop PAUSE
2022-11-20 13:56:10 pos 2
2022-11-20 13:54:19 pos_clsd 0
2022-11-20 13:54:19 pos_open 100
2022-11-20 13:54:19 pos_t ~/position
2022-11-20 13:54:19 pos_tpl {{ value_json.pos }}
2022-11-20 14:08:10 rssi -48
2022-11-20 13:54:19 set_pos_t ~/set
2022-11-20 13:54:19 set_pos_tpl {{ position }}
2022-11-20 13:54:19 stat_clsd CLOSE
2022-11-20 13:54:19 stat_open OPEN
2022-11-20 13:54:19 stat_stopped PAUSE
2022-11-20 13:54:19 stat_t ~/position
2022-11-20 14:06:16 state status
2022-11-20 13:56:10 status idle
2022-11-20 13:54:19 uniq_id switchbot_CB:79:F8:F4:94:25_position
2022-11-20 13:54:19 unit_of_meas %
2022-11-20 13:55:39 value 1
2022-11-20 13:54:19 value_template {{ value_json.pos }}
Attributes:
readingList SwitchBotMQTT:switchbot/SwitchBotMQTT:.* { json2nameValue($EVENT) }
SwitchBotMQTT:switchbot/SwitchBotMQTT/esp32/firmware:.* firmware
SwitchBotMQTT:switchbot/SwitchBotMQTT/lastwill:.* lastwill
SwitchBotMQTT:homeassistant/sensor/SwitchBotMQTT/linkquality/config:.* { json2nameValue($EVENT) }
SwitchBotMQTT:homeassistant/sensor/SwitchBotMQTT/firmware/config:.* { json2nameValue($EVENT) }
SwitchBotMQTT:homeassistant/sensor/curtainone/battery/config:.* { json2nameValue($EVENT) }
SwitchBotMQTT:homeassistant/sensor/curtainone/linkquality/config:.* { json2nameValue($EVENT) }
SwitchBotMQTT:homeassistant/sensor/curtainone/illuminance/config:.* { json2nameValue($EVENT) }
SwitchBotMQTT:homeassistant/binary_sensor/curtainone/calibrated/config:.* { json2nameValue($EVENT) }
SwitchBotMQTT:homeassistant/cover/curtainone/config:.* { json2nameValue($EVENT) }
SwitchBotMQTT:homeassistant/sensor/curtainone/position/config:.* { json2nameValue($EVENT) }
SwitchBotMQTT:switchbot/SwitchBotMQTT/curtain/curtainone/battery:.* battery
SwitchBotMQTT:switchbot/SwitchBotMQTT/curtain/curtainone/rssi:.* rssi
SwitchBotMQTT:switchbot/SwitchBotMQTT/curtain/curtainone/attributes:.* { json2nameValue($EVENT) }
SwitchBotMQTT:switchbot/SwitchBotMQTT/curtain/curtainone/state:.* state
SwitchBotMQTT:switchbot/SwitchBotMQTT/curtain/curtainone/position:.* { json2nameValue($EVENT) }
SwitchBotMQTT:switchbot/SwitchBotMQTT/esp32/rssi:.* rssi
SwitchBotMQTT:switchbot/SwitchBotMQTT/curtain/curtainone/status:.* { json2nameValue($EVENT) }
room MQTT2_DEVICE
setList state:OPEN,PAUSE,CLOSE switchbot/SwitchBotMQTT/curtain/curtainone/set $EVTPART1
RAW:
defmod MQTT2_SwitchBotMQTT MQTT2_DEVICE SwitchBotMQTT
attr MQTT2_SwitchBotMQTT readingList SwitchBotMQTT:switchbot/SwitchBotMQTT:.* { json2nameValue($EVENT) }\
SwitchBotMQTT:switchbot/SwitchBotMQTT/esp32/firmware:.* firmware\
SwitchBotMQTT:switchbot/SwitchBotMQTT/lastwill:.* lastwill\
SwitchBotMQTT:homeassistant/sensor/SwitchBotMQTT/linkquality/config:.* { json2nameValue($EVENT) }\
SwitchBotMQTT:homeassistant/sensor/SwitchBotMQTT/firmware/config:.* { json2nameValue($EVENT) }\
SwitchBotMQTT:homeassistant/sensor/curtainone/battery/config:.* { json2nameValue($EVENT) }\
SwitchBotMQTT:homeassistant/sensor/curtainone/linkquality/config:.* { json2nameValue($EVENT) }\
SwitchBotMQTT:homeassistant/sensor/curtainone/illuminance/config:.* { json2nameValue($EVENT) }\
SwitchBotMQTT:homeassistant/binary_sensor/curtainone/calibrated/config:.* { json2nameValue($EVENT) }\
SwitchBotMQTT:homeassistant/cover/curtainone/config:.* { json2nameValue($EVENT) }\
SwitchBotMQTT:homeassistant/sensor/curtainone/position/config:.* { json2nameValue($EVENT) }\
SwitchBotMQTT:switchbot/SwitchBotMQTT/curtain/curtainone/battery:.* battery\
SwitchBotMQTT:switchbot/SwitchBotMQTT/curtain/curtainone/rssi:.* rssi\
SwitchBotMQTT:switchbot/SwitchBotMQTT/curtain/curtainone/attributes:.* { json2nameValue($EVENT) }\
SwitchBotMQTT:switchbot/SwitchBotMQTT/curtain/curtainone/state:.* state\
SwitchBotMQTT:switchbot/SwitchBotMQTT/curtain/curtainone/position:.* { json2nameValue($EVENT) }\
SwitchBotMQTT:switchbot/SwitchBotMQTT/esp32/rssi:.* rssi\
SwitchBotMQTT:switchbot/SwitchBotMQTT/curtain/curtainone/status:.* { json2nameValue($EVENT) }
attr MQTT2_SwitchBotMQTT room MQTT2_DEVICE
attr MQTT2_SwitchBotMQTT setList state:OPEN,PAUSE,CLOSE switchbot/SwitchBotMQTT/curtain/curtainone/set $EVTPART1
setstate MQTT2_SwitchBotMQTT status
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:08 IODev MQTT2_FHEM_Server
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 _ switchbot/SwitchBotMQTT/curtain/curtainone
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 avty_t switchbot/SwitchBotMQTT/lastwill
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:56:09 batt 86
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:56:09 battery 86
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:56:09 calib true
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 cmd_t ~/set
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:55:39 command CLOSE
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 dev_cla curtain
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 device_identifiers_1 switchbot_CB:79:F8:F4:94:25
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 device_manufacturer WonderLabs SwitchBot
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 device_model Curtain
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 device_name curtainone
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:08 firmware v7.1
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 icon mdi:cog
setstate MQTT2_SwitchBotMQTT 2022-11-20 14:09:40 lastwill online
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:56:09 light 1
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 name curtainone Position
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 pl_off false
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 pl_on true
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 pl_stop PAUSE
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:56:10 pos 2
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 pos_clsd 0
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 pos_open 100
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 pos_t ~/position
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 pos_tpl {{ value_json.pos }}
setstate MQTT2_SwitchBotMQTT 2022-11-20 14:09:40 rssi -49
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 set_pos_t ~/set
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 set_pos_tpl {{ position }}
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 stat_clsd CLOSE
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 stat_open OPEN
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 stat_stopped PAUSE
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 stat_t ~/position
setstate MQTT2_SwitchBotMQTT 2022-11-20 14:06:16 state status
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:56:10 status idle
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 uniq_id switchbot_CB:79:F8:F4:94:25_position
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 unit_of_meas %
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:55:39 value 1
setstate MQTT2_SwitchBotMQTT 2022-11-20 13:54:19 value_template {{ value_json.pos }}
Damit kann ich auch das öffnen und schließen steuern. Allerdings kein Gerät auswählen. Das Gerät selber wird bei MQTT als
curtainone
übertragen. Das nächste wäre dann "curtaintwo".
Wie passe ich am besten die Auswertung und das senden an?
Hi,
das klingt für mich nach der Vorgehensweise: bridge Device machen und dann jedes dieser Teile in ein separates MQTT2_DEVICE
Ich hatte dieses Vorgehen mal hier beschrieben. Im Wiki gibt es da auch viele Beispiele.
https://forum.fhem.de/index.php/topic,116480.msg1107818.html#msg1107818
Gruß Otto
Hallo Otto,
danke für den Tipp. Ich komme aber nicht weiter.
Ich habe als bridgeRegexp folgendes:
curtain\/([a-z]+)\/([a-z]+).*:.* "curtain_$1_$2_$3"
Wenn ich dann den "curtain" bewege und die MQTT Kommandos kommen, wird mir kein neues Devices angelegt.
Das List:
Internals:
CFGFN
CID SwitchBotMQTT
DEF SwitchBotMQTT
FUUID 637a536c-f33f-5815-c874-deea02f694f20b76
IODev MQTT2_FHEM_Server
LASTInputDev MQTT2_FHEM_Server
MQTT2_FHEM_Server_CONN MQTT2_FHEM_Server_192.168.178.54_56168
MQTT2_FHEM_Server_MSGCNT 2082
MQTT2_FHEM_Server_TIME 2022-11-20 21:18:09
MSGCNT 2082
NAME MQTT2_SwitchBotMQTT
NR 27611
STATE CLOSE
TYPE MQTT2_DEVICE
eventCount 2162
OLDREADINGS:
READINGS:
2022-11-20 21:18:09 lastwill online
2022-11-20 21:18:09 rssi -28
Attributes:
bridgeRegexp curtain\/([a-z]+)\/([a-z]+).*:.* "curtain_$1_$2_$3"
readingList SwitchBotMQTT:switchbot/SwitchBotMQTT/lastwill:.* lastwill
SwitchBotMQTT:switchbot/SwitchBotMQTT/esp32/rssi:.* rssi
room MQTT2_DEVICE
Kannst du mir helfen?
Ich würde das bridgeRegexp so versuchen:
switchbot\/SwitchBotMQTT\/curtain\/([a-z]+)\/.* "curtain_$1"
Das matched auf den kompletten String und extrahiert dein benanntest Device durch einen groupmatch - siehe https://regex101.com/r/mSQwt7/1
Hinweis: die Escape Zeichen die https://regex101.com/ haben will, kann man in FHEM weglassen.
Dann solltest Du überlegen, ob Du alle topics brauchst und eventuell die Gruppe homeassistant gleich weglassen.
Hallo Otto,
bin Heute dazu gekommen. Der komplette RegEx war genau der richtige Tipp.
Danke
Gruß
guenni