Протокол обмена — 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)

ТипЗначениеОписание
presentation0Отправляется узлом, когда он презентует прикрепленные датчики. Обычно это делается в presentation().
set1Это сообщение отправляется от или к датчику, когда значение датчика должно быть обновлено
req2Запрос значение (обычно из привода, предназначенного для контроллера).
internal3Это специальное внутреннее сообщение. Подробнее см. Таблицу ниже.
stream4Используется для обновления прошивки OTA

Презентация (presentation)

Когда презентационное сообщение отправляется с датчика, введите одно из следующих значений:

Данные презентационного сообщения описывают версию (узловое устройство) или описание датчиков.

ТипЗначениеОписаниеПеременные
S_DOOR0Дверные и оконные датчикиV_TRIPPED, V_ARMED
S_MOTION1Датчик движенияV_TRIPPED, V_ARMED
S_SMOKE2Датчик дымаV_TRIPPED, V_ARMED
S_BINARY3Бинарное устройство (вкл / выкл)V_STATUS, V_WATT
S_DIMMER4Диммируемое устройствоV_STATUS (Вкл/Выкл), V_PERCENTAGE (Уровень димирования 0-100), V_WATT
S_COVER5Жалюзи или затенителиV_UP, V_DOWN, V_STOP, V_PERCENTAGE
S_TEMP6Датчик температурыV_TEMP, V_ID
S_HUM7Датчик влажностиV_HUM
S_BARO8Датчик барометр (давление)V_PRESSURE, V_FORECAST
S_WIND9Датчик ветраV_WIND, V_GUST, V_DIRECTION
S_RAIN10Датчик дождяV_RAIN, V_RAINRATE
S_UV11УФ-датчикV_UV
S_WEIGHT12Датчик веса для весов и т.д.V_WEIGHT, V_IMPEDANCE
S_POWER13Питание,  измерители мощностиV_WATT, V_KWH, V_VAR, V_VA, V_POWER_FACTOR
S_HEATER14Нагреватель устройствоV_HVAC_SETPOINT_HEAT, V_HVAC_FLOW_STATE, V_TEMP, V_STATUS
S_DISTANCE15Датчик расстоянияV_DISTANCE, V_UNIT_PREFIX
S_LIGHT_LEVEL16Датчик освещённостиV_LIGHT_LEVEL (uncalibrated percentage), V_LEVEL (light level in lux)
S_ARDUINO_NODE17Узел Arduino
S_ARDUINO_REPEATER_NODE18Узел Arduino повторитель
S_LOCK19ЗамокV_LOCK_STATUS
S_IR20ИК приёмник/передатчикV_IR_SEND, V_IR_RECEIVE, V_IR_RECORD
S_WATER21ВодомерV_FLOW, V_VOLUME
S_AIR_QUALITY22Датчик качества воздуха, например, MQ-2V_LEVEL, V_UNIT_PREFIX
S_CUSTOM23Используйте это для пользовательских датчиков если нет в перечне.
S_DUST24Датчик уровня пылиV_LEVEL, V_UNIT_PREFIX
S_SCENE_CONTROLLER25Устройство управления сценамиV_SCENE_ON, V_SCENE_OFF
S_RGB_LIGHT26RGB светV_RGB, V_WATT
S_RGBW_LIGHT27RGBW свет (с отдельным компонентом белым)V_RGBW, V_WATT
S_COLOR_SENSOR28Датчик цветаV_RGB
S_HVAC29Термостат / Устройство вентиляции и кондиционированияV_STATUS, V_TEMP, V_HVAC_SETPOINT_HEAT, V_HVAC_SETPOINT_COOL, V_HVAC_FLOW_STATE, V_HVAC_FLOW_MODE, V_HVAC_SPEED
S_MULTIMETER30Мультиметр устройствоV_VOLTAGE, V_CURRENT, V_IMPEDANCE
S_SPRINKLER31Спринклер устройствоV_STATUS (Вкл/Выкл), V_TRIPPED (Если обнаружен пожар)
S_WATER_LEAK32Датчик утечки водыV_TRIPPED, V_ARMED
S_SOUND33Датчик звукаV_LEVEL (in dB), V_TRIPPED, V_ARMED
S_VIBRATION34Датчик вибрацииV_LEVEL (вибрация в Hz), V_TRIPPED, V_ARMED
S_MOISTURE35Датчик сыростиV_LEVEL (содержание воды или влаги в процентах?), V_TRIPPED, V_ARMED
S_INFO36Текстовый ЖК-дисплейV_TEXT
S_GAS37Датчик газаV_FLOW, V_VOLUME
S_GPS38Датчик GPSV_POSITION
S_WATER_QUALITY39Датчик качества водыV_TEMP, V_PH, V_ORP, V_EC, V_STATUS

