โ† ๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ

OwnTone + HomeAssistant + Timer


OwnTone + HomeAssistant + Timer

์•„๋‚ด์—๊ฒŒ ์Œ์•… ํ”Œ๋ ˆ์ด์–ด๋กœ ๋งŒ๋“ค์–ด์ค€ OwnTone์—๋Š” ์ทจ์นจ์˜ˆ์•ฝ์ด๋‚˜ ์žฌ์ƒํšŸ์ˆ˜ ์„ค์ •๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.

ํ†ต์ƒ์ ์œผ๋กœ๋Š” ๊ทธ๋Ÿฐ (ํ‚ฌ๋ง)๊ธฐ๋Šฅ์„ ์ฐพ์•„ ๋‹ค๋ฅธ ๋Œ€์•ˆ์„ ์ฐพ์•„๋ด์•ผ ๊ฒ ์œผ๋‚˜ ์š”์ฒญ์„ ์• ์จ ๋ฌด์‹œํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ 7์›”์˜ ์–ด๋А๋‚  ์ข€ ์‚ดํŽด๋ณด๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

๋ญ ํ†ต์ƒ์ ์ธ ๋‚จํŽธ๋“ค์ด ๊ทธ๋ ‡๋“ฏ์ด ์ € ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๋•Œ๋Š” ์ด๊ฒƒ์„ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์šฐ๊ธฐ๋‹ค๊ฐ€ ์ •์ž‘ ๋ชจ๋ฅด๊ฑฐ๋‚˜ ์•ˆ ๋˜๊ฑฐ๋‚˜ ํ•˜๋Š” ์‚ฌํ•ญ์„ ์š”๊ตฌ๋ฐ›์œผ๋ฉด ์ƒ๊ฐํ•ด๋ณด์ž๋Š” ๋ง๋กœ ๋ฏธ๋ฃจ๊ณ  ๋ฏธ๋ฃจ๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ ๋˜‘๋˜‘ํ•œ ์ œ๋ฏธ๋‚˜์ด์—๊ฒŒ ๋ฌผ์–ด๋ณด๋‚˜ ์˜์™ธ์˜ ๋Œ€๋‹ต์„ ํ•˜๋Š”๋ฐ, ์ง‘ ์„ค์ • ๊ตฌ์„ฑ์˜ ๋ฉ”์ธ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” HA(Home Assistant)๋ฅผ ํ†ตํ•ด ์ œ์–ด๊ฐ€ ๋˜๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

ํ .. ๊ทธ๋Ÿฌ๊ณ  ๋ณด๋‹ˆ ์™œ ๊ทธ ์ƒ๊ฐ์€ ์•ˆ ํ–ˆ์„๊นŒ ์‹ถ์€ ์ƒ๊ฐ์ด ๋“ ๋‹ค. ๊ทธ ์ „๊นŒ์ง€๋Š” OwnTone์„ folkํ•ด์„œ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋‚˜? ๊ทธ๋Ÿฌ๊ณ  ์žˆ์—ˆ๋‹ค.

๋ธ”๋กœ๊ทธ ๋ณธ๋ฌธ ์ด๋ฏธ์ง€

๐Ÿ“ท HA์—์„œ ์‚ฌ์šฉ ํ•  ๊ธฐ๊ธฐ์™€ ์ž๋™ํ™”

HA๋ฅผ ๊ตฌ์„ฑํ•œ์ง€ ๋ช‡ ๋…„์ด๋‚˜ ๋˜์—ˆ์ง€๋งŒ ์ž๋™ํ™”๋ฅผ ํ•œ ๋ฒˆ๋„ ๊ตฌ์„ฑํ•ด ๋ณด์ง€ ์•Š์€ ๋‚˜๋Š” ๊ทธ ๋™์ž‘์›๋ฆฌ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ ์žˆ์—ˆ๋‹ค.

์ฒ˜์Œ ์ƒ๊ฐํ•œ ๊ฒƒ์€

  • ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•œ๋‹ค
  • ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค
  • 30๋ถ„ ๋’ค์— ์Œ์•…์„ ์ค‘๋‹จ ์‹œํ‚จ๋‹ค

์ผ๊ฒฌ ๊ฐ„๋‹จํ•ด ๋ณด์ด์ง€๋งŒ Trigger์™€ Timer๊ฐ€ ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š” ์ž‘์—…์ด๋ผ๋Š” ๊ฒƒ์„ ์กฐ๊ธˆ๋งŒ ์ƒ๊ฐ ํ•ด ๋ณด๋ฉด ์•Œ์•˜์„๊ฑฐ ๊ฐ™์€๋ฐ, ์—ฌ๊ธฐ์„œ ๊ผฌ์ด๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

