What is an Integration, Device, Entity, Component, Platform?

I’ve been using Hassio for a few weeks now and my little home aautomation/home securiy project is slowly making progress.

Yet I’m still confused by the terminology used here. I got the whole hass vs hassio vs hassbian vs hassos thing figured out (I think). But now Im confused about what devices, entities, platforms and integrations are.

For example my configuration.yaml looks like this;

# Controllers
zwave:
  usb_path: /dev/ttyUSB0
  device_config:
    cover.my_cover:
      invert_openclose_buttons: true
      
zha:
  usb_path: /dev/ttyUSB1
  database_path: /config/zigbee.db

# Flirc USB IRC  
keyboard_remote:
#- device_descriptor: '/dev/input/event3'
  device_name: 'flirc.tv flirc Keyboard'
  type: 'key_down'

# Harmony Hub Control  
remote:
- platform: harmony
  name: HUB@3911 Master Bedroom
  host: 192.168.0.182
  
# Text to speech
tts:
  - platform: google_translate

homeassistant:
  customize: !include customize.yaml
  
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml

When I go to integrations I see listed:

ZHA
Z-Wave
Chromecast
Sonos

but I dont see my:

Harmony Remote
Flirc Keyboard Remote

and the same for Devices. I see Z-Wave and Sonos devices, but no Remotes or Keyboard-Remotes.

So are my Flirc Keybord and Harmony Remote Platforms? If so, where do I see a list of platforms?

When I go to Integrations - Home Assistant, the page says its a list of integrations, not a list of components or devices.

Very Confused

NOTE: It turned out to be a kinda long thread, so I posted a summary of it here. Thanks for everyone’s great help and patience.

5 Likes

You aren’t the only one.

They renamed components to integrations a while back. Integrations in the GUI don’t normally show anything that you manually configured (because it isn’t available as an integration).

I don’t know if there is a difference in device vs entity…I’m just as confused with that one.

2 Likes

Hi again my friend.

Regarding your comment, I do see my Zigbee and Zwave sticks as integrations but only after manually adding them to the config file

Oh and remotes and remote-keyboards are listed as “other” integrations on the site.

Those options are available on the integrations page…

It’s the same thing as how there are ‘Lights’ and ‘Switches’… but outlets are considered ‘switches’ yet it’s far more common to use a switch with a light than it is to use a switch with an outlet.

The whole scene could use a hefty dose of logic. Definitions need to be written and everything needs to be compared against those definitions. Switches =/= Outlets =/= Lights =/= Covers.

Components… Integrations… things like the PlayStation4 shouldn’t be an integration… Components should be things… I try to think of it in the terms of a component stereo system. Each component has a task… controls centric to the receiver are on the receiver… controls centric to the CD player are on the CD player… play, pause, skip track, etc… while zones and presets are on the receiver… media players… kodi, ps4, etc- components… Integrations should only be things that are explicitly controlled… again… using the stereo analogy… the am/fm tuner is integrated into the receiver and is controlled through it as well. ZHA and OZW are integrations…

2 Likes

I’ll take a stab at it:

First, there is a Glossary available.

A device is (typically) a physical thing. It’s the real-world equipment you are attempting to control and automate.

A component is an idealized model of a device. They are the ‘virtual building-blocks’ you will use to create a virtual representation of all the devices in your home. For example:

  • Switch models a device that, minimally, can be turned on/off. This includes outlets, relays, light fixtures, etc.

  • Light models a device that, like a Switch, can be turned on/off and has other properties such as brightness and possibly color, transition, etc. This includes incandescent, (some) fluorescent, and LED lighting devices.

  • Cover models a device that can be opened/closed. This includes garage doors, awnings, shutters, blinds, etc.

  • Climate models a device that controls heating/cooling. Basically, we’re talking about a thermostat.

  • Sensor models a device that reports a value (numeric or text). This includes temperature sensors, humidity sensors, pressure sensors, weather monitors, etc.

  • Binary Sensor models a device that reports a binary state (on/off, open/closed, up/down, motion/no motion, etc). This includes a contact sensor for a door or window, a motion sensor, etc.

There are several others such as lock, fan, notification, etc. A complex device may require several components to model it completely. For example, an Ecobee thermostat is represented by a climate component (naturally) as well as sensor, binary_sensor, notification, and weather.

An integration provides the means of connecting to and controlling a device as well as modelling the device using one or more components. For example, the z-wave integration communicates with z-wave enabled devices and represents them using components such as light, fan, lock, climate, binary_sensor, etc.

An entity is an instance of a component. If you have ten physical lights (devices), where each one is modeled as a light component, then each instance is called an entity.

Finally there is platform which is a term associated with entities. If you have a light bulb that is controlled via the Zigbee integration, the entity you create to represent that light is said to use the Zigbee platform. Frankly, I feel this should probably use the word ‘integration’ but that’s the way it is.

