MQTT

문주은·2021년 1월 2일
1

메디컬IOT

목록 보기
8/13

1. MQTT란?

사물인터넷 통신용으로 개발된 프로토콜로 TCP/IP 방식으로 작동하고 통신 부하가 적다.
클라이언트 : MQTT 네트워크에 접속하는 디바이스
브로커 : 데이터 송수신을 관장하는 서버로 브로커를 만들기 위해 필요한 툴이 mosquitto
토픽 : 데이터 이름 ex)온도, 습도 ...
페이로드 : 온도, 습도의 실질적인 값
   ⇒ 컴퓨터와 모바일 기기가 없다면 8266과 브로커의 전송을 쉽게 알 수 있는 것이 MQTTLens 프로그램
발행(Publish) : 클라이언트와 브로커 간 데이터 송신
구독(Subscribe) : 특정 토픽의 페이로드 수신을 MQTT에 알려주는 행위
서비스품질(QoS) : 0 - at most once / 1 - at last once / 2 - exactly once
QoS를 서버에 보관 : 최종 값 보관
유언 : 접속이 끊어져서 통신이 안될 때 나중에 다시 연결이 되면 그 내용을 다시 살려서 보내주는 기능

  • MQTT 구현하기

    ESP 8266 → wifi 공유기 → mosquitto 서버
    👉 ESP 8266에서 wifi 공유기와 연결하기 위해 1. wifi 공유기 이름, pw를 알아야 한다.
         ESP에서 서버에 접근하려면 어떤 서버에 접근하는지 서버의 고유번호인
         2. IP를 디바이스인 ESP에서 알아야한다.
         디바이스에서 서버한테 접근하겠다고 요청을 하면 서버에서 디바이스 요청을 허락할지 결정한다.      그러기 위해 3. 서버에서 접근하는 디바이스에 대한 이름과 pw를 미리 등록해놓고
         디바이스가 요청할 때 허락해서 연결한다.
         각각의 모든 장치의 고유한 장치번호인 4. mac address를 서버한테 넘겨줘야 통신 완성.

2. NODE-RED 활용

Node-Red란? 서버에 탑재되면서 데이터를 가공하기 쉽게 그래픽 형태로 노드를 배치하고 속성을 변경시켜주면 원하는 동작을 할 수 있도록 만들어 놓은 툴
👉 Node-Red를 활용하여 MQTT 브로커에 접속하고 접속한 결과를 다른 디바이스에게 넘겨줄 수 있다.
이벤트 드리븐 작동 방식
여러 이벤트가 동시 다발적인 상황에서 발생하더라도 노드를 몇 개든지 나열할 수 있다. 즉, 이벤트 발생 후의 처리 단계와 이벤트 사이의 관계만 정의하면 동시에 발생하는 이벤트를 간단하게 처리할 수 있다.

  • Node-Red 편집

    팔레트

    • 공통(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

profile
Data Engineer

1개의 댓글

comment-user-thumbnail
2021년 4월 28일

개발 환경이 아두이노인가요?

답글 달기