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