16 Likes

Thanks @123, that was pretty good. It makes good sense, so maybe its the hassio ui causing me confusion.

For example I have zigbee and zwave listed as an integration in the ui. They both represent an environment consisting of a collection of devices that work and communicate with a standardized protocol. i.e. the zigbee protocol and zwave protocol.

I have Sonos listed as well. Which I guess makes sense too. Its a collection of audio equipment that uses the Sonos mesh network to communicate and share content with.

I also have Google Cast listed as an integration but have no idea what it is or why its there.

So now picking on zwave for a second. Right now Im in learning mode and only have a barebones zwave network. It consists of a huzb2 zwave/zigbee stick and a FortezZ dry contact switch to turn my fireplace on/off and a Somfy ZRTSi zwave to rts bridge to control my blinds. These are all physical devices that I can touch and hold.

Now when I go to the Devices panel on the UI, I would be expecting to see something like a list with the 1st column showing the integration and a 2nd column showing a device using that integration. i.e.:

Integration    Device
-------------- ----------
Zwave          Huzbz2 Usb Stick
Zwave          FortrezZ Dry Contact Relay
Zwave          Somfy ZRTSi rts Bridge

This shows the clear relationship between an integration and its collection of devices.

Instead of that there is an unordered list of entities all mixed together showing all my awnings and other stuff. So maybe the UI is missing a column or Panel like maybe one called Components which lists the ‘virtual devices’ available to manipulate i.e.:

Integration    Device                                      Component
-------------- ----------                                     -----------------------------
Zwave          Huzbz2 Usb Stick                     Network Controller/Hub
Zwave          FortrezZ Dry Contact Relay      On/Off Switch    
Zwave          Somfy ZRTSi rts Bridge            Cover Controller Channel 1
Zwave          Somfy ZRTSi rts Bridge            Cover Controller Channel 2
Zwave          Somfy ZRTSi rts Bridge            Cover Controller Channel 3

Then maybe add a 4th column that displays the Hassio ID/Usage (used in automation scripts) for the component i.e.:

Integration    Device                                      Component                                HASSio ID
-------------- ----------                                     -----------------------------                --------------------------
Zwave          Huzbz2 Usb Stick                     Network Controller/Hub             Zwave Hub
Zwave          FortrezZ Dry Contact Relay      On/Off Switch                            Bedroom Fireplace 
Zwave          Somfy ZRTSi rts Bridge            Cover Controller Channel 1       Bedroom Shade
Zwave          Somfy ZRTSi rts Bridge            Cover Controller Channel 2       Outdoor Awning
Zwave          Somfy ZRTSi rts Bridge            Cover Controller Channel 3       Living Room Blinds

Now back to my other problem. I have a working Flirc keyboard device yet I cant find it in either the integrations or devices ui panels. So would this be a bug or does it mean its not considered a device?

I would have expected to see something like:

Integration    Device                                      Component                                HASSio ID
-------------- ----------                                     -----------------------------                --------------------------
Zwave          Huzbz2 Usb Stick                     Network Controller/Hub             Zwave Hub
Zwave          FortrezZ Dry Contact Relay      On/Off Switch                            Bedroom Fireplace 
Zwave          Somfy ZRTSi rts Bridge            Cover Controller Channel 1       Bedroom Shade
Zwave          Somfy ZRTSi rts Bridge            Cover Controller Channel 2       Outdoor Awning
Zwave          Somfy ZRTSi rts Bridge            Cover Controller Channel 3       Living Room Blinds
IRD              Flirc USB Ird Bridge                   Keyboard                                   Logitec Elite Remote

I have the same problem with my working Harmony Hub device. Nothing is listed anywhere, but I was expecting to see something like:

Integration    Device                                      Component                                HASSio ID
-------------- ----------                                     -----------------------------                --------------------------
Zwave          Huzbz2 Usb Stick                     Network Controller/Hub             Zwave Hub
Zwave          FortrezZ Dry Contact Relay      On/Off Switch                            Bedroom Fireplace 
Zwave          Somfy ZRTSi rts Bridge            Cover Controller Channel 1       Bedroom Shade
Zwave          Somfy ZRTSi rts Bridge            Cover Controller Channel 2       Outdoor Awning
Zwave          Somfy ZRTSi rts Bridge            Cover Controller Channel 3       Living Room Blinds
IRD              Flirc USB Ird Bridge                   Keyboard                                   Logitec Elite Remote
Harmony      Harmony Hub                            Network Controller/Hub              Harmony Hub
Harmony      Harmony Hub                            TV Device                                   Vizio TV
Harmony      Harmony Hub                            Sound Device                             Sonos 5.1 Soundbar
Harmony      Harmony Hub                            Satellite Device                           DirectTV Genie
Harmony      Harmony Hub                            Satellite Device                           DirectTV mini-Genie
Harmony      Harmony Hub                            Activity                                        Watch TV 

