Технологии
Попробуем разобраться со стеком технологий, необходимых для создания ИВ-устройств в идеологии интернета вещей.
Электроника
Во-первых, ИВ-устройство должно иметь канал связи с интернетом. При этом связь может быть организована разными способами:
- работа в беспроводной сети WiFi (включая MESH) или в проводной сети Ethernet; устройства должны иметь соответствующие аппаратные модули, а также достаточную вычислительную мощность чтобы работать с протоколом TCP/IP;
- обмен данными с удалённым сервером через модуль сотовой связи, например, GPRS;
- работа в составе сети Zigbee; в этом случае данные сначала передаются до Zigbee маршрутизатора, а затем, после предварительной обработки, далее в интернет;
- работа в сети LoRaWAN.
В зависимости от поставленной задачи выбирается подходящая система связи и создаётся образ будущего устройства.
Например, Ethernet и WiFI часто реализованы в популярных микрокомпьютерах: Raspberry Pi, Orange Pi, Rock Pi и т.п. С помощью дополнительных модулей к ним подключить и прочие системы связи: GPRS, LoRa, Zigbee, и т.д.
Однако, для решения задач, где необходима низкая стоимость устройства и/или низкое его энергопотребление, микрокомпьютеры не подходят. В этих ситуациях на помощь приходят микроконтроллеры, дополненные нужными модулями связи. Существуют готовые SoC (система на кристалле) устройства, специально разработанные для мира ИВ, например, семейство модулей ESP от Espressif.
Программное обеспечение
Программа ИВ-устройства должна уметь работать с выбранной системой связи, обеспечивать сбор данных, их предварительную обработку и хранение.
Рабочий цикл типичного ИВ-устройства организован так, что большую часть своего времени система находится в режиме низкого энергопотребления — сна. Лишь иногда, по таймеру или по внешнему прерыванию, система пробуждается, собирает данные, обрабатывает их и производит обмен с сервером или с другими устройствами.
Протокол передачи данных
Для обмена данными с сетью, ИВ-устройство может использовать стандартные сетевые протоколы, например, TCP/IP или UDP. Специально для интернета вещей были разработаны протоколы более высокого уровня, такие как MQTT или CoAP.
Протокол MQTT имеет шинную организацию. При такой организации одни устройства становятся «издателями» — они отправляют какие-то данные в шину. Другие становятся «подписчиками» — они принимают из шины именно те данные, на которые подписались.
Рассмотрим работу MQTT на примере. Пусть в некотором здании размещены ИВ-устройства с датчиками углекислого газа. Которое каждые 10 минут они отправляют данные на сервер. После получения данных с датчика, ИВ-устройство формирует сообщение для шины MQTT, в котором содержатся сами данные, а также так называемая тема сообщения. Тема — это идентификатор, по которому подписчики будут искать эти сообщения в шине. Затем сообщение отправляется на сервер по WiFi.
С другой стороны, сервер, при помощи специальной программы — брокера MQTT, получает MQTT сообщения с наших ИВ-устройств и размещает их в шине.
Наконец, сервер умного дома получает все сообщения с требуемой темой и на основе их анализа принимает решения, например: открыть окна и проверить некоторые помещения в здании.
Визуализация и автоматизация
Для того, чтобы человек смог настраивать взаимодействие между ИВ-устройствами и формировать схемы автоматизации существуют специальные приложения, например, Node-RED.
Node-RED может извлекать нужные сообщения из шины MQTT, анализировать их и формировать новые MQTT сообщения для управления исполнительными ИВ-устройствами. Причём Node-RED может работать не только с MQTT, но и, например, со стандартным сетевым протоколом HTTP, что позволяет организовать взаимодействие с API сервисами.
Рекомендации
Таким образом, для создания своего ИВ-устройства с полным циклом функционирования можем сформировать такую структуру:
Здесь Д1..Д3 — те самые ИВ-устройства с датчиком CO2 из примера выше. И1 — исполнительное устройство.
Датчик может быть устроен так: в основе модуль ESP (например, ESP32-C6), к нему по шине I2C подключен датчик CO2. Питание осуществляется от аккумулятора или от литиевой батарейки.
Исполнительное устройство основано на том же ESP с подключенным к нему драйвером мотора. Драйвер управляет линейным актуатором для открывания окна. Питание системы осуществляется от сети, через блок питания.
Сервером с Node-RED и Mosquitto может служить даже самый простой микрокомпьютер, например, Raspberry Pi Zero 2.