본문으로 건너뛰기

가상스위치 제어

소개

IoT 장치를 원격 제어할 때 가장 큰 문제 중 하나가 장치 상태의 동기화 입니다. 가정이나 사무실의 전등 제어를 한 사람 또는 1대의 제어 장치로만 제어 가능한 것보다, 가족이나 회사 구성원 모두가 제어가 가능하면 더 편리할 것입니다. 이렇게 다중 기기와 동기화되어 제어가 가능하도록 구현하려면 1:1 제어의 경우보다 복잡도가 높아집니다. IO시그널을 활용하면 채널 시그널링과 리테인(retain) 기능으로 손쉽게 구현 가능합니다.

준비물

이번 예제 체험은 웹브라우저만 있으면 됩니다. 다중 상태 동기화를 확인 하기위해 브라우저 화면 2~3개 사용을 권장드립니다.

체험1. 가상 토글 스위치

리모컨앱을 실행 후 검색된 장치가 없는 경우 토글 버튼 3개가 보입니다. 이 버튼들은 동일 네트워크에서 연결된 다른 앱들과 상태가 동기화 되도록 구현이 되어있습니다.

  1. 브라우저에서 리모컨 앱을 엽니다. https://remocon.kr
  2. 동일한 공유기에 연결된 노트북이나 스마트폰 등에서 위 웹앱 화면을 총 3개 열어주세요
  3. 다른 호환 장치가 없는 경우 아래와 같이 가상의 토글 버튼 3개가 보입니다.
  4. 3개의 앱 중 하나에서 버튼을 클릭하여 ON/OFF 제어를 해봅니다.
  5. 이때 다른 2개의 앱에서도 동일한 상태정보가 동기화되어 표시됩니다.

본 예제는 리테인이 설정된 홈채널 ( “#$homeButtonStates”)태그를 사용하여 모든 장치가 상태를 공유하는 경우입니다.

  • 홈채널(채널값 생략)을 사용하여 동일 공유기에 연결된 장치간의 상태공유를 합니다.
  • 필요한 장치만 수신 하도록 채널의 토픽을 “homeButtonStates”으로 정해줍니다.
  • “$” 기호를 추가하여 가장 마지막 상태정보가 리테인(보전)되도록하고, 이후에 접속(채널 구독)한 장치도 마지막 상태 정보를 수신할 수 있습니다.

홈채널을 통한 채널링과 장치 정보 동기화

제한

데모 서버에 접속된 익명 장치는 동기화 가능한 기기의 개수가 약 3~5개(변경 가능)로 제한되어있습니다. 제한 개수보다 많은 앱이나 장치가 연결된 경우 일부 기기만 상태정보 동기화가 가능합니다. 참고로 서버 구동시 설정으로 제한 값을 조절 할 수 있습니다.

참고사항

리테인과 시그널 채널, 태그의 개념은 시그널태그 자료를 참고하시기 바랍니다