Sorry about the bad formatting. Cant figure how to switch to a fixed font here.

Where is the logic in this?

Capture016

Bed Light is a basic LED lamp plugged in to a zwave outlet.
Guitfiddles is a RGBW zigbee LED tape
Overhead is a zwave bulb in a standard light socket kept always-on by a physical switch blocker.

Bed Light gets included in the Light category via a config entry override. Revisit the first question posed in this post.

(This isn’t just about switches and outlets and lights… just a basic example of what I could rephrase with forum structure in the face of so many parallel platforms (referring to hassos, hassio, hassbian, plain-hass.)

1 Like

I guess I would be slightly happier if my Flirc and Harmony Hub were at least listed somewhere as something

1 Like

@MithrasPan,

I’m now thinking that part of the problem is that the meaning of “device” is not well defined.

I’m seeing lots of zwave products with built-in mutli purposes.

For example my Husb2 usb stick is not a zwave stick, its a zwave/zigbee controller.

So maybe another term is needed, like maybe “physical device” and “virtual device” where a “physical device” always contains on one or more “virtual devices”.

And if you could say hassio only uses “virtual devices” then each “virtual device” could be assigned a unique “hass entity id (or maybe virtual device id)” which would be similar to a mac address or a celluar imei number.

Then you could describe physical things with better clarity. i.e. my husb2 stick would look something like:

Physical Device      Virtual Device                   HASS ID          Integration/Platform?    
----------------------     -----------------------------      ----------------      ------------------------ 
Huzbz2 Usb Stick   Z-Wave Controller            Entity #235       Zwave
Huzbz2 Usb Stick   Zigbee Controller              Entity #122      Zwave 

Then something like this for a zwave light:

Physical Device      Virtual Device                   HASS ID          Integration/Platform?    
----------------------     -----------------------------      ----------------      ------------------------ 
Hue Z-Wave Light   Switch                              Entity #324       Zwave
Hue Z-Wave Light   Light Bulb                         Entity #866       Zwave 

Then hassio would have to access Entity #324 to switch the light on/off and Entity #866 to adjust the light bulbs brightness and color.

p.s. I’m retired now but one of my hats way back when was Data Administrator for C&H Sugar. So I get my rocks off talking about this stuff.

An even better name…
Use “Product” instead of “Physical Device”
Use “Device” instead of “Virtual Device”

Product                   Device              HASS ID           Integration Platform?    
----------------------     ----------------      ----------------      ------------------------ 
Hue Z-Wave Light   Switch              Entity #324       Zwave
Hue Z-Wave Light   Light Bulb         Entity #866       Zwave

p.s anyway to change font here?

How/where are you doing that?

1 Like

via an entry in configuration.yaml

light:
  - platform: switch
    name: Bed Light
    entity_id: switch.zooz_zen06_switch_2
1 Like

Then that doesn’t seem to be a HA issue.

You actually created the light. HA automatically created the switch from your device as it’s supposed to do.

At this point you have the choice of which entity you display on the frontend.

I agree, but think this is where having solid scope and definition are key. When it comes to things like zigbee and zwave interfaces… I lean towards ‘controller’ or maybe ‘bridge’ if the category was being built to include… is a broadlink RMmini3 a controller? …is it an interface? …or is it simply a device?

Have you been keeping up with the thread or did you just decide to jump in with an out of context opinion?

That is a legitimate question.

Yes, I’ve been following but the screenshot you provided stated that it made no logical sense that the two entities you showed were the same device.

in that context what you were saying that made no logical sense was a self-inflicted injury. You created the light from an existing switch. HA has no way of knowing what you have plugged in to the zwave outlet (it could be a light, a heater, an AC unit, or any number of different types of loads) and the default platform for a zwave outlet is a “switch”. And besides that, you are the one who has control over the naming of your entities. You could have easily named the “switch.zooz_zen06_switch_2” something more logical like “Bed Light Outlet”

I will grant that there is enough confusion over the thread topic but in the context of the post you made that isn’t a part of that confusion. If you create multiple entities in different platforms based on the same device then that’s on you.

I’m willing to listen and try to understand what you are saying and why it might be related but there’s no need to get all snarky about my reply.

And that’s a legitimate answer. :wink:

As far as the real topic of the thread I’ve been trying to figure out where the “device panel” is located that the OP was referring to. I don’t use Hassio so I thought maybe it was a hassio thing. So I’ve been in the process of setting up a test hassio container (and failing so far). I didn’t want to comment on that until I figured out (or not) what the OP was talking about.

Go to the Configuration Panel where there is a sub panel with “Integrations”, “Devices” and “Users”. Im not positive but dont think its a hassio thing. I can provide screen shots if needed.