IoT Edge Connect : MQTT 브로커를 제공
CC2531 플래싱 작업
Zigbee2mqtt를 설치하면 Zigbee 장치 연동이 가능
NAS : Home Assistant, Mosquitto
라즈베리파이 : Zigbee2mqtt
NAS 에 Eclipse Mosquitto 설치
MQTT : 메시징 프로토콜 (Message Queue Telemetry Transport)
Eclipse Mosquitto : MQTT 를 구현한 MQTT 브로커
Mosquitto 는 Docker를 활용해서 실행
sudo docker run -d \ -p 1883:1883 \ -p 9001:9001 \ --name = mosquitto \ --restart=unless-stopped \ -v /data/mosquitto/data:/mosquitto/data \ -v /data/mosquitto/log:/mosquitto/log \ eclipse-mosquitto
Mosquitto 컨테이너 생성
라즈베리파이에서 Zigbee2mqtt 설치
curl -sSL https://get.docker.com | sh
docker 설치
sudo docker run -d \ --name zigbee2mqtt \ --restart=unless-stopped \ --net=host \ -v /data/zigbee2mqtt:/app/data \ -v /etc/localtime:/etc/localtime:ro \ --device=/dev/ttyACMO \ koenkk/zigbee2mqtt:arm32v6
zigbee2mqtt 컨테이너 생성
sudo touch /data/zigbee2mqtt/devices.yaml sudo touch /data/zigbee2mqtt/groups.yaml
디바이스와 그룹을 별도로 관리하기 위한 YAML 파일들도 생성
sudo nano /data/zigbee2mqtt/configuration.yaml
Home Assistant 와 연동시킴
homeassistant : true permit_join : true mqtt: base_topic : zigbee2mqtt server : 'mqtt://192.169.1.123' serial: port: /dev/ttyACMO devices: devices.yaml groups: groups.yaml
HA 연동을 위해 homeassistant 부분을 true로 변경
처음 디바이스를 추가할 때는 permit_join 부분 true로 설정
이후에 모든 디바이스가 추가되면 permit_join 부분을 false로 변경
mqtt 하위의 server는 localhost로 되어 있음
별도의 NAS에 Mosquitto를 설치한 경우에는 해당 IP를 입력하면 됨
추가되는 장치들의 devices.yaml에 자동으로 추가
디바이스가 많아지면 파일이 복잡해지기 때문에 별도 파일로 관리하는 것이 낫다.
sudo docker restart zigbee2mqtt
zigbee2mqtt 컨테이너를 재시작
zigbee 지원 디바이스를 페어링
정상적으로 페어링되면 아래 내용이 devices.yaml 파일에 추가됨
'0x0123456789876543': friendly_name: 'Living Room Curtain' retain: false
기본 friendly_name은 위 ID와 동일한데, 식별 가능한 값으로 변경하면 됨
mqtt: broker: 192.168.1.123 port: 1883 discovery: true discovery_prefix: homeassistant birth_message: topic: 'hass/status' payload: 'online' will_message: topic: 'hass/status' payload: 'offline'
CC2531은 Zigbee 통신을 지원하는 스마트 디바이스를 연동하기 위해 필요
CC2531을 사용하기 위해 펌웨어를 기록하는 플래싱 작업이 필요
라즈베리파이의 GPIO와 CC2531을 연결할 케이블이 필요
gpio -v
wiringPi 가 설치되어 있는지 확인
git clone https://github.com/jmichault/flash_cc2531.git
git 에서 CC2531 플래싱을 위한 프로젝트 가져온다.
cd flash_cc2531 ./cc_chipid
ID=b524. 이 표시되는지 확인
wget https://github.com/Koenkk/Z-Stack-firmware/raw/master/coordinator/Z-Stack_Home_1.2/bin/default/CC2531_DEFAULT_20190608.zip
최신 펌웨어 다운로드
./cc_erase ./cc_write CC2531ZNP-Prod.hex
플래싱 실행
sudo reboot -h now
작업 완료 후 라즈베리파이를 재부팅
ls -l /dev/ttyACMO ls -l /dev/serial/by-id
화면에 usb-Texas_Instruments_TI_CC2531_USB 형태가 보이면 CC2531 플래싱 작업은 완료됨
게이트웨이 : IoT 기기들과 플랫폼(HA, 미홈 등)을 연결하는 일종의 중계기
automation: - alias: Motion Sensor or Gateway Light at Night trigger: platform: state entity_id: binary_sensor.motion_sensor from: 'off' to: 'on' condition: condition: time after: '22:00:00' before: '07:00:00' action: - service: light.turn_on entity_id: light.gateway_light data: brightness: 255 - alias: Motion Sensor off Gateway Light at Night trigger: platform: state entity_id: binary_sensor.motion_sensor_158d0002ea6c5f from: 'on' to: 'off' for: minutes: 5 action: - service:light.turn_off entity_id: light.gateway_light_7c49ebb3b89b
automation: - alias: xiaomi_zl_switch_click trigger: platform: event event_type: xiamoi_aqara.click event_data: entity_id: binary_sensor.xiaomi_switch_zl click_type: single action: service: switch.toggle entity_id: switch.xiaomi_plug_zl
*MQTT 용어
- Broker : 클라이언트 간을 연결시켜주는 서버
- Publisher : 특정 Topic으로 메시지를 전송하는 클라이언트
- Subscriber : 특정 Topic에 들어오는 메시지를 감시하는 클라이언트
- Topic : Broker 에 메시지가 모이는 곳, 계층 구조를 가질 수 있음
- QoS(Quality of Service) : MQTT는 시스템에 참여하는 장치들의 처리 능력, 네트워크 대역폭, 메시지 오버헤드 등 주변 상황에 맞게 시스템이 동작할 수 있도록 3단계 QoS를 제공
*무료 MQTT
- paho
- Mosquitto
- CloudMQTT : Amazon
- ARTIK Cloud : 삼성 IoT 플랫폼, 메시지 클라우드 시스템
- ThingPlug : SKT IoT 플랫폼, LoRA 통신 API 외에도 M2M 프로토콜로 이용 가능
- HiveMQ
*MQTT
- 이 프로토콜은 TCP/IP 프로토콜 위에서 동작하며 메시지 브로커를 필요로 한다.
- M2M과 IoT에서의 사용을 위해 만들어짐
- IoT를 위해 낮은 전력, 낮은 대역폭의 환경에서도 사용할 수 있도록 설계됨
- 이 프로토콜은 메시지를 발행하고, 관심 있는 주제를 구독하는 것을 기본 원칙으로 함
- 즉 발행과 구독을 기본 원칙으로 함
- 발행과 구독은 모두 브로커에 대한 클라이언트로 작동
- 발행은 토픽을 발행하기 위한 목적으로 브로커 서버에 연결
- 구독은 토픽을 구독하기 위한 목적으로 브로커 서버에 연결
'다마고치 > IoT 다마고치' 카테고리의 다른 글
MQTT 추가 내용 (0) | 2020.11.09 |
---|---|
MQTT (0) | 2020.11.09 |
MQTT(Message Queue for Telemetry Transport) (0) | 2020.11.09 |
[IoT 다마고치] 홈 IoT 프로젝트 구상 (0) | 2020.10.20 |
[IoT 다마고치] Z-Wave, 라즈베리 파이 (0) | 2020.09.29 |