Timer์— ์–ด๋–ป๊ฒŒ ์ด๋ฒคํŠธ ์ฝ”๋”ฉ์„ ํ•˜๋Š”๊ฑฐ์ง€? (30๋…„ ์ „ ๋น„์ฃผ์–ผ๋ฒ ์ด์ง ํƒ€์ด๋จธ๋ฅผ ๋– ์˜ฌ๋ ธ๋‚˜ ๋ณด๋‹ค)

๋‚ด๊ฐ€ ์•Œ๊ณ ์žˆ๋Š” ๋ฐ”๋กœ๋Š” HA๋ฅผ ๋งŒ๋“  ์ œ์ž‘์ž๊ฐ€ ๊ฑฐ์˜ ์ฒœ์žฌ๊ธ‰์— ๊ฐ€๊นŒ์šด ๋ถ„์œผ๋กœ ์•Œ๊ณ ์žˆ๋Š”๋ฐ ๊ทธ๋Ÿฐ ํ—ˆ์ ‘ํ•œ ๊ตฌ์„ฑ์„ ํ–ˆ์„๊ฑฐ ๊ฐ™์ง€๋Š” ์•Š๊ณ .

๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€

  • ๋ณด์ด๋Š” ๋ถ€๋ถ„
  • ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„

์ด ๋‘ ๊ฐ€์ง€์˜ ์ฒ ์ €ํ•œ ๋ถ„๋ฆฌ๋ผ๋Š” ์ ์ด๋‹ค.

ํ™”๋ฉด์ด ๋ฐฐ์น˜๋˜๊ณ  ์‹คํ–‰(์กฐ์ž‘)์„ ๋ฐ›์•„๋“ค์ด๋Š” ๋ถ€๋ถ„๊ณผ (์—ฌ๊ธฐ์„œ ๋งํ–ˆ๋‹ค) ๊ทธ ์กฐ์ž‘์— ์ฝ”๋”ฉ์„ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ƒ๊ฐ์—์„œ ํ•œ์ฐธ์„ ํ—ค๋ฉ”๋‹ค๋‹ˆ๊ณ  ์žˆ์—ˆ๋‹ค.

๋ธ”๋กœ๊ทธ ๋ณธ๋ฌธ ์ด๋ฏธ์ง€

๐Ÿ“ท HA - ๊ธฐ๊ธฐ์ค‘ ๋„์šฐ๋ฏธ ์”จ๋ฆฌ์ฆˆ๋ฅผ ๋ช‡ ๊ฐœ ์ถ”๊ฐ€ํ•œ ๋ชจ์Šต

๊ธฐ์‹ค 30๋ถ„, 1์‹œ๊ฐ„ ์ด๋ ‡๊ฒŒ ๋ฒ„ํŠผ์„ ๋‘ ๊ฐœ ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ๋”๋‹ˆ ์š”๊ตฌ์ž๊ป˜์„œ ๋ช‡ ๋ถ„ ์˜ˆ์•ฝ ํ•  ๊ฒƒ์ธ์ง€ ์ž…๋ ฅ์„ ํ•˜์‹œ๊ฒ ๋‹จ๋‹ค.

์ˆซ์ž ์ž…๋ ฅ์šฉ ์Šฌ๋ผ์ด๋”๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•˜๊ณ  ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ ์ € ์ˆซ์ž๋ฅผ ์ฝ์–ด์„œ ํƒ€์ด๋จธ์— ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊ทธ ์„ค์ • ์•„๋‹ˆ ์ฝ”๋”ฉ์„ ์ € ๋ฒ„ํŠผ์—์„œ ์ฐพ์œผ๋ ค๊ณ  ํ•œ ๊ฒƒ์ด ๋งํ•˜๋Š” ์ง€๋ฆ„๊ธธ์ด์ž ๋‚ด ์ƒ๊ฐ๊ณผ ์ˆ˜์ค€์ด ๊ทธ๊ฒƒ์— ๋จธ๋ฌผ๋Ÿฌ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๋ธ”๋กœ๊ทธ ๋ณธ๋ฌธ ์ด๋ฏธ์ง€

