Entity , components, device , integration

I have read and I am continuing to read the documentation on Home Assistant. I have also searched the forum; there are probably similar questions. I find the meaning of some terms such as entity, components, device, integration very similar.
I have tried to write here what I have understood, hoping to find confirmation from you

Entity: anything that can have a defined state, for example sensors, scripts, automations

Components : one or more entity

device : A device is a collection of components ??

Integration : it can be anything (entities, components, scripts, service) that is connected to the front-end of Home Assistant in such a way that the user can interact with this entity

An example of a custom script not integrated is when it is not located under the custom_components folder or when the setup() method is not present in the source code

What do you think, is everything I wrote wrong?

OK thank you I read
I have a question
<<Service : The software
function that interacts with targets to make something happen A service
carries out one specific task, for example: turning on the light in the
living room or sending a notification to a mobile phone.>>

I wrote an external script outside of Home Assistant that publishes a message to Mosquitto. The message is displayed on a card. It works. Can the script I wrote be considered a non-integrated service?
script is not under the custom_components folder and does not define any setup method as explained here: Creating your first integration | Home Assistant Developer Docs

If you haven’t yet got your head around the basic concepts, I think it’s a bit early to be creating integrations.

Learn how HA works as an ordinary user first. :grin:

The script is no part of components folder and there is no config file or yaml for it.
It pushes the data in Lan to broker ( local push ?) . Entity is configured to get new data or state from the broker

So, how would you refer to that script? As a service?

Sounds about right.

As far as I know the concept of “component” doesn’t exist in HA. Integrations used to be called components but at some time in the past they got re-titled as integrations. the “custom_component” folder is a left-over legacy thing since that was (and still is) where a user would put non-built-in integrations (ie components) in order to tell HA to offer them as integrations that the user can configure.


It’s a collection of related entities that make up a logical unit. It could be anything really - a physical sensor that has different functions or a software based thing that offers different functions or states (like weather, etc)

It’s not really connected to the front-end. It’s connected to the back-end and provides the protocols required to allow the HA backend to interact with the device/service/etc.

The front-end part is how you set up the dashboard (ie Lovelace) to show those entities of the devices so that you can interact directly with them.

The only real exceptions to that are the integration UI which allows you to interact with integrations to configure them, automations/scripts/scenes to be able to create them via the UI as well.

Also something to make sure that you are aware of (and something that you haven’t mentioned) is that an integration and an add-on are completely different things. They may sound very similar but really aren’t.

an add-on is some program or app that exists outside of the HA core backend environment (not to be confused with the HA Core installation method) that provides additional functionality that HA can utilize (almost always that I can think of) thru the use of an integration that will then setup the communication between HA core and the add-on.

Add-ons are specially created versions of regular Docker containers to allow them to be managed via the HA Supervisor. If you don’t use a Supervised version of HA (HA Core or HA Container) then you can still use the underlying Docker image the add-on is built from but you just have to maintain it yourself.

Not really.

the script you wrote utilizes the MQTT integration to communicate between your script and the HA backend. the MQTT integration provides a service that allows you to bring the data from your script into HA as an entity that can then be displayed on the frontend.

Neither as it relates directly to HA internally. Scripts and services have specific meanings inside of the HA ecosystem.

You can of course call it a script in the generic sense because that’s what it is in the external environment but to HA it’s not a script. It’s just an entity provided by the MQTT integration.