인터넷에 연결된 다양한 IoT(사물인터넷) 기기들이 가정 내에서 서로 통신하고 데이터를 주고받아 자동화된 환경을 제공하는 주거 시스템이다. 주로 조명, 냉난방, 보안, 가전제품 등을 원격으로 제어하는데 사용한다.

IoT를 제어하는 방법은 크게 3가지 정도가 있다.
기기에 내장된 Wifi 모듈을 활용한 Wifi를 사용해 P2P 또는 클라우드 서버 제어
이 경우 Samsung Smart Things와 같은 플랫폼의 OpenApi를 사용하거나, 직접 Api를 만들어야한다. 보통의 경우 P2P보다는 지속적인 보안 업데이트 및 외부 접근의 모니터링에 유용한 클라우드를 사용한다.
기기에 내장된 적외선 IR모듈을 통한 제어
IoT의 지원이 되지 않는 기존 기기들도 리모컨을 사용하는 경우 연결이 가능하다는 장점이 있다. 이 경우 서버 또는 허브와 기존 기기들을 연결시켜주는 리모컨이 필요하다.
허브를 사용해 기기들을 통합하여 제어
Matter, Zigbee, Z-wave등 여러가지 모듈들 중 하나또는 복수 모듈을 사용한다.
Matter: CSA에서 만든 IoT규격으로, 여러 회사의 기기를 연동할 수 있게 한 방법, 이는 CSA의 연간 3000$를 지불해야하고, 심사를 통과해야하기 때문에 스타트업, 소규모 프로젝트에서 고려할만한 방법은 아니다.
Zigbee: 2.4GHz 대역을 사용하여 전 세계적으로 호환 가능하다. 또한 데이터 전송 속도가 빠르고 저지연성이기 때문에 많은 기기와의 빠른 연결에 적합하다. 하지만 10~20미터의 짧은 커버리지를 가지고 있기에, 매쉬 네트워크를 사용한 확장이 필요하다.
Z-Wave: 지역별로 전용 주파수 대역(미국 908MHz, 유럽 868MHz 등)을 사용하여 전파 간섭이 적다. 전송 속도는 Zigbee보다 느리지만 스마트 홈의 제어 신호로 사용하기에는 무리가 없다. 벽을 잘 통과하면 30미터 정도의 넓은 커버리지를 가지고 있다.
IoT 제품을 제어하기 위해 여러가지 입력 방식을 선택할 수 있다.
IoT 리모컨은 기존 리모컨의 적외선 신호를 IoT 리모컨에 등록하여, 이를 통해 기기들을 제어하는 리모컨을 말한다.
일반적으로 IR소자를 사용해 적외선 신호를 Byte로 저장하며, 앱을 사용해 저장된 Byte값을 담아 적외선 신호를 쏘는 것으로 기기를 제어한다.

Arduino기반 IR 리모컨 라이브러리:
https://github.com/Arduino-IRremote/Arduino-IRremote