๐Ÿ“ท ์ž๋™ํ™” ์ปดํฌ๋„ŒํŠธ - ์ € ์ƒํƒœ๋ฅผ ํ™œ์„ฑ/๋น„ํ™œ์„ฑ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฒƒ์— ์ฃผ๋ชฉํ•ด์•ผ ํ•œ๋‹ค

๋ฒ„ํŠผ์—๋Š” ์•„๋ฌด๋Ÿฐ ์•ก์…˜์ด ์—†๋‹ค. (๋ฒ„ํŠผ์— ์Šคํฌ๋ฆฝํŠธ๋ผ๋„ ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ๋ฌด์ฒ™์ด๋‚˜ ์• ์“ฐ๊ณ  ์žˆ์—ˆ๋‹ค.)

์ž๋™ํ™” ๋ฐ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋„˜์–ด์™€์„œ ๊ตฌํ˜„์€ ํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ Trigger๋˜๋Š” ๋ฐฉ์‹์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ์œผ๋‹ˆ.

์ € ์ด๋ฏธ์ง€์—์„œ ์ž๋™ํ™” ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋ฅผ ํ™œ์„ฑ/๋น„ํ™œ์„ฑ ํ•  ์ˆ˜ ์žˆ์Œ์— ์ฃผ๋ชฉํ•ด ๋ณด์ž.

ํ™œ์„ฑ์ด๋ผ๋Š” ๊ฒƒ์˜ ์˜๋ฏธ๋Š” ์ €๊ฒƒ ํ•˜๋‚˜ ์ž์ฒด๊ฐ€ ๋…๋ฆฝ์ ์ธ ์‹คํ–‰์ฃผ์ฒด๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๋ณธ๋‹ค.

๋ธ”๋กœ๊ทธ ๋ณธ๋ฌธ ์ด๋ฏธ์ง€

๐Ÿ“ท ์ž๋™ํ™”์ปดํฌ๋„ŒํŠธ ์ˆœ์ฐจ๊ตฌ์„ฑ

์ž๋™ํ™” ์ปดํฌ๋„ŒํŠธ์˜ ๊ตฌ์„ฑ์„ ์‚ดํŽด๋ณด๋ฉด (์‚ดํŽด๋ณด๊ธฐ ์ „์— ํŠธ๋ฆฌ๊ฑฐ, ์กฐ๊ฑด, ๋™์ž‘ ์ด 3๊ฐ€์ง€ ์ค‘์— ์–ด๋–ค ๊ฒƒ์„ ์„ ํƒ ํ•  ๊ฒƒ์ธ์ง€ ๋ถ€ํ„ฐ ๊ณ ๋ฏผ์ด์—ˆ๋‹ค.)

alias: "OwnTone: ๋‹ค์ด๋‚˜๋ฏน ์˜ˆ์•ฝ์ˆ˜๋ฉด ํƒ€์ด๋จธ"
description: ์Šฌ๋ผ์ด๋”๋กœ ์ง€์ •ํ•œ ์‹œ๊ฐ„๋งŒํผ ํƒ€์ด๋จธ๋ฅผ ๊ตฌ๋™ํ•˜๊ณ  OwnTone์„ ์žฌ์ƒํ•œ ๋’ค ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
triggers:
  - entity_id: input_button.eumagjongryobeoteun
    trigger: state
actions:
  - target:
      entity_id: timer.eumagjongryotaimeo
    data:
      duration:
        minutes: "{{ states('input_number.eumagjongryosigan') | int }}"
    action: timer.start
  - wait_for_trigger:
      - entity_id: timer.eumagjongryotaimeo
        from: active
        to: idle
        trigger: state
  - target:
      entity_id: media_player.owntone_server
    action: media_player.media_stop
mode: restart

trigger์™€ action์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋กœ์ง์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ•œ์ฐธ์ด๋‚˜ ์ฐพ์•„ํ—ค๋ฉ”๊ณ  ๋‹ค๋‹ˆ๋‹ค ๋งŒ๋“ค์–ด ๋†“๊ณ  ๋ณด๋‹ˆ ์ดํ•ด๊ฐ€ ๋˜๋Š” ๊ทธ๋Ÿฐ ์ƒํ™ฉ์ธ ๊ฒƒ์ด๋‹ค.

์ฆ‰, ๋ฒ„ํŠผ์— trigger๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ž๋™ํ™” ๋ชจ๋“ˆ์— trigger๊ฐ€ ์žˆ๋‹ค.