Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add "core concepts" getting started page #14534

Closed
wants to merge 21 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions source/_includes/asides/getting_started_navigation.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@
<h1 class="title delta">Getting Started</h1>
<ul class='divided sidebar-menu'>
<li>{% active_link /getting-started/ Installation %}
<li>{% active_link /getting-started/onboarding/ Onboarding %}</li>
<li>{% active_link /getting-started/automation/ Automation %}</li>
<li>{% active_link /getting-started/presence-detection/ Presence detection %}</li>
<li>{% active_link /getting-started/join-the-community/ Join the community %}</li>
<li>{% active_link /getting-started/configuration/ Advanced Configuration %}</li>
<li>{% active_link /getting-started/onboarding/ Onboarding %}</li>
<li>{% active_link /getting-started/core-concepts/ Core concepts %}</li>
<li>{% active_link /getting-started/automation/ Automation %}</li>
<li>{% active_link /getting-started/presence-detection/ Presence detection %}</li>
<li>{% active_link /getting-started/join-the-community/ Join the community %}</li>
<li>{% active_link /getting-started/configuration/ Advanced Configuration %}</li>
</ul>
</div>
</section>
90 changes: 90 additions & 0 deletions source/getting-started/core-concepts.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
title: "Core Concepts"
description: "How Home Assistant works."
---

Home Assistant, like all home automation software, allows you to control smart devices in your home. This page will explain the parts of Home Assistant and how they relate.

## Devices

In Home Assistant, a **device** is a physical object in your connected home. This would be something like a smart lightbulb or a Chromecast.

Home Assistant has a **discovery** feature, which scans for new devices constantly and adds them to your Home Assistant automatically.

**Device trackers** are devices that track the position of something or someone, like a person or a cellphone.

## Entities

Because many devices do more than one thing, things in Home Assistant are controlled using **entities**. An entity is a single function or property of a device, like a single sensor, light, or switch.

A device can provide multiple entities. For example, a device called “Sam’s Phone” might have entities like location, battery level, and step count. Some devices like lightbulbs only have a single entity, and devices like hubs may have no entities at all.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it is more clear to somewhere put up that devices can provide other devices or entities.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I added "A device can also provide other devices", would that be true and fixing the issue?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah or:

A device can provide, one or more, entities or other devices it is connected to.


To get entities to appear in Home Assistant, you must define them in your [`configuration.yaml` file](/docs/configuration) in this format: `entity_id: domain.object_id`. The **domain** is a built-in category of entities that you manage in a similar way. You can get the object ID by ________?
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could I have some help with this sentence?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

line 20 is great. Line 22 seems like it's out of place. That format will only be used in specific spots in configuration.yaml.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Petro31 , definitely struggling with line 22. How's something like this?

To get entities to appear in Home Assistant, you must define them in your [`configuration.yaml` file].

The **domain** is a built-in category of entities that you manage in a similar way. For example, all lights are part of the "light" domain.


Some entities are useful for controlling things in your home:

- **[Switches](/integrations/switch)** let you check if something is switched on or off
- **[Sensors](/integrations/sensor)** can be a wide range of things that watch for changes in the environment, like motion sensors and temperature sensors
- **[Binary sensors](/integrations/device_tracker)** detect something that is either on or off

Other entities are there to respond to Home Assistant:

- **[Lights](/integrations/light)** can turn on and off, and sometimes dim and change color
- **[Covers](/integrations/cover)** are things that can move up and down, like garage doors and smart blinds

Entities can be grouped into **areas**, which roughly represent a room in your house. Common areas are “kitchen”, “office”, “basement” and “yard”.

You can reference multiple entities at one time by putting them into a **[group](/integrations/group)**

_Advanced users can write [scripts](/docs/scripts), special entities that run custom code when they’re triggered_

## Automation

**[Automations](/docs/automation)** let you go further by telling Home Assistant to automatically do things without you having to hit a button yourself. For example, you could write an automation that says “turn on the lights when it gets dark if I’m home”.

An automation has three main parts:

- **[Triggers](/docs/automation/trigger)** - something that starts the automation, like the sun going down or a motion sensor noticing movement
- **[Conditions](/docs/automation/condition)** - let you decide whether to complete the automation. For example: "only if someone is home".
- **[Action](/docs/automation/action)** - what the automation does, like "turn on lights"

