스마트홈 구축기

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

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

스마트싱스에서 Home Assistant로 플랫폼을 변경하면서 지그비 네트워크의 신뢰성이 확실히 좋아졌지만, 화장실이나 세탁실 같은 곳에서는 간헐적으로 기기가 오프라인 상태로 뜨거나 연결 신호가 낮게 나오는 경우가 있었다. 신호 리피팅을 위해 스마트 플러그를 여러 곳에 배치했지만, 특히 화장실은 구조상 기기를 천장 위에 배치해야 했기 때문에 신호 강도가 좀처럼 개선되지 않았다.

 

그래서, 보통 코디네이터로 많이 사용하는 Sonoff Zigbee Dongle-P에 라우터 펌웨어를 올려서 라우터로 사용하기로 했다. 이를 통해 신호 범위를 확장하고, 지그비 네트워크의 안정성을 더욱 향상시키고자 했다.


 
<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 Zigbee Dongle을 사용했을 때의 차이점은 지그비 네트워크 지도에서 확연히 드러났다. Sonoff Dongle은 스마트 플러그에 비해 더 넓은 영역의 많은 기기와 연결되는 것을 확인할 수 있었다. 즉, 커버리지가 더 넓다는 장점이 있었다.

 

또한, Sonoff Dongle의 경우 신호 출력을 최대 20 dBm까지 수동으로 조정할 수 있는 기능이 있었다. 이로 인해 더 강력하고 안정적인 신호를 제공할 수 있어, 특히 신호가 약한 구역에서의 네트워크 안정성을 크게 향상시킬 수 있었다. 이러한 이유로, Sonoff Zigbee Dongle을 라우터로 사용하는 것이 특히 신호가 약한 환경에서 효과적인 해결책이 될 수 있다는 것을 알게 되었다.


 

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

 
라우터 기능만 필요하다면, 가격 면에서 스마트 플러그보다 Sonoff Zigbee Dongle에 라우터 펌웨어를 올려 사용하는 것이 훨씬 저렴하고 성능도 더 좋은 선택으로 보인다.
 

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

 
펌웨어를 올리는 방법에는 여러 가지가 있는데, 내 경우에는 Dongle을 노트북 USB에 연결한 후, Dongle 기판 안의 부트 진입 버튼을 눌러 부트 모드에 진입한 뒤 펌웨어 업그레이드를 시도했다. 하지만 부트 모드 진입이 잘되지 않아, 결국 두 번째 방법인 Python을 이용한 방법을 활용했다.
 
펌웨어를 올리는 과정은 아래의 동영상을 참고를 했다.
https://youtu.be/4eYnURcDrWw?feature=shared

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

일단 위의 방법은 다음과 같은 순서로 진행된다:

 

1. Python 설치: Python을 먼저 설치한다. 이는 펌웨어 업그레이드 과정에서 필요한 스크립트를 실행하기 위해 필수적이다.

2. Dongle 드라이버 설치: Dongle을 윈도우 노트북에 연결할 때 바로 인식되지 않을 수 있으므로, 이를 위한 드라이버를 설치한다.

3. 부트로더 설치: Dongle을 부트 모드로 진입시키기 위해 필요한 부트로더를 설치한다.

4. 펌웨어 다운로드: 플래싱할 펌웨어를 다운로드하여 준비한다.

5. 펌웨어 플래싱: 윈도우 명령 프롬프트에서 몇 가지 명령어를 통해 펌웨어를 플래싱한다. 이 단계에서 Python 스크립트를 사용해 플래싱을 완료한다.


 
파이썬 다운로드 : 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. 파이썬 설치

Python을 설치한다. 다운로드 링크

 

2. Dongle을 USB에 연결 후 드라이버 설치

Dongle을 USB 포트에 연결한 후, Dongle을 인식시키기 위한 드라이버를 설치한다. [드라이버 다운로드 링크]

 

3. 명령 프롬프트에서 아래 3개의 명령을 차례로 실행

      python -m pip install --upgrade pip
      pip install wheel pyserial intelhex python-magic
      pip install zigpy-znp
 
4. 윈도우 장치 관리자에서 Dongle이 연결된 포트 확인

예: COM3, COM5 등으로 표시된다.

 

5. 명령 프롬프트에서 아래 명령 실행


      python -m zigpy_znp.tools.nvram_read COM3 -o nvram_backup.json.    // 여기서 COM3는 장치관리자에서 확인한 포트
 
6. 부트로더 파일(cc2538-bsl-master.zip) 다운로드 및 압축 풀기

부트로더 파일을 다운로드하고 압축을 푼다. [다운로드 링크]

 

7. 플래싱할 펌웨어 다운로드 및 압축 풀기

플래싱할 펌웨어(코디네이터 혹은 라우터 펌웨어)를 다운로드하고 압축을 푼 후, 앞에서 압축을 풀었던 부트로더 파일 폴더(cc2538-bsl-master) 안에 옮겨 넣는다. [펌웨어 다운로드 링크]

 

8. 명령 프롬프트에서 “cc2538-bsl-master” 디렉터리로 경로 변경

cd C:\Users\xxx\Desktop\Sonoff Dongle\cc2538-bsl-master


9. 아래 명령을 명령 프롬프트에서 실행
      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