ГлавнаяАкадемияCOURSE-16: Основы Интернета Вещей и практическое применение → Основы Интернета Вещей: от концепции к практике на платформе HI

Основы Интернета Вещей: от концепции к практике на платформе HI

Урок · COURSE-16: Основы Интернета Вещей и практическое применение · theory

COURSE-16-M01-L01 — Основы Интернета Вещей: от концепции к практике на платформе HI

Введение в Интернет Вещей для инженеров

Интернет вещей (IoT) — это не просто концепция, а инженерная дисциплина, объединяющая физическое оборудование с цифровыми системами. В контексте платформы HI, IoT — это создание автоматизированных систем, где контроллеры, датчики, исполнительные устройства и программное обеспечение работают как единый организм для решения конкретных задач на объекте: от управления климатом в коттедже до мониторинга производственной линии.

Цель этого урока — перейти от абстрактных определений к практическому пониманию того, как работает IoT на примере контроллера HI. Мы разберем каждый компонент экосистемы и увидим, как он реализуется с помощью нашего оборудования и программного стека.

Ключевые компоненты экосистемы IoT на платформе HI

Любая IoT-система состоит из четырех фундаментальных уровней. Рассмотрим, как каждый из них реализован в нашей экосистеме.

1. Устройства и сенсоры (Уровень сбора данных)

Это "органы чувств" и "мышцы" вашей системы автоматизации. Они подключаются непосредственно к контроллеру HI.

* Датчики температуры и влажности: Например, DS18B20 или DHT22, подключаемые к шине 1-Wire.

* Датчики движения, открытия дверей/окон (герконы): Подключаются как "сухой контакт".

* Кнопки и выключатели: Также работают по принципу "сухого контакта".

* Аналоговые датчики: Датчики давления, уровня CO2 с выходом 0-10В или 4-20мА.

* Счетчики с импульсным выходом: Счетчики воды, электроэнергии.

* Освещением: Включение/выключение групп света.

* Розетками: Управление питанием электроприборов.

* Сервоприводами: Управление задвижками на трубах отопления, вентиляционными заслонками.

* Клапанами: Управление системами полива или защиты от протечек.

* Двигателями: Управление воротами, роллетами.

2. Подключение и среда передачи данных

Это "нервная система", обеспечивающая связь между компонентами. На платформе HI мы разделяем физический и логический уровни.

* RS-485: Промышленный стандарт для подключения множества устройств (счетчиков, датчиков, модулей реле) по одному двухпроводному кабелю на большие расстояния (до 1200 м). Использует протокол Modbus RTU.

* CAN: Высоконадежная шина, используемая в автомобильной и промышленной автоматизации для критически важных коммуникаций.

* DALI: Специализированная шина для профессионального управления освещением.

* Ethernet (TCP/IP): Стандартная компьютерная сеть для связи контроллеров между собой и с внешним миром.

* Modbus: Протокол для опроса датчиков и управления устройствами по шине RS-485 (Modbus RTU) или через Ethernet (Modbus TCP).

* MQTT: Легковесный протокол для обмена сообщениями между устройствами и серверами. Это основной способ интеграции контроллера HI с облачными платформами, мобильными приложениями и SCADA-системами.

3. Обработка данных (Логика и сценарии)

Это "мозг" системы, расположенный непосредственно на контроллере HI. Вся логика автоматизации создается в среде Node-RED.

4. Программное обеспечение и интерфейсы (Визуализация и управление)

Это уровень взаимодействия пользователя с системой.

Принципы работы IoT: Практический цикл на платформе HI

Рассмотрим полный цикл работы на конкретном примере: "Автоматическое включение вентиляции при превышении уровня CO2 в офисном помещении".