**[Templates](/docs/automation/templating)** let advanced users use variables and logic in their automations

## State

Home Assistant remembers the **[state](/docs/configuration/state_object)** of each entity. Think of state as in "what state is this in?" For example, a light could have two states: ‘on’ and ‘off’, and a garage door could be in one of two states: ‘open’ or ‘closed’.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This leads me to believe that mutliple states are stored at one time. Possibly change

For example, a light could have two states: ‘on’ and ‘off’

to:

For example, a light could have one of two states: ‘on’ and ‘off’

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

love it, will fix 👍


A **[scene](/docs/scene)** is a list of entities along with the state you want them each to be in. When you trigger that scene, Home Assistant will figure out the right events to get each of those entities into that state.

For example, let’s imagine you have a “welcome home” scene that says “lights on, door unlocked”. If you turn on that scene, Home Assistant will check if your lights are on and turn them on if they’re off. Then it will check if your door is unlocked, and unlock it if it’s locked.

## More concepts

- **[Zones](/integrations/zone)** are geographical areas on earth. You can check if a device tracker is inside a zone as a trigger or condition in an automation. For example, “turn on the lights when Sam’s Phone comes into the ‘home’ zone”.

## Integrations
sampl marked this conversation as resolved.
Show resolved Hide resolved

Home Assistant is set up to work with devices and services from lots of different companies, including voice assistants, smart devices, cameras, and other home automation software. You can make Home Assistant work with these services by installing **[integrations](/integrations)**.

Once installed, integrations can make new entities available, add panels to Lovelace, and more.

_Formerly known as components; not to be confused with add-ons._
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If someone is new here, please don't mention components. It isn't used anymore, it isn't listed in the docs anymore.

Furthermore, calling out add-ons out of the blue without further text, reference or explanation is confusion. As it instantly pops the question in the reader's head: "So what is an add-on?" (which also is distracting).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If someone is new here, please don't mention components. It isn't used anymore, it isn't listed in the docs anymore.

In my experience as a newbie googling and such, the word has definitely come up. It might be clearer to explicitly state why so nobody things "this documentation is incomplete, what's a component...". I can remove if you feel very strongly though.

Furthermore, calling out add-ons out of the blue without further text, reference or explanation is confusion. As it instantly pops the question in the reader's head: "So what is an add-on?" (which also is distracting).

Should I say more about add-ons, or remove it? I'm confused, add ons have come up in multiple tutorials and they're right there in the HA lovelace UI... are they "under the hood" or not?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right now, it is listed as a loose term, so:

I'm confused, add ons have come up in multiple tutorials and they're right there in the HA lovelace UI... are they "under the hood" or not?

☝️ Your own statement right there in the response shows the confusion. You highlight the possible confusion in the text, but you are not solving / removing the confusion.

I think we should either clarify what they are and fix the possible confusion, or not mention it at all.


## The Home Assistant software

So now you know what Home Assistant is. But how do you start using it?

You probably want to [install Home Assistant](/getting-started/) using a disk image, which contains everything you need to run Home Assistant and keep it updated.

Most people control Home Assistant with its built-in frontend, **Lovelace**. Lovelace is the user interface in your browser and the mobile apps.

Lovelace is organized like this:

- **Panels** are top-level pages in Lovelace. Examples are your Dashboard, the Map, the History panel and the Configuration page.
- **[Dashboard](/lovelace/dashboards-and-views)** panels are the main way to see and control your home. You can add multiple custom dashboards in addition to the one that comes by default.
- **[Views](/lovelace/dashboards-and-views)** are just tabs inside of dashboards. You can easily toggle between views on the same dashboard. You can customize the name and an icon for each view.
- **Cards** are smaller pieces of UI inside a view. You can generally see multiple cards at once. Home Assistant comes with built in cards, but you can also write your own.

_You may hear about Home Assistant "Core" and "Supervisor". These refer to parts of Home Assistant that advanced users can install separately._

### [Next step: Automate Home Assistant &raquo;](/getting-started/automation/)
2 changes: 1 addition & 1 deletion source/getting-started/onboarding.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,4 @@ When each integration is done setting up, it will ask you to put the new devices

When you're done, navigate back to the web interface and voila, your devices are ready for you to control.

### [Next step: Automate Home Assistant &raquo;](/getting-started/automation/)
### [Next step: Core Concepts &raquo;](/getting-started/core-concepts/)