Протокол обмена — 2.x

Структура сообщений

Протокол обмена, используемый между шлюзом и контроллером, представляет собой простой список значений, разделенных точкой с запятой. В конце каждой «команды» — данные сообщения. Все команды заканчиваются символом конца строки. Сообщения имеют следующий формат:

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 сообщения

 

Share