반응형

세탁기를 돌리고 깜빡하는 경우 알림을 받고 싶어서 지그비 플러그를 2개 구매 했습니다.

 

9월에 다원 지그비 플러그 사전구매가 떳을 때 구매 했었어요. 역시나.. 사놓고 미루고 미루다 IOT 까페 mahlernim 님께서 올려주신 게시글 덕분에 후다닥 진행했습니다.

 

https://cafe.naver.com/koreassistant/6387

 

세탁기 종료 알림

대한민국 모임의 시작, 네이버 카페

cafe.naver.com

 

 

사용하고 있는 세탁기와 건조기는 IOT 기능이 없는 제품이라 zigbee 플러그에 전기 사용량으로 시작과 종료를 판단하여 알림을 발송합니다.

 

 

최종 목표

  • 세탁이 종료되면 앱 푸시 및 구글 홈 미니에서 음성 알림
  • 세탁 종료 10분, 30분 후 건조기가 동작하지 않으면 앱 푸시 및 음성 알림

 

사전에 세팅된 항목

  • 구글 홈 미니
  • 카카오 TTS 컴포넌트
  • 폰에 HA 앱 설치

 

1. 패턴 확인

저희집 세탁기도 평상시엔 대기전력이 1W 이하로 유지되고 있었습니다.

세탁/헹굼일 때 세탁 코스에 따라서도 패턴이 달랐습니다.

 

 

 

2. 세탁기, 건조기 상태 센서

 

configuration.yaml 세탁기,건조기 상태 확인용 템플릿 바이너리 센서 추가 했습니다.

# Template
template:
  binary_sensor:
    - name: washer
      icon: mdi:washing-machine
      state: >
        {{ states('sensor.washer_plug_power') | int > 2 }}
      delay_off:
        seconds: 60
    - name: dryer
      icon: mdi:washing-machine
      state: >
        {{ states('sensor.dryer_plug_power') | int > 2 }}
      delay_off:
        seconds: 60

 

저는 공홈에 예졔가 있어서 이 방식을 사용했습니다. 까페에도 몇몇 분은 이 방식으로 사용하시네요.

 

Template

 

Template

Instructions on how to integrate Template Sensors into Home Assistant.

www.home-assistant.io

 

HA 재시작

 

 

3. 자동화 추가

세탁 완료 알림 : 세탁기 센서가 off 될 때 알림

 

alias: 세탁 완료
description: ''
trigger:
  - platform: state
    entity_id: binary_sensor.washer
    to: 'off'
condition: []
action:
  - service: notify.notify
    data:
      title: 세탁 완료 알림
      message: 세탁이 완료 되었습니다
  - service: tts.kakao_tts_say
    data:
      entity_id: media_player.gugeul_hom_mini_jubang
      message: 세탁이 완료 되었습니다.
mode: single

 

 

세탁 완료 후 건조기 알림 : 세탁 완료 후 10분, 30분 후 건조기가 안돌아가면 알림

 

alias: 세탁 완료 후 건조기 알림
description: ''
trigger:
  - platform: state
    entity_id: binary_sensor.washer
    to: 'off'
    for:
      hours: 0
      minutes: 10
      seconds: 0
      milliseconds: 0
  - platform: state
    entity_id: binary_sensor.washer
    to: 'off'
    for:
      hours: 0
      minutes: 30
      seconds: 0
      milliseconds: 0
condition:
  - condition: state
    entity_id: binary_sensor.dryer
    state: 'off'
action:
  - service: notify.notify
    data:
      title: 세탁 완료 알림
      message: 세탁물 건조를 시작하세요.
  - service: tts.kakao_tts_say
    data:
      message: 세탁물 건조를 시작하세요.
      entity_id: media_player.gugeul_hom_mini_jubang
mode: single

 

4. 테스트

 

개발자 도구에서 아래 그림처럼 100W 사용하는 것 처럼 상태값을 바꿔줍니다.

(상태 설정 버튼 몇 초간 여러번 클릭)

 

 

이렇게 상태가 바뀌는걸 확인할 수 있고 자동화가 제대로 동작하는지 확인할 수 있습니다.

 

 

 

 

알림도 오고 TTS도 잘 되네요.

 

반응형
반응형

사전 요구사항

  • Home Assistant (+Supervisor)
  • Google Home Mini
  • HACS (수동으로 컴포넌트 설치 가능)

 

HACS Korea Radio 컴포넌트 설치

https://github.com/miumida/korea_radio

 

GitHub - miumida/korea_radio: Korea Radio for Home Assistant #HA

Korea Radio for Home Assistant #HA. Contribute to miumida/korea_radio development by creating an account on GitHub.

github.com

 

HACS를 통해 설치 과정

 

 

 

Custom repository 를 추가해줍니다.

 

 

URL은 https://github.com/miumida/korea_radio

Category는 Integration을 선택해줍니다.

 

 

 

 

 

 

이미지 순으로 설치해줍니다.

 

configuration.yaml 수정

 

#라디오 컴포넌트 사용
korea_radio:

 

HA를 다시 시작해줍니다.

 

 

정상 설치 확인

컴포넌트 설치 정상 확인 : 개발자 도구 서비스 탭에 서비스 검색결과 확인

google cast를 이미 사용중이고 기기가 추가 되어있다면 바로 재생 테스트를 해볼 수 있습니다.

 

 

리스트에 떠있다면 컴포넌트가 잘 설치 된 것입니다.

Google Cast 구성요소 설정

통합구성요소에 Google Cast 가 없다면 설치 합니다.

 

 

미디어플레이어가 정상적으로 구성되었는지 확인합니다.

 

 

테스트 구동

서비스 호출 시 라디오가 재생됩니다. 여기까지는 Korea Radio 컴포넌트가 준비되어있는 라디오 채널과 어느 스피커로 출력할지를 지정해주고 수동으로 호출하는 단계 였습니다.

채널은 MBC, SBS, EBS 가능합니다.

 

 

 

구글 홈 미니에서 음성으로 호출하기

HAOS 기준 /config/scripts.yaml 스크립트 추가

저는 MBC, SBS 채널들만 스크립트를 만들어 두었습니다.

뭔가 좀 더 편한 방법이 있을 것 같은데..

 

 

radio_mbc_fm:
  alias: MBC 표준 FM
  sequence:
  - service: korea_radio.play_radio
    data:
      entity_id: media_player.gugeul_hom_mini_jubang
      channel: mbcfm
  icon: mdi:radio

radio_mbc_fm4u:
  alias: MBC FM4U
  sequence:
  - service: korea_radio.play_radio
    data:
      entity_id: media_player.gugeul_hom_mini_jubang
      channel: mbcfm4u
  icon: mdi:radio

radio_mbc_allthat:
  alias: MBC 올댓 뮤직
  sequence:
  - service: korea_radio.play_radio
    data:
      entity_id: media_player.gugeul_hom_mini_jubang
      channel: allthat
  icon: mdi:radio

radio_sbs_powerfm:
  alias: SBS 파워 FM
  sequence:
  - service: korea_radio.play_radio
    data:
      entity_id: media_player.gugeul_hom_mini_jubang
      channel: powerfm
  icon: mdi:radio

radio_sbs_lovefm:
  alias: SBS 러브 FM
  sequence:
  - service: korea_radio.play_radio
    data:
      entity_id: media_player.gugeul_hom_mini_jubang
      channel: lovefm
  icon: mdi:radio

radio_sbs_dmbpc:
  alias: SBS 고릴라디오M
  sequence:
  - service: korea_radio.play_radio
    data:
      entity_id: media_player.gugeul_hom_mini_jubang
      channel: sbsdmb
  icon: mdi:radio

 

 

HAOS 기준 /config/configuration.yaml entity 추가 (기존 설정이 entity 자동으로 추가하고 계신분이면 수동으로 호출용 재생스크립트를 추가할 필요 없이 동기화만 시켜주면 됩니다)

 

 

 

# 제 설정은 true
expose_by_default: true # 기본적으로 기기들을 연동할지 여부를 결정

 

expose_by_default 값을 false로 설정할 경우 아래 내용 처럼 GA에 스크립트를 등록해주어야 합니다..

 

 

  # expose_by_default 가 false 인 경우 수동으로 추가

  # 라디오 재생 스크립트 호출용
  entity_config: 
    script.radio_mbcfm:
      name: MBC 표준 FM
      expose: true

 

기기동기화

 

음성으로 헤이구글 기기동기화 해줘 수행

또는 Home 앱으로 수동으로 동기화 해주셔도 됩니다. 

 

음성으로 호출

"MBC 표준 FM 실행해줘"로 라디오 재생

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형

 

냉장고 옆 벽면에 부착해서 사용중인 지그비 무선 스위치 버튼입니다.

 

기존에 사용하고 있는 Home Assistant와 지그비 코디네이터를 활용했습니다.

 

 

 

목표

  • 지그비 버튼을 활용한 주방 전등 제어
  • 특정 제품의 허브 없이 HA 만으로 연결하고 자동화 구현

 

사전조건

  • Home Assistant 가 설치된 장비 (NUC, 라즈베리파이, PC 등) + 월패드 연동
  • 지그비 코디네이터
  • zigbee2mqtt 애드온

 

구매한 것

  • 아카라 코리아 무선 미니 스위치 T1

 

장비 페어링

상단의 permit_join을 눌러놓고 버튼 초기화 버튼 5초간 누르면 페어링이 됩니다.

 

 

기기에 자동화 추가

자동화 옆 + 를 누른 뒤 트리거를 추가 해줍니다.

 

 

버튼을 누르면 켜지고 꺼지게 구성하기 위해 동작은 토글로 설정했습니다.

 

 

 

YAML로 보면

 

alias: 주방 전등 버튼
description: ''
trigger:
  - platform: device
    domain: mqtt
    device_id: e2c26e2cb90502f47db0e6725de2895f
    type: action
    subtype: single
    discovery_id: 0x04cf8cdf3c769360 action_single
condition: []
action:
  - type: toggle
    device_id: 4292113f37acf395c82c0340a9a4435d
    entity_id: light.kocom_light_04_1
    domain: light
mode: single

 

자동화 트리거는 single, double, hold, release action 입니다.

 

두번누르거나 꾹 눌러서 다른 것을 제어하도록 추가도 가능하겠네요.

 

 

반응형
반응형

목표

  • 모션센서를 활용하여 옷방 출입 시 전등 자동화 하기
  • 특정 제품의 허브 없이 HA 만으로 연결하고 자동화 구현

 

사전 조건

  • Home Assistant 가 설치된 장비 (NUC, 라즈베리파이, PC 등)

 

구매한 것

  • 지그비 코디네이터(까페에서 쬐끔전문가님이 제작해주신 CC2652P)
  • 모션센서(7월 국내 정식 출시한 아카라 T1)

 

지그비 코디네이터 하드웨어 연결 및 확인


지그비 코디네이터 제작자 쬐끔전문가님 설정 가이드

CC2652P 공제 코디네이터 동글 설정 가이드

대한민국 모임의 시작, 네이버 카페

cafe.naver.com



IOT 까페 쬐끔전문가님이 추진하신 공동제작 CC2652P 코디네이터. 감사합니다 ^^
케이스 간섭 때문에 일단은 임시로 케이스를 빼고 진행했습니다.

USB 연결한 뒤 하드웨어 확인


쬐끔전문가님께서 ttyUSB0로 시작하는 이름으로 찾으면 된다고 하시네요. (환경마다 다를 수 있습니다)
저는 ttyUSB0로 뜨는 것을 확인했습니다.

 



MQTT 설치 및 설정


설치 과정은 레이군 님의 영상을 참고하였습니다.

[유튜브] Zigbee2MQTT 설치과정

안녕하세요~ 레이군 입니다. 드디어...zigbee2MQTT를 설치하는 과정 입니다! 와....여기까지 오는데 뭐 이리 알아야 할게 많죠?? ㅠ.ㅜ 여튼, 드디어 zigbe...

cafe.naver.com

Mosquitto broker 애드온 설치



구성 탭에서 로그인 설정
username 과 password는 본인이 변경하여 사용



Zigbee2mqtt 애드온 설치
레파지토리 추가 https://github.com/zigbee2mqtt/hassio-zigbee2mqtt



구성 설정 변경

data_path: /config/zigbee2mqtt external_converters: [] devices: devices.yaml groups: groups.yaml homeassistant: true permit_join: false mqtt: base_topic: zigbee2mqtt user: user수정 password: password수정 serial: port: /dev/ttyUSB0 advanced: log_level: info pan_id: 6754 channel: 25 network_key: - 1 - 3 - 5 - 7 - 9 - 11 - 13 - 15 - 0 - 2 - 4 - 6 - 8 - 10 - 12 - 13 availability_blocklist: [] availability_passlist: [] device_options: {} blocklist: [] passlist: [] queue: {} frontend: port: 8099 experimental: transmit_power: 20 socat: enabled: false master: pty,raw,echo=0,link=/tmp/ttyZ2M,mode=777 slave: tcp-listen:8485,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5 options: '-d -d' log: false



Zigbee2mqtt 정보에서 사이드바 표시하기 활성화 해주었습니다.
활성화 된 탭으로 이동한 후 장치가 페어링 될 수 있도록 설정을 체크해줍니다.
페어링 방법은 레이군 님의 유투브 영상 참고하였습니다.

[유튜브] Zigbee2mqtt 페어링 / 이름변경

안녕하세요~ 레이군 입니다! 오랜만에 컨텐츠를 들고 돌아왔습니다만... 매우 쉬운 내용이라 뭐... 간단하게 호로록 보시면 될것 같습니다! 이제 몸상태도 좀 나아진것 같으니...

cafe.naver.com



 

 

모션센서 설치 및 연결확인

Aqara 모션 센서 T1를 구매해서 연결했습니다. 7월 정식 출시된 제품이고 지금은 할인해서 2만원이네요.


건전지쪽 스티커를 제거하고 초기화버튼을 5초 눌러 초기화 해주면 페이링을 시도합니다.



추가 되었습니다.





통합구성요소의 Mosquitto broker에서 기기가 추가된 것을 볼 수 있습니다.



센서를 설치 했습니다.

 

 

 

자동화 추가하기

해가 지면 옷방에 들어갈 때 불이 켜지고, 나오면 어느정도 시간이 흐른 뒤 꺼지도록 자동화를 추가 해줬습니다. 지금은 우선 이 정도로 사용해 보고 나중에 좀 불편한 사항이 생기면 더 세부적으로 조절할 수 있을 것 같습니다.





















반응형
반응형

 

Synology NAS 사용자라면 한때 유행했던(?) RSS를 활용하여 자동으로 다운로드하시는 분들이 많으셨을 거예요.

 

이 글은 과거의 방식보다는 좀 더 복잡하게 느껴질 수 있지만, 원리는 동일하고 단계가 조금 다르게 진행됩니다.

 

먼저 글을 쭉 훑어보고 판단하시면 될 것 같고 이 글로 인해 발생하는 문제의 책임은 본인에게 있습니다.

 

이 글에서 저는 "목적어"는 빠진 내용을 작성할 예정이며 스무고개 하듯이 진행하셔야 할 수도 있습니다.

 

시작하기에 앞서 이 방식은 매달 3.5$의 비용이 발생합니다.

 

믿을 수 있는 지인들끼리 한 서버를 공유하든 여러분의 자유입니다. 읽어보고 판단하시면 됩니다.

 

 


 

목적

 

Synology NAS의 Download Station에서 RSS를 통해 원하는 콘텐츠를 자동으로 다운로드하게 시키는 것입니다.

 

국내 인터넷 환경이 사이트 차단(Warning 사이트로 이동하는...)되는 경우가 많기 때문에 AWS 클라우드 서비스로 해외 Region VM을 하

나 생성하고 우회하도록 하는 방식입니다.

 

우회하는 방식은 다양하지만 제 환경에서는 이 방식이 가장 저렴하기 적용했습니다.

 

torrssen2라는 좋은 프로그램을 배포하고 있는 분이 계신데... 저는 저렴한 제품군이라 도커가 설치 안 되는 버전이기 때문에 스킵했습니다.

 

지금 이 글은 인텔 CPU를 사용하지 않는 저렴이 Synology 제품군을 사용하는 (Docker 활용이 불가능한) 분들에게 추천드립니다.

 

 


 

키워드

 

다음 키워드와 관련된 내용이 포함됩니다.

 

  • Synology NAS, Download Station
  • 토렌트
  • RSS
  • AWS, 클라우드
  • 프록시
  • node js

 

생소한 용어가 있을 수 있습니다. 편하게 스크롤 하면서 읽어주세요.

 

 


 

진행과정

 

전체적인 과정은 다음과 같습니다.

 

  1. RSS를 제공하는 토렌트 사이트 찾기
  2. AWS lightsail 인스턴스 생성
  3. Proxy 기능을 할 소스 배포
  4. Synology NAS Download Station에서 RSS 설정

 


 

1. RSS를 제공하는 토렌트 사이트 찾기

 

이전의 방식은 일반 토렌트 사이트에서 RSS 형식으로 변환해주는 php소스를 내 NAS 올려놓고 다운받는 방식이었습니다. 사이트에 부하를 많이 주는 방식이고 운영자가 소스를 변경할 경우 php 소스를 수정해야 하는데 개발자가 아닌 이상 일반인은 접근하기 힘들 거에요.

 

그래서 좀 더 범용적이고 구조적으로 안정적인 방법으로 접근하기 위해 RSS를 사이트 자체적으로 제공하는 곳을 찾아서 진행하였습니다.

 

물론 개인적으로 파싱한 다음 RSS를 직접 생성하셔도 됩니다.

 

현재는 토렌XX 에서 RSS를 제공하고 있고 여기도 막히면 또 그때 가서 생각해보려고 합니다.

 

XX는 아래 이미지가 뭔지 생각해보시면 될 듯..

 

 

 


 

2. AWS lightsail 인스턴스 생성

 

AWS는 Amazon Web Service의 약자로 클라우드 서비스를 제공하는 대표적인 회사입니다. 여러분이 아시는 아마존닷컴의 클라우드 컴퓨팅 사업부에서 운영하는 서비스입니다.

 

