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

you mean me?

I’ve only created maybe 2 or 3 topics and dont remember arguing with anyone. Just having a friendly discussion to learn and understand. And I’ve only talked with about 3 or 4 people who were kind enough to waste their time with me. Maybe my humor rubs you the wrong way?

Nope, other guy. Sorry if you felt that was directed at you. It’s most definitely not.

1 Like

Why are you annoyed?

From my point of view I see a lot of passionate users of HA. Some of them believe that because they can write some config files and make a few devices, they flashed someone else’s software onto, work together that they are suddenly experts in software design.

Some of them think that because they use tool X or Y for all their stuff that that is not only the way it should be done but the only way it should be done. They then claim that other tools are rubbish and when an actual expert tries to explain to them this is not the case and present the merits of different approaches or tools, they get all defensive and start throwing miss-understood non-sense they clearly don’t know what they are talking about around.

This is fan boyish with a heavy dose of the Danny Krugar effect. It’s not uncommon though. Seen it repeatedly. Be it language fan boys saying everything should be done in Python or C or Java and refusing to accept any information that might just be to the contrary. Vim and Emacs. HA and OH. etc. etc. etc.

My weakness is that I can’t just let it lie, especially when they retort that I am full of crap. Maybe when you have enough experience, education and knowledge to understand what you think you are talking about, your eyes will be opened and we can have a civilised discussion.

Maybe, in light of the present discussion a little verse from your own bible might help you.

So at what point was I flat out wrong to describe HA as being Event based? At which point was I wrong to point out there are other ways? Which bit of that is “crap”?

“Oh but it has some polling, so you are wrong.”, really? Rain has particulates, pollen, and dissolved salts in it, so it can’t be called water then can it? That’s how that argument sounds.

HA is a tool. That’s all. There are many tools. The wise will learn to use them all for their worth. The skilled will make their own or modify existing ones to suit their (or others) needs. New tools are born, old ones adapt and change or perish. If this never happened before we wouldn’t have Home Assistant. If people didn’t think of different or new ways to do things in Home Assistant (or other tools) it would become stagnant and die.

I intend to use it as it is intended, as a tool to integrate home automation systems in a handy framework, especially if some of those systems are my own.

I bet if a HoneyWell engineer was in here explaining how they use machine learning to adapt heating pre-ramp and open window mechanics you would start arguing with them about how they are full of crap too and they would be better doing it all in HA.

So just calm down and go back to your configuration and let people discuss things as they want to. If it upsets you, go read other threads.

I’m annoyed because you just argue argue argue. Your very first post you asked some blanket question and you got responses. From that point forward, all you did was argue. Why? because your software does x. Your software does y. Your software does z. You ask about protocals, so people suggested a few. Then you picked apart every one and argued with everyone over every one, saying they aren’t good enough.

You sum this up pretty well yourself:

You just didn’t realize who you were talking about.

3 Likes

I thought I would take a stab at answering my own question, based on my accumulated understanding by google university, feedback from my new forum friends, and some WAG (wild ass guessing):

The Anatomy of using a Smart Device with Home-Assistant

To use your Device with Home-Assistant(referred to here as HA) you must configure and load a HA system interface module called an Integration Object(syn: interface, bridge, gateway).

(Note: Beware that an Integration Object was previously called a Component Object. They are both the same thing, just a new name)

An Integration Object is a Python package which consists of executable Python script files and supporting resource files. There are many Integration Objects already written and available for you to use that support many if not all of the Devices you own and use. Each Integration Object has an unique ID called the PlatformID. The PlatformID is used by the HA system configuration files to identify which Integration Object you desire to use. In case there are no Integration Objects that support your Device, HA supports an API that you can use to roll your own custom Integration Object.

An Integration Object when loaded and executed by the HA system, properly knows how to interface your Device to the HA system. The Integration Object’s job is to know how to communicate with your Device and act as it’s broker(syn: proxy) by loading and using one or more State Objects(syn: virtual device, emulated device, proxy device) as needed to expose the features of your Device properly to the HA system’s State Engine.

A State Object contains a property called the Domain Name which is a constant that indicates the general device category or context that the State Object is being used for and which State Attributes it supports. Popular values commonly used for the Domain Name are the constants “ switch ”, “ light ”, and “ fan ”.

For each State Object that is loaded(syn: instantiated) by the Integration Object, an unique ID called the EntityID is assigned to the State Object. The EntityID is how the HA system recognizes your State Objects from all the other ones loaded by other Integration Objects.The Domain Name is used as the prefix and the Integration ObjectID is used as the suffix to derive the EntityID for the State Object.

