본문으로 건너뛰기

홈채널

1. 홈채널의 정의

클라이언트 장치들이 서버에 접속하면 서버는 장치들의 공인IP주소를 알 수 있습니다. 그리고 대부분의 가정이나 회사에서는 공유기(NAT)를 이용하여 1개의 IP 주소를 공유하여 사용합니다. 이때문에 서버는 동일한 IP 주소로 접속된 장치가 여러개인 경우 이들 장치들이 동일한 공유기를 사용중인것으로 판단 할 수 있고, 유선으로 연결되거나 공유기 암호를 공유하고 있으므로 어느정도 상호 신뢰가 가능한것으로 가정할 수 있습니다. 이 장치들끼리 서로 통신이 가능하도록 서버가 자동으로 만들어준 채널이 홈채널입니다.

2. 홈채널의 사용법

홈채널 사용법은 매우 간단합니다. 타겟이 채널인 시그널 (구독 및 발행)태그에서 채널을 생략할 경우 홈채널로 대신 적용됩니다. 홈채널로 전송된 시그널은 동일한 홈채널에 있는 장치들 중에서 동일한 태그로 구독한 장치들에게 전송됩니다.

// 시그널 송신 태그의 경우

io.signal("#topic") // 채널이 생략된 채널태그( 이 경우가 홈채널로 인식됩니다.)

io.signal("channel#topic") // 채널과 토픽이 있는 채널태그. 홈채널이 아닙니다.
io.signal("channel") // 토픽이 생략된 채널태그. 홈채널이 아닙니다.

// 구독 태그의 경우. Arduino & JS

io.subscribe("#topic") // 채널이 생략된 채널 구독 태그 ( 이경우가 홈채널로 인식됩니다.)

// 핸들러 등록 태그. JS경우

io.on("#topic", handler)
io.listen("#topic", handler)

// 데이터 핸들러 전달 인자 태그
function handler(tag){ // payload 가 없는 empty 시그널의 경우.
if( tag == "#topic"){ // true }
}

// Arduino 데이타 핸들러 전달 인자 tag 도 "#topic"으로 동일.

3. 홈채널 유형

홈채널은 서버 입장에서 접속된 클라이언트의 IP주소를 기반으로 생성됩니다. 이때문에 서버와 클라이언트의 네트웍 연결상태에 따라 몇가지 유형의 홈채널이 있을 수 있습니다.

  1. 서버 컴퓨터 내부 로컬 네트워크 (Localhost connection)
  2. 서버의 사설 네트워크(Private Network) 내부에서 사설IP로 연결
  3. 서버 네트워크 외부에서 공인IP 주소로 연결

서버와 분리된 네트워크에서 접속한 경우 [3]공인IP주소가 동일한 장치끼리 동일한 홈채널로 연결됩니다. 더불어 클라이언트가 서버와 동일한 [2]사설 네트워크(동일한 NAT 공유기에 연결)에서 연결된 경우나 [1]서버 내부에서 실행된 클라이언트의 접속인 경우를 합쳐서 별도의 Private 홈채널로 묶어줍니다. 이런 그룹화 방식을 통해 홈서버나 클라우드상에서 운영되는 서버 모두에서 홈채널 기능의 이용이 가능합니다.

IOSignal_homechannel

4. 홈채널 장점

홈채널의 사용을 통해 얻을 수 있는 몇 가지 장점이 있습니다.

  • 홈채널 장치들간의 소통을 위해 명시적 채널을 따로 만들거나 공유하지 않아도 됩니다.
  • 태그 표현 및 비교 연산이 간편해 집니다.
  • 동일한 네트웍(집, 사무실 등) 내부의 장치들간에 기본 소통 채널을 제공합니다.
  • 이미 공유기 암호 인증 또는 공유기에 직접 유선으로 접속된 장치들이므로 용도에 따라 보안 채널로 사용 가능합니다.
  • 현재 장소에서 사용 가능한 장치 정보의 검색과 알림(search and notify)용 채널로 적합합니다.
  • 장소 체크인(Check-in) 감지 용도로 활용 가능합니다.

5. 홈채널 응용

5-1. WiFi Check-In

보통 스마트폰이나 노트북 등을 사용시 집이나 사무실에 있는 인터넷 공유기에 설정된 암호를 통해 접속하게 되고, 외출 후 다시 방문시 해당 공유기에 자동으로 접속되게 됩니다. WiFi 자동 접속이 가능한 임베디드 장치(가령 ESP보드 등)의 경우 공유기 접속시 자동으로 서버에 접속이 되고, 서버 및 동일한 공유기에 연결된 다른 장치들도 홈채널을 통해 새로운 장치가 연결 되는걸 감지할 수 있습니다. 스마트폰의 경우도 별도의 앱 설치 없이도 웹브라우저를 통해 웹앱(웹페이지)에 접속하는것 만으로도 특정 장소에 진입(체크인:Check In)한 것을 스스로 감지할 수 있습니다.

5-2. 홈채널 장치 정보 공유

체크인 한 디바이스는 자신의 상태 정보나 다른 장치의 정보를 홈채널을 통해 간단히 공유할 수 있습니다. 예를 들어 집에 도착하여 스마트폰으로 웹앱을 열기만 하면 홈채널을 통해 집에 있는 장치들을 검색하고 해당 장치 제어용 (User Interface)화면을 제공 받은뒤 곧바로 해당 장치의 제어가 가능합니다. 동일한 웹앱을 사무실에서 실행할 경우, 사무실에 있는 장치 제어용 UI화면이 제공됩니다. 이렇게 홈채널을 이용하면 장치간 정보 공유 구현이 용이해 집니다. 참고로 실제 이를 구현한 예제소스가 아두이노 라이브러리 예제로 공개되어있습니다. #search #notify 홈채널의 구체적 사용법 소개는 별도의 문서로 소개드리겠습니다.