Структура сообщений
Протокол обмена, используемый между шлюзом и контроллером, представляет собой простой список значений, разделенных точкой с запятой. В конце каждой «команды» — данные сообщения. Все команды заканчиваются символом конца строки. Сообщения имеют следующий формат:
node-id ; child-sensor-id ; command ; ack ; type ; payload \n
Вы можете преобразовать лог отладки вашего шлюза или узлов, используя наш онлайн-парсер.
| Часть | Описание |
|---|---|
| node-id | Уникальный идентификатор узла, который отправляет или должен получить сообщение (адрес) |
| child-sensor-id | На каждом узле может быть установлено несколько датчиков. Это идентификатор child-sensor, который однозначно идентифицирует один из подключенных датчиков |
| command | Тип отправленной команды — см. Таблицу ниже |
| ack | Параметр ack имеет следующее значение: Исходящий: 0 = сообщение не нужно подтверждать, 1 = запрос подтверждения у запрашиваемого узла, Входящий: 0 = обычное сообщение, 1 = это сообщение ack |
| type | Зависит от типа команды. См. Таблицы ниже |
| payload | Данные сообщение, поступающее с датчиков или команд. |
Максимальный размер данных — 25 байт! NRF24L01 + имеет максимум 32 байта. Библиотека MySensors (версия 2.0) использует 7 байтов для заголовка сообщения.
Команда (command)
| Тип | Значение | Описание |
|---|---|---|
| presentation | 0 | Отправляется узлом, когда он презентует прикрепленные датчики. Обычно это делается в presentation(). |
| set | 1 | Это сообщение отправляется от или к датчику, когда значение датчика должно быть обновлено |
| req | 2 | Запрос значение (обычно из привода, предназначенного для контроллера). |
| internal | 3 | Это специальное внутреннее сообщение. Подробнее см. Таблицу ниже. |
| stream | 4 | Используется для обновления прошивки OTA |
Презентация (presentation)
Когда презентационное сообщение отправляется с датчика, введите одно из следующих значений:
Данные презентационного сообщения описывают версию (узловое устройство) или описание датчиков.
| Тип | Значение | Описание | Переменные |
|---|---|---|---|
| S_DOOR | 0 | Дверные и оконные датчики | V_TRIPPED, V_ARMED |
| S_MOTION | 1 | Датчик движения | V_TRIPPED, V_ARMED |
| S_SMOKE | 2 | Датчик дыма | V_TRIPPED, V_ARMED |
| S_BINARY | 3 | Бинарное устройство (вкл / выкл) | V_STATUS, V_WATT |
| S_DIMMER | 4 | Диммируемое устройство | V_STATUS (Вкл/Выкл), V_PERCENTAGE (Уровень димирования 0-100), V_WATT |
| S_COVER | 5 | Жалюзи или затенители | V_UP, V_DOWN, V_STOP, V_PERCENTAGE |
| S_TEMP | 6 | Датчик температуры | V_TEMP, V_ID |
| S_HUM | 7 | Датчик влажности | V_HUM |
| S_BARO | 8 | Датчик барометр (давление) | V_PRESSURE, V_FORECAST |
| S_WIND | 9 | Датчик ветра | V_WIND, V_GUST, V_DIRECTION |
| S_RAIN | 10 | Датчик дождя | V_RAIN, V_RAINRATE |
| S_UV | 11 | УФ-датчик | V_UV |
| S_WEIGHT | 12 | Датчик веса для весов и т.д. | V_WEIGHT, V_IMPEDANCE |
| S_POWER | 13 | Питание, измерители мощности | V_WATT, V_KWH, V_VAR, V_VA, V_POWER_FACTOR |
| S_HEATER | 14 | Нагреватель устройство | V_HVAC_SETPOINT_HEAT, V_HVAC_FLOW_STATE, V_TEMP, V_STATUS |
| S_DISTANCE | 15 | Датчик расстояния | V_DISTANCE, V_UNIT_PREFIX |
| S_LIGHT_LEVEL | 16 | Датчик освещённости | V_LIGHT_LEVEL (uncalibrated percentage), V_LEVEL (light level in lux) |
| S_ARDUINO_NODE | 17 | Узел Arduino | |
| S_ARDUINO_REPEATER_NODE | 18 | Узел Arduino повторитель | |
| S_LOCK | 19 | Замок | V_LOCK_STATUS |
| S_IR | 20 | ИК приёмник/передатчик | V_IR_SEND, V_IR_RECEIVE, V_IR_RECORD |
| S_WATER | 21 | Водомер | V_FLOW, V_VOLUME |
| S_AIR_QUALITY | 22 | Датчик качества воздуха, например, MQ-2 | V_LEVEL, V_UNIT_PREFIX |
| S_CUSTOM | 23 | Используйте это для пользовательских датчиков если нет в перечне. | |
| S_DUST | 24 | Датчик уровня пыли | V_LEVEL, V_UNIT_PREFIX |
| S_SCENE_CONTROLLER | 25 | Устройство управления сценами | V_SCENE_ON, V_SCENE_OFF |
| S_RGB_LIGHT | 26 | RGB свет | V_RGB, V_WATT |
| S_RGBW_LIGHT | 27 | RGBW свет (с отдельным компонентом белым) | V_RGBW, V_WATT |
| S_COLOR_SENSOR | 28 | Датчик цвета | V_RGB |
| S_HVAC | 29 | Термостат / Устройство вентиляции и кондиционирования | V_STATUS, V_TEMP, V_HVAC_SETPOINT_HEAT, V_HVAC_SETPOINT_COOL, V_HVAC_FLOW_STATE, V_HVAC_FLOW_MODE, V_HVAC_SPEED |
| S_MULTIMETER | 30 | Мультиметр устройство | V_VOLTAGE, V_CURRENT, V_IMPEDANCE |
| S_SPRINKLER | 31 | Спринклер устройство | V_STATUS (Вкл/Выкл), V_TRIPPED (Если обнаружен пожар) |
| S_WATER_LEAK | 32 | Датчик утечки воды | V_TRIPPED, V_ARMED |
| S_SOUND | 33 | Датчик звука | V_LEVEL (in dB), V_TRIPPED, V_ARMED |
| S_VIBRATION | 34 | Датчик вибрации | V_LEVEL (вибрация в Hz), V_TRIPPED, V_ARMED |
| S_MOISTURE | 35 | Датчик сырости | V_LEVEL (содержание воды или влаги в процентах?), V_TRIPPED, V_ARMED |
| S_INFO | 36 | Текстовый ЖК-дисплей | V_TEXT |
| S_GAS | 37 | Датчик газа | V_FLOW, V_VOLUME |
| S_GPS | 38 | Датчик GPS | V_POSITION |
| S_WATER_QUALITY | 39 | Датчик качества воды | V_TEMP, V_PH, V_ORP, V_EC, V_STATUS |
Установка, запрос (set, req)
Когда отправляется сообщение set или request, тип:
| Тип | Значение | Описание | Использован |
|---|---|---|---|
| V_TEMP | 0 | температура | S_TEMP, S_HEATER, S_HVAC, S_WATER_QUALITY |
| V_HUM | 1 | влажность | S_HUM |
| V_STATUS | 2 | Двоичный статус. 0 = выкл 1 = вкл | S_BINARY, S_DIMMER, S_SPRINKLER, S_HVAC, S_HEATER, S_WATER_QUALITY |
| V_PERCENTAGE | 3 | Процентное значение. 0-100 (%) | S_DIMMER, S_COVER |
| V_PRESSURE | 4 | Атмосферное давление | S_BARO |
| V_FORECAST | 5 | Прогноз. Один из: «Ясно», «Солнечно», «Облачно», «Переменная облочность», «Грозы» или «Неизвестно» | S_BARO |
| V_RAIN | 6 | Количество осадков | S_RAIN |
| V_RAINRATE | 7 | Уровень осадков | S_RAIN |
| V_WIND | 8 | Скорость ветра | S_WIND |
| V_GUST | 9 | Порыв ветра | S_WIND |
| V_DIRECTION | 10 | Направление ветра 0-360 (в градусах) | S_WIND |
| V_UV | 11 | Уровень УФ-излучения | S_UV |
| V_WEIGHT | 12 | Вес (для весов и т.д.) | S_WEIGHT |
| V_DISTANCE | 13 | Расстояние | S_DISTANCE |
| V_IMPEDANCE | 14 | Значение импеданса | S_MULTIMETER, S_WEIGHT |
| V_ARMED | 15 | Сигнализация. 1 = Включена, 0 = не включена | S_DOOR, S_MOTION, S_SMOKE, S_SPRINKLER, S_WATER_LEAK, S_SOUND, S_VIBRATION, S_MOISTURE |
| V_TRIPPED | 16 | Сработал датчик безопасности. 1 = Вкл, 0 = Выкл | S_DOOR, S_MOTION, S_SMOKE, S_SPRINKLER, S_WATER_LEAK, S_SOUND, S_VIBRATION, S_MOISTURE |
| V_WATT | 17 | Значение Вт для счетчиков электроэнергии | S_POWER, S_BINARY, S_DIMMER, S_RGB_LIGHT, S_RGBW_LIGHT |
| V_KWH | 18 | Накопленное количество КлВт/Ч для измерителя мощности | S_POWER |
| V_SCENE_ON | 19 | Включить сцену | S_SCENE_CONTROLLER |
| V_SCENE_OFF | 20 | Выключить сцену | S_SCENE_CONTROLLER |
| V_HVAC_FLOW_STATE | 21 | Режим: «Выкл», «Нагрев», «Охлаждение» или «Автоматически» | S_HVAC, S_HEATER |
| V_HVAC_SPEED | 22 | HVAC / Нагреватель скорость вращения вентилятора ( «Минимум», «Средне», «Макс», «Авто») | S_HVAC, S_HEATER |
| V_LIGHT_LEVEL | 23 | Неточный уровень освещенности. 0-100%. Используйте V_LEVEL для уровня освещенности в люкс. | S_LIGHT_LEVEL |
| V_VAR1 | 24 | Пользовательское значение | Любое устройство |
| V_VAR2 | 25 | Пользовательское значение | Любое устройство |
| V_VAR3 | 26 | Пользовательское значение | Любое устройство |
| V_VAR4 | 27 | Пользовательское значение | Любое устройство |
| V_VAR5 | 28 | Пользовательское значение | Любое устройство |
| V_UP | 29 | Жалюзи. Вверх. | S_COVER |
| V_DOWN | 30 | Жалюзи. Вниз. | S_COVER |
| V_STOP | 31 | Жалюзи. Стоп. | S_COVER |
| V_IR_SEND | 32 | Отправка ИК-команды | S_IR |
| V_IR_RECEIVE | 33 | Принятая ИК-команда | S_IR |
| V_FLOW | 34 | Поток воды (в метрах) | S_WATER |
| V_VOLUME | 35 | Ой1бъем воды | S_WATER |
| V_LOCK_STATUS | 36 | Статус замка. 1 = закрыто, 0 = открыто | S_LOCK |
| V_LEVEL | 37 | Используется для отправки значения уровня | S_DUST, S_AIR_QUALITY, S_SOUND (дБ), S_VIBRATION (хз), S_LIGHT_LEVEL (люкс) |
| V_VOLTAGE | 38 | Значение напряжения | S_MULTIMETER |
| V_CURRENT | 39 | Значение тока | S_MULTIMETER |
| V_RGB | 40 | Значение RGB передается в виде ASCII строки ( «ff0000» для красного цвета) | S_RGB_LIGHT, S_COLOR_SENSOR |
| V_RGBW | 41 | Значение RGBW передаются в виде ASCII строки («ff0000ff» для красного + полной белого) | S_RGBW_LIGHT |
| V_ID | 42 | Дополнительный уникальный идентификатор датчика (например DS1820b-Wire идентификаторы) | S_TEMP |
| V_UNIT_PREFIX | 43 | Единица измерения. Не анализируется контроллером! Например, см, м, км, дюйм. | S_DISTANCE, S_DUST, S_AIR_QUALITY |
| V_HVAC_SETPOINT_COOL | 44 | Уровень охлаждения | S_HVAC |
| V_HVAC_SETPOINT_HEAT | 45 | Уровень нагрева | S_HVAC, S_HEATER |
| V_HVAC_FLOW_MODE | 46 | Режим потока для HVAC ( «Авто», «Постоянно», «Переодически») | S_HVAC |
| V_TEXT | 47 | Текстовое сообщение для отображения на ЖК или контроллера устройства | S_INFO |
| V_CUSTOM | 48 | Пользовательские сообщения, используемые для конкретных команд контроллера / взаимосвязанных узлов, предпочтительно с использованием типа S_CUSTOM устройства. | S_CUSTOM |
| V_POSITION | 49 | положение GPS и высота над уровнем моря. Данные: широта, долгота, высота над уровнем моря (м). Например, «55.722526; 13.017972; 18» | S_GPS |
| V_IR_RECORD | 50 | Запись ИК-кода S_IR для воспроизведения | S_IR |
| V_PH | 51 | Уровень PH | S_WATER_QUALITY |
| V_ORP | 52 | Уровень ORP: окислительно-восстановительный потенциал в мВ | S_WATER_QUALITY |
| V_EC | 53 | Электропроводность μS/cm (microSiemens/cm) | S_WATER_QUALITY |
| V_VAR | 54 | Реактивная мощность: вольтамперный реактивный (вар) | S_POWER |
| V_VA | 55 | Полная мощность: вольт-амперах (ВА) | S_POWER |
| V_POWER_FACTOR | 56 | Соотношение реальной мощности к средней мощности: значение с плавающей точкой в диапазоне [-1, .., 1] | S_POWER |
Внутренние (internal)
Внутренние сообщения используются для различных задач при обмене данными между датчиками, шлюзом к контроллеру и между датчиками и шлюзом.
При отправке внутренних сообщений тип должен быть одним из следующих:
| Тип | Значение | Комментарий |
|---|---|---|
| I_BATTERY_LEVEL | 0 | Используйте это, чтобы сообщить уровень заряда батареи (в процентах 0-100). |
| I_TIME | 1 | Датчики могут запросить текущее время от контроллера. Время будет сообщено в секундах с 1970 |
| I_VERSION | 2 | Запрос версии шлюза от контроллера. |
| I_ID_REQUEST | 3 | Используйте это, чтобы запросить уникальный идентификатор узла из контроллера. |
| I_ID_RESPONSE | 4 | Ответ Идентификатора узла. Данные содержит идентификатор узла. |
| I_INCLUSION_MODE | 5 | Пуск / стоп режим включения (1 = начало, 0 = остановка). |
| I_CONFIG | 6 | запрос конфигурации от узла. Ответит (М)etric или (I)mperal обратно к датчику. |
| I_FIND_PARENT | 7 | Когда датчик запускается, он транслируется запрос поиска всех соседних узлов. Они отвечают с I_FIND_PARENT_RESPONSE. |
| I_FIND_PARENT_RESPONSE | 8 | Ответ типа сообщения запроса I_FIND_PARENT. |
| I_LOG_MESSAGE | 9 | Отправляется шлюзом к контроллеру чтобы отслеживать лог сообщений |
| I_CHILDREN | 10 | Сообщение, которое может быть использовано для передачи дочерних датчиков (из таблицы маршрутизации EEPROM) узла повторителя. |
| I_SKETCH_NAME | 11 | Название эскиза, используется для идентификации датчика в графическом интерфейсе пользователя контроллера |
| I_SKETCH_VERSION | 12 | Версия эскиза, для отслеживания версии датчика в графическом интерфейсе пользователя контроллера. |
| I_REBOOT | 13 | Используется обновления прошивки OTA. Запрос перезагрузки узла. |
| I_GATEWAY_READY | 14 | Отправляется шлюзом на контроллер при запуске. |
| I_SIGNING_PRESENTATION | 15 | Используется для подписания (первые байты предпочтения версия). |
| I_NONCE_REQUEST | 16 | Используется между датчиками при запросе одноразового номера. |
| I_NONCE_RESPONSE | 17 | Используется между датчиками для Nonce ответа. |
| I_HEARTBEAT_REQUEST | 18 | Heartbeat запрос |
| I_PRESENTATION | 19 | Презентация |
| I_DISCOVER_REQUEST | 20 | запрос Discover |
| I_DISCOVER_RESPONSE | 21 | ответ Discover |
| I_HEARTBEAT_RESPONSE | 22 | Heartbeat ответ |
| I_LOCKED | 23 | Узел заблокирован (причина в строке-полезной нагрузки) |
| I_PING | 24 | Пинг отправлен в узел, Данные уникальная строка |
| I_PONG | 25 | В ответ на пинг, отправляется обратно отправителю, данные уникальная строка |
| I_REGISTRATION_REQUEST | 26 | Регистрация запроса на GW |
| I_REGISTRATION_RESPONSE | 27 | Регистрация ответа от ГВ |
| I_DEBUG | 28 | Debug сообщения |