사물인터넷 통신용으로 개발된 프로토콜로 TCP/IP 방식으로 작동하고 통신 부하가 적다.
클라이언트 : MQTT 네트워크에 접속하는 디바이스
브로커 : 데이터 송수신을 관장하는 서버로 브로커를 만들기 위해 필요한 툴이 mosquitto
토픽 : 데이터 이름 ex)온도, 습도 ...
페이로드 : 온도, 습도의 실질적인 값
⇒ 컴퓨터와 모바일 기기가 없다면 8266과 브로커의 전송을 쉽게 알 수 있는 것이 MQTTLens 프로그램
발행(Publish) : 클라이언트와 브로커 간 데이터 송신
구독(Subscribe) : 특정 토픽의 페이로드 수신을 MQTT에 알려주는 행위
서비스품질(QoS) : 0 - at most once / 1 - at last once / 2 - exactly once
QoS를 서버에 보관 : 최종 값 보관
유언 : 접속이 끊어져서 통신이 안될 때 나중에 다시 연결이 되면 그 내용을 다시 살려서 보내주는 기능
Node-Red란? 서버에 탑재되면서 데이터를 가공하기 쉽게 그래픽 형태로 노드를 배치하고 속성을 변경시켜주면 원하는 동작을 할 수 있도록 만들어 놓은 툴
👉 Node-Red를 활용하여 MQTT 브로커에 접속하고 접속한 결과를 다른 디바이스에게 넘겨줄 수 있다.
이벤트 드리븐 작동 방식
여러 이벤트가 동시 다발적인 상황에서 발생하더라도 노드를 몇 개든지 나열할 수 있다. 즉, 이벤트 발생 후의 처리 단계와 이벤트 사이의 관계만 정의하면 동시에 발생하는 이벤트를 간단하게 처리할 수 있다.
팔레트
- 공통(common) : 플로우의 기본 기능 수행
- 기능(function) : 노드의 중간에서 값을 바꾸는 기능
- 네트워크 : MQTT, HTTP, 웹소켓 등의 통신을 담당
- 순서(sequence) : 플로우를 합치거나 분가하고 값을 정렬하는 기능
- 파서(parser) : 데이터를 다른 형식으로 변환하거나 특정 데이터를 추출
- 저장(file) : 외부 데이터 저장소를 관리
플로우 만들기
∘ inject 노드 : node-red 동작 확인하기 위해 입력을 강제로 집어 놓은 것으로 다른 단말 장치로부터 값을 받아올 때 사용
∘ debug 노드 : test할 때 사용
mqtt in 노드 : Mostquitto로부터 mqtt 통신으로 데이터를 받아오는 것
mqtt out 노드 : gateway(8266) 센서로부터 받은 데이터를 mosquitto에 보낸다.
switch : if, else
change : if 일 때의 동작, else 일 때의 동작
template : 처리한 내용을 json file로 저장 or 다른 장치로 보내지는 노드를 연결
mosquitto 실행 => cmd에서 mosquitto –c mosquitto.conf –v
참고자료 https://www.edwith.org/konyang-iot/lecture/315456
개발 환경이 아두이노인가요?