튜토리얼

8

분 소요

스마트 홈 프로토타이핑: Arduino MQTT 브리지

Arduino를 중간 다리로 활용해 프로토타이핑을 한 단계 끌어올리세요.

Konstantinos Partheniadis, Product Design Prototyper at Futurehome

이 고급 프로토타이핑 튜토리얼에서는 MQTT를 사용하는 플랫폼의 실제 데이터를 통해 ProtoPie 프로토타입을 실제로 작동시키기 위해 Arduino를 중간 브리지로 사용하는 방법을 살펴봅니다.

이 솔루션을 통해 엔터프라이즈 팀이 아니더라도 MQTT 통신을 구현할 수 있으며, Socket.io 없이도 가능합니다. 다만 엔터프라이즈 플랜으로 확장할 준비가 될 때까지는 조금 더 번거로운 방식으로 진행해야 합니다.

비디오

개요

  • 우리가 만들 것

  • MQTT란?

  • 주제와 메시지 모으기

  • Arduino 브리지 만들기

  • 파일 다운로드

  • ProtoPie 프로토타입 편집

  • ProtoPie Connect로 프로토타입 실행

  • 결론

  • ProtoPie로 집 안의 스마트 기기 제어

우리가 만들 것

이 튜토리얼을 따라 하면 아래 영상과 비슷한 것을 구현할 수 있습니다.


Lamp prototype

면책 조항

예제로는 Futurehome 게이트웨이를 사용하고 있는데, 이는 대상에 따라 매우 달라질 수 있다는 점을 이해하고 있습니다. 하지만 Home Assistant처럼 오픈 MQTT를 사용하는 다른 서비스에도 이 방법을 적용할 수 있다고 확신합니다. 추가 지원이 필요하시면 partheniadis.k@gmail.com으로 연락해 주세요.

MQTT란?

MQTT는 JSON 형식으로 클라이언트와 게이트웨이 사이에서 메시지를 주고받기 위한 일반적인 프로토콜입니다. 쉽게 말해, 여러 참가자가 주제 관련 메시지를 보내고 읽을 수 있는 그룹 채팅이라고 생각하면 됩니다.

우리의 예제에서 게이트웨이는 Futurehome Smarthub II이며, 모든 스마트 홈 메시지를 주고받기 위해 오픈 MQTT를 사용합니다. Futurehome 사용자는 보통 모바일 앱을 사용해 집 안의 조명을 켭니다. 앱에서 조명을 탭하면 관련 주제인 “bedside light”에 “state: on” 메시지가 게시됩니다.

메시지가 MQTT에 게시되면 게이트웨이가 이를 가져와 조명을 켭니다. 성공적으로 켜지면 게이트웨이는 동일한 주제인 “bedroom light”의 MQTT에 event를 게시하며, “state: on”과 함께 소비 전력 같은 더 자세한 속성, 예를 들어 “power: 5 watts”를 포함합니다.

앱은 해당 특정 주제에 구독되어 있고 모든 업데이트를 듣고 있기 때문에 이 정보를 가져올 수 있습니다.


Think of MQTT as a group chat where many participants can send and read messages.


MQTT는 여러 참가자가 메시지를 보내고 읽을 수 있는 그룹 채팅이라고 생각하면 됩니다.


Example of an MQTT event as received when the light turned on successfully.


조명이 성공적으로 켜졌을 때 수신되는 MQTT 이벤트의 예입니다.

Futurehome에서 MQTT API를 켜는 방법은 영상 튜토리얼을 따라 해 주세요. 그러면 주제에 대해 구독하고 게시할 수 있습니다. 진행하기 전에 아래 체크리스트를 확인해 주세요:

  • Futurehome 앱에서 로컬 API 설정하기

  • 보안 강화를 위해 사용자 이름과 비밀번호 설정하기

  • Playground에서 ThingsPlex를 켜서 주제와 메시지 살펴보기

주제와 메시지 모으기

  1. Futurehome 앱을 사용해 장치를 제어하고 ThingsPlex Message stream에서 주고받는 메시지를 모니터링하세요.


Thingsplex Message stream environment with visibility to all events you can use in your Arduino.


Arduino에서 사용할 수 있는 모든 이벤트를 확인할 수 있는 ThingsPlex Message stream 환경입니다.

  1. 텍스트 파일을 열고 ProtoPie 프로토타입에서 보낼 메시지를 붙여넣으세요. 예를 들어, 조명을 켜기:

  1. 다른 텍스트 파일을 열고 ProtoPie 프로토타입에서 모니터링하고 표시할 이벤트를 붙여넣으세요. 예를 들어, 조명의 소비 전력(10.5W):

