Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
Szakdolgozat
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Nádudvari Ákos
Szakdolgozat
Commits
d83f095c
Verified
Commit
d83f095c
authored
2 months ago
by
Nádudvari Ákos
Browse files
Options
Downloads
Patches
Plain Diff
feat(tervezés): home assistant ismertető init
parent
df4eb2be
Branches
Branches containing commit
No related tags found
No related merge requests found
Pipeline
#2710
passed
2 months ago
Stage: build
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/contents/6-tervezes.tex
+71
-0
71 additions, 0 deletions
src/contents/6-tervezes.tex
src/hivatkozasok.bib
+41
-0
41 additions, 0 deletions
src/hivatkozasok.bib
with
112 additions
and
0 deletions
src/contents/6-tervezes.tex
+
71
−
0
View file @
d83f095c
...
@@ -324,4 +324,75 @@ framework; előre tervezés szempontjából hasznos tudásnak tartom.
...
@@ -324,4 +324,75 @@ framework; előre tervezés szempontjából hasznos tudásnak tartom.
\subsection
{
Home Assistant okosotthon
}
\subsection
{
Home Assistant okosotthon
}
\paragraph
{}
A Home Assistant egy nyílt platform, otthon-automatizációs
célokra. Egy központi, egységes felületet ad a felhasználó számára, ahol
eléri az összes okos eszközét és azok funkcióit. A teljes szoftver moduláris,
bővíthető integrációk segítségével, Python nyelven. A nyílt forrású kód
és licensz jóvoltából számos gyártó által fejlesztett protokoll, eszköz és
architektúrával van integrálva, melyet a Home Assistant fejlesztői közössége
épít.
\cite
{
hass-github
}
A GitHub felmérése szerint 2024-ben a Home Assisstant
volt a legnépszerűbb projekt a platformon, csupán a hozzájárulók száma
alapján.
\cite
{
github-2024
}
A projekt támogatást élvez az Open Home Foundation
jóvoltából, kinek tevékenységét számos vállalat szponzorál -- köztük az
Espressif is.
\cite
{
openhome
}
Nem csupán a népszerűsége és nyíltsága miatt választottam ezt a megoldást, hanem
az egyedi architektúrai felépítése miatt is. A szoftver minden adatot entitások
formájában értelmez. Egy entitásnak van egy egyedi azonosítója, típusa (ún.
``domain''), neve, állapota, illetve egyéb attribútumai. Egy entitás domain-je
sokféle lehet, ezek közül megemlítendő: nyomógomb, kapcsoló (ki/be), bináris
szenzor (ki/be, igaz/hamis), szenzor (hőmérséklet, légnyomás, áramfogyasztás
stb.), lámpa, zár, kamera és természetesen riasztó vezérlőpanel, mozgásérzékelő.
\cite
{
hass-entities
}
Jól látható, hogy egyes entitások csupán információt
közölnek, mások pedig felhasználói interakciót engednek meg. Lehetőség van
adott entitásokat csoportosítani felhasználó által definiált területekre (area).
Ez például hasznos akkor, ha több lámpa van egy szobában és mindet egyszerre
szeretnénk irányítani. A szoftver definiálja az eszköz (device) fogalmát;
ami szintén egy entitások csoportosítása, de azt nem a felhasználó, hanem a
gyártó/megalkotó határozza meg -- például egy IP kamera, ahol van egy kamera
entitás, és egy nappali és éjszakai mód között váltó gomb. Vagy vegyünk egy okos
kapu vezérlőt, ahol két mód elérhető: a kapu két szárnyát egyszerre nyitó gomb,
csak az egyik szárnyat nyitó gomb, és akár egy állapot visszajelző szenzor.
Az entitásokat a felhasználó eléri a Home Assistant webes felületén (frontend),
amiben azokra automatizmusokat is lehet létrehozni. Egy automatizmus három
fázisból áll: indító események (trigger), feltételek (conditions), és
műveletek (actions). A felhasználó megadja, hogy milyen események -- entitás
állapotváltozások -- hatására induljon el a műveletek listája. A feltételek
megszabják, hogy a kiváltott esemény mellett definiált megkötések keretében
szabad-e futtatni a műveleteket.
\cite
{
hass-automations
}
A dokumentáció a
következő példa mondattal magyarázza a felépítést:
\textsl
{
``Amikor Paulus
hazaér és a nap már lement, akkor kapcsolódjanak be a lámpák a nappaliban.''
}
\cite
{
hass-automations
}
A riasztórendszer-kezelőpanel típusú entitások
élesítésére és hatástalanítására is van művelet. Ezzel a rendszerünk frontend
oldalról is teljeskörűleg integrálható lesz. Szabadságot tudunk adni a
végfelhasználónak, hogy a saját igényei szerint lehessen a rendszert működtetni
-- automatizált módon is. Ha a mozgásérzékelő típusú bináris érzékelőket a Home
Assistant számára elérhetőve tesszük, nem csak a biztonságtechnikai szerepet
tudná betölteni a rendszer, hanem az otthonautomatizáció szerepét is bővítené.
Például, a következő két automatizmust lehetne megvalósítani egy mozgásérzékelő
entitás jelenlétével: Amikor mozgás van a szobában és a rendszer hatástalanítva
van és a nap már lement, akkor kapcsolódjon fel a szobában lévő lámpa. Illetve
ha nincs mozgás legalább 10 percen át, akkor kapcsolódjon le a lámpa.
Az MQTT egy első osztályú integráció a Home Assistantban. Az MQTT minden QoS
szintjét támogatja, illetve a többi integrációhoz képest sokkal általánosabb
interfészt ad. Ez kimagaslóan jobb élményt ad a végfelhasználó és a fejlesztő
számára is. MQTT-n keresztül lehetőség van entitások és eszközök telepítésére
manuális konfiguráció vagy az úgynevezett ``MQTT-discovery'' segítségével.
Mindkét esetben az eszközöknek és entitásoknak van egy deklaratív leíró sémája,
ami tartalmaz meta-adatokat az azok működtetésére. Manuális konfiguráció esetén
ezt a Home Assistantban YAML formátumban kell megadni, autodiscovery során
pedig egy előre meghatározott topic-on kell küldeni JSON formátumban a rendszer
felé. Látható, hogy az utóbbi esetben az azt támogató eszköz végfelhasználói
onbarding élménye sokkal kényelmeseb. Például, az eszköz első indítása után
az autodiscovery üzenet küldésével a Home Assistant frontend felületén azonnal
látni fog a felhasználó egy jóváhagyandó üzenetet, hogy az készen áll a
használatra. Jóváhagyás után a meghirdetett entitások importálásra kerülnek a
Home Assistantba.
\cite
{
hass-mqtt
}
Célom úgy megvalósítani a saját rendszert,
hogy az alapból támogassa az autodiscovery-t. Így
\aref
{
kereskedelmi
}
.
fejezetben megismert DIY rendszereknél is potenciálisan jobb élményt tudna
nyújtani, hiszen a kommunikáció vezetékes médiumon történne. Ennek realitását
szintén a gyakorlatban fogjuk tudni megállapítani.
\clearpage
% Ez azért kell, hogy nehogy képek átcsússzanak a következő fejezethez
\clearpage
% Ez azért kell, hogy nehogy képek átcsússzanak a következő fejezethez
This diff is collapsed.
Click to expand it.
src/hivatkozasok.bib
+
41
−
0
View file @
d83f095c
...
@@ -615,3 +615,44 @@ urldate = {2025-04-22},
...
@@ -615,3 +615,44 @@ urldate = {2025-04-22},
url
=
{https://docs.esp-rs.org/esp-idf-svc/esp_idf_svc/index.html}
,
url
=
{https://docs.esp-rs.org/esp-idf-svc/esp_idf_svc/index.html}
,
urldate
=
{2025-04-25}
,
urldate
=
{2025-04-25}
,
}
}
@online
{
hass-github
,
title
=
{Home Assistant Core - GitHub}
,
url
=
{https://github.com/home-assistant/core}
,
urldate
=
{2025-04-26}
,
}
@online
{
github-2024
,
title
=
{Octoverse: AI leads Python to top language as the number of global
developers surges}
,
organization
=
{GitHub Octoverse 2024}
,
date
=
{2024-11-22}
,
url
=
{
https://github.blog/news-insights/octoverse/octoverse-2024/#the-state-of-open-source
}
,
urldate
=
{2025-04-26}
,
}
@online
{
openhome
,
title
=
{Who supports our work - Open Home Foundation}
,
url
=
{https://www.openhomefoundation.org/supporters/}
,
urldate
=
{2025-04-26}
,
}
@online
{
hass-entities
,
title
=
{Entities and domains - Home Assistant}
,
url
=
{https://www.home-assistant.io/docs/configuration/entities_domains/}
,
urldate
=
{2025-04-26}
,
}
@online
{
hass-automations
,
title
=
{Understanding automations - Home Assistant}
,
url
=
{https://www.home-assistant.io/docs/automation/basics/}
,
urldate
=
{2025-04-26}
,
}
@online
{
hass-mqtt
,
title
=
{MQTT - Home Assistant}
,
url
=
{https://www.home-assistant.io/integrations/mqtt/}
,
urldate
=
{2025-04-26}
,
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment