반응형

부제: usb 선풍기를 wifi 로 제어하고 home assistant 에 연동하기 (ESPHome, Wemos d1 mini)

 

집에 장미를 들였는데 흰가루 병에 걸렸다.

수국 흰가루병

 

 

바람을 자주 쐬어줘야 좋다는 이야기를 듣고 굴러다니는 usb 선풍기를 찾아서 켜주곤 했는데,

매일 켜고 끄는것도 일이어서 자동화를 시동해 보았다.

 

먼저 선풍기를 뜯어서 어떤식으로 동작을 해야할지 생각해야 한다.

딱 보니까 뜯어서 푸쉬버튼을 누르는 동작을 릴레이나 트랜지스터로 구현하면 될 것 같다.

 

선풍기

 

 

뜯어봤다.

 

usb를 통해서 5v 입력을 받는데 여기서 선을 따서 wemos d1 mini(esp8266) 을 구동하면 될듯 싶다.

그리고 푸쉬버튼과 기판 프린팅을 보고 연결해야 할 부위를 찾는다.

 

아래 그림에서 보듯이 푸쉬버튼을 누를때 하나가 빨간선 두쌍을 연결해준다.

 

 

준비물

  1. 인두
  2. wemos d1 mini  ( + 롬라이팅용 usb 케이블 )
  3. 2n2222A BJT 트렌지스터 3개 또는 필요 수량
  4. 저항 1k옴 전후 3개 또는 필요 수량
  5. 연결용 전선
  6. 잘 셋팅된 Home assistant 와 esphome 애드온

 

 

 

작업사진

wemos d1 mini d5 와 d6 를 켜줄때만 push 버튼 양단이 통전 되도록 해준다.

보통때는 잘 열리지 않도록 d5, d6에 저항을 물려줬다.

 

 

 

D5(또는 D6) 가 트랜지스터 2번 핀에 연결되어야 하고, 1,2 는 push 버튼 양단에 연결해주면 된다.

보통은 3->1 방향으로 전류가 흐르기 때문에 3번을 ground 에 연결해주면 된다.

(반대로 해도 큰 상관 없을 것 같다.)

 

트랜지스터 구조

 

 

건전지 넣는 위치를 뜯어서 선을 빼주자.

 

 

 

이제 esphome 롬파일을 만들자.

 

esphome 에 들어가서 우측 하단 +를 눌러서 Create New node 를 해보자.

1. node name은 원하는 내용을

2. device type 은 wemos D1 mini 를 고르고

3. wifi는 사용하는 와이파이를 누르고 

4. finish 를 하면 완성이 된다.

 

그리고 아래와 같이 넣어줬다. 버튼 하나는 켜고 하나는 끄는 버튼을 할당해줬다.

당연히 계속 버튼이 눌려있으면 안되니까 시간 간격을 두고, 혹시 모르니 두번씩 눌리게 했다.

 

 

esphome:
  name: usb_fan
  platform: ESP8266
  board: d1_mini

wifi:
  ssid: "YOUR_SSID"
  password: "YOUR_PASSWORD"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Mini-Usb-Fan Fallback Hotspot"
    password: "YByZ8eeeekW"

captive_portal:

# Enable logging
logger:
  level: DEBUG #기본값

# Enable Home Assistant API
api:
  password: "YOUR_API_PASSWORD"

ota:
  password: "YOUR_API_PASSWORD"


switch:
- platform: gpio
  pin: D6
  id: btn_off
- platform: gpio
  pin: D5
  id: btn_on

- platform: template
  name: "Usb Fan"
  optimistic: true
  turn_on_action:
  - switch.turn_on: btn_on
  - delay: 0.1s
  - switch.turn_off: btn_on
  - delay: 0.3s
  - switch.turn_on: btn_on
  - delay: 0.1s
  - switch.turn_off: btn_on
  turn_off_action:
  - switch.turn_on: btn_off
  - delay: 0.1s
  - switch.turn_off: btn_off
  - delay: 0.3s
  - switch.turn_on: btn_off #press off button twice just in case
  - delay: 0.1s
  - switch.turn_off: btn_off

 

 

 

이제 home assistant 에서 통합구성요소를 추가하면 된다.

esphome 을 찾아서 선택하고 위에서 만들어진 녀석 ip를 넣어주면 된다.

 

 

이제 home assitant 에서 switch 로 인식이 된다.

끄고 켜는것 모두 잘 된다. 이제 자동화나 스케쥴 등록이 가능하다.

 

 

