라즈베리파이에 Mi-Connector 설치하기

1. 개요

샤오미 가습기(모델명:CJXJSQ02ZM)를 Smartthings에서 컨트롤 하고자 라즈베리파이에 Mi-Connector를 설치하여 보았습니다.

2. 라즈베리파이 설정

우선 라즈베리파이 공식 홈페이지에서 라즈비안(어감이 좋지 않네요…Raspbian) 최신버전을 다운로드 합니다.
저는 콘솔에서만 작업할 예정이므로 ‘Raspbian Buster Lite’를 다운로드 했습니다.

Raspbian : https://www.raspberrypi.org/downloads/raspbian/

  • Raspbian Buster with desktop and recommended software
    라즈비안 데스크톱 이미지에 Python,Scratch와 같은 프로그램들이 미리 설치되어있는 버전

  • Raspbian Buster with desktop
    라즈비안 이미지에 필수적인 패키지들만 설치되어있는 버전

  • Raspbian Buster Lite
    라즈비안 이미지에 데스크톱 환경이 설치되어 있지 않으며 GUI가 필요하지 않은 버전

다운로드가 끝나면 MicroSD 카드에 balenaEtcher 툴을 이용해 이미지를 올려줍니다.
balenaEtcher : https://www.balena.io/etcher/

라즈비안이 MicroSD 카드에 준비가 되면 카드를 연결하고 모니터, 키보드, 마우스, 전원을 꼽고 부팅합니다.
기본 계정은 다음과 같습니다

ID: pi, Password: raspberry

이제 접속후 원격에서 SSH로 접근할 수 있도록 아래 명령어를 입력합니다.

sudo raspi-config

그리고 ‘Interfacing Options > SSH’를 선택해 Enbaled 해줍니다.
다음으로 시간대를 맞춰야 하므로 ‘Localisation Options > Change Timezone’을 선택해 서울로 변경합니다.

3. 라즈베리파이에 Docker 설치

이제 SSH를 통해 원격으로 접근이 가능하다면 Docker를 설치해봅시다.
아래 명령어를 통해 Docker 설치 스크립트를 받습니다.

wget get.docker.com -O get-docker.sh
sudo bash get-docker.sh

도커가 잘 실행되고 있는지 확인해 봅시다.

pi@raspberrypi:/docker/mi-connector $ ps -aux | grep docker
root      1565 31.4  8.7 1007824 83356 ?       Ssl  02:58   4:25 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
pi        3854  0.0  0.0   7348   424 pts/0    S+   03:12   0:00 grep --color=auto docker
pi@raspberrypi:/docker/mi-connector $ 

4. Mi-Connector 설치

참고 : https://github.com/fison67/mi_connector/blob/master/README.md#installation

Mi-Connector 도커 이미지를 다운로드 받아 실행을 합니다.

sudo mkdir /docker
sudo mkdir /docker/mi-connector
sudo chown -R pi:pi /docker
sudo docker pull fison67/mi-connector-arm:latest
sudo docker run -d --restart=always -v /docker/mi-connector:/config --name=mi-connector-arm --net=host -e TZ=Asia/Seoul fison67/mi-connector-arm:latest

그리고 데이터베이스도 설치합니다.

sudo docker pull jsurf/rpi-mariadb
sudo docker run -d --restart=always --name mariadb -e MYSQL_ROOT_PASSWORD=password -e TZ=Asia/Seoul -p 33006:3306 -d jsurf/rpi-mariadb

이제 도커가 잘 실행되고 있는지 확인해 봅시다.

pi@raspberrypi:/docker/mi-connector $ sudo docker ps -a
CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS                          PORTS                     NAMES
30df8e99447f        jsurf/rpi-mariadb                 "docker-entrypoint.s…"   13 seconds ago      Up 5 seconds                    0.0.0.0:33006->3306/tcp   mariadb
e9dceaa3986f        fison67/mi-connector-arm:latest   "/usr/bin/entry.sh -…"   4 minutes ago       Restarting (1) 32 seconds ago                             mi-connector-arm
pi@raspberrypi:/docker/mi-connector $ 

5. Mi-Connector 설정

설치가 완료되었으면 http://라즈베리파이주소:30000 으로 접속해봅시다.

먼저 ‘Settings > Settings’로 가서 ‘DB Settings’ 항목에서 Resigter 버튼을 누른후 ‘Settings > Logs’에서 "DB is connected" 로그가 정상적으로 찍히는지 확인해야 합니다.

그리고 ‘Home > Dashboard’ 에서 Xiaomi Devices에 기기가 등록이 된다면 성공!
등록이 안된다면 ‘Manage Device > Search Device’를 통해 기기가 검색이 되는지 확인합시다. 기기가 검색이 된다면 토큰만 추출한다면 수동으로 등록을 할 수 있습니다.

6. 토큰 추출 방법

1. 첫번째 방법

먼저 녹스앱플레이어를 통해 미홈(버젼 5.0.19) 앱을 실행합니다.
녹스 앱플레이어 : https://kr.bignox.com/
미 홈(5.0.19) : https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-19-release/mihome-5-0-19-android-apk-download/download/

그리고 설정에서 ‘ROOT켜기’ 옵션을 켠다음 미홈 앱을 실행하고 로그인후 등록하고자 하는 기기가 모두 올라오는 것을 확인합니다.

이제 파일탐색기(File Manager)로 ‘/data/data/com.xiaomi.smarthome/database/miio2.db’ 파일을 녹스앱플레이어 공유 폴더로 복사합니다.

이후 해당 폴더를 밖으로 뺀다음 아래 툴로 miio2.db 파일을 열어봅니다.
DB Browser for SQLite : https://sqlitebrowser.org/

테이블명은 ‘devicerecord’ 이고 각 기기별 token 칼럼을 확인할 수 있을겁니다.

2. 두번째 방법

스마트폰에 아래 버전의 미홈을 설치하고 ‘/Smarthome/logs/plug_DeviceManager’ 폴더로 이동.
해당 폴더에 txt 파일이 있으며 파일을 잘 살펴보면 token을 확인할 수 있습니다.

https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-4-49-release/mi-home-5-4-49-android-apk-download/

7. 샤오미 기기 수동 등록

토큰 추출이 완료되었으면 다시 http://라즈베리파이주소:30000 로 접속합니다.
‘Manage Device > Device Search’에서 나오는 IP를 기억합니다.
그리고 ‘Manage Device > Device List’에서 Add 버튼을 눌러 기기별 IP 및 토큰을 입력하면 됩니다.
이후 ‘Manage Device > Add Device[ST]’를 누르면 Smartthings에 기기가 등록이 됩니다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다