With a properly working Integration Object loaded and running for your Device, it allows the HA system State Engine to handle trigger, condition, and action logic for your Device in an orchestrated series of automated scripts that can monitor and control all your Smart Devices together!! You’re in total control of the State Engine by using the HA system’s GUI to create and use one or more Automation Scripts.

The HA system may automatically discover your Device and load the proper Integration Object for you. If it doesn’t discover your device you can manually instruct the HA system to use a compatible Integration Object (by using the Integration Object’s PlatformID) via editing the HA configuration file or online thru the HA web server.

Understanding how your Device works with Home-Assistant will tremendously help you to select devices and use them properly to create effective powerful automations for your Smart Home.

3 Likes

An add-on has nothing to do with integrations or “components”. It is supplementary software that runs alongside hassio.

No. An integration is a way to connect to other environments or components. It’s not just a single file.

Or via the integrations page in your home assistant instance.

I know, I was referring to addon as a synonym not the add-on youre referring to.

I was implying it was one zipped file packaged to contain many files. One of my WAGS :slight_smile: I think that what a gzip.tar file is in linux lingo

But it isn’t.

my record is only so-so with my wild ass guesses. if youre willing to properly describe it im happy to replace mine with yours

A component is actually an integration. A way to interact with your physical or virtual devices, whether it’s cloud based, local only, or a hybrid of the 2.

All components/integrations listed on the website are already included in home assistant. You can add “custom components”, but I’m sure those will be renamed to custom integrations one day. Integrations are part of the core of home assistant…it’s HOW you talk to your “entities” that more often than not exist OUTSIDE of home assistant.

Well thats sorta the way I thought. But I got really confused by the doc @123 was having me read, which seems to me to imply that a component is only a part of an integration.

For each integration that you want to use in Home Assistant, you add code in your  `configuration.yaml`  file to specify its settings. The following example entry specifies that you want to use the [notify component]

* A  **component**  provides the core logic for some functionality (like  `notify`  provides sending notifications).

If I get rid of the word Integration and replaced the word Component with Integration, does it read ok?

No protocol is good enough for everything. That is why there are more than one.

Picking apart things and scrutinising them to find their worth for a particular application is part of engineering.

If someone suggests something to me, I will consider it. If I voice that process and how I evaluate it, what I see as pros and cons of it, I don’t see that as arguing. The arguing comes when people then say I am wrong and I don’t know what I’m talking about.

Sure I’ve mentioned my own software a few times and apparently that upsets people.

The fact that my posts are hidden when they do not contain anything mentioned in the community guidelines, but responses to those posts and the argumentative comments, including inflammatory comments and personal attacks that warranted the response are left in place speaks volumes.

Obviously my input is not welcome. But I’m sure this post will be hidden too.

It’s because someone reported your comment. Then the comment was evaluated for personal attacks and then banned. You implying that poeple have ‘dunning–kruger’ (not danny :rofl:) is probably what got that removed. And just so you know, it wasn’t me that reported the comment. So it appears that you have a bad reputation already. And yet you continue to point fingers. Again…

So I think you need to get a bit of a history lesson.

In the beginning, there was only components. These components were only added through yaml inside configuration.yaml.

Sometime in the middle of this year, integrations started popping up. They only appeared in the UI. At that point we had components and integrations. Ultimately, they were the same, they just had 2 ways to configure. Through the UI and through yaml. At some point recently a decision was made to rename all components to integrations. Now what you see in that sentence is referring to a python component, not the old school integration. People on the forums are going to use component/integration without batting an eye because that’s the way it used to be. I believe from here on out we will be using integration. Also, the docs may still be out of date in areas as this whole change is rather recent.

4 Likes

Excellent to the point answer.

1 Like

Now that makes total reasonable sense to me. Thanks!!

(maybe i’ll call them Intonents or Comgrations :))

jumbles my brain trying to say that out loud

revised post from member feedback: What is an Integration, Device, Entity, Component, Platform?

I think Ive got my head wrapped around all the items listed in the topic’s title now except for Platform. Still not clear what that is.

If you are referring to how a device relates to a “platform” I think that the easiest way to interpret “platform” is to make it basically equivalent to “domain”.

Off the top of my head I can’t think of a “platform” that doesn’t end up in a “domain”. I’m sure someone will correct me if I’m wrong.

OTOH, when writing automations you define triggers by calling a “platform”. In that respect there is a specified list of trigger platforms in the automation docs: https://www.home-assistant.io/docs/automation/trigger/

Also, what a lively discussion you seem to have started here. I’m impressed! :laughing:

1 Like