쉽게 말해서 "내 컴퓨터 말고 돈내고 어딘가에 있는 서버를 쓰겠다" 입니다. 서버라고 해서 대단한 건 아니고 저사양, 저비용 가상 서버입니다.

 

여기서 매달 3.5 달러의 비용이 발생합니다.

 

AWS Lightsail을 활용하는 이유는 가장 저렴하고 비용관리가 편리하기 때문엡니다.

 

저는 일본 리전에서 서버 생성을 추천해 드립니다. (해외 중에서 응답속도가 비교적 빠른 이유로)

 

토렌트 사이트가 차단당하는 것은 인터넷 회선 제공자 단계에서 차단당하기 때문에 해외에 서버를 활용하는 것이고 개념상 프록시 역학을 하게 됩니다.

 

이해하기 쉽게 그림으로 도식화 해봤습니다.

 

 

https://lightsail.aws.amazon.com

 

https://lightsail.aws.amazon.com/ls/webapp

 

lightsail.aws.amazon.com

 

가입 후 메인화면을 접속부터 시작하겠습니다.

 

가입 후 로그인 시 2단계 인증 활성화하실 것을 권장합니다.

(타 사이트와 같은 아이디 패스워드를 쓰다가 해킹당한 후 누군가가 비싼 인스턴스를 생성하여 코인 채굴 돌리는 불상사가 벌어질 수 있습니다.)

 

처음엔 생성된 인스턴스가 없을 거예요.

 

인스턴스 생성을 눌러줍니다.

 

 

리전을 도쿄로 선택합니다.

 

 

OS는 리눅스 중 배포판은 Ubuntu로 하겠습니다.

 

 

가장 저렴한 플랜을 선택합니다.

 

 

인스턴스 이름을 지정해주고 인스턴스 생성을 눌러줍니다.

 

 

잠시 대기 중이다가 실행중으로 변경됩니다.

 

 

아직은 고정 IP가 없기 때문에 할당해줍니다. 관리 메뉴로 들어가서 네트워킹 탭으로 갑니다.

 

고정 IP 생성을 눌러 줍니다.

 

 

이름을 지정해주고 생성해줍니다.

 

 

외부에서 접속 가능한 IP가 생성되었습니다.

 

추후 인스턴스를 삭제할 때 고정 IP도 반드시 삭제해야 합니다. 할당되지 않은 고정 IP는 과금됩니다.

 

 

접속은 편의상 사이트에서 제공하는 콘솔로 진행하겠습니다. 홈 화면으로 돌아와서 콘솔 모양의 아이콘을 클릭합니다.

 

 

콘솔로 접속이 됩니다.

 

 

깔려있는 기본 패키지를 최신 버전으로 업데이트해 줍니다.

 

아래 명령어를 실행해주세요. 안 해도 상관없습니다만 일반적으로 리눅스는 서버 설치 또는 인스턴스 생성 후 기본적으로 진행하는 작업이 있습니다.

 

 

$ sudo apt update && sudo apt upgrade -y

 

설치가 끝나면 서버 시간대를 서울로 변경해줍니다.

 

# 시간 확인

$ date

# 기본 설정은 UTC 기준시로 되어있습니다.



# 시간대 서울로 변경

$ sudo timedatectl set-timezone Asia/Seoul



# 시간 재확인

$ date

 

 

재부팅해줍니다.

 

$ sudo reboot

 

 


 

3. Proxy 기능을 할 소스 배포

 

여기서부터는 생성된 서버에 프록시 역할을 할 프로그램을 넣고 잘 돌아가는지 테스트해 볼 단계입니다.

 

node js + express 조합으로 프록시 역할을 할 API 서버라고 보시면 될 것 같고 뭔소린지 모르겠다 하시면 그냥 어디로 우회하는 기능을 준비해놓는다 정도로 이해하시면 될 것 같습니다.

 

우선 nodejs npm 패키지 설치가 필요합니다.

 

공식사이트에서 제공하는 설치법 중 가장 쉬운 패키지 설치 방식

 

https://github.com/nodesource/distributions/blob/master/README.md#debinstall

 

nodesource/distributions

NodeSource Node.js Binary Distributions. Contribute to nodesource/distributions development by creating an account on GitHub.

github.com

 

장기 지원 버전으로 설치

 

# 차례대로 명령어 실행

$ curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -

$ sudo apt-get install -y nodejs

 

nodejs와 npm 버전 확인

 

 

설치가 잘 되었네요.

 

이제 proxy 역할을 할 소스를 받습니다.

 

# 현재 경로 확인
$ pwd
/home/ubuntu



# 소스 다운로드
$ git clone https://github.com/angkk2u/proxy_url.git

# 소스 받아졌는지 확인
$ ls -al
# proxy_url 디렉토리가 있는지 확인


# 받은 소스의 디렉토리로 이동
$ cd proxy_url


# npm 으로 의존성 패키지 설치
$ npm install

# 웹 서비스 실행
$ node bin/www

# 이렇게 실행해두고 창을 닫지마세요.
# 잘 동작하는지 테스트 후 pm2 패키지를 설치한 후 닫을 거에요.
# 아래쪽으로 계속 작업

 

방화벽에 3000포트로 접속할 수 있도록 추가해줍니다. 브라우저로 돌아가서 AWS Lightsail 사이트에서 관리로 들어갑니다.

 

 

 

네트워킹 탭에서 방화벽의 3000 포트를 추가합니다.

 

 

테스트 및 PM2 설치

 

지금까지 소스를 받아서 작업한 내용은 어떤 특정한 역할을 하는 웹 서비스를 생성한 작업입니다.

 

그 "역할" 이라는 것이 내가 원하는 주소를 일본 서버에서 읽어서 나에게 전달해줘 가 됩니다.

 

내가 국내 망에서 토렌트 사이트를 호출하면 차단당하니까요.

 

브라우저에서 http://35.74.211.133:3000 를 접속해봅니다.

 

저는 고정 아이피로 35.74.211.133을 할당받았습니다. 각자 받은 아이피에 맞게 수정해주세요.

(이 글을 볼 시점엔 저 아이피와 인스턴스는 사라지고 없을 거에요.)

 

 

