스마트홈 구축기

[스마트홈 구축기 26] Sonoff Zigbee dongle로 지그비 네트워크 확장하기(Router firmware 올리기)

시들지 않는 무지개 2024. 1. 7. 19:41
728x90

스마트싱스에서 home assistant로 플랫폼 변경하면서 지그비 네트워크 신뢰성이 정말 좋아지긴 했는데 가끔씩 화장실이나 세탁실 같은 곳에서는 아주 간헐적으로 기기 오프라인이 뜨기도 하고 연결신호도 낮은 편이긴 하다. 신호 리피팅 목적으로 스마트 플러그를 많이 배치하긴 했는데 특히 화장실은 구조상 기기 배치를 천장 위에다 해야 해서 어떻게 배치를 해도 좀처럼 나아지지 않았다. 그래서 보통 코디네이터로 많이 쓰는 sonoff zigbee dongle-p를 router firmware를 올려서 라우터로 사용하기로 했다.
 
<sonoff zigbee 3.0 USB Dongle Plus-P>

SONOFF Zigbee 3.0 USB Dongle Plus-P - SONOFF Official

Zigbee 3.0 USB Dongle Plus is a product that can manage Zigbee end devices and access to home assistant to create a smart home.

sonoff.tech

 
적용해보니까 일반적인 스마트 플러그와 sonoff dongle을 적용했을 때의 차이점은, 지그비 네트워크 지도 관점에서 sonoff dongle이 스마트 플러그 대비 좀 더 넓은 영역의 많은 기기와 연결이 되어 있는 것을 볼 수가 있었다. 즉 커버리지가 넓다는 점이 있을 것 같고, 두 번째로 sonoff dongle의 경우는 신호 출력을 최대 20 dBm까지 매뉴얼로 조정을 할 수가 있었다. 
 

좌측: 스마트 플러그(은서방 가습기, 다원 플러그)와 연결되어 있는 기기들, 우측: sonoff dongle(빨간색)과 연결되어 있는 기기들, 파란색 기기들이 라우터 기능을 하는 기기들인데 우측 이미지의 sonoff dongle의 경우 모든 라우터 기기들과 연결되어 있다.

 
라우터 기능만 필요하다면 가격면에서 스마트 플러그보다는 sonoff dongle에 라우터 펌웨어를 올려 쓰는게 훨씬 싸고 성능도 좋은 걸로 생각이 된다.
 

라우터 펌을 올린 sonoff dongle. 5V 1A짜리 USB-A 충전기에 연결해서 음영 지역에 꽂아 놓으면 된다.

 
펌웨어를 올리는 방법은 몇가지가 있는데, 내 경우에는 dongle을 노트북 USB에 연결했을 때 알려진 방법대로 버튼을 누르고 있어도 부트모드로 진입을 안 해서 결국 파이썬을 이용한 방법을 활용했다.
 
펌웨어를 올리는 과정은 아래의 동영상을 참고를 했다.
https://youtu.be/4eYnURcDrWw?feature=shared

출처 : 유튜브 채널 "Byte of Geek"

일단 위의 방법은
1번 파이썬 설치, 2번 dongle을 윈도우 노트북에 연결할 때 바로 인식을 안하기 때문에 이를 위한 드라이버 설치, 3번 dongle의 부트 모드로 진입하기 위해 필요한 부트로더 설치, 4번 플래싱할 펌웨어를 다운 받기, 5번 윈도우 명령 프롬프트에서 몇 가지 명령어를 통해 플래싱 하기 순으로 진행된다.
 
파이썬 다운로드 : https://www.python.org/downloads/

Download Python

The official home of the Python Programming Language

www.python.org

 
드라이버 다운로드 : https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers

CP210x USB to UART Bridge VCP Drivers - Silicon Labs

The CP210x USB to UART Bridge Virtual COM Port (VCP) drivers are required for device operation as a Virtual COM Port to facilitate host communication with CP210x products. These devices can also interface to a host using the direct access driver.

www.silabs.com

 
부트로더 다운로드 : https://github.com/JelmerT/cc2538-bsl

GitHub - JelmerT/cc2538-bsl: Python cross-platform script to upload firmware via the serial boot loader onto the CC13xx, CC2538

Python cross-platform script to upload firmware via the serial boot loader onto the CC13xx, CC2538 and CC26xx SoC. - GitHub - JelmerT/cc2538-bsl: Python cross-platform script to upload firmware via...

github.com

 
코디네이터 펌웨어 다운로드 : https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_3.x.0/bin
라우터 펌웨어 다운로드 : https://github.com/Koenkk/Z-Stack-firmware/tree/master/router/Z-Stack_3.x.0/bin
 
※ 24년 1월 기준 최신 펌웨어는 sonoff zigbee donlge의 경우에는 CC1352 P2_CC2652 P_launchpad_coordinator_20230507.zip 혹은  CC1352 P2_CC2652 P_launchpad_router_20221102.zip을 다운로드하였다.
 

■ 순서

1. 파이썬 설치(다운로드 링크)
 
2. dongle을 USB 연결 후 드라이버 설치(다운로드 링크)
 
3. 명령 프롬프트에서 아래 3개의 명령을 차례로 실행
      python -m pip install --upgrade pip
      pip install wheel pyserial intelhex python-magic
      pip install zigpy-znp
 
4. 윈도우 장치 관리자에서 dongle이 연결된 포트 단자 확인 ex) COM3 or COM5 등등
 
5. 명령 프롬프트에서 아래 1개의 명령 실행
      python -m zigpy_znp.tools.nvram_read COM3 -o nvram_backup.json.    // 여기서 COM3는 장치관리자에서 확인한 포트
 
6. 부트로더 파일(cc2538-bsl-master.zip)을 다운로드하고 압축 풀기(다운로드 링크)
 
7. 플래싱 할 펌웨어(코디네이터 혹은 라우터 펌. zip) 다운로드하고 압축을 푼 후, 앞에서 압축을 풀었던 부트로더 파일 폴더 안에 옮겨 넣는다.
(펌웨어를 cc2538-bsl-master라는 폴더 안으로 옮긴다.)(다운로드 링크)
 
8. 명령 프롬프트에서 "cc2538-bsl-master" 디렉터리로 경로를 변경 (ex. C:\Users\xxx\Desktop\Sonoff Dongle\cc2538-bsl-master)
 
9. 아래의 1개의 명령을 명령 프롬프트에서 실행
      python cc2538-bsl.py -p COM3 -e -v -w --bootloader-sonoff-usb cc1352 P2_CC2652 P_lauchpad_coordinator_20220219.hex
 
// COM3(dongle 연결된 USB포트, 장치 관리자에서 확인한 포트)
// cc1352 P2_CC2652 P_lauchpad_coordinator_20220219.hex <- 플래싱 할 펌웨어 파일명
 
여기까지 해주면 플래싱 과정이 나타나고 10초 후에 완료된다.

728x90