반응형
반응형

HA+ESP8266+CC2530+CC2591 = Zigbee2Mqtt

 

 

home assistant 에서 zigbee2mqtt 를 사용중이다.

zigbee 장치는 보통 전용 브랜드의 게이트웨이나 브릿지에 연결된다 (휴 브릿지, 트로드프리 게이트웨이 등)

당연히 다른 회사 장비들 끼리는 호환이 제대로 되지 않고 브릿지도 비싸다.

Home assistant 를 꾸미고 범용으로 사용할 수 있는 zigbee coordinator 를 사용하는 방법이 몇가지 있는데 지원하는 장치가 많은 방식으로 가장 유명한게 ZHA와 Zigbee2mqtt 가 있다.

이번에 꾸민 HA+ESP8266+CC2530+CC2591 의 대략적인 동작 형태를 먼저 설명해보자면 아래와 같다.

동작 형태 HA+ESP8266+CC2530+CC2591

  1. Coordinator (CC2530+CC2591)를 serial 로 ESP8266 에 연결
  2. ESP8266 은 tcp serial server 로 동작
  3. zigbee2mqtt 는 hass.io 애드온으로 동작, ESP8266 tcp 서버에서 데이터 받아서 mqtt 서버로 보내줌
  4. hass.io 에 설치한 mqtt broker(서버) 에서 수신
  5. Home asssitant 통합구성요소에서 mqtt 장치 확인 및 사용
    + zigbee 장치 coordinator 와 페어링. zigbee2mqtt 프론트 페이지에서 페어링 모드 설정 및 결과 확인 가능

보통 CC2531 을 USB에 꽃아서 사용하는데 위와 같이 진행 한 이유는 NAS는 신발장 안에 있어서 zigbee 장치를 사용하 는 위치가 너무 멀어서다. 이렇게 esp8266과 합체하면 wifi로 연결되니 멀리 던져놓아도 된다. 그리고 CC2530+CC2591 이 무선 신호 증폭이 되어서 사용 가능 범위가 훨씬 넓다. (대략 2~3배)


생각보다 해야 할 일들이 많다.

준비물

  1. CC2530+CC2591 : 알리 익스프레스에서 구입 (약 8$ + 배송비 2$)
  2. ESP8266 또는 ESP32 구입 : ESP32가 더 좋긴 한데 집에 굴러다니는 wemos d1 mini(esp8266) 사용. (약 2$ + 배송비 0~2$)
  3. 점퍼 케이블, 인두와 납 : ESP8266 핀이 납땜 안되있을 경우 납땜이 필요하다.
  4. CC 디버거 또는 라즈베리파이 또는 ESP8266 : CC2530 에 펌웨어를 넣기 위해 필요하다. 나는 라즈베리파이 사용

진행방법

  1. 라즈베리파이로 펌웨어를 넣어준다.
    아래와 같이 연결해줘야 한다. 핀맵 그림을 참조하자.
Raspberry Pi        CC2531
GND            GND
Pin 38            DD
Pin 36            DC
Pin 35            RST

  1. ESP8266 펌웨어를 TASMOTA ZBbridge 버전으로 넣어준다. (이 버전만 tcp server 사용 가능하다)
    아래 사이트에서 tasmota-zbbridge.bin.gz 를 받아서 라이팅 하면 된다.
    http://ota.tasmota.com/tasmota/release/
  2. 라이팅은 https://github.com/tasmota/tasmotizer 를 설치하고 esp8266(wemos d1 mini) 를 usb로 연결하고 바로 라이팅 하면 된다.
  3. wemos d1 mini가 재부팅 되면 wifi 로 TASMOTA 에 접속한 후 사용할 와이파이 SSID 와 비밀번호를 넣어준다.
    그리고 재부팅 되는데 config에서 module 설정, General(18)로 재빨리 바꾸고 저장해준다.
    1분쯤 지나면 wemos d1 mini가 초기화된다. zigbee 장치가 아니라서 그런 듯 싶다.
  4. wemos d1 mini 와 CC2531을 연결해준다
    여기서는 wemos d1 mini 의 D7, D8 을 TX RX 로 활용하였다.
    ESP8266 CC2530
    3v3 VCC
    GND GND
    TX P02
    RX P03
    GND P20

  1. TASMOTA 설정
    라이팅된 wemos d1 mini의 TASMOTA 로 접속해서 "Configuration", "configure Module" 에서 Rx, Tx pin을 맞게 지정해준다.
    그리고 Tasmota 메인 화면에서 Console 로 들어가서 아래와 같이 입력해놓자.
  2. Rule1 ON System#Boot do TCPStart 8888 endon Rule1 1
  3. 이제 Zigbee2mqtt 의 configuration.yaml 파일을 열어서 해당 wemos d1 mini 에 연결되도록 ip와 포트를 지정해준다.
  4. serial: port: 'tcp://192.168.2.13:20108'

 

