If it wasn’t discovered automatically, it’s unlikely to be manually configurable successfully. If it can’t discover it, it can’t really see the topics in the first place or the topics/messages are not valid for the HomeAssistant standard.
Discovery is pretty straight forward. The binding asks the broker for all the topics. If it finds a homeassistant topic it looks at all the topics directly under that and reads devices and the config messages there to figure out what Things with what Channels to create.
If that isn’t working, manually configuring the Thing isn’t going to work either because for some reason OH can’t access those topics in the first place.
So we need to figure out why it’s not seeing those topics.
First ensure that the MQTT Broker Thing is connected and ONLINE.
Put the HomeAssistant add-on into debug level logging.
Go to Things → Inbox → + → HomeAssistant → Scan.
Capture the logs from the HA add-on and post them here with code fences.
```
logs go here
```
There is no expectation that if it can’t be discovered correctly in the first place that even a correctly configured manually created Thing will work. But if you want to try anyway, the MQTT Base Profile needs to be homeassistant but that’s not sufficient. You also need to add the MQTT Config Topics.
For example, here’s one of my HA devices:
version: 1
things:
mqtt:homeassistant:broker:familyRoomSensors:
bridge: mqtt:broker:broker
label: Family Room Sensors
config:
topics:
- sensor/A4C138C58E33-batt
- sensor/A4C138C58E33-hum
- sensor/A4C138C58E33-tempc
basetopic: homeassistant
channels:
A4C138C58E33_batt:
type: number
label: H5072/75-batt
config:
component: sensor
nodeid: ""
objectid:
- A4C138C58E33-batt
config:
- "{\"stat_t\": \"+/+/BTtoMQTT/A4C138C58E33\", \"dev_cla\": \"battery\", \"unit_of_meas\": \"%\", \"state_class\": \"measurement\", \"name\": \"H5072/75-batt\", \"uniq_id\": \"A4C138C58E33-batt\", \"val_tpl\": \"{{ value_json.batt | is_defined }}\", \"device\": {\"ids\": [\"A4C138C58E33\"], \"cns\": [[\"mac\", \"A4C138C58E33\"]], \"mf\": \"Govee\", \"mdl\": \"H5072/75\", \"name\": \"Thermo-Hygrometer-C58E33\", \"via_device\": \"TheengsGateway\"}}"
A4C138C58E33_hum:
type: number
label: H5072/75-hum
config:
component: sensor
nodeid: ""
objectid:
- A4C138C58E33-hum
config:
- "{\"stat_t\": \"+/+/BTtoMQTT/A4C138C58E33\", \"dev_cla\": \"humidity\", \"unit_of_meas\": \"%\", \"state_class\": \"measurement\", \"name\": \"H5072/75-hum\", \"uniq_id\": \"A4C138C58E33-hum\", \"val_tpl\": \"{{ value_json.hum | is_defined }}\", \"device\": {\"ids\": [\"A4C138C58E33\"], \"cns\": [[\"mac\", \"A4C138C58E33\"]], \"mf\": \"Govee\", \"mdl\": \"H5072/75\", \"name\": \"Thermo-Hygrometer-C58E33\", \"via_device\": \"TheengsGateway\"}}"
A4C138C58E33_tempc:
type: number
label: H5072/75-tempc
config:
component: sensor
nodeid: ""
objectid:
- A4C138C58E33-tempc
config:
- "{\"stat_t\": \"+/+/BTtoMQTT/A4C138C58E33\", \"dev_cla\": \"temperature\", \"unit_of_meas\": \"\\u00b0C\", \"state_class\": \"measurement\", \"name\": \"H5072/75-tempc\", \"uniq_id\": \"A4C138C58E33-tempc\", \"val_tpl\": \"{{ value_json.tempc | is_defined }}\", \"device\": {\"ids\": [\"A4C138C58E33\"], \"cns\": [[\"mac\", \"A4C138C58E33\"]], \"mf\": \"Govee\", \"mdl\": \"H5072/75\", \"name\": \"Thermo-Hygrometer-C58E33\", \"via_device\": \"TheengsGateway\"}}"
Here’s another one:
version: 1
things:
mqtt:homeassistant:broker:garageCameraTheengs:
bridge: mqtt:broker:broker
label: 'Wyze Cam Garage '
config:
topics:
- binary_sensor/2CAA8E2F8559/motion
- button/2CAA8E2F8559/reboot
- button/2CAA8E2F8559/update_snapshot
- camera/2CAA8E2F8559/snapshot
- number/2CAA8E2F8559/bitrate
- number/2CAA8E2F8559/fps
- sensor/2CAA8E2F8559/audio
- sensor/2CAA8E2F8559/res
- sensor/2CAA8E2F8559/signal
- switch/2CAA8E2F8559/flip_horizontal
- switch/2CAA8E2F8559/flip_vertical
- switch/2CAA8E2F8559/ir
- switch/2CAA8E2F8559/motion_detection
- switch/2CAA8E2F8559/motion_tagging
- switch/2CAA8E2F8559/night_vision
- switch/2CAA8E2F8559/notifications
- switch/2CAA8E2F8559/power
- switch/2CAA8E2F8559/status_light
- switch/2CAA8E2F8559/stream
basetopic: homeassistant
channels:
audio:
type: string
label: Audio
config:
component: sensor
nodeid: 2CAA8E2F8559
objectid:
- audio
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/audio\", \"icon\": \"mdi:volume-high\", \"entity_category\": \"diagnostic\", \"availability_topic\": \"wyze/state\", \"name\": \"Audio\", \"uniq_id\": \"WYZE2CAA8E2F8559AUDIO\"}"
bitrate:
type: number
label: Bitrate
config:
component: number
nodeid: 2CAA8E2F8559
objectid:
- bitrate
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/bitrate\", \"command_topic\": \"wyze/garage/bitrate/set\", \"device_class\": \"data_rate\", \"min\": 1, \"max\": 1000, \"icon\": \"mdi:high-definition-box\", \"entity_category\": \"diagnostic\", \"availability_topic\": \"wyze/state\", \"name\": \"Bitrate\", \"uniq_id\": \"WYZE2CAA8E2F8559BITRATE\"}"
flip_horizontal:
type: switch
label: Flip Horizontal
config:
component: switch
nodeid: 2CAA8E2F8559
objectid:
- flip_horizontal
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/hor_flip\", \"command_topic\": \"wyze/garage/hor_flip/set\", \"payload_on\": 1, \"payload_off\": 2, \"icon\": \"mdi:flip-horizontal\", \"entity_category\": \"diagnostic\", \"availability_topic\": \"wyze/state\", \"name\": \"Flip Horizontal\", \"uniq_id\": \"WYZE2CAA8E2F8559FLIP_HORIZONTAL\"}"
flip_vertical:
type: switch
label: Flip Vertical
config:
component: switch
nodeid: 2CAA8E2F8559
objectid:
- flip_vertical
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/ver_flip\", \"command_topic\": \"wyze/garage/ver_flip/set\", \"payload_on\": 1, \"payload_off\": 2, \"icon\": \"mdi:flip-vertical\", \"entity_category\": \"diagnostic\", \"availability_topic\": \"wyze/state\", \"name\": \"Flip Vertical\", \"uniq_id\": \"WYZE2CAA8E2F8559FLIP_VERTICAL\"}"
fps:
type: number
label: Fps
config:
component: number
nodeid: 2CAA8E2F8559
objectid:
- fps
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/fps\", \"command_topic\": \"wyze/garage/fps/set\", \"min\": 1, \"max\": 30, \"icon\": \"mdi:filmstrip\", \"entity_category\": \"diagnostic\", \"availability_topic\": \"wyze/state\", \"name\": \"Fps\", \"uniq_id\": \"WYZE2CAA8E2F8559FPS\"}"
ir:
type: switch
label: Ir
config:
component: switch
nodeid: 2CAA8E2F8559
objectid:
- ir
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/irled\", \"command_topic\": \"wyze/garage/irled/set\", \"payload_on\": 1, \"payload_off\": 2, \"icon\": \"mdi:lightbulb-night\", \"availability_topic\": \"wyze/state\", \"name\": \"Ir\", \"uniq_id\": \"WYZE2CAA8E2F8559IR\"}"
motion:
type: switch
label: Motion
config:
component: binary_sensor
nodeid: 2CAA8E2F8559
objectid:
- motion
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/motion\", \"payload_on\": 1, \"payload_off\": 2, \"icon\": \"mdi:motion-sensor\", \"availability_topic\": \"wyze/state\", \"name\": \"Motion\", \"uniq_id\": \"WYZE2CAA8E2F8559MOTION\"}"
motion_detection:
type: switch
label: Motion Detection
config:
component: switch
nodeid: 2CAA8E2F8559
objectid:
- motion_detection
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/motion_detection\", \"command_topic\": \"wyze/garage/motion_detection/set\", \"payload_on\": 1, \"payload_off\": 2, \"state_off\": \"stopped\", \"icon\": \"mdi:motion-sensor-off\", \"entity_category\": \"diagnostic\", \"availability_topic\": \"wyze/state\", \"name\": \"Motion Detection\", \"uniq_id\": \"WYZE2CAA8E2F8559MOTION_DETECTION\"}"
motion_tagging:
type: switch
label: Motion Tagging
config:
component: switch
nodeid: 2CAA8E2F8559
objectid:
- motion_tagging
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/motion_tagging\", \"command_topic\": \"wyze/garage/motion_tagging/set\", \"payload_on\": 1, \"payload_off\": 2, \"icon\": \"mdi:image-filter-center-focus\", \"entity_category\": \"diagnostic\", \"availability_topic\": \"wyze/state\", \"name\": \"Motion Tagging\", \"uniq_id\": \"WYZE2CAA8E2F8559MOTION_TAGGING\"}"
night_vision:
type: switch
label: Night Vision
config:
component: switch
nodeid: 2CAA8E2F8559
objectid:
- night_vision
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/night_vision\", \"command_topic\": \"wyze/garage/night_vision/set\", \"payload_on\": 3, \"payload_off\": 2, \"icon\": \"mdi:weather-night\", \"availability_topic\": \"wyze/state\", \"name\": \"Night Vision\", \"uniq_id\": \"WYZE2CAA8E2F8559NIGHT_VISION\"}"
notifications:
type: switch
label: Notifications
config:
component: switch
nodeid: 2CAA8E2F8559
objectid:
- notifications
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/notifications\", \"command_topic\": \"wyze/garage/notifications/set\", \"payload_on\": 1, \"payload_off\": 2, \"icon\": \"mdi:square-rounded-badge\", \"entity_category\": \"diagnostic\", \"availability_topic\": \"wyze/state\", \"name\": \"Notifications\", \"uniq_id\": \"WYZE2CAA8E2F8559NOTIFICATIONS\"}"
power:
type: switch
label: Power
config:
component: switch
nodeid: 2CAA8E2F8559
objectid:
- power
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/power\", \"command_topic\": \"wyze/garage/power/set\", \"payload_on\": \"on\", \"payload_off\": \"off\", \"icon\": \"mdi:power-plug\", \"availability_topic\": \"wyze/state\", \"name\": \"Power\", \"uniq_id\": \"WYZE2CAA8E2F8559POWER\"}"
reboot:
type: string
label: Reboot
config:
component: button
nodeid: 2CAA8E2F8559
objectid:
- reboot
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"command_topic\": \"wyze/garage/power/set\", \"payload_press\": \"restart\", \"icon\": \"mdi:restart\", \"entity_category\": \"diagnostic\", \"availability_topic\": \"wyze/state\", \"name\": \"Reboot\", \"uniq_id\": \"WYZE2CAA8E2F8559REBOOT\"}"
res:
type: string
label: Res
config:
component: sensor
nodeid: 2CAA8E2F8559
objectid:
- res
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/res\", \"icon\": \"mdi:image-size-select-large\", \"entity_category\": \"diagnostic\", \"availability_topic\": \"wyze/state\", \"name\": \"Res\", \"uniq_id\": \"WYZE2CAA8E2F8559RES\"}"
signal:
type: string
label: Signal
config:
component: sensor
nodeid: 2CAA8E2F8559
objectid:
- signal
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/wifi\", \"icon\": \"mdi:wifi\", \"entity_category\": \"diagnostic\", \"availability_topic\": \"wyze/state\", \"name\": \"Signal\", \"uniq_id\": \"WYZE2CAA8E2F8559SIGNAL\"}"
snapshot:
type: image
label: Snapshot
config:
component: camera
nodeid: 2CAA8E2F8559
objectid:
- snapshot
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"availability_topic\": \"wyze/garage/state\", \"payload_not_available\": \"stopped\", \"topic\": \"wyze/garage/image\", \"icon\": \"mdi:cctv\", \"name\": \"Snapshot\", \"uniq_id\": \"WYZE2CAA8E2F8559SNAPSHOT\"}"
status_light:
type: switch
label: Status Light
config:
component: switch
nodeid: 2CAA8E2F8559
objectid:
- status_light
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/status_light\", \"command_topic\": \"wyze/garage/status_light/set\", \"payload_on\": 1, \"payload_off\": 2, \"icon\": \"mdi:led-on\", \"entity_category\": \"diagnostic\", \"availability_topic\": \"wyze/state\", \"name\": \"Status Light\", \"uniq_id\": \"WYZE2CAA8E2F8559STATUS_LIGHT\"}"
stream:
type: switch
label: Stream
config:
component: switch
nodeid: 2CAA8E2F8559
objectid:
- stream
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"state_topic\": \"wyze/garage/state\", \"command_topic\": \"wyze/garage/state/set\", \"payload_on\": \"start\", \"state_on\": \"online\", \"payload_off\": \"stop\", \"state_off\": \"stopped\", \"icon\": \"mdi:play-pause\", \"availability_topic\": \"wyze/state\", \"name\": \"Stream\", \"uniq_id\": \"WYZE2CAA8E2F8559STREAM\"}"
update_snapshot:
type: string
label: Update Snapshot
config:
component: button
nodeid: 2CAA8E2F8559
objectid:
- update_snapshot
config:
- "{\"device\": {\"name\": \"Wyze Cam Garage \", \"connections\": [[\"mac\", \"2CAA8E2F8559\"]], \"identifiers\": \"2CAA8E2F8559\", \"manufacturer\": \"Wyze\", \"model\": \"WYZEC1-JZ\", \"sw_version\": \"4.9.9.3006\", \"via_device\": \"docker-wyze-bridge v2.10.3\"}, \"retain\": false, \"command_topic\": \"wyze/garage/update_snapshot/get\", \"icon\": \"mdi:camera\", \"availability_topic\": \"wyze/state\", \"name\": \"Update Snapshot\", \"uniq_id\": \"WYZE2CAA8E2F8559UPDATE_SNAPSHOT\"}"
Notice how it’s not consistent. Sometimes the same device has multiple topics directly under sensor and others have one topic and puts all the separate “channels” under that.
Since you are manually creating the Thing, almost nothing gets done for you. You have to configure everything manually. So you’ll need to use MQTT Explorer to find all of the config topics related to the one device and add them as config topics to the Thing.
I think this might be sufficient. However, even this may not be enough and you’ll have to create the individual Channels manually on the code tab. It should be pretty apparent how to map the MQTT topics and messages to what needs to go into the config based on the examples above.
But again, if OH couldn’t discover these in the first place, manually configuring them is unlikely to work. And to do the manual config, you must configure everything manually. You can’t just point it at the root “homeassistant” topic and expect it to discover everything else on its own if it’s already failed to discover it.