Hass.io에 MQTT bridge 설치하기

Posted by JiYiNo
2019. 1. 27. 12:30 지이노/ReView & Using






현재 진행중인 Zigbee2MQTT를 사용하기 위해서는 HomeAssistant(이하 HA)에 MQTT가 설치되어야 한다.


이를 위해 사용할 Add-on(이하 애드온)은 Mosquitto broker 이다.


이번 포스트에서는 이 Mosquitto broker를 설치하도록 한다.


매우 간단하므로 집중이 필요하다.






1. MQTT


MQTT, Message Queuing Telemetry Transport의 약자로 ISO 표준 발행-구독 기반의 메시징 프로토콜이다.


이 프로토콜은 TCP/IP 프로토콜 위에서 동작하며 메시지 브로커를 필요로 한다.


M2M(Machine-to-Machine)과 IoT(Internet Of Things)에서의 사용을 위해 만들어졌으며


IoT를 위해 낮은 전력, 낮은 대역폭의 환경에서도 사용할 수 있도록 설계되어 있다.


이 프로토콜은 메시지를 발행하고, 관심 있는 주제를 구독 하는 것을 기본 원칙으로 한다.


즉, 발행(Publish) 와 구독(Subscribe)을 기본 원칙으로 하는 것.


발행과 구독은 모두 브로커에 대한 클라이언트로 작동한다.


발행은 토픽을 발행하기 위한 목적으로 구독은 토픽을 구독하기 위한 목적으로 브로커 서버에 연결한다.


하나 이상의 발행과 구독이 브로커에 연결해서 토픽을 발행 하거나 구독할 수 있으며 다수의 클라이언트가


하나의 주제를 구독할 수도 있다.


MQTT에 대해 설명하자면 상당히 길어질 것 같으므로 이 포스트에서는 여기까지만 적어둔다.


추후 개별 포스트로 작성 할 것.






2. Mosquitto broker


HA에 MQTT를 위해 설치하는 애드온을 Server가 아닌 broker라고 표현하는 이유는


MQTT가 토픽에 대한 발행인과 구독자가 서로 메시지를 주고 받을 수 있는 다리를 놔주는 역할만 하기 때문이다.


다른 기능들은 중계를 도와주는 부가 기능일 뿐이라고 한다.


다양한 종류의 브로커들이 있는데 내가 HA에 설치할 브로커는 Mosquitto broker이다.


HA에서 기본으로 지원되는 애드온이므로 정식 지원이라고 보면 된다.


당연히 정식 지원이기 때문에 설치도 쉽고 사용도 쉽다.


Mosquitto는 MQTT 프로토콜을 구현한 BSD 라이센스 기반의 오픈소스 메시지 브로커이다.


MQTT 전용 브로커로 매우 가볍고 MQTT 브로커로써 필요한 대부분의 기능을 지원한다.






3. Mosquitto broker 설치하기


Hass.io에서 정식으로 지원하는 애드온이므로 설치방법은 다른 애드온과 동일하다.


Hass.io에 SSH Server 설치하기


Hass.io에 SAMBA 설치하기


Hass.io에 Configurator 설치하기



Hass.io의 대부분의 애드온들이 그렇듯이 Hassbian이나 Raspbian에 HA가 설치되어 있는 환경과는 다르게


명령어 입력 없이 Install 버튼을 클릭하는 것으로 설치가 완료된다.


Mosquitto broker add-on에 대해 간략히 설명하자면


Mosquitto broker의 보안등급은 6등급이다.


1에서 6까지의 등급을 매기는 보안등급 중 가장 높은 등급을 받고 있다.


앱아머는 기본으로 설정되어 있고 


기본의 앱아머는 설명할 이야기가 없으므로 패스


처음 나오는 이 배지는 HA인증에 대한 배지이다.


HA에 대해 사용자를 인증할 수 있으며, 애드온이 HA 사용자의 이름/비밀번호를 사용하여


추가 기능에서 실행 중인 앱에 로그인 할 수 있도록 한다.






4. Config / Network


이 Hass.io 애드온이 늘 그렇듯이 사용자가 설정할 부분이 별로 없다.


기본으로 거의다 설정이 되어 있고 이번에도 설정할 부분은 ID/PW 뿐이다.



처음 설치했을 때 logins 부분은 []로 되어 있다.


