Skip to content

Home Assistant

Home Assistant is an open source home automation platform. Protocol Launcher allows you to generate official Home Assistant companion app URL handler links and tag universal links.

Usage

There are two ways to use this library:

  • On-Demand import from subpaths enables tree-shaking and keeps bundles small.
  • Full Import from the root package is convenient but includes all app modules.

Pick On-Demand for production builds; Full Import is fine for quick scripts or demos.

Select Installation Method

On-Demand
Recommended. Optimized for production.
Full Import
Convenient. Good for quick scripts.
On-Demand
ts
import { navigate } from 'protocol-launcher/home-assistant'

const url = navigate({
  path: '/dashboard-mobile/my-subview',
})

Use the documented server query parameter to select a configured server:

On-Demand
ts
import { navigate } from 'protocol-launcher/home-assistant'

const url = navigate({
  path: '/webcams',
  server: 'My home',
})

Call Service

On-Demand
ts
import { callService } from 'protocol-launcher/home-assistant'

const url = callService({
  service: 'device_tracker.see',
  params: {
    entity_id: 'device_tracker.entity',
  },
})

Fire Event

On-Demand
ts
import { fireEvent } from 'protocol-launcher/home-assistant'

const url = fireEvent({
  eventType: 'custom_event',
  params: {
    entity_id: 'MY_CUSTOM_EVENT',
  },
})

Send Location

On-Demand
ts
import { sendLocation } from 'protocol-launcher/home-assistant'

const url = sendLocation()

Open Tag

On-Demand
ts
import { openTag } from 'protocol-launcher/home-assistant'

const url = openTag({
  tagId: '50A3C7C8-1FE7-4BE8-8DC9-06E07D41B63D',
})

Home Assistant documents tags as universal links with the https://www.home-assistant.io/tag/<tag id> format.

On-Demand
ts
import { nfcUniversalLink } from 'protocol-launcher/home-assistant'

const url = nfcUniversalLink({
  url: 'homeassistant://navigate/dashboard-mobile/my-subview',
})

Home Assistant documents the old-style universal link format as https://www.home-assistant.io/ios/nfc/?url=<a URL you could use with the existing URL handler>.

Generated URLs

ts
navigate(navigateParams)
// => 'homeassistant://navigate/dashboard-mobile/my-subview?server=My%20home'

callService({
  service: 'device_tracker.see',
  params: { entity_id: 'device_tracker.entity' },
})
// => 'homeassistant://call_service/device_tracker.see?entity_id=device_tracker.entity'

fireEvent({
  eventType: 'custom_event',
  params: { entity_id: 'MY_CUSTOM_EVENT' },
})
// => 'homeassistant://fire_event/custom_event?entity_id=MY_CUSTOM_EVENT'

sendLocation()
// => 'homeassistant://send_location/'

openTag({ tagId: '50A3C7C8-1FE7-4BE8-8DC9-06E07D41B63D' })
// => 'https://www.home-assistant.io/tag/50A3C7C8-1FE7-4BE8-8DC9-06E07D41B63D'

nfcUniversalLink({ url: 'homeassistant://navigate/dashboard-mobile/my-subview' })
// => 'https://www.home-assistant.io/ios/nfc/?url=homeassistant%3A%2F%2Fnavigate%2Fdashboard-mobile%2Fmy-subview'

References