라즈베리파이로 RS485 통신 하기 (suroup 활용)

1. 개요

아파트의 각종 장비들을 제어하기 위해 기존에는 스마트폰 앱을 분석해 사용했으나 아파트 서버 장애시 제어가 안되는 등의 문제가 발생했습니다.

그래서 홈 네트워크에 직접 장비를 연결해 RS485 패킷을 Wi-Fi로 연결해 제어코자 합니다.

2. 준비물

라즈베리파이, Elfin EW11A

3. EW11 전원 연결

알리에서 주문한 EW11의 연결 커넥터를 보면 총 4개의 선이 연결되고 가운데가 전원입니다.
+, - 극성에 잘 맞춰서 연결하면 되며 나의 경우 휴대폰 충전기로 연결했습니다.

4. EW11 설정

전원이 연결되면 Wi-Fi로 EW11 장치가 나타납니다.
연결후 http://10.10.100.254 로 접속, admin / admin 으로 접속합니다.
이후 펌웨어를 업데이트 한다. 펌웨어는 아래 사이트에서 확인할 수 있습니다.
http://www.hi-flying.com/firmware-1

이후 네트워크 셋팅을 아래와 같이 설정합니다.

그리고 'Baud Rate'를 9600으로 변경합니다.

5. EW11 전원 연결

이제 RS485 라인과 연결합니다. 저희집의 경우 난방조절기에 연결하는 것이 전원 콘센트도 가깝고 여러모로 편했습니다.

일반 UTP 케이블중 연선이 아닌 단선으로 연결하는 것이 좋습니다.
연결후 SerialPortMon 프로그램으로 RS485 패킷이 잘 들어오는지 확인해 봅니다.
SerialPortMon 다운로드 : https://blog.daum.net/pg365/276

6. 관련 패키지 설치

가. Node.js, git 설치

Node.js는 라즈베리파이의 ARM 버전을 확인하고 아래 사이트에서 최신 버전을 받아 설치하면 됩니다. 이 문서를 작성할 다시 최신버전은 v14.15.5 입니다.
https://nodejs.org/en/download/

$ uname -m
armv7l
$ wget https://nodejs.org/dist/v14.15.5/node-v14.15.5-linux-armv7l.tar.xz
$ tar -xvf node-v14.15.5-linux-armv7l.tar.xz
$ sudo mv node-v14.15.5-linux-armv7l /opt/nodejs
$ sudo ln -s /opt/nodejs/bin/node /usr/bin/node
$ sudo ln -s /opt/nodejs/bin/npm /usr/bin/npm
$ sudo ln -s /opt/nodejs/bin/npx /usr/bin/npx

나. suroup 설치

$ wget https://github.com/taijipp/suroup/archive/refs/heads/0.0.6.zip
$ unzip 0.0.6.zip
$ cd suroup-0.0.6
$ npm install
$ node index.js

이후 http://설치주소/homenet 으로 들어가 기기들이 잘 등록되는지 확인합니다.

다. 자동 재시작 등록하기

$ npm install forever -g
$ /opt/nodejs/bin/forever start -l /home/pi/suroup-0.0.6/ew.log -a /home/pi/suroup-0.0.6/index.js
$ /opt/nodejs/bin/forever list

위 코드가 정상 동작함을 확인하면 아래와 같이 crontab에 등록

# reboot시 suroup 재시작
@reboot /opt/nodejs/bin/forever start -l /home/pi/suroup-0.0.6/ew.log -a /home/pi/suroup-0.0.6/index.js

라. Smartapp 및 DTH 설치

https://github.com/taijipp/suroup

참고 : https://github.com/fornever2/485-connector

7. 신규 버전 관련 내용

https://cafe.naver.com/stsmarthome/66344

다운로드 : https://github.com/taijipp/suroup/archive/refs/heads/0.2.0.zip

$ wget https://github.com/taijipp/suroup/archive/refs/heads/0.2.0.zip
$ unzip 0.2.0.zip
$ cd suroup-0.2.0
$ npm install
$ sudo npm install -g pm2
$ sudo ln -s /opt/nodejs/lib/node_modules/pm2/bin/pm2 /usr/bin/pm2
$ sudo pm2 start pm2.json

.env 파일은 아래와 같이 작성한다.

port=30110
oauth_id=suroup 
oauth_secret=12345
oauth_session_secret=12345
oauth_redirect_url=
[email protected]
account_pass=12345
client_id=스마트싱스 워크스페이스의 Client ID
client_secret=스마트싱스 워크스페이스의 Client Secret
type=ezville
ew11_host=192.168.0.11
ew11_port=8899
esv_host=
esv_port=
deviceLight=
deviceOutlet=
deviceThermostat=
deviceGasValve=
deviceBreaker=
deviceESV=

이후 자동 재시작을 위해 아래와 같이 등록하자.

$ sudo pm2 startup
$ sudo pm2 save

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다