Сценарий: `SCN-CLIMATE-001` Оборудование: Контроллер HI, датчик CO2 с выходом Modbus RTU, приточная вентиляционная установка, управляемая через реле.
  • Сбор данных:
  • * Узел `Modbus-Read` в Node-RED с заданной периодичностью (например, раз в 30 секунд) отправляет запрос по шине RS-485 на датчик CO2 (например, с адресом 5).

    * Датчик отвечает, отправляя текущее значение концентрации CO2 (например, 950 ppm).

  • Передача данных:
  • * Узел `Modbus-Read` передает полученное значение дальше по потоку в виде объекта `msg`.

    * 💡 Контракт сообщения: Для стандартизации мы всегда используем структурированный `msg.payload`.

            {

    "value": 950,

    "unit": "ppm",

    "source": "co2-sensor-office-1",

    "ts": 1678886400000

    }

  • Обработка данных:
  • * Сообщение `msg` поступает в узел `Switch` (или `Function`).

    * Узел проверяет условие: `msg.payload.value > 800`.

    * В нашем случае 950 > 800, поэтому условие истинно.

  • Действие:
  • * Узел `Switch` передает управление на ветку, которая активирует реле.

    * Узел `Change` формирует команду для реле (например, `true`).

    * Эта команда поступает в узел `Relay-Out`, который физически замыкает реле (например, `RL-08`), подключенное к вентиляционной установке. Вентиляция включается.

    * ⚠️ Обратная связь: Хорошей практикой является отправка статуса (`"ON"`) в MQTT-топик `hi/office/ventilation/state` для отображения в пользовательском интерфейсе.

    ASCII-схема потока в Node-RED (`FLOW-CLIMATE-001`):
               +---------------+    +-------------------+    +----------------+    +------------+
    

    [Inject] -> | Modbus Read | -> | Function: Format | -> | Switch: >800? | -> | Relay Out |

    (30 sec) | (CO2 Sensor) | | (Create Contract) | +----------------+ | (RL-08) |

    +---------------+ +-------------------+ | (else) +------------+

    | (on error) | |

    v v v

    +---------------+ +------------+ +------------+

    | Catch Node | -> [To Error Logger] | Relay Out | | MQTT Out |

    +---------------+ | (RL-08 OFF)| | (State ON) |

    +------------+ +------------+

    Вызовы и решения в экосистеме HI

    Вместо того чтобы просто перечислять проблемы, рассмотрим, как наша платформа их решает.

    * Решение HI: Контроллер работает на базе защищенной ОС Debian Linux. Вы можете изолировать его в отдельной физической сети без доступа в интернет. Для внешней связи используется протокол MQTT с шифрованием (TLS) и списками контроля доступа (ACL), что позволяет гранулярно настраивать права для каждого пользователя или сервиса. * Решение HI: Node-RED выступает в роли универсального "переводчика". Благодаря огромной библиотеке узлов, он может одновременно работать с устройствами по Modbus, DALI, CAN, MQTT и десяткам других протоколов, объединяя их в единой логической среде. * Решение HI: Вся ключевая логика выполняется локально на контроллере. Ваша система отопления, безопасности и освещения продолжит работать автономно, даже если интернет на объекте пропадет на несколько недель. * Решение HI: Контроллер оснащен функцией ПЛК (программируемого логического контроллера) на базе отдельного ARM32-ядра и EEPROM-памяти. Это позволяет сохранять критически важные состояния (например, состояние клапанов защиты от протечек) и логику, которая будет восстановлена и исполнена мгновенно после восстановления питания, до полной загрузки основной ОС.

    ---

    Лабораторная работа №1: Первое включение и опрос датчика

    ID: `COURSE-16-M01-LAB01` Цель: Подключить контроллер HI к сети, зайти в интерфейс Node-RED и создать первый поток для считывания данных с датчика температуры DS18B20. Оборудование: Порядок выполнения:
  • Подключение: Подключите датчик DS18B20 к универсальному входу (например, UI-01) и клеммам питания на контроллере согласно схеме `WIRING-SENS-001`. Подайте питание 24V на контроллер. Подключите контроллер Ethernet-кабелем к вашему ПК или роутеру.
  • Доступ к Node-RED: Откройте браузер и перейдите по адресу контроллера (например, `http://192.168.1.10:1880`).
  • Создание потока:
  • * Перетащите на поле узел `inject`. Настройте его на повторение каждые 5 секунд.

    * Перетащите узел `function`. В нем напишите код для чтения файла устройства 1-Wire.

    * Перетащите узел `debug`. Соедините все узлы.

  • Развертывание и проверка: Нажмите кнопку "Deploy". В боковой панели "Debug" вы должны увидеть показания температуры каждые 5 секунд.
  • ASCII-схема потока:
               +----------+      +--------------------------+      +-------------+
    

    [Inject] -> | Function | -> | debug |

    (5 sec) | (Read DS18B20) | (Show Payload) |

    +----------+ +--------------------------+

    Скелет кода для узла `Function`:
    // В реальной системе используется специализированный узел,
    

    // здесь для обучения имитируем чтение из файловой системы Linux.

    // Предполагается, что ID датчика '28-01234567abcd'

    const temp_raw = "75 01 4b 46 7f ff 0c 10 2e : crc=2e YES\n75 01 4b 46 7f ff 0c 10 2e t=23312";

    const temp_string = temp_raw.split('t=')[1];

    const temp_c = parseInt(temp_string) / 1000.0;

    msg.payload = temp_c;

    node.status({fill:"green", shape:"dot", text: temp_c + " °C"});

    return msg;

    📋 Чек-лист сдачи:
  • [ ] Контроллер доступен по сети.
  • [ ] Поток в Node-RED создан и развернут.
  • [ ] В окне Debug отображаются корректные числовые значения температуры.
  • [ ] Узел `Function` отображает свой статус с текущей температурой.
  • Рубрика оценивания:

    Лабораторная работа №2: Управление реле по событию

    ID: `COURSE-16-M01-LAB02` Цель: Модифицировать предыдущий поток для управления реле в зависимости от показаний температуры. Оборудование: То же, что в LAB01, плюс светодиод или лампа для индикации. Порядок выполнения:
  • Подключение: Подключите светодиод или лампу к одному из релейных выходов (например, RL-01) согласно схеме `WIRING-LIGHT-001`.
  • Модификация потока:
  • * Добавьте в поток из LAB01 узел `switch`.

    * Настройте `switch` так, чтобы он проверял `msg.payload`. Если значение > 25, сообщение идет на один выход, если <= 25 — на другой.

    * Добавьте два узла `change`, которые будут устанавливать `msg.payload` в `true` и `false` соответственно.

    * Добавьте узел `rpi gpio out` (или его аналог для управления реле на платформе HI). Настройте его на управление выходом RL-01.

  • Развертывание и проверка: Нажмите "Deploy". Попробуйте нагреть датчик (например, пальцами). Когда температура превысит 25°C, реле должно щелкнуть, и светодиод загорится. Когда остынет — погаснет.
  • ASCII-схема потока:
               +----------+      +------------------+ --(>25)--> [Change: true] --+
    

    [Inject] -> | Function | -> | Switch: Temp >25 | | -> [Relay Out]

    (5 sec) | (Read DS18B20) +------------------+ --(<=25)-> [Change: false]--+ (RL-01)

    +----------+

    📋 Чек-лист сдачи:
  • [ ] Поток из LAB01 успешно модифицирован.
  • [ ] Реле корректно подключено и управляется из Node-RED.
  • [ ] При нагреве датчика выше 25°C светодиод включается.
  • [ ] При остывании датчика ниже 25°C светодиод выключается.
  • Рубрика оценивания:

    ---

    Тест для самопроверки

    ID: `COURSE-16-M01-QUIZ`
  • Какой компонент контроллера HI используется для создания сценариев автоматизации?
  • a) Debian Linux

    b) Node-RED

    c) MySQL

    d) EEPROM

  • Какой протокол является основным для интеграции контроллера HI с мобильными приложениями и облачными сервисами?
  • a) Modbus RTU

    b) DALI

    c) MQTT

    d) CAN

  • Для подключения какого типа устройств используется шина RS-485?
  • a) Только для датчиков температуры 1-Wire.

    b) Для множества промышленных устройств, таких как счетчики и модули ввода-вывода.

    c) Для подключения контроллера к локальной сети Ethernet.

    d) Только для управления освещением.

  • Что такое "контракт сообщения" в контексте Node-RED?
  • a) Лицензионное соглашение на использование узла.

    b) Стандартизированный формат JSON-объекта `msg.payload` для предсказуемого обмена данными.

    c) Настройка прав доступа к потоку.

    d) Физическая схема подключения.

  • В чем ключевое преимущество локальной обработки логики на контроллере HI?
  • a) Снижение стоимости оборудования.

    b) Автономная работа системы без зависимости от интернета и облачных сервисов.

    c) Возможность использовать любой язык программирования.

    d) Увеличение дальности связи по Wi-Fi.

  • Какой узел в Node-RED используется для принятия решений на основе входящих данных (например, "если температура > 20")?
  • a) `inject`

    b) `debug`

    c) `switch`

    d) `comment`

  • Для чего на контроллере HI предназначен отдельный ARM32-микроконтроллер и EEPROM?
  • a) Для ускорения работы веб-интерфейса.

    b) Для хранения медиафайлов.

    c) Для обеспечения работы критически важной логики и сохранения состояний при сбое питания.

    d) Для расширения числа портов Wi-Fi.

  • Вы подключаете датчик открытия двери. К какому типу входа на контроллере HI вы его подключите?
  • a) Релейный выход.

    b) Универсальный вход в режиме "сухой контакт".

    c) Порт DALI.

    d) Порт CAN.

  • Что произойдет, если в потоке Node-RED узел `Modbus-Read` не сможет опросить устройство?
  • a) Весь контроллер перезагрузится.

    b) Узел сгенерирует ошибку, которую можно перехватить узлом `catch` для дальнейшей обработки.

    c) Node-RED автоматически попробует другой протокол.

    d) Ничего, система продолжит работать со старым значением.

  • Какова роль узла `debug` в Node-RED?
  • a) Управлять исполнительными устройствами.

    b) Отображать содержимое проходящих через него сообщений `msg` для отладки потока.

    c) Запускать поток через определенные интервалы времени.

    d) Писать комментарии к коду.

    (Ответы: 1-b, 2-c, 3-b, 4-b, 5-b, 6-c, 7-c, 8-b, 9-b, 10-b)

    ---

    Мини-справочник по диагностике ("Если не работает")

    | Проблема | Возможная причина | Шаги для проверки и решения -

    | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

    | Не могу зайти на веб-интерфейс Node-RED | 1. Неправильный IP-адрес.
    2. Контроллер и ПК в разных подсетях.
    3. Проблема с Ethernet-кабелем. | 1. Убедитесь, что вводите правильный IP-адрес контроллера и порт `:1880`.
    2. Проверьте сетевые настройки ПК и контроллера. Они должны быть в одной подсети (например, `192.168.1.10` и `192.168.1.15`).
    3. Попробуйте заменить кабель или порт на роутере. - |

    | Датчик температуры не отдает данные | 1. Неправильное подключение (перепутаны провода).
    2. Плохой контакт в клеммах.
    3. Неверный ID датчика. | 1. Проверьте схему подключения `WIRING-SENS-001`. Убедитесь, что провода V+, GND и Data не перепутаны.
    2. Убедитесь, что провода надежно зажаты в клеммах.
    3. В Linux ID датчика можно найти в директории `/sys/bus/w1/devices/`. Убедитесь, что он совпадает с тем, что вы используете в потоке. |

    | Реле не включается по команде из Node-RED | 1. Неправильно указан номер реле в узле.
    2. Проблема с питанием нагрузки.
    3. Логическая ошибка в потоке. | 1. Дважды проверьте, что в узле `Relay Out` указан именно тот номер реле, к которому подключена нагрузка (например, RL-01).
    2. Убедитесь, что на саму нагрузку (лампу, двигатель) и на ее блок питания подается напряжение.
    3. Временно подключите узел `debug` прямо перед узлом `Relay Out`, чтобы увидеть, какое значение (`true` или `false`) приходит на него. |

    | Показания датчика нестабильны, "скачут" | 1. Наводки от силовых кабелей.
    2. Слишком длинный кабель для датчика 1-Wire. | 1. Убедитесь, что сигнальный кабель от датчика проложен на расстоянии не менее 10 см от силовых кабелей 230V. Если это невозможно, используйте экранированный кабель.
    2. Для шины 1-Wire старайтесь не превышать длину 15-20 метров. Для больших расстояний используйте датчики с интерфейсом RS-485. |