Установка, запрос (set, req)

Когда отправляется сообщение set или request, тип:

ТипЗначениеОписаниеИспользован
V_TEMP0температураS_TEMP, S_HEATER, S_HVAC, S_WATER_QUALITY
V_HUM1влажностьS_HUM
V_STATUS2Двоичный статус. 0 = выкл 1 = вклS_BINARY, S_DIMMER, S_SPRINKLER, S_HVAC, S_HEATER, S_WATER_QUALITY
V_PERCENTAGE3Процентное значение. 0-100 (%)S_DIMMER, S_COVER
V_PRESSURE4Атмосферное давлениеS_BARO
V_FORECAST5Прогноз. Один из: «Ясно», «Солнечно», «Облачно», «Переменная облочность», «Грозы» или «Неизвестно»S_BARO
V_RAIN6Количество осадковS_RAIN
V_RAINRATE7Уровень осадковS_RAIN
V_WIND8Скорость ветраS_WIND
V_GUST9Порыв ветраS_WIND
V_DIRECTION10Направление ветра 0-360 (в градусах)S_WIND
V_UV11Уровень УФ-излученияS_UV
V_WEIGHT12Вес (для весов и т.д.)S_WEIGHT
V_DISTANCE13РасстояниеS_DISTANCE
V_IMPEDANCE14Значение импедансаS_MULTIMETER, S_WEIGHT
V_ARMED15Сигнализация. 1 = Включена, 0 = не включенаS_DOOR, S_MOTION, S_SMOKE, S_SPRINKLER, S_WATER_LEAK, S_SOUND, S_VIBRATION, S_MOISTURE
V_TRIPPED16Сработал датчик безопасности. 1 = Вкл, 0 = ВыклS_DOOR, S_MOTION, S_SMOKE, S_SPRINKLER, S_WATER_LEAK, S_SOUND, S_VIBRATION, S_MOISTURE
V_WATT17Значение Вт для счетчиков электроэнергииS_POWER, S_BINARY, S_DIMMER, S_RGB_LIGHT, S_RGBW_LIGHT
V_KWH18Накопленное количество КлВт/Ч для измерителя мощностиS_POWER
V_SCENE_ON19Включить сценуS_SCENE_CONTROLLER
V_SCENE_OFF20Выключить сценуS_SCENE_CONTROLLER
V_HVAC_FLOW_STATE21Режим: «Выкл», «Нагрев», «Охлаждение» или «Автоматически»S_HVAC, S_HEATER
V_HVAC_SPEED22HVAC / Нагреватель скорость вращения вентилятора ( «Минимум», «Средне», «Макс», «Авто»)S_HVAC, S_HEATER
V_LIGHT_LEVEL23Неточный уровень освещенности. 0-100%. Используйте V_LEVEL для уровня освещенности в люкс.S_LIGHT_LEVEL
V_VAR124Пользовательское значениеЛюбое устройство
V_VAR225Пользовательское значениеЛюбое устройство
V_VAR326Пользовательское значениеЛюбое устройство
V_VAR427Пользовательское значениеЛюбое устройство
V_VAR528Пользовательское значениеЛюбое устройство
V_UP29Жалюзи. Вверх.S_COVER
V_DOWN30Жалюзи. Вниз.S_COVER
V_STOP31Жалюзи. Стоп.S_COVER
V_IR_SEND32Отправка ИК-командыS_IR
V_IR_RECEIVE33Принятая ИК-командаS_IR
V_FLOW34Поток воды (в метрах)S_WATER
V_VOLUME35Ой1бъем водыS_WATER
V_LOCK_STATUS36Статус замка. 1 = закрыто, 0 = открытоS_LOCK
V_LEVEL37Используется для отправки значения уровняS_DUST, S_AIR_QUALITY, S_SOUND (дБ), S_VIBRATION (хз), S_LIGHT_LEVEL (люкс)
V_VOLTAGE38Значение напряженияS_MULTIMETER
V_CURRENT39Значение токаS_MULTIMETER
V_RGB40Значение RGB передается в виде ASCII строки ( «ff0000» для красного цвета)S_RGB_LIGHT, S_COLOR_SENSOR
V_RGBW41Значение RGBW передаются в виде ASCII строки («ff0000ff» для красного + полной белого)S_RGBW_LIGHT
V_ID42Дополнительный уникальный идентификатор датчика (например DS1820b-Wire идентификаторы)S_TEMP
V_UNIT_PREFIX43Единица измерения. Не анализируется контроллером! Например, см, м, км, дюйм.S_DISTANCE, S_DUST, S_AIR_QUALITY
V_HVAC_SETPOINT_COOL44Уровень охлажденияS_HVAC
V_HVAC_SETPOINT_HEAT45Уровень нагреваS_HVAC, S_HEATER
V_HVAC_FLOW_MODE46Режим потока для HVAC ( «Авто», «Постоянно», «Переодически»)S_HVAC
V_TEXT47Текстовое сообщение для отображения на ЖК или контроллера устройстваS_INFO
V_CUSTOM48Пользовательские сообщения, используемые для конкретных команд контроллера / взаимосвязанных узлов, предпочтительно с использованием типа S_CUSTOM устройства.S_CUSTOM
V_POSITION49положение GPS и высота над уровнем моря. Данные: широта, долгота, высота над уровнем моря (м). Например, «55.722526; 13.017972; 18»S_GPS
V_IR_RECORD50Запись ИК-кода S_IR для воспроизведенияS_IR
V_PH51Уровень PHS_WATER_QUALITY
V_ORP52Уровень ORP: окислительно-восстановительный потенциал в мВS_WATER_QUALITY
V_EC53Электропроводность μS/cm (microSiemens/cm)S_WATER_QUALITY
V_VAR54Реактивная мощность: вольтамперный реактивный (вар)S_POWER
V_VA55Полная мощность: вольт-амперах (ВА)S_POWER
V_POWER_FACTOR56Соотношение реальной мощности к средней мощности: значение с плавающей точкой в ​​диапазоне [-1, .., 1]S_POWER