Express 기본 페이지가 호출된다면 일단 서비스는 정상적으로 구동 된 것입니다.

 

http://[ip주소로변경]:3000/proxy/xml?protocol=https&domain=blog.oriang.net&path=rss

 

그리고 RSS 서비스 호출을 테스트해 봅니다. (제 블로그의 RSS로 테스트하였습니다.)

 

 

여기까지 보이시면 RSS 프록시 기능도 잘 동작하네요.

 

이제 서버를 백그라운드에서 계속 구동되도록 작업을 해줍니다.

 

pm2 패키지를 설치할 텐데요. pm2는 백그라운드 구동뿐만 아니라 node가 죽어도 살려주는 역할도 하게 됩니다.

 

# pm2 패키지 설치
$ sudo npm install pm2 -g

# pm2가 잘 설치되었는지 확인
$ pm2 -v

 

 

pm2에 프록시 웹 서비스를 등록해줍니다. 저와 동일하게 작업하셨다면 경로 또한 동일할 거에요.

 

 

$ pm2 start /home/ubuntu/proxy_url/bin/www

 

 

pm2에 프록시 웹 서비스를 등록해줍니다. 저와 동일하게 작업하셨다면 경로 또한 동일할 거에요.

 

$ pm2 list

 

pm2 모니터링 명령어는

 

$ pm2 monit

 

 

이제 실제 토렌트 사이트로 테스트해 봅니다.

 

토렌트 사이트의 RSS 주소가 https://torrentxxx.net/rss/ft/list 라고 가정하겠습니다. 

 

위 주소를 해체하여 각각 조립하듯이 세팅하여 호출할 것입니다.

(추후에 다른 사이트를 활용하기 위해 좀 더 범용적으로 만들기 위해 쪼개서 사용하도록 작업하였습니다.)

 

우리가 지금까지 세팅한 서버 주소는 http://35.74.211.133:3000/proxy/xml 입니다.

 

저 주소 뒤에 어떤 걸 붙이느냐에 따라 목적지에서 가져올 데이터가 달라집니다.

 

주소로 조립할 파라미터 명은 protocol, domain, path가 있습니다.

 

  • protocol : http 또는 https
  • domain : 토렌트 사이트의 도메인 (torrentxxx.net)
  • path : 토렌트 사이트의 도메인을 제외한 슬러시(/) 이후 오른쪽 값 (rss/ft/list)

 

이제 일본에 있는 내 서버에 시켜볼 차례입니다.

 

http://35.74.211.133:3000/proxy/xml?protocol=https&domain=torrentxxx.net&path=rss/ft/list

 

파란색은 파라미터 명으로 미리 정해놓은 이름입니다.

초록색은 파라미터에 해당하는 값입니다. 변경해주는 값입니다.

빨간색 ?는 파라미터=값 형태의 전달하는 정보를 시작하는 구분자로 생각하시면 됩니다.

빨간색 &는 파라미터=값 을 구분 지어주는 기호입니다.

 

 

호출이 잘 되면 이제 자동으로 다운로드를 시켜볼 단계로 넘어갑니다.

 

저 URL은 국내 TV RSS인데 한번에 50개 호출되고 있더라고요. 50개 이상이 갑자기 등록될 경우 내가 원하는 키워드가 다운로드되기 전에 최신리스트에서 넘어갈 수도 있습니다.

 

정확한 키워드가 있는 경우 그 키워드를 찜 한 뒤 생성된 그 URL을 활용하여 Download Station RSS에 등록해주면 좋습니다.

 

제가 예전에 세팅할 당시엔 50개가 아니었던 것 같은데..

 

어느 정도 살펴보니 그냥 이 주소로 해도 충분할 것 같습니다.

 

 


 

4. Synology NAS Download Station에서 RSS 설정

 

Synology DSM으로 접속한 뒤 Download Station 에서 RSS 설정을 해줍니다.

 

실제로 자동으로 다운로드를 시켜볼 차례입니다.

 

 

추가된 이후에 이름을 편집해서 변경할 수 있고 RSS Feeds 란에 항목들이 떠야 정상입니다.

 

 

키워드를 입력하여 일치하는 것만 다운로드 되도록 합니다.

 

다운로드 필터 탭으로 이동한 뒤 추가 버튼을 누르면 자동으로 다운로드 할 조건을 입력할 수 있습니다.

 

 

영상소스가 720p 인 것만 받기 위해 정규식을 사용하여 구문 분석을 체크하고

 

"키워드" "720" 만 수정하여 사용하세요.

 

.*(키워드).*(720).*

 

 

두 개 이상 조합 시 아래 "키워드1" "키워드2" "720"만 수정하여 사용하세요.

 

.*(키워드1).*(키워드2).*(720).*

 

정규식에 지원하는 문법 안내가 공식 사이트에 없네요. 안되는 문법이 있어서 일반적인 정규표현식을 생각하고 막 넣으면 동작 안 하더라구요.

 

Lookaround, Character classes 정규표현식 패턴 테스트에서 되는 기능들이 일부 안돼서 정교한것 보단 잘못 받아지더라도 좀 더 포괄적인 표현식을 쓰는 것이 좋을 것 같습니다.

 

 


 

정리

 

이렇게 국내에서 막혀서 접속 못 하는 토렌트 사이트 RSS를 해외 서버로 우회하여 자동으로 다운로드하도록 적용해보았습니다.

 

각 단계별로 선택지가 더 많이 있습니다마는

  • 일단 저의 시놀로지는 도커가 안된다. (가장 큰 제약)
  • 도커가 안되니 시놀에서 차단 사이트 우회를 직접 하지 못한다.

 

NAS에서 직접 도커를 못쓰는 상태라면 이 방식이 가장 저렴하고 안정적이라 생각됩니다.

 

 

 

아래 추가 사항은 따로 검색하셔서 작업해두시면 좋습니다.

 

추가. 토렌트 다운로드 완료 시 다운로드 작업 삭제

추가. 토렌트 다운로드 완료 시 알림

 

 

 

 

 

긴 글 읽어주셔서 감사합니다.

 

 

 

 

반응형
반응형

 

부모님 댁에 있던 사연 있는 플러그입니다. 약정이 끝나고 이건 남겨두고 갔더군요. 그래서 지금은 제 집에서 활용 중입니다.

 

