I admit I’ve been challenged by some of Home Assistant’s terminology, especially by “integration, component, and platform”. In most other home automation software I’ve used, one or two terms describe the connection between the device and the software. Home Assistant has three and one of them can have two meanings.
I can’t claim I understand the terminology perfectly. After revising my interpretation of their definitions several times, the following is just my latest version. I invite the community to provide corrections.
Integration
This term is used when discussing the overall integration of a device (or service) into the Home Assistant ecosystem. Go to Configuration > Integrations
and you see Hue, Sonos, Google Cast, MQTT, Z-Wave, etc. It’s easy enough to understand that if you have a device from Acme and there’s no existing integration for Acme then you can’t currently use Acme devices with Home Assistant.
Component
Home Assistant has many idealized versions of common devices (and services) like switch
, light
, notify
, cover
, lock
, media-player
, device_tracker
, etc. These are the building blocks of your home automation system and are aptly called components (as in the components of your home automation system).
It seems one can also use the word ‘component’ to refer to an integration. For example, there’s a KNX integration but the piece that helps to bind the KNX system to Home Assistant is called the KNX component. Look at the documentation page for KNX. It states:
The KNX integration for Home Assistant allows you to connect to a KNX/IP devices.
The component requires a local KNX/IP interface like …
The KNX documentation page is one of the few that even uses the word integration (Z-Wave is another). Many simply use component: Nest, Insteon, Lutron, Xiaomi
The usage of ‘component’ is also found in Home Assistant’s directory structure (components, not integrations):
homeassistant/components/hue
homeassistant/components/sonos
homeassistant/components/mqtt
So it seems the word component can be used to refer to hue
, sonos
, mqtt
, etc and light
, switch
, lock
, cover
, etc.
Unless I’m mistaken, this use of the word component is actually a contraction of ‘Entity Component’ (see Entity Architecture).
Platform
It’s my understanding that a platform is how an integration implements a component. For example, the KNX integration has a KNX component with platforms for binary_sensor
, climate
, light
, switch
, etc. Here’s where I often find myself mixing up the terms and saying “KNX light component” when I ought to be saying “KNX light platform”.
Sources of confusion:
If KNX has platforms for binary_sensor
, climate
, cover
, etc then why doesn’t the right-hand side of its documentation page indicate ‘Related Platforms’ instead of ‘Related Components’ (other integrations do this as well). Why the reversion from platform to component? For that matter, why do many integrations describe the right-hand list as “Categories”? IKEA Tradfri, Ecobee
I’ve seen documentation refer to light
, switch
, cover
, etc as ‘device types’: Insteon, Wink, Zigbee. Tuya uses all three: device type, platform, and category.