Внутренние (internal)

Внутренние сообщения используются для различных задач при обмене данными между датчиками, шлюзом к контроллеру и между датчиками и шлюзом.

При отправке внутренних сообщений тип должен быть одним из следующих:

ТипЗначениеКомментарий
I_BATTERY_LEVEL0Используйте это, чтобы сообщить уровень заряда батареи (в процентах 0-100).
I_TIME1Датчики могут запросить текущее время от контроллера. Время будет сообщено в секундах с 1970
I_VERSION2Запрос версии шлюза от контроллера.
I_ID_REQUEST3Используйте это, чтобы запросить уникальный идентификатор узла из контроллера.
I_ID_RESPONSE4Ответ Идентификатора узла. Данные содержит идентификатор узла.
I_INCLUSION_MODE5Пуск / стоп режим включения (1 = начало, 0 = остановка).
I_CONFIG6запрос конфигурации от узла. Ответит (М)etric или (I)mperal обратно к датчику.
I_FIND_PARENT7Когда датчик запускается, он транслируется запрос поиска всех соседних узлов. Они отвечают с I_FIND_PARENT_RESPONSE.
I_FIND_PARENT_RESPONSE8Ответ типа сообщения запроса I_FIND_PARENT.
I_LOG_MESSAGE9Отправляется шлюзом к контроллеру чтобы отслеживать лог сообщений
I_CHILDREN10Сообщение, которое может быть использовано для передачи дочерних датчиков (из таблицы маршрутизации EEPROM)  узла повторителя.
I_SKETCH_NAME11Название эскиза, используется для идентификации датчика в графическом интерфейсе пользователя контроллера
I_SKETCH_VERSION12Версия эскиза, для отслеживания версии датчика в графическом интерфейсе пользователя контроллера.
I_REBOOT13Используется обновления прошивки OTA. Запрос перезагрузки узла.
I_GATEWAY_READY14Отправляется шлюзом на контроллер при запуске.
I_SIGNING_PRESENTATION15Используется для подписания (первые байты предпочтения версия).
I_NONCE_REQUEST16Используется между датчиками при запросе одноразового номера.
I_NONCE_RESPONSE17Используется между датчиками для Nonce ответа.
I_HEARTBEAT_REQUEST18Heartbeat запрос
I_PRESENTATION19Презентация
I_DISCOVER_REQUEST20запрос Discover
I_DISCOVER_RESPONSE21ответ Discover
I_HEARTBEAT_RESPONSE22Heartbeat ответ
I_LOCKED23Узел заблокирован (причина в строке-полезной нагрузки)
I_PING24Пинг отправлен в узел, Данные уникальная строка
I_PONG25В ответ на пинг, отправляется обратно отправителю, данные уникальная строка
I_REGISTRATION_REQUEST26Регистрация запроса на GW
I_REGISTRATION_RESPONSE27Регистрация ответа от ГВ
I_DEBUG28Debug сообщения

 

Share