이상하게도 Wemos d1 mini는 espeasy 에서 잘 안되더라....

기본 rx, tx pin을 사용해도 안되서 TASMOTA 로 진행했다.

 

이제 원하는 장소에서 usb 전원만 공급하면 원격 zigbee2mqtt 코디네이터로 사용하면 된다.

 

 

참조 링크 : https://www.zigbee2mqtt.io/information/connecting_cc2530.html

반응형
반응형

home asssitant 사용 중 센서나 전등 등의 상태 변화나(로그북) 그래프를 확인하고 싶을때가 많다.

처음에는 별 상관 없는데 등록된 디바이스들이 많을 수록 데이터베이스 용량이 커져서 검색이 오래걸린다.

 

내 경우에는 전등 20개, 스위치 10개, 디바이스 트래커 30개, 센서류 20개 뭐 이정도 등록된거 같은데 home-asistant_v2.db 파일 용량이 2gb 가 넘었다. 물론 7일마다 삭제 되도록 옵션을 넣었지만...

 

해결 방법으로는 recoder 에서 include, exclude를 적절히 사용해서 필요 없는 내용을 기록하지 않거나(근데 지정하는것도 귀찮다)

www.home-assistant.io/integrations/recorder/

 

db 를 바꿔서 검색 속도를 빠르게 하는 방법이 있다.

 

 

당연히 귀찮으니까 db를 사용해보자.

 

물론 편리함을 위해 hass.io 쓰고 있다는 가정하에..

 

supervisor 에서 MariaDB add-ons 을 깔아준다.

 

config 는 아주 간단하게만 적용해주자.

자동시작 등록해놓고, 시작해주자.

databases:
  - homeassistant
logins:
  - username: yourID
    password: yourPassword
rights:
  - username: homeassistant
    database: homeassistant

 

이제 home assistant 에서 config 파일을 수정해보자.

 

HA 설정 폴더에서 configuration.yaml 파일을 열고 아래처럼만 넣어주면 된다.

물론 다른 recoder 옵션들을 사용해도 된다.

recorder:
  db_url: mysql://yourID:yourPassword@core-mariadb/homeassistant?charset=utf8mb4

 

이제 home assistant 를 재시작 하면 mariaDB가 적용되서 모든 기록들 검색이 매우매우 빨라진다.

 

 

 

꼭 적용해둘것!

반응형
반응형

다원 WIFI 스마트 플러그를 사용자 컴포넌트 만들어 주신분이 있어서 Home Assistant 에서 직접 사용이 가능 했었는데

나름(?) 보안 패치를 했는지 사용이 막힌지 꽤 오래 되었다.

그냥 저냥 smart things 와 home assistant 를 연결해서 썼는데 이건 전력량 모니터링, 전력량에 따른 동작 등등 다양한 활용 방법이 막혀있다.

 

찾아보니 벌써 해결책이 나와 있다.

저작권을 위해 링크만 걸겠다.

 

방법은 초기화 후 서버로 연결을 안시키고 집에서 만들어놓은 mqtt 서버에 연결시키는 방법이다.

 

cafe.naver.com/koreassistant/1977

 

다원 WIFI 스마트 플러그 (B530-WF/B540-WF) 로컬 등록 (이것도 너프해보시지)

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

cafe.naver.com

 

부족한 내용을 조금 설명하자면

모델명 400 은 일단 안되었다. 뭐가 다른지 모르겠는데 안되니까 슬프게도..

 

그리고 hass.io 에서 add-on 으로 mqtt borker 를 사용중이면 간단하게 config를 사용중일텐데,,

플러그 한개당 한개씩 아이디가 필요해서 사용자 추가 어떻게 해야 하나 고민된다.

그런데 그냥 사용자/비번을 여러줄 넣어주면 된다.  (아래 스샷처럼)

 

 

이제 요녀석을 이용해서 여러가지 활용이 가능하다. 전력 모니터링, 과부하시 종료, 한개 켜면 다른 스위치 자동으로 켜고 끄기 등등..

 

반응형

+ Recent posts