가끔 당근에 올라오는데 저렴하게는 만원에도 올라오더군요.

 

 

 

 

  • Z-Wave Stick

모델명 : GWG-02

uplus에서 서비스하고 있으니 당연히 국내 주파수를 쓰고 있습니다.

 

 

https://products.z-wavealliance.org/products/2113?selectedFrequencyId=17 

 

https://products.z-wavealliance.org/products/2113?selectedFrequencyId=17

LGUplus IoT Hub is universal controller which can control several control groups. This IoT Hub can support full function of notification sensor, On/Off switch, Valve, Open/Closed and Door Lock products made for LGUplus. Other products made as general Z-Wav

products.z-wavealliance.org

 

 

 

  • 플러그

모델명 : SPD-02A

제조사 : 다원 DNS

 

 

https://products.z-wavealliance.org/products/2142?selectedFrequencyId=17 

 

https://products.z-wavealliance.org/products/2142?selectedFrequencyId=17

The device can remotely power on/off to the load connected and will inform you of the electricity usage of your load. You can use it to measure the power of the load connected to the device (currently instantaneous power & used power).

products.z-wavealliance.org

 

세팅법

 

 

 1. 라즈베리파이에 스틱을 꽂아줍니다. 초록색 불이 들어옵니다.

 

 

 2. Z-Wave JS 애드온 설치 (공식 애드온)

 

 

 

애드온 설치 후 device를 usb로 선택해줍니다.

 

 

 

구동한 뒤 로그를 확인합니다.

 

 

 

 

저는 이미 설정이 되어있어서 Node 1번과 4번이 뜨는데 처음 등록할 때는 바로 뜨는지 모르겠네요.

 

Node 1은 Z-Wave 스틱이고 4번이 플러그입니다.

 

기기를 지웠다가 추가했다 하면서 증가했는데 환경마다 다르니 기기 목록에서 확인해보시면 됩니다.

 

 

 

플러그에서 5초간 버튼을 누르고 잠시 후(저는 한참 후....) Home Assistant에서 기기가 잘 보이는지 확인해줍니다.

 

이 과정을 하고 나면 플러그 Node 가 Z-Wave JS 로그에 떴던 것 같아요.

 

플러그가 전원 콘센트에 꽂혀있는 상태에서 버튼을 5초간 누르면 적색 LED가 점멸하게 될 때 손가락을 떼라고 매뉴얼에 나와있네요.

(위에 z-wavealliance 링크 타고 들어가시면 제조사 제공 매뉴얼이 있습니다.)

 

10초간 누르면 초기화된다고 합니다.

 

 

 

기기가 잘 등록되었는지 확인합니다.

 

 

 

Z-Wave JS 구성요소에 등록된 기기가 2개 확인됩니다. 기기가 추가되면 알림 메뉴에도 뜹니다.

 

 

 

취침등 콘센트를 클릭합니다. (저는 이미 등록 후 이름을 변경해서 이렇게 뜹니다)

 

 

 

Lovelace에 추가해줍니다.

 

 

이 방식이 아니더라도 둘러보기(Lovelace)에서 대시보드 편집으로도 추가 가능합니다.

 

 

저는 Google Assistant와 Home Assistant 연동 시 기기 동기화를 수동으로 설정했기 때문에 configuration.yaml 파일을 수정한 후 구글 홈 앱에서 새로 동기화를 해주었습니다.

 

 

바로 기기가 등록되고 음성인식 사용되네요.

 

 

 

 

 

 

 

반응형
반응형

사전 준비 사항

 

Google Assistant 연동 전 미리 준비해야 할 것이 있습니다.

 

Home Assistant를 설치하고 나서 http://ip주소:8123로 접속하실 텐데 Google과 연동하려면 https로 외부 서비스가 가능해야 합니다.

 

결론은 도메인이 필요하고, SSL 인증서가 필요합니다.

 

도메인은 무료든 구매하시든 상관없고 카페에선 dockdns를 많이 사용하시네요.

 

인증서는 무료인 Let's Encrypt를 많이들 쓰고 있습니다.

 

 

방법 1. 간단하게 Duck DNS 애드온으로 적용하는 가장 쉬운 방법입니다.

HomeAssistant

 

[유튜브] 7편. HA 설정하기 03 - HTTPS 접속하기 첫번째

안녕하세요~ 레이군 입니다.HA설치하기 일곱번째 시간을 들고왔어요..오늘도 뭔가 많네요....이쁜 모션그래픽을 넣을줄 모르는 1인이니, 저희 아들들 사진으로 채웠습니다!

cafe.naver.com

 

 

방법 2. Synology DDNS를 사용하고 있다면 깔끔하게 sub 도메인으로 추가할 수 있습니다.

https://ha.xxxx.synology.me 식으로 접속이 가능합니다.

HomeAssistant

 