Arduino 브리지 만들기

이제 MQTT에 접근할 수 있고 주제와 메시지도 모아졌으므로, Arduino 브리지를 만들 수 있습니다. Arduino는 본질적으로 MQTT 메시지를 MQTT에서 ProtoPie Connect로, 그리고 ProtoPie에서 ProtoPie Connect로 전달합니다.


Arduino is just an intermediary for you to translate and format the messages between your MQTT app and ProtoPie.


Arduino는 MQTT 앱과 ProtoPie 사이에서 메시지를 번역하고 형식을 맞춰 주는 중간 매개체일 뿐입니다.

아래에는 간략한 단계가 나와 있지만, 더 자세한 설명은 영상 튜토리얼과 Arduino 코드 템플릿에서 확인할 수 있습니다:

  • WiFi 또는 LAN 지원 보드를 준비하세요. 우리는 Adafruit Feather를 사용합니다. ESP8266이면 무엇이든 괜찮습니다.

  • ESP 라이브러리 ESP8266WiFi.h를 포함하세요

  • MQTT pub/sub 라이브러리 PubSubClient.h를 포함하세요

  • JSON을 더 쉽게 다루기 위해 ArduinoJson.h를 포함하세요

  • 명령을 보낼 주제의 배열을 만드세요(텍스트 파일에 저장해 둔 것과 동일하게)

  • 이벤트를 수신하기 위해 구독할 주제의 배열을 만드세요(텍스트 파일에 저장해 둔 것과 동일하게)

  • ProtoPie Connect를 통해 MQTT로 보낼 수 있도록 JSON에서 메시지 형식을 맞추고 단순화하세요

  • ProtoPie Connect에서 수신한 메시지를 단순화하고 시리얼로 출력하세요. 예: “STATE_LAMP || 1” 이렇게 하면 프로토타입이 이를 표시할 수 있습니다.

파일 다운로드

코드 템플릿과 ProtoPie 프로토타입을 여기에서 다운로드하세요.

ProtoPie 프로토타입 편집

우리는 프로토타입이 조명을 ‘켜기’ 또는 ‘끄기’ 할 수 있고, 실시간으로 전력 소비를 표시할 수 있기를 원합니다. 여기에 더해 마지막으로 수신된 이벤트를 타임스탬프와 함께 맨 위에 추가하는 이벤트 타임라인도 만들겠습니다.

  • 필요에 맞게 변수를 설정하세요:

  • 수신된 조명 상태를 저장할 “state_lamp” 숫자(0: off, 1: on)

  • 소비 전력을 와트 단위로 저장할 “power_lamp” 텍스트. 필요한 계산이나 변환을 하기 위해 수식 안에서 이를 숫자로 변환할 것입니다. 예: kW로 변환

  • 이벤트 타임라인을 저장할 “events_text” 텍스트

  • 새 이벤트를 게시하기 위한 탭 이벤트를 만드세요.


tap events
  • 조명이 꺼져 있으면 켜기 명령을 보내기

  • 조명이 켜져 있으면 끄기 명령을 보내기

  • ProtoPie Connect에서 들어오는 이벤트를 수신하기


incoming events
  • 들어오는 메시지는 “STATE_LAMP”이며, Arduino에서 오는 대로 그 내용을 “state_lamp” 변수에 저장합니다.

ProtoPie Connect로 프로토타입 실행

마지막으로 ProtoPie 프로토타입을 ProtoPie Connect에 추가하고, 보드레이트 115200으로 Arduino 포트에서 Arduino 플러그인을 실행하세요.

결론

이 고급 프로토타이핑 튜토리얼에서는 Futurehome MQTT 브로커에서 가져온 실제 데이터와 스마트 홈 ProtoPie 프로토타입을 연결했습니다. 이를 통해 집 안의 스마트 기기를 제어하고, 앱 내의 새로운 시각화에 활용할 수 있는 이벤트를 수신할 수 있습니다.

궁극적으로 이 방법은 물리적 제품과 디지털 제품 사이의 혁신적인 상호작용을 더 효율적이고 창의적인 방식으로 프로토타입화하는 데 도움이 될 것입니다. 또한 개발 팀의 부담을 줄이고, 설계 과정 초기에 예상치 못한 복잡성을 이해관계자와 함께 풀어 가는 데도 도움이 됩니다.

ProtoPie로 집 안의 스마트 기기 제어

스마트 홈 개념을 혁신할 준비가 되셨나요? ProtoPie에서 아이디어를 매끄럽게 실제 기능과 통합해 보세요. 스마트 홈 혁신의 다음 단계로 나아가세요.