-
라즈베리파이4 에 mi-connector 설치(업뎃2020.06.25)IOT나도 한번 해보자 2020. 2. 13. 19:48
ST에서 스마트앱스 지원이 끝나서 이제는 불가합니다.(2022.12.31)
=============================================================================
시작은 미약하였으나 끝은 창대하리라..개뿔...
우리집에는 iot 제품군들이 여러개 섞여있다.
네이버카페회원분이 여러개의 제품군들을 하나로 통합관리하는게 여러모로 편하다고해서
추천해준게 스마트씽스..이하 ST 라고 하는데
1. 샤오미 기반이다 보니 샤오미 제품군만 40개가 넘는다.
2, 가전은 LG로되어 있어 LG 에어컨, 인덕션, 냉장고, 건조기
3. SK 정수기, 식세기, 제습기
4. 삼성 도어락
5. 구글미니
6. 보일러 컨트롤러 네스트
매번 Device를 제어하려고 이어플 저어플 들락날락 해야하니..통합관리라는 말을 듣고 나서는
내가 이짓을 왜 하고 있나라는 자괴감까지 들어..바로 아마존 검색
그래서 바로 아마존에서 ST를 구매하고 알리에서 최신형 라즈베리 4+ 4G를 구매했다.
이것만 사면 모든게 끝나는줄 알았다. 이제부터 고생이라는걸 모른채...하...
라즈베리를 셋팅하면서 알게된것이,,,일단 SK스마트홈은 연동이 안된다.
제습기,정수기,식세기 탈락
그리고 삼성도어락 제품인데 내꺼는 WIFI전용이라서 안된다...탈락!!
네스트도 작년부터 연동안되서 탈락(구글에는 연동됨)
결국 샤오미와 엘지 가전정도이다.
이제 본론으로가서
ST와 샤오미 제품을 연동하기 위해서는 mi-connector 라는 프로그램이 필요한데
이 프로그램을 설치하려면 나스 또는 라즈베리 파이가 있어야 한다.
하...벌써 머리가 아플라 그러네
거의 1달동안 씨름한거 같다. 나스라는 얘기때문에 omv만 설치하면 되는줄 알았더만..
이제야 정리할 시간이 되어 이렇게 적어본다.
솔까말 집에서 샤오미로도 충분히 자동화를 적용해서 잘 살고 있었다.
그런데..그 자동화라는게..진짜 요거만 되면 참 좋겠다..이건 왜 안되지?
요론 아주 작은 불편함 때문에 ST라는 허브를 들이게 되었다..
그때는 몰랐어지..일이 이렇게 커질줄..
네이버카페분들은 나름 다들 전문가라서 생초보가 알아듣기에는 어려운 용어들과
이정도는 알고 있겠지라는 깊은 뜻으로 인해 한개 해결하면 또하나의 산이 있고
그 산을 넘으면 강이 있고 뭐 이런격으로 지금까지 거 같다.
샤오미 제품은 미홈 이라는 어플로 제어가 된다.
그럼 당연히 샤오미 제품이 ST앱에 등록이 되냐? 되는것도 있고 안되는도 있다.
자..그럼 왜 굳이 ST로 가려하나? 이거 위에서 말했듯이 2% 부족한 자동화를 하기 위함이다.
ST에서는 웹코어라는것으로 IF~THAN문을 직접 만들수가 있기 때문에 가능하다.
웹코어는 다음장에서 얘기를 하고
그래서 서로 운영체계가 틀리기 때문에 mi_connector라는 프로그램으로 연동을 시켜주는거다.
미컨넥터를 설치하기 전에 사전에 해야될 일이 있는데
공유기 설정법부터 익혀야 한다. why?
각종 connector 들을 설정하려면 라즈베리파이로 들어와야하는데 그럴려면
고유의 포트로 접속을 해야한다. 집에서만 제어할것이 아니라면 포트포워딩은 필수다.
그래서 외부(회사)에서도 제어를 할수가 있기 때문이다.
라즈베리 파이 ip 주소를 고정해야한다.
모니터 우측 와이파이나 랜선 연결된 아이콘에서 직접 설정을 해줘도 되고
아래 명령어로 해줘도 된다.
dos 창에서
sudo cat /etc/dhcpcd.conf
ip 고정 또는 수동 설정되어있는지 확인 하고
sudo nano /etc/dhcpcd.conf
수동 ip설정 란으로 들어와서고정 ip로 설정을 해준다.
내 pc에서 raspberry의 폴더내용을 복붙이나 보고 싶을때 사용하기 위한 프로그램 설치
삼바프로그램 설치진행
sudo apt-get install samba samba-common-bin -y제대로 설치 되었는지 확인
ps -ef | grep smbd
sudo smbpasswd -a pi 엔터
비밀번호 2회 입력
sudo nano /etc/samba/smb.conf
설정 제일 하단으로 이동(커서 또는 페이지다운)하단 전체 복붙
[pi]
comment = raspberry's drive
path = /home/pi
valid user = pi
writable = yes
read only = no
browseable = yesctrl+x 입력=> y 입력=> 엔터
삼바 재시작
sudo /etc/init.d/smbd restart
개인 pc에 폴더->창 상단부에 네트워크 드라이브추가-\\아이피\pi 입력후 아이디는 pi 비번은 설정한 비번
라즈베리파이 폴더를 네트워크 드라이브로 설정완료
도커 설치
curl -sSL https://get.docker.com | sh
포테이너 설치
sudo docker run -d --name portainer --restart always -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer포테이너까지 설치가 끝났으면 개인 pc에서
웹 브라우저를 열고 ip주소:9000 을 입력하면 (ex:192.168.219.104:9000) Portainer에 접속이 가능합니다.
아이디 admin
비번 password그런다음 hass-io 설치
sudo apt-get install bash jq curl avahi-daemon dbus software-properties-common apparmor-utils
중간에 y 한번 누름
sudo su
포테이너에 설치하기 위해 상위 디렉터리로 이동
curl -sL https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh | bash -s -- -m raspberrypi4 -d /home/user/docker/hassio
-m 뒤에는 설치할 장비 이름 기입 (나는 라즈 4를 설치하니깐 4로 하였음)여기까지 되었으면 이제 20분정도 기다려야함..설치하고 셋팅하는데 거의 20분 걸림
한참뒤에 개인 pc 웹 브라우저에 라즈베리 ip:9000 으로 포테이너에 들어가보면
포테이너에 홈어시스턴트, 하시오 dns, 하시오 슈퍼바이저, 포테이너 이렇게 4개 설치된거 확인됨
다시 웹브라우저에 라즈ip:8123 입력하면 home assistant 화면으로 들어감여기까지 했다면 이제 60%로 완료 했다.
다들 하라고 해서 했는데 쉽게 설명을 하자면
샤오미 제품은 미홈앱->미 클라우드->디바이스 실행이 된다.
샤오미 제품을 스마트씽스에 연결을 하려면 연결할수 있는 매개체가 필요하다.
그 역활을 미컨넥터가 하는데 미컨넥터는 하나의 허브 서버라고 생각하면 될듯하다.
그럼 서버는 24시간 열심히 돌고 있어야 되니깐 나스 형태로 되어야 하고
그걸 포테이너라는 곳에 설치를 해서 가동을 하는것이다.
ha는? 이건 ha 기반으로 하는사람들은 필수지만 st로 하는사람은 몇개의
프로그램때문에 설치를 한것이라고 보면된다.
필자는 duckdns라는 유동 dns 도메인을 얻기 위함이다.
왜? 외부에서도 미컨넥터, ha, 포테이너 등등 운용하려면 도메인이 있어야 초반에 말한 포트포워딩이
가능하기 때문이다.
라즈베리파이 주소:8123 입력하면 homeassistant 웹브라우저로 들어감
난 외부에서 제어할일이 없어라고 하시는분은 ddns 설정을 넘어가셔도 됩니다.
======================================================================
초기 설정시 id와 비번 입력하고 지역 설정하고 날씨 설정을 다하면 아래화면처럼 보일것이다.
좌측 하단에 suoervisor 를 클릭
상단 우측 두번째 add-on store 클릭
아래 두번째줄에 Duck DNS라는걸 클릭
isntall을 실행
인스톨이 끝났으면 duckdns 홈페이지로 이동
원하는 아이디로 로그인해주시고(상단에 person, twitter, github, reddit, google)
나는 구글로 했으니
가운데 만들고 싶은 도메이인 이름을 적은후 add domain 클릭하면 생성이됨
그리고 아래 current ip란에 공인 ip(포트포워딩 메인주소)를 입력
토큰도 생성이 되는데 토큰은 다시 ha 웹브라우저로 가서 입력을 해야함(복사)
add store의 duckdns에서 마우스로 쭈욱 아래로 내려보면은 config각 보이는데
밑에 캡처본처럼 토큰 입력하고, 만든 dns 주소를 입력
그러면 공유기에서 별도 dns설정은 안해도 된다.
======================================================================
공유기 설정으로 들어가서
포트 포워딩을 하기 위해 위에 설치한 포트들을 열어주면된다.
라즈베리 ip주소 입력하고 포트 설정에 내부 : 외부 80 추가
또 ip 입력하고 내부 : 외부 443 추가
이렇게 반복하여 아래 나머지 4개를 모두 추가해준다.
내부 : 외부 9000(포테이너)
내부 : 외부 30000(미컨넥터)
내부 : 외부 30001(미컨넥터)
내부 : 외부 8123(ha)
내부 : 외부 5900(vnc)
내부3306(mari DB) : 외부33006
공유기 설정도 끝
# maria db 설치 (샤오미device 제품의 data를 저장하는 서바로 생각하면 됩니다.)
raspberry dos창에서 아래 명령어 입력
sudo mkdir /docker
sudo mkdir /docker/mi-connector
sudo docker run --restart=always -d --name=mariadb -e MYSQL_ROOT_PASSWORD=패스워드 지정 -e TZ=Asia/Seoul -p 33006:3306 -d jsurf/rpi-mariadb# MI CONNECTOR 설치
sudo docker run -d --restart=always --name=mi-connector-arm --net=host -v /docker/mi-connector:/config -e TZ=Asia/Seoul fison67/mi-connector-arm:0.0.5여기까지 문제없이 되었다면 이제는 마무리라고 생각하면 된다.
1. DTH 설정
ST앱에서 미컨넥터를 연결하려면 앱을 만들어줘야 한다.
https://graph-ap02-apnortheast2.api.smartthings.com/
여기 들어가서
2-1. My SmartApps 설정
SETTING 클릭
2-2 하단 ADD NEW REPOSITORY 클릭
빈칸에 입력
owner : fison67
name : mi_Connector
branch : master
이렇게 입력후 저장
2-3 Update From Repo클릭=>mi_Connector클릭
2-4. github 선택(필자는 이미 update가 되어서 안보이는것임)
우측에 표시한 부분에 MI-CONNECTOR가 보일것임=> 네모박스 체크=>publish 체크 => execute Update 클릭
2-5. 아래 화면처럼 mi connector 가 생성된걸 확인할수 있다.
화살표의 박스를 클릭
2-6. 하단 OAuth 클릭
2-7. Enable OAuth in Smart App 라는 문구가 나타나는데 이걸 클릭해주면
핸드폰의 앱에서 토큰과 앱의 아이디가 생성이 된다.
2-8. 여기서 핵심 포인트 하단의 update를 꼭!!! 누르자.
3-1. My Device Handlers 설정
앱을 설치했으니 이제 미컨넥터의 설치목적이 샤오미 제품들을 불러올수 있게끔 DTH를 설치해야한다.
My device Handlers 선택 => 우측 setting 선택
3-2. 앱설치와 동일하게 아래 빈칸에 유저를 입력
owner : fison67
name : mi_Connector
branch : master
입력하고 save
3-3. Update From Repo 클릭 =>mi connector 클릭
3-4. 우측 new 항목의 github를 선택 =>publish 체크 => execute Update 클릭
하고자하는 device와 앞으로 해야할것들을 모두 체크하면 되는데 여러개를 체크해서 3번을 눌렀을시 체크한것들이
목록에 보이면 된것이고 만약 안 보인다면 한개씩 업데이트를 해야함
여기까지 했으면 이제는 MI-CONNECTOR를 설정하자.
4. MI-CONNECTOR 설정
크롬 웹에 라즈ip주소:30000 입력 (HTTP 보안때문에 크롬에서 해야 열림)
로그인하고 패스워드 입력아래 창이 보인다.(나는 이미 device 등록을 해놓은 상태이기 때문에 아래 아이콘들이 보이는것임)
Settings 클릭하고 아래 settings를 클릭하면 설정란이 보인다.
network에 라즈베리파이 ip 주소를 기입하고
port 30000 기입
로그인할 id와 password를 설정해주고
핸드폰 설정을 안했기 때문에 st의 api가 공란으로 보일것이다.
핸드폰을 설정하면 자동으로 되는것이니 pass 하고 아래에 DB Settings란을 셋팅하자
url에는 라즈베리파이 ip입력
port 33006 입력
password는 라즈베리에서 설치 명령어중에 입력했던 password를 입력후 register클릭
핸드폰으로 가서 st앱을 실행
하단 automation => +Add a SmartApp => 하단으로 화면 이동 =>스마트 나의 앱
5.mi connector app 클릭
server address 란에 라즈베리파이 ip:30000 입력
external network address 란에 포트포워딩 메인 ip 입력
save => save에서 에러가 발생하면 api 생성이 안되어서 그런거니 핸드폰은 내려놓고 dth를 다시 설정해야함
config를 클릭했을시
아래 사진처럼 ID 와 ACCESS TOKEN이 보이면 정상등록이 된것이니 save를 누르면 succes 가 뜰것이다.
api가 설치가 되었으니 다시 웹의 mi connector 설정란에도 들어가보자.
ID와 TOKEN이 정상적으로 나타나면 이제 설치 완료
이제 st와 연동이 되는것이므로, 샤오미의 device들을 붙여보도록 하자.
10.device list 를 클릭
목록에 ip 주소와 토큰이 보이면 자동으로 등록인 된다.(dth가 미리 등록이 되어있다면 말이다.)
11. 목록에 없다면 수동으로 등록을 할수가 있다.
Add를 누른다음 기존에 IP주소와 토큰을 확보해 놓았다면 그걸 입력하면된다.
12. 좌측 add device[ST]를 클릭했을때 목록이 아무것도 없다면 앞에 device list의 add란에 추가한 것들이 보일것이다.
gateway를 등록을 핸 놓았다면 지그비 품목들이 자동으로 보일것이다.
아래 빨간원처럼 활성화가 되어있는 품목은 시간이 지나면 자동되는것들도 있지만 그렇지 않을경우
체크를 한다음 하단부에 resister를 클릭하면 ST앱에 DEVICE가 업데이트가 가능하다.
이제는 토큰이 필요한데 토큰은 토큰 추출하는 방법으로 다음장에 소개가 되어있다.
참고로 안드로이드 추출법을 알려준다.
아이폰이 있지만 검색결과 안드로이드는 프로그램 설치할게 업어서
놀고 있는 팬택 폰으로 작업을 했다.
먼저 미홈 앱 5.0버전의 apk 파일을 다운받아서 핸드폰에 설치를 하고
미컨넥터에 붙일 디바이스들을 하나씩 클릭을 해서 활성을 시킨다.
활성화가 끝나면 게이트웨이 디바이스로 들어가서
설정-소개 란에 들어간다.
소개란 하단부 여백에 연속으로 다다다다다다 광클을 하면은 게이트웨이 토큰이 나타난다.
이렇게 게이트웨이 토큰을 추출해도 되지만 게이트웨이만 추출한다고 될게 아니라서..이 방법은 참고만 하시고
파일 관리자로 가서 검색
smarthome => log => plug_devicemanager => 문서 파일이 있을것이다.
txt 파일을 통채로 컴퓨터로 복사를 해서 열어보면 미홈에 등록된 디바이스들의 토큰이 모두 나타난다.
디바이스 id / 토큰 / 맥주소 / ip 주소 등등
여기서 또 삽질
ip주소와 맥주소 토큰을 가져와서 엑셀이나 보기 좋게 정리를 해놔야된다.
디바이스가 1~2개면 상관이 없지만 같은 항목의 디바이스가 여러개가 있다면 미컨넥터에 등록시모두 같은 명칭으로 등록이 되기 때문에 결국 맥 주소로 찾아야 한다.
찾는 방법은 st 어플에서 이름을 바꿔주고 st 웹에서 바뀐 디바이스명칭의 맥주소로 st앱의디바이스 이름을 찾아가며 다시 바꿔주는 삽질을 해야한다.
728x90'IOT나도 한번 해보자' 카테고리의 다른 글
샤오미 토큰 추출방법 (0) 2020.02.21 portainer로 GH-connector 설치하기(업뎃,2021.02.26) (11) 2020.02.19 라즈베리파이 4 OMV 설치 (0) 2020.01.08 smart 조명과 smart 스위치를 함께 적용하면 안됨 (0) 2020.01.07 식탁 밑에 모션 센서 달기 (2) 2019.12.19