MQTT를 이용 하여 PC , 아두이노 , 휴대폰으로 연결하기
위치에 상관 없이 인터넷으로 모든 기기를 연결하고 통신 하는 프로젝트
직접 기기간 통신은 각각의 IP가 필요하다. 그런데 WIFI에 연결시 마다 IP가 달라진다.
그때마다 IP주소를 수정 하기란 ㅠㅠㅠㅠ
반면 위 그림처럼 모든 기기가 고정된 한 곳에 접속 한다면.....엄청 간편해 진다.
다만 고정 IP유지를 위한 비용이 발생한다. 다행이 무료로 서버를 이용 할 수 있는 곳이 있다.
broker.mqtt-dashboard.com
이를 이용 하여 프로젝트를 만들었다.
C#으로 PC 프로그램을 하나 만들고 앱인벤트로 앱을 하나 만들었다.
앱스토어에서 MQTT사용하는 전용앱을 하나 다운 받았다.( 여러 종류가 있음 )
아두이노는 Wemos D1 mini 3개를 사용 하여 각각 1번 2번 3번으로 업로드 하여 사용했다.
각각의 wemos는 2초마다 각각 토픽/bt01 토픽/bt02 토픽/bt03의 Topic으로 일련번호를 발행하고
한개의 LED와 연결되어 있고 각각 토픽,토픽1,토픽2의 메세지(paylod)에 따라 점멸 한다.
C#프로그램과 앱에는 LED의 점멸을 제어 하는 버튼이 있고 이 버튼은 LED상태에 따라 색이 달라진다.
한 기기에서 조작하면 모든 기기의 버튼과 LED가 반응한다. ( 토픽 글씨부분은 사용시 자신의 것으로 바꾸어야 합니다)
버튼 클릭 -> Publish(버튼상태) ->구독 요청한 기기에 배달 -> 배달된 정보로 버튼, LED상태 갱신
PC(c#) , 휴대폰 전용앱, 앱인벤트로 만든 앱, Wemos D1 mini 3개총 6개 다중연결동영상보기
용어만 이해하면 사용법은 기본예제에서 필요한 부분만 수정하면 간단하다.
MQTT 필수용어 이해를 위한 비유 설명 | |
Broker | 배달 전문 전단지 회사 ( 갱신된 전단지를 구독 신청한 모든 곳으로 보냄 ) |
Topic | 전단지 제목 ( 주의 무료 borker에서 평범한 Topic은 다른 사용자와 중복되어 혼선이 옴 ) |
Paylod | 전단지 내용 |
Publish ( 발행) | 필요시 전단지를 만들어 회사에 보냄 ( 전단지 갱신) |
Subscribe(구독) | 원하는 전단지(제목)를 구독 신청 함 ( 전단지가 갱신될 때 마다 배달됨 ) |
무료 borker에서는Topic을 공용으로 사용하는 경우가 많아 평범한 Topic은 다른 사용자와 중복되어 혼선이 온다. 그래서 보안에 취약하니 주의 해야 함. Topic은 비밀번호처럼 복잡하게 만들어야 한다( 중복될 일 없게 )
Paylod부분은 민감한 개인 정보 등은 피하고 , 민감한 정보는 암호화 하여 전달 할것.( 군용 무전기라고 생각하면 된다 )
예로 아두이노 MQTT기본 예제( broker.mqtt-dashboard.com )에 사용되는 outTopic은 전세계 아두이노 MQTT 입문자가 모두 사용 하여 갱신된다. inTopic은 0,1이 약 2초마다 반복되어 갱신된다.
데이타의 흐름은 간단하다.
( 받 기 ) 필요한 기기의 테이터를 구독신청하여 갱신될 때 마다 Broker로 부터 받는다.( 이벤트 핸들러 )
(보내기) 필요시 Topic에 새로운 데이터를 갱신하여 발행 한다.
1. Wemos D1, R1 (mini) 에서 MQTT 구현하기(클릭 소스보기)
2. 핸드폰 전용 앱으로 MQTT 사용하기(앱 스토어에서 적당한 앱다운 받음)
나는 MQTT dash 설치함
3. 앱인벤터로 MQTT앱 만들기
MQTT 확장기능 아래 링크에서 다운로드 받아 설치 한 후 앱 작성 하면 됨
프로젝트 -> NuGet 패키지 관리 -> M2Mqtt 설치해야 함
'프로젝트 > MQTT 다중연결' 카테고리의 다른 글
C#에서 MQTT프로그램 만들기 (0) | 2022.09.14 |
---|---|
Wemos D1, R1 (mini) 에서 MQTT 구현하기 (0) | 2022.09.14 |