Synology DSM 역방향 프록시 설정 (https:// 주소 사용하기)

대한민국 모임의 시작, 네이버 카페

cafe.naver.com

 

 

기타 방법. 개인 도메인 + SSL 인증서 적용

 

저는 개인 도메인에 Home Assistant 운영 중인 IP로 서비스 도메인을 연결하고 Let's Encrypt로 인증서를 받아서 https를 적용하였습니다.

 

 

Let's Encrypt는 3개월 단위로 갱신이 필요하니 주기적으로 갱신하도록 자동화하는 것이 중요한 포인트입니다.

 


통합 구성요소 수동 등록

 

구글의 음성인식을 사용해서 Home Assistant에 등록된 기기들에게 일을 시켜볼 단계입니다.

 

구글에서 요구하는 https 주소를 갖는 것을 사전 준비사항에서 진행을 했고요.

 

아래 두 가지 작업을 진행하겠습니다.

  1. Google Assistant에게 내 음성을 통해 시킬 준비
  2. Home Assistant에게 Google Assistant가 시키면 받아들일 준비

 

1. Google Assistant에게 내 음성을 통해 시킬 준비

번역본(일부 공식 매뉴얼과 다른 내용이 있어 번역본은 참고만 하였습니다.)

구글 어시스턴트(Google Assistant)

 

구글 어시스턴트(Google Assistant)

Setup for Google Assistant integration

hakorea.github.io

공식 매뉴얼 Google Assistant

 

Google Assistant

Setup for Google Assistant integration

www.home-assistant.io

 

 

 

1. Actions on Google console 프로젝트 생성 및 설정

 

Actions on Google은 사용자가 Google 어시스턴트를 사용해 작업을 수행하도록 지원하는 서비스입니다.

 

쉽게 말해, 내가 구글 홈 미니를 통해서 말하는걸 → (음성인식 기능은 AI 스피커를 활용) → Home Assistant가 뭘 해야 할지를 정해준다(Action)입니다.

 

계정은 별도로 하나 더 생성하시길 추천드립니다. 개인 계정의 많은 연결된 동기화 서비스(캘린더, 연락처, 메모 등)가 구글 홈 미니를 통해 공유될 수 있습니다.

 

개인 계정 외 집 제어용 xxxxx.home@gmail.com 정도가 딱 적당합니다.

 

 

 

https://console.actions.google.com/ 접속하여 로그인 후 New project를 누릅니다.

 

프로젝트 명은 알아서 정하시면 돕니다. 언어와 지역을 선택해줍니다.

 

 

 

Smart Home 클릭 후 Smart Building 클릭

 

Action 추가하기

 

아래 이미지 참고하여 Action 추가 메뉴로 접속

 

 

Fulfillment URL을 작성합니다.

 

https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant

 

붉은색 부분을 자신의 Home Assistant 주소를 적어줍니다.(https 작업했던 주소)

 

 

저장 후 프로젝트 설정에서 Project ID를 메모장에 잘 복사해둡니다. (잠시 뒤 사용 예정)

 

 

Account linking 메뉴로 가서 Home Assistant와 연동에 필요한 설정을 합니다.

 

Client ID : https://oauth-redirect.googleusercontent.com/r/[YOUR_PROJECT_ID]

(위에서 복사해놨던 Project ID를 여기서 붙여 넣습니다)

 

Client Secret : 아무거나

(Home Assistant에서는 안 쓰인다고 아무거나 하라네요)

 

Authorization URL : https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize

Token URL : https://[YOUR HOME ASSISTANT URL:PORT]/auth/token

 

Configure your client의  scopes에 email 입력 후 add scope 누르고 , name을 입력 후 add scope 눌러 각각 추가해줍니다.

 

Google to transmit clientID and secret via HTTP basic auth header 은 체크를 해제해줍니다.

 

 

테스트 앱을 생성해줍니다

 

 

기기 테스트가 활성화되어있는지 확인합니다.

 

 

2. 다른 사용자 추가 필요시

 

Google Assistant를 통해 가족 등이 제어를 위해 권한 추가할 경우 아래 링크 참고하시면 됩니다. 제 경우는 구글 홈 미니를 통해서만 음성인식을 할 경우라 이 과정을 진행하지 않았습니다. 나중에 추가 가능합니다.

 

가족 초대가 필요할 경우 - Google Assistant

 

 

 

3. 기기 동기화 설정

 

구글 서버와 상태 정보를 동기화하기 위해 필요한 작업입니다.

 

 

서비스 계정 생성을 위해 GCP 콘솔 사이트로 이동합니다.

 

https://console.cloud.google.com/apis/credentials/serviceaccountkey

 

Google Cloud Platform

하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.

accounts.google.com

 

 

프로젝트 선택 후 서비스 계정 만들기

 

 

적당한 이름으로 생성

 

저는 이미 만들어놓은 게 있는데 스샷 찍으려고 하나 더 만들어 봤습니다.

 

 

서비스 계정 > 서비스 계정 토큰 생성자 권한 추가

 

 

 

 

계속 후 완료

 

 

 

키 관리에서 키를 생성합니다.

 

 

 

 

 

 

생성된 json 파일이 다운로드됩니다. 이 파일 이름을 service_account.json으로 변경합니다. 나중에 Home Assistant에서 사용됩니다.

 

HomeGraph API 사용 설정해줍니다.

 

https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview

 

Google Cloud Platform

하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.

accounts.google.com

 

 

 

 

 

Home Assistant 구성 설정

 

 

애드온 스토어에서 파일 에디터나 Visual Studio Code를 설치해줍니다.

 

 

받아놨던 service_account.json 파일을 config 경로에 업로드해줍니다.

 

 

 

config 폴더에 있는 configuration.yaml을 편집합니다. (통합과 구성 관련된 메인 파일)

 

 

# Example configuration.yaml entry
google_assistant:
  project_id: YOUR_PROJECT_ID
  service_account: !include SERVICE_ACCOUNT.JSON
  report_state: true
  exposed_domains:
    - switch
    - light
  entity_config:
    switch.kitchen:
      name: CUSTOM_NAME_FOR_GOOGLE_ASSISTANT
      aliases:
        - BRIGHT_LIGHTS
        - ENTRY_LIGHTS
    light.living_room:
      expose: false
      room: LIVING_ROOM

 

Google Assistant 정보와 구성요소 (스위치, 전등 등)를 입력할 겁니다.

 

Home Assistant에서 등록해둔 구성요소를 자동으로 불러올 수도 있고 수동으로 등록할 수 있는데 저는 수동으로 설정했습니다.

 

 

제가 쓰고 있는 설정입니다. (#은 주석입니다.)

 

# Google Assistant Configuration
google_assistant:
  project_id: YOUR_PROJECT_ID # services_account.json 파일 안에 있는 project_id
  service_account: !include service_account.json
  report_state: true
  expose_by_default: false # 기본적으로 기기들을 연동할지 여부를 결정 (수동으로 추가하기 위해 false 처리)
  entity_config: 
    light.kocom_bedroom_light0: # 안방 전등
      name: 전등
      expose: true
      aliases:
        - 전등
        - 불
      room: 안방
    switch.node_4: # 안방 취침등
      name: 취침등
      expose: true
      room: 안방
    light.kocom_dressingroom_light0: # 옷방 전등
      name: 전등
      expose: true
      aliases:
        - 전등
        - 불
      room: 옷방
    light.kocom_livingroom_light1: # 거실 전등
      name: 전등
      expose: true
      aliases:
        - 전등
        - 불
      room: 거실
    light.kocom_kitchen_light1: # 주방 전등
      name: 전등
      expose: true
      aliases:
        - 전등
        - 불
      room: 주방
    light.kocom_kitchen_light2: # 식탁 전등
      name: 전등
      expose: true
      aliases:
        - 전등
        - 불
      room: 식탁
    light.kocom_playroom_light0: # 컴퓨터방 전등
      name: 전등
      expose: true
      aliases:
        - 전등
        - 불
      room: 컴퓨터방
    switch.kocom_wallpad_elevator: # 엘리베이터
      name: 엘리베이터
      expose: true
    fan.kocom_wallpad_fan: # 환기
      name: 환기
      expose: true
      room: 오리네

 

 

설정 파일에 대한 설명은 공식 가이드 또는 번역 페이지 보시면 됩니다.

 

 

https://www.home-assistant.io/integrations/google_assistant/#configuration-variables

 

Google Assistant

Setup for Google Assistant integration

www.home-assistant.io

https://hakorea.github.io/integrations/google_assistant/#configuration

 

구글 어시스턴트(Google Assistant)

Setup for Google Assistant integration

hakorea.github.io

 

 

여기까지 진행하셨다면 Google Assistant와 Home Assistant가 연동되도록 "설정"까지 된 것입니다.

 

 

Google Home 앱에서 Home Assistant의 기기를 등록해주면 구글 홈 미니의 음성인식을 활용하여 기기를 제어할 수 있게 됩니다.

 

 

 

안드로이드 기준으로 작성하였습니다.

 

 

Google Home 앱을 설치하고 + 버튼을 눌러 추가해줍니다.

 

 

혹시 구글 계정을 여러 개 사용하신다면 Actions on Google에 사용한 계정으로 로그인해줍니다.

 

 

Google 호환 기능을 누르고 Actions on Google에서 만들었던 앱을 선택해줍니다. 만들 당시 이름을 지정하셨다면 그 이름으로 찾으시면 됩니다.

 

Actions on Google에서 만든 앱을 선택하면 Home Assistant 로그인 창이 뜹니다.

 

로그인을 하고 나면 설정해뒀던 기기들이 등록됩니다.

 

 

 

 

 

구글 홈 미니를 등록해두었다면 오케이 구글, 안방 불 꺼줘 라고 말하면 불을 꺼줍니다.

 

 

 

엘리베이터는 스위치로 등록되어있어서 엘리베이터 켜줘 라고 말해야 호출이 됩니다.

 

 

 

 

반응형
  1. 긴밤천국 2021.06.16 11:30

    정말 도움이 많이 되었습니다. 감사합니다.

  2. 궁금해요! 2021.06.28 00:26

    https://www.home-assistant.io/integrations/google_assistant/#configuration
    여기 가이드 보면 configuration.yaml에
    project_id를 아래와 같이 설정하라고 하는데요
    Project ID from the Actions on Google console (looks like words-2ab12)

    이 값은 service_account.json 하고는 다른값인데 무얼 적어야 할까요?

    • 오리야호 2021.06.30 01:11 신고

      혹시 동일한 계정에 동일한 프로젝트를 선택하신게 맞으신가요?
      https://console.actions.google.com/ 에서 생성한 프로젝트는 https://console.cloud.google.com/ 에서 동일한 프로젝트로 생성한 서비스토큰생성자의 키는 동일한 프로젝트 ID를 가져야 합니다~~

반응형

Home Assistant에 코콤을 연동하기 위해 2개 애드온 설치가 필요합니다.

 

 

 

1. Mosquitto (MQTT broker) 설치

MQTT가 무엇인지 궁금하신분은 아래 글을 읽어보시면 도움이 될 것 같습니다.

medium.com/@jspark141515/mqtt%EB%9E%80-314472c246ee

 

MQTT란?

MQTT는 M2M, IOT를 위한 프로토콜로서, 최소한의 전력과 패킷량으로 통신하는 프로토콜입니다. 따라서 IOT와 모바일 어플리케이션 등의 통신에 매우 적합한 프로토콜입니다.

medium.com

 

 

공식 애드온에서 Mosquitto broker 설치 후 설정

 

공식 애드온에서 Mosquitto broker 설치

 

구성 탭에서 아래와 같이 설정해줍니다. (기본값에서 로그인정보만 추가해줬습니다.)

logins:
  - username: 아이디
    password: 패스워드
anonymous: false
customize:
  active: false
  folder: mosquitto
certfile: fullchain.pem
keyfile: privkey.pem
require_certificate: false

 

 


 

 

2. 코콤 애드온 설치

 

코콤 애드온 설치

저장소 URL

 

github.com/HAKorea/addons

 

HAKorea/addons

Korean Community Add-ons for HA Supervised(Hassio) - HAKorea/addons

github.com

 

 

 

설정 방법

github.com/HAKorea/addons/tree/master/kocomRS485#installation

 

HAKorea/addons

Korean Community Add-ons for HA Supervised(Hassio) - HAKorea/addons

github.com

 

 

설정이 잘 되었다면 코콤 월패드에서 제어 하는 조명, 플러그, 보일러, 환기, 가스, 엘리베이터 제어가 HA 에서도 가능해집니다.

 

Mosquitto broker와 Kocom Wallpad Controller with RS485 애드온이 잘 돌고 있다면 로그에 잘 찍히는 것을 확인할 수 있습니다.

 

 

 

또 다른 확인 방법은 MQTT Explorer 프로그램을 사용해서 데이터를 볼 수 있습니다.

 

MQTT Explorer 접속 설정

 

MQTT 데이터 확인 가능합니다.

 

MQTT Explorer 데이터 확인

 

여기까지 오셨다면 Home Assistant에서 제어가 가능해집니다.

 

왼쪽메뉴의 둘러보기가 lovelace라는 대시보드 형태로 된 곳이고 여기에 여러 카드를 추가할 수 있습니다.

 

 

 

 

이제 마지막 단계는 Google Assistant를 통해 음성인식으로 Home Assistant의 기기들을 제어 하는 것만 남았네요.

반응형

+ Recent posts