ThingsPanel DeviceConnector for Home Assistant. This is the new connector runtime implementation. The local directory keeps the historical homeassistant-service name, but the standalone repository should be thingspanel-device-connector-homeassistant.
connectorKey:homeassistant- Standalone repo:
github.com/thingspanel/thingspanel-device-connector-homeassistant - Suggested visibility: public
- Discover Home Assistant entities through the HA REST API
- Control standard switch/light style entities through the internal MQTT command bridge
- Publish state/telemetry back to ThingsPanel on Home Assistant
state_changedevents - Keep Home Assistant and Xiaomi connectors separated: HA manages entities inside Home Assistant, while
xiaomitalks to Xiaomi cloud/LAN directly
Required environment variables:
CONNECTOR_SERVICE_IDENTIFIER=homeassistantCONNECTOR_INSTANCE_ID=<connector-instance-id>THINGSPANEL_BACKEND_URL=http://127.0.0.1:4000HA_BASE_URL=http://127.0.0.1:8123HA_ACCESS_TOKEN=<home-assistant-long-lived-token>
MQTT bridge and telemetry:
TP_MQTT_BROKER=tcp://127.0.0.1:1883HA_TP_DEVICE_ID=<thingspanel-device-id>HA_MQTT_USERNAME=<thingspanel-device-number>HA_MQTT_PASSWORD=<optional>HA_ENTITY_ID=<entity-id-used-for-local-smoke-test>- Telemetry uses Home Assistant's authenticated
/api/websocketstate_changedsubscription for real-time events. - Home Assistant REST
/api/states/{entity_id}remains available for discovery and control queries, but is not used as a telemetry poller. ha_observed_atis copied from Home Assistant'slast_updated; ThingsPanel's MQTT ingestion timestamp anddevices/status/{device_id}online state are maintained separately.
cd examples/device-connectors/homeassistant-service
go run .
curl http://127.0.0.1:9001/health
curl "http://127.0.0.1:9001/api/v1/form/config?form_type=SVCR"Topic:
plugin/homeassistant/devices/command/<device_number>/<message_id>
Examples:
{"method":"switch","params":"on"}{"method":"switch","params":"off"}{"method":"brightness","params":35}{"method":"turn_on","params":{"effect":"Rainbow"}}{"method":"turn_on","params":{"rgb_color":[255,0,0],"brightness_pct":80}}{"method":"query","params":"state"}
Local helper:
go run ./cmd/publish-command -service homeassistant -method query -params '"state"'go test ./...Deploy helper in this monorepo:
cd encore-api
go run ./cmd/deploy-homeassistant-service