2019/07/26 - [행복한소식까치's Story/생활속 DIY] - 왕초보의 Home IOT - 1탄 (HA 설치 및 월패드 통신)
위내용에 어어서 읽어야 이해가 빠릅니다.
월패드 RS485 통신 패킷 캡처 방법
선행사항
1. 라즈베리 파이에 nodejs 설치
1) sudo apt-get update
2) sudo apt-get dist-upgrade
3) sudo apt-get install -y nodejs
2. Serialport 플러그인 설치
npm install serialport
PS.serialport에 대한 더 많은 내용은 아래 참조
https://github.com/serialport/node-serialport
캡처 방법
아래 소스를 작성후 명령어 실행
ggateway.js
const SerialPort = require('serialport');
const port = new SerialPort('/dev/ttyUSB0', { // <--- 위에서 파악한 USB0 번호로 수정할것
baudRate: 9600,
dataBits: 8,
parity: 'none',
stopBits: 1,
autoOpen: true,
encoding: 'hex'
});
const Ready = require('@serialport/parser-ready')
const parser = port.pipe(new Ready({ delimiter: 'READY' }))
parser.on('ready', () => console.log('the ready byte sequence has been received'))
var packets = {};
port.on('readable', function () {
var packet = port.read();
// if 구문은 받은적이 있는 같은 패킷은 중복하여 출력하지 않게합니다.
if(packets[packet])
{
packets[packet] = packets[packet] + 1;
}else
{
packets[packet] =1;
console.log('Data:', packet);
}
});
명령어 실행 후 월패드에서 전등/가스/엘베등을 조작하여 패킷정보를 캡처하면됩니다.
node ggateway.js
해당 패킷을 씨리얼몬나 아래소스를 사용해서 H/W(전등/가스등)가 작동하지는 확인하여
패킷정보를 입수 합니다.
전체 소스중 바로 아래 소스의 3103010000000035 부분이 패킷 입니다 캡처한 팻킷에서 스페이스를 제외하고
입력하여 테스트 하면됩니다.
port.write(Buffer.alloc(8,'3103010000000035','hex'), (err) => {if(err) return log('[Serial] Send Error: ', err.message); });
const util = require('util');
const SerialPort = require('serialport');
// SerialPort 모듈 초기화
const port = new SerialPort("/dev/ttyUSB0", {
baudRate: 9600,
dataBits: 8,
parity: 'none',
stopBits: 1,
autoOpen: false,
encoding: 'hex'
});
port.on('open', () => log('Success open port:', "/dev/ttyUSB0"));
port.open((err) => {
if (err) {
return log('Error opening port:', err.message)
}
});
//////////////////////////////////////////////////////////////////////////////////////
port.on('data', function (data) {
// console.log(data.toString('hex'));
// 패킷 정보 발송
port.write(Buffer.alloc(8,'3103010000000035','hex'), (err) => {if(err) return log('[Serial] Send Error: ', err.message); });
});
lastReceive = new Date().getTime();
var log = (...args) => console.log('[' + new Date().toLocaleString('ko-KR', {timeZone: 'Asia/Seoul'}) + ']', args.join(' '));
전 ST 카페의 그레고리하우스란 분이 미리캡처 한 패킷이 있어서 쉽게 알아냈습니다.
가스 부분 빼고는 패킷이 동일했습니다.
저의집 Commax월패드의 경우
전등 켜기 명령어가
3101010000000033 이라면 맨마자막 두자리 체크섬을 제외 하고는 첫 두자리에 +80을 한값이 ACK로 넘어왔습니다
즉 ACK 값은 B1010100000000B3 됩니다.
참고 하세요.
다음시간은 Homeassistant 와 연동하는 방법에 대해서 적어 볼 까 합니다.
관련정보
https://cafe.naver.com/stsmarthome/9424
https://cafe.naver.com/stsmarthome/7580
방충망 잠그미 설치 (0) | 2020.03.09 |
---|---|
왕초보의 Home IOT - 3탄 (HA에서 월패드내용 제어 및 자동화) (9) | 2019.08.29 |
왕초보의 Home IOT - 1탄 (HA 설치 및 월패드 통신) (2) | 2019.07.26 |
LED 벽시계 셀프 설치 (DIY) (0) | 2019.06.24 |
스마트 등 (Sonoff) 만들기 (0) | 2019.01.07 |
Blog is powered by kakao / Designed by 미스터짱