{

  "logins": [ ],

  "anonymous": false,

  "customize": {

    "active": false,

    "folder": "mosquitto"

  },

  "certfile": "fullchain.pem",

  "keyfile": "privkey.pem"

}


여기서 보안을 위해 logins 부분에 username과 password를 추가하였다.


그 외 config에서 수정할 부분은 딱히 없다.


위의 스크린샷에는 anonymous를 true로 설정한 것으로 나오는데


스샷을 찍을 당시 테스트용으로 수정하던 중이라 저렇게 표기 되어 있고


현재 사용은 false로 되어 있다.


각각의 구성변수를 설명하자면

logins

(리스트) (옵션)    사용자의 이름과 비밀번호로 생성될 로컬 사용자의 목록

구성없이 HA 사용자를 사용할 수 있기 때문에 이 작업을 필수로 설정할 필요는 없다.


anonymous

(디지털) (옵션)    익명 연결을 허용한다.

로그인이 설정된 경우 익명 사용자는 데이터를 읽을 수만 있다.

기본값 : false


customize

(디지털 | 문자열) (옵션)    활성화되면 추가 구성파일 (*.conf)을 읽는다. 

경로 : /share/mosquitto


나는 옵션 중 로그인 옵션만을 사용했고 그 외 익명 연결 (anonymous) 나 커스텀 (cousomize)는 사용하지 않았다.


그럴 경우 config는 아래와 같이 구성해두었다.


{

  "logins": [

    {

      "username": "USER_ID",

      "password": "USER_PASSWORD"

    }

  ],

  "anonymous": false,

  "customize": {

    "active": false,

    "folder": "mosquitto"

  },

  "certfile": "fullchain.pem",

  "keyfile": "privkey.pem"

}


자신에게 필요한 옵션을 선택하고 수정하여 SAVE 버튼으로 저장하면 된다.


개인적으로 보았을 때 보안을 위한 로그인을 제외하고는 다른 설정은 굳이 하지 않아도 된다.


다음으로 Network에 관련된 것인데


스크린샷에는 기본포트로 되어 있으며 이 포트를 사용자에게 맞게 수정해도 무방하다.


내 경우 공유기가 2단계로 구분되어 있어 


외부 접속을 통해 두번째 공유기에 접속하더라도 그 아래 포트로는 접속이 불가능 하기 때문에


포트의 수정은 하지 않았지만 필요하다면 수정하면 된다.


모든 설정이 끝났다면 Start 버튼을 눌러 애드온을 시작한다.






5. 사용


Mosquitto broker는 단순히 broker, 연결다리의 역할을 하기 때문에


따로 인터페이스가 존재하지 않는다.


만약 인터페이스가 필요한 사람이라면 이 애드온이 아니라 다른 애드온을 설치해야 한다.


커뮤니티 애드온을 살펴보면 MQTT Server & Web client라는 애드온이 존재한다.


이 애드온은 MQTT broker 뿐만 아니라 Hive MQ라는 웹 클라이언트가 함께 설치되며


Hive MQ를 통해 인터페이스를 사용할 수 있다.






6. 완료


사실 MQTT에 대해 사용해본적이 별로 없고


작년에 MQTT를 통해 SmartThings와 HA간의 데이터를 주고 받는 용도로 사용해본 것 외에는


전혀 경험이 없었다.


그때와는 다르게 Hass.io로 갈아탄 뒤 이번에 Zigbee2MQTT를 사용하기 위해 설치를 하였고


사용하면서 공부를 할 예정이라 아직까진 Hive MQ가 필요한건지도 잘 모르겠다.


추후 방법을 생각해 보아야지


이것으로 Zigbee2MQTT를 위한 준비가 거의 갖춰졌다.


다음 포스팅으로는 Zigbee2MQTT를 Hass.io에 설치하기로 한다.

이 댓글을 비밀 댓글로
  1. 잘 보고갑니다~
    Sonoff wifi 스위치에 Espurna 올려 사용중입니다.
    pool.ntp.org로 동기화 하는데, NTP 서버 해킹인지 DNS 스푸핑인지...
    가끔 Espurna 장비가 여러 대가 동시에 2036년 7월로 바뀌어버리는 경우가 있더군요.
    저 같은 경우 hassio에 NTP서버 addon이 있어 함께 운영하고 있습니다.
    그런데 라즈베리파이에 RTC가 없어 거기서부터 동기화가 틀어지면... 찜찜하긴 마찬가지네요 ㅠㅠ