LG_THINQ_INTEGRATION - zero1ne-26/doc GitHub Wiki
LG ThinQ ๊ฐ์ (๊ณต๊ธฐ์ฒญ์ ๊ธฐ ๋ฑ)์ Home Assistant(HA)์ ์ฐ๊ฒฐํ๊ณ , ์ธ๋ถ ํด๋ผ์ด์ธํธ๊ฐ HA REST API๋ก ์ํ๋ฅผ ์ฝ๊ณ ์ ์ดํ๋ ์ ์ฐจ๋ฅผ ์ ๋ฆฌํ ์ค๋ฌด ๊ฐ์ด๋๋ค. ์ค์ธก ์์๋
appStore/tablet-fe/ha-api.http(VS Code REST Client ํ์ผ) ๊ธฐ์ค์ด๋ฉฐ, ๋ณธ๋ฌธ ์์ฒญ ๋ฒํธ(#0~#8)๋ ๊ทธ ํ์ผ์ ์์ฒญ ๋ฒํธ์ ์ผ์นํ๋ค. ๋ณธ ๋ฌธ์๋ ๋ ผ์/์จ๋ณด๋ฉ์ฉ ์๋ฃ๋ค. HA๊ฐ ์์คํ ์์ ๊ฐ๋ ์ญํ (์ํ ์ ์ฅ์)์ OSS_INTEGRATION.md, HAยทMQTT ๊ธฐ์ด๋ ROBOT_ADAPTER_ONBOARDING.md๋ฅผ ์ฐธ๊ณ ํ๋ค.
LG ThinQ ๊ฐ์ โโ(Wi-Fi)โโโถ LG ThinQ Cloud
โฒ
โ ThinQ Connect API (LG PAT ํ ํฐ)
โผ
Home Assistant โ LG ThinQ integration ์ด ๊ธฐ๊ธฐ๋ฅผ ์ํฐํฐ๋ก ํก์
โฒ
โ REST API /api/* (Bearer HA_TOKEN)
โผ
ํด๋ผ์ด์ธํธ (ha-api.http ยท BFF ยท ์คํฌ๋ฆฝํธ ๋ฑ)
- ํ ํฐ์ด ๋ ์ข ๋ฅ๋ค. โ LG PAT(Personal Access Token): HA โ ThinQ Cloud ์ฐ๊ฒฐ์ฉ, LG ๊ณ์ ์์ ๋ฐ๊ธ. โก HA Long-Lived Access Token: ํด๋ผ์ด์ธํธ โ HA REST API ์ธ์ฆ์ฉ, HA ์ฌ์ฉ์ ํ๋กํ์์ ๋ฐ๊ธ. ์๋ก ๋ค๋ฅธ ํ ํฐ์ด๋ฉฐ ์ฉ๋๋ฅผ ํผ๋ํ์ง ์๋๋ค.
- ์ ์ด๋ ํด๋ผ์ฐ๋๋ฅผ ๊ฒฝ์ ํ๋ค. ํด๋ผ์ด์ธํธ โ HA(service ํธ์ถ) โ ThinQ Cloud โ ๊ธฐ๊ธฐ ์์๋ก ์ ๋ฌ๋๋ฏ๋ก, ๋ก์ปฌ ๊ธฐ๊ธฐ ์ ์ด ๋๋น ์ง์ฐ์ด ์๊ณ ์ธํฐ๋ท์ด ๋๊ธฐ๋ฉด ์ ์ด๋ ๋๊ธด๋ค.
- ๊ธฐ๊ธฐ๋ HA ์์์ ์ํฐํฐ(entity)๋ก ๋ํ๋๋ค. ์: ๊ณต๊ธฐ์ฒญ์ ๊ธฐ ์ด์ ๋ชจ๋ โ
select.gonggiceongjeonggi_operating_mode(๊ธฐ๊ธฐ ์ด๋ฆ์ ๋ก๋ง์ ํ๊ธฐ + ๊ธฐ๋ฅ๋ช ์ผ๋ก ์๋ ์์ฑ).
| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| ThinQ ์ฑ ๊ธฐ๊ธฐ ๋ฑ๋ก | ์ ์ดํ ๊ฐ์ ์ด LG ThinQ ๋ชจ๋ฐ์ผ ์ฑ์ ๋ฑ๋กยท์จ๋ผ์ธ ์ํ์ฌ์ผ ํ๋ค (HA๊ฐ ๊ธฐ๊ธฐ๋ฅผ ์ง์ ์ฐพ๋ ๊ฒ ์๋๋ผ ThinQ ๊ณ์ ์ ๋ฑ๋ก๋ ๊ธฐ๊ธฐ๋ฅผ ๊ฐ์ ธ์จ๋ค) |
| HA ๋ฒ์ |
2024.11 ์ด์ โ ๊ณต์ LG ThinQ ํตํฉ(ThinQ Connect API ๊ธฐ๋ฐ)์ด ์ด ๋ฒ์ ๋ถํฐ ๋ด์ฅ |
| LG ๊ณ์ | ThinQ ์ฑ์ ๋ก๊ทธ์ธํ ๊ฒ๊ณผ ๊ฐ์ LG ๊ณ์ ์ผ๋ก PAT๋ฅผ ๋ฐ๊ธํด์ผ ํ๋ค |
- ๋ธ๋ผ์ฐ์ ์์ https://connect-pat.lgthinq.com ์ ์
- ThinQ ์ฑ๊ณผ ๋์ผํ LG ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ
-
Add New Token โ ํ ํฐ ์ด๋ฆ ์
๋ ฅ(์:
home-assistant) โ ๊ถํ ๋ฒ์ ์ ํ ํ ์์ฑ - ๋ฐ๊ธ๋ ํ ํฐ ๋ฌธ์์ด์ ๋ณต์ฌํด ๋๋ค
- HA ์น UI โ ์ค์ โ ๊ธฐ๊ธฐ ๋ฐ ์๋น์ค โ ํตํฉ ์ถ๊ฐ
-
LG ThinQ๊ฒ์ โ ์ ํ - PAT ์ ๋ ฅ + ๊ตญ๊ฐ ์ ํ(๋ํ๋ฏผ๊ตญ) โ ์ ์ถ
- ThinQ ๊ณ์ ์ ๊ธฐ๊ธฐ๋ค์ด ์๋์ผ๋ก ๋ฑ๋ก๋๊ณ , ๊ธฐ๊ธฐ๋ณ ์ํฐํฐ๊ฐ ์์ฑ๋๋ค
๊ฐ๋ฐ์ ๋๊ตฌ โ ์ํ ํ๋ฉด์์ ๊ธฐ๊ธฐ ์ด๋ฆ์ผ๋ก ๊ฒ์ํ๋ฉด ์์ฑ๋ ์ํฐํฐ ID๋ฅผ ํ์ธํ ์ ์๋ค. ๊ณต๊ธฐ์ฒญ์ ๊ธฐ ์:
| ์ํฐํฐ | ๋๋ฉ์ธ | ์ฉ๋ |
|---|---|---|
select.gonggiceongjeonggi_operating_mode |
select |
์ด์ ๋ชจ๋ (auto / dual_clean / circulator / clean) |
โ ๏ธ ์ํฐํฐ ID๋ ThinQ์ ๋ฑ๋ก๋ ๊ธฐ๊ธฐ ์ด๋ฆ์ ๋ก๋ง์ ํ๊ธฐ๋ก ์๋ ์์ฑ๋๋ค. ๊ธฐ๊ธฐ ์ด๋ฆ์ ๋ฐ๊พธ๊ฑฐ๋ ๋ค๋ฅธ ํ๊ฒฝ์ ์ฌ์ค์นํ๋ฉด ID๊ฐ ๋ฌ๋ผ์ง ์ ์์ผ๋ฏ๋ก, ํด๋ผ์ด์ธํธ ์ฝ๋์ ํ๋์ฝ๋ฉํ์ง ๋ง๊ณ ์ค์ /ํ๊ฒฝ๊ฐ์ผ๋ก ๊ด๋ฆฌํ๋ค.
REST API ํธ์ถ์๋ HA์ Long-Lived Access Token์ด ํ์ํ๋ค.
- HA ์น UI ๋ก๊ทธ์ธ โ ์ข์ธก ํ๋จ ํ๋กํ โ ๋ณด์ ํญ
- ๋งจ ์๋ ์ฅ๊ธฐ ์ก์ธ์ค ํ ํฐ โ ํ ํฐ ์์ฑ (์ด๋ฆ์ ์ฉ๋๋ฅผ ์ ์ ์๊ฒ, ์:
tablet-fe-bff) - ์์ฑ ์งํ ํ ๋ฒ๋ง ํ์๋๋ฏ๋ก ์ฆ์ ๋ณต์ฌ โ env ํ์ผ์ ๋ณด๊ด
# .env (์ปค๋ฐ ๊ธ์ง)
HA_URL=http://<HA์ฃผ์>:8123
HA_TOKEN=eyJhbGciOi...- ์ ํจ๊ธฐ๊ฐ 10๋ , ํ๊ธฐ๋ ๊ฐ์ ํ๋ฉด์์ ์ฆ์ ๊ฐ๋ฅ.
- ํ ํฐ ๊ถํ = ๋ฐ๊ธ ์ฌ์ฉ์ ๊ถํ (ํ ํฐ ๋จ์ read-only ์ค์ฝํ ์์). ์กฐํยท์ ์ด๋ง ํ๋ค๋ฉด ๊ด๋ฆฌ์ ๊ถํ ์๋ ์ ์ฉ ์ฌ์ฉ์๋ฅผ ๋ง๋ค์ด ๊ทธ ๊ณ์ ์ผ๋ก ๋ฐ๊ธํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
๋ชจ๋ ์์ฒญ์ Authorization: Bearer <HA_TOKEN> ํค๋๋ฅผ ๋ถ์ธ๋ค. (ha-api.http #0~#3)
| # | ์๋ํฌ์ธํธ | ์ฉ๋ |
|---|---|---|
| 0 | GET /api/ |
์ฐ๊ฒฐยทํ ํฐ ํ์ธ ({"message": "API running."}) |
| 1 | GET /api/config |
HA ๋ฒ์ ยท์ค์ (ํฌ์ค์ฒดํฌ ๊ฒธ์ฉ) |
| 2 | GET /api/states |
์ ์ฒด ์ํฐํฐ ์ํ ๋ชฉ๋ก โ ์กด์ฌํ๋ entity_id ํ๊ธฐ |
| 3 | GET /api/states/<entity_id> |
๋จ์ผ ์ํฐํฐ ์ํ (์์ผ๋ฉด 404) |
๋จ์ผ ์ํฐํฐ ์กฐํ ์ โ ๊ณต๊ธฐ์ฒญ์ ๊ธฐ ์ด์ ๋ชจ๋:
GET {{haUrl}}/api/states/select.gonggiceongjeonggi_operating_mode
Authorization: Bearer {{haToken}}{
"entity_id": "select.gonggiceongjeonggi_operating_mode",
"state": "auto",
"attributes": {
"options": ["auto", "dual_clean", "circulator", "clean"],
"friendly_name": "๊ณต๊ธฐ์ฒญ์ ๊ธฐ Operating mode"
},
"last_changed": "2026-08-02T04:10:22.513Z",
"last_updated": "2026-08-02T04:10:22.513Z"
}-
state๋ ํญ์ string์ด๋ค โ ๊ธฐ๊ธฐ๊ฐ ์คํ๋ผ์ธ์ด๋ฉด"unavailable", ์ด๊ธฐํ ์ ์ด๋ฉด"unknown"์ด ์ฌ ์ ์์ผ๋ฏ๋ก ํด๋ผ์ด์ธํธ๋ ์ด ๊ฐ์ ๋ฐฉ์ด ์ฒ๋ฆฌํ๋ค. -
attributes.options๊ฐ ์ ์ด(ยง4)์ ๋ฃ์ ์ ์๋ ์ ํจ๊ฐ ๋ชฉ๋ก์ด๋ค โ ์ ์ด ์ ์ ์ด ์กฐํ๋ก ํ์ธํ๋ค. - REST ์กฐํ๋ ํด๋ง ๋ฐฉ์์ด๋ค. ์ํ ๋ณํ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ฐ์์ผ ํ๋ฉด HA WebSocket API ๋๋ MQTT statestream์ ๋ณ๋ ๊ฒํ ํ๋ค(์ด ๋ฌธ์ ๋ฒ์ ๋ฐ).
HA์์ ์ํฐํฐ ์ ์ด๋ ์ํ๋ฅผ ์ง์ ์ฐ๋ ๊ฒ ์๋๋ผ ๋๋ฉ์ธ๋ณ service ๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ด๋ค:
POST /api/services/<๋๋ฉ์ธ>/<์๋น์ค> body: { "entity_id": "...", ...ํ๋ผ๋ฏธํฐ }
์ด๋ค ๋๋ฉ์ธ์ ์ด๋ค ์๋น์คยทํ๋ผ๋ฏธํฐ๊ฐ ์๋์ง๋ GET /api/services(#4)๋ก ํ์ธํ๋ค.
POST {{haUrl}}/api/services/select/select_option
Authorization: Bearer {{haToken}}
Content-Type: application/json
{
"entity_id": "select.gonggiceongjeonggi_operating_mode",
"option": "dual_clean"
}-
option์ ยง3 ์กฐํ ์๋ต์attributes.options์ ์๋ ๊ฐ๋ง ์ ํจํ๋ค. ๋ชฉ๋ก์ ์๋ ๊ฐ์ ๋ณด๋ด๋ฉด 400์ด ์จ๋ค. - ๊ณต๊ธฐ์ฒญ์ ๊ธฐ ์ด์ ๋ชจ๋ ์ ํจ๊ฐ:
auto/dual_clean/circulator/clean.
on/offํ ์ํฐํฐ(switchยทlightยทfan ๋ฑ)๋ ๋๋ฉ์ธ์ ๋ชฐ๋ผ๋ homeassistant ๋๋ฉ์ธ์ผ๋ก ์ ์ดํ ์ ์๋ค:
POST {{haUrl}}/api/services/homeassistant/turn_off
Authorization: Bearer {{haToken}}
Content-Type: application/json
{ "entity_id": "switch.demo_plug" }turn_on / turn_off / toggle ์
๋ค ๊ฐ์ ํํ๋ค.
service ํธ์ถ์ ์๋ต์ ์ด ํธ์ถ๋ก ์ํ๊ฐ ๋ฐ๋ ์ํฐํฐ ๋ชฉ๋ก(๋ฐฐ์ด) ์ด๋ค. ThinQ์ฒ๋ผ ํด๋ผ์ฐ๋๋ฅผ ๊ฒฝ์ ํ๋ ๊ธฐ๊ธฐ๋ ๋ฐ์์ด ๋น๋๊ธฐ๋ผ ๋น ๋ฐฐ์ด []์ด ์๋ ์คํจ๊ฐ ์๋ ์ ์๋ค โ ์ค์ ๋ณ๊ฒฝ ์ฌ๋ถ๋ GET /api/states/<entity_id>(#3) ์ฌ์กฐํ๋ก ํ์ธํ๋ค.
โ ๏ธ POST /api/states/<entity_id>๋ HA ์ํ ๋จธ์ ์ ๊ฐ๋ง ๋ฎ์ด์ธ ๋ฟ ์ค์ ๊ธฐ๊ธฐ๋ฅผ ์์ง์ด์ง ์๋๋ค. ๊ธฐ๊ธฐ ์ ์ด์ ์ฐ๋ฉด "HA ํ๋ฉด์์ผ๋ก ๋ฐ๋์๋๋ฐ ๊ธฐ๊ธฐ๋ ๊ทธ๋๋ก"์ธ ์ํ๊ฐ ๋๋ค. ์ฉ๋๋sensor์ฒ๋ผ ์ ์ด service๊ฐ ์๋ ์ํฐํฐ์ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ์ฃผ์ ํ๋ ๊ฒ๋ฟ์ด๋ค (์กด์ฌํ์ง ์๋ entity_id๋ฉด ์๋ก ์์ฑ๋๋ค).
appStore/tablet-fe/ha-api.http์ ์ ์์ฒญ๋ค์ด ๋ฒํธ(#0~#8) ์์ผ๋ก ์ค๋น๋์ด ์๋ค.
-
VS Code REST Client ํ์ฅ(
humao.rest-client) ์ค์น - env ์ฐ๊ฒฐ โ
{{$dotenv VAR}}๋.httpํ์ผ๊ณผ ๊ฐ์ ํด๋์.env๋ง ์ฝ๋๋ค(๊ฒฝ๋ก ์ค์ ์์)..env.local์ ์ฐ๋ ๋ ํฌ์์๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ก ์ฐ๊ฒฐํ๋ค:ln -s .env.local .env # .gitignore ์ .env* ๊ท์น์ผ๋ก ์ปค๋ฐ๋์ง ์์ -
{{haUrl}}์์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ ค ๊ฐ์ด ํด์๋๋์ง ํ์ธ โ ๊ฐ ์์ฒญ ์ Send Request ํด๋ฆญ - ๊ถ์ฅ ์์:
#0(์ฐ๊ฒฐ ํ์ธ) โ#2(entity_id ํ๊ธฐ) โ#3(๋จ์ผ ์กฐํ,optionsํ์ธ) โ#5/#6(๋ชจ๋ ๋ณ๊ฒฝ) โ#3์ฌ์กฐํ(๋ฐ์ ํ์ธ)
| ์ฆ์ | ์์ธ ยท ์กฐ์น |
|---|---|
401 Unauthorized |
HA_TOKEN ๋๋ฝ/์คํ/ํ๊ธฐ๋จ. #0์ผ๋ก ํ ํฐ๋ถํฐ ๊ฒ์ฆ |
404 Not Found |
entity_id ์คํ ๋๋ ๋ฏธ์์ฑ. #2 ์ ์ฒด ๋ชฉ๋ก์์ ์ค์ ID ํ์ธ |
400 Bad Request (select) |
option ๊ฐ์ด attributes.options์ ์์. #3์ผ๋ก ์ ํจ๊ฐ ํ์ธ |
์ ์ด ์๋ต์ด []
|
์คํจ ์๋(ํด๋ผ์ฐ๋ ๊ฒฝ์ ๋น๋๊ธฐ ๋ฐ์ ๊ฐ๋ฅ) โ #3 ์ฌ์กฐํ๋ก ํ๋จ |
state: "unavailable" |
๊ธฐ๊ธฐ ์คํ๋ผ์ธ ๋๋ ThinQ Cloud ์ฐ๊ฒฐ ๋๊น. ThinQ ์ฑ์์ ๊ธฐ๊ธฐ ์ํ ํ์ธ |
| ํตํฉ ์์ฒด๊ฐ ์ธ์ฆ ์ค๋ฅ | LG PAT ํ๊ธฐ/๋ง๋ฃ โ ์ค์ โ ๊ธฐ๊ธฐ ๋ฐ ์๋น์ค โ LG ThinQ์์ ์ฌ์ธ์ฆ(PAT ์ฌ๋ฐ๊ธ) |
โ ๏ธ HA_TOKENยทLG PAT๋ ์ ๋ ์ ์ฅ์์ ์ปค๋ฐํ์ง ์๋๋ค. env ํ์ผ(์๋ฒ env)์๋ง ๋๊ณ ,.httpํ์ผ์๋{{$dotenv}}์ฐธ์กฐ๋ง ๋จ๊ธด๋ค.
์๋ฒ๊ฐ ์ REST API๋ฅผ ๋์ ํธ์ถํ๊ณ , ๋ฐฑ์คํผ์ค LG ๊ฐ์ ๊ด๋ฆฌ(/lg-appliances)์์ ๊ฐ์ ๋ณ ํ
์คํธ๋ฅผ ํ๋ค.
| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| ์๋ฒ env |
HA_URL(๊ธฐ๋ณธ http://home-assistant:8123, ๊ฐ์ compose) ยท HA_TOKEN(HA Long-Lived Access Token โ devops GitHub Secret/Variable BE_HA_TOKEN์ด deploy ์ํฌํ๋ก env โ compose๋ก ์ฃผ์
, ๋๋ ๋ฌ๋ ~/orchestration-server.env). ํ ํฐ์ ์๋ฒ์๋ง ์๊ณ ๋ธ๋ผ์ฐ์ ๋ก ๋ด๋ ค๊ฐ์ง ์๋๋ค |
| ์ด๋๋ฏผ API |
GET /api/admin/ha/status(์ฐ๊ฒฐยท๋ฒ์ ) ยท GET /api/admin/ha/entities?q=&domain=(์ ์ฒด ์ํฐํฐ ๊ฒ์) ยท GET /api/admin/ha/entities/{entity_id} ยท POST /api/admin/ha/services/{domain}/{service} {entity_id, data} โ ํธ์ถ ํ 0.7์ด ๋ค ์ฌ์กฐํํ after๋ฅผ ํจ๊ป ๋๋ ค์ค๋ค(ยง4.3 ๋น๋๊ธฐ ๋ฐ์) |
| ๊ฐ์ ๋งคํ |
lg_appliances ํ
์ด๋ธ(093): ์คํ์ผ๋ฌ / ๊ณต๊ธฐ์ฒญ์ ๊ธฐ / ๋์ฅ๊ณ 3ํ ๊ณ ์ . entities = ๊ธฐ๋ฅ ํค โ entity_id JSON. GET/PUT /api/admin/lg-appliances/{id}, GET โฆ/{id}/states
|
| ๋ฐฑ์คํผ์ค | ๊ฐ์ ์นด๋๋ง๋ค ๊ธฐ๋ฅ(์คํ์ผ๋ฌ: ํ์ ๋์ยท์ฝ์คยท์ข
๋ฃ ์์ฝยท์ ์ / ๊ณต๊ธฐ์ฒญ์ ๊ธฐ: ์ด์ ๋ชจ๋ยท์ ์ยทํ๋ยท๋ฏธ์ธ๋จผ์ง / ๋์ฅ๊ณ : ๋์ฅยท๋๋ ์จ๋ยท๊ธ์ยท๋ฌธ)์ ์ํฐํฐ๋ฅผ ์ง์ ํ๋ฉด ๋๋ฉ์ธ์ ๋ง๋ ์ปจํธ๋กค์ด ์๋์ผ๋ก ๋ฌ๋ค โ selectโoptions ๋ฒํผ, numberโ๊ฐ ์
๋ ฅ(number.set_value), switch/fan/lightโ์ผ๊ธฐยท๋๊ธฐยทํ ๊ธ(homeassistant.*), climateโ์จ๋(climate.set_temperature)ยท๋ชจ๋, buttonโpress, sensorโ์ฝ๊ธฐ ์ ์ฉ. ์์ ์๋น์ค ํธ์ถยท์์ฑ ๋ณด๊ธฐ๋ ๊ฐ๋ฅ |
์ํฐํฐ ID๋ ยง1.4๋๋ก ํ๊ฒฝ๋ง๋ค ๋ค๋ฅด๋ฏ๋ก ์ฝ๋์ ์๊ณ ๋ฐฑ์คํผ์ค์์ ์ง์ ํ๋ค. HA์ LG ThinQ ํตํฉ(ยง1)์ด ๋จผ์ ์ถ๊ฐ๋ผ ์์ด์ผ ํ์๊ธฐ์ ๊ธฐ๊ธฐ๊ฐ ๋ณด์ธ๋ค. | ์ ํ์ง ์ ์ ์ ์ด | ํ์คํฌ/์ด๋ฒคํธ ์ ํ์ง์
lg_appliance_id(lg-styler|lg-air-purifier|lg-refrigerator) +lg_power(on|off)๋ฅผ ๋๋ฉด(094), ํ๋ธ๋ฆฟ์ดorchestration/{sessionId}/task/option/selectยทevent/option/select๋ก ๊ทธ ์ ํ์ง๋ฅผ ๊ณ ๋ฅผ ๋ ์๋ฒ๊ฐ ํด๋น ๊ฐ์ ์entities.power์ํฐํฐ์homeassistant.turn_on/turn_off๋ฅผ ํธ์ถํ๋ค. SPOT/๋ฐ๋ ค๋ก๋ด ๋ช ๋ น๊ณผ ๋ ๋ฆฝ์ด๋ฉฐ ์๋ต(โฆ/select/response)์๋ ์ํฅ ์์.power์ํฐํฐ๊ฐ ๋ฏธ๋งคํ์ด๋ฉด ๋ก๊ทธ๋ง ๋จ๊ธฐ๊ณ ๋ฌด์ | | ๋์ฐฉ ์๋ํ |arrival_automation_actions.device_type = 'lg'(096),action = on \| off,params_json = {"appliance_id": "lg-โฆ"}. ์ธ์ ์ด ๊ท์น์ ์ฅ์์ ๋์ฐฉํ๋ฉด ๋๋ฐ์ด์ค ํ(lg:{appliance_id}๊ทธ๋ฃน)์์ ์ ์ก์ ์๋ฃ ํ HAhomeassistant.turn_on/off๋ฅผ ํธ์ถํ๊ณ , ํธ์ถ ์ฑ๊ณต์ ์๋ฃ๋ก ๊ธฐ๋กํ๋ค(ack ์์). ๋ฐฑ์คํผ์ค ์๋ํ ์๋ํฐ์์ ๋๋ฐ์ด์ค "LG ๊ฐ์ " ์ ํ |