📘

WF-2C1T-P и система RealIoT

Руководство по эксплуатации, настройке и вводу в эксплуатацию

Эта инструкция предназначена для покупателя устройства WF-2C1T-P, который использует его в системе RealIoT как Wi‑Fi устройство с BLE-первичной настройкой. Общая справка по системе RealIoT доступна на сайте https://realiot.ru/Help/system-help.html. Общие рекомендации по физическому подключению устройств RealIoT можно посмотреть на https://realiot.ru/Help/physical-connection.html.

1. Что это за устройство

По смыслу это двухвходовой Wi-Fi датчик. В зависимости от настроек он может:

  • считать импульсы;
  • контролировать логический уровень входов;
  • будить основной процессор по импульсам, по изменению дискретного входа или по таймеру;
  • отправлять данные в RealIoT по MQTT.

2. Аппаратные входы

Логический входGPIOНазначение
input1GPIO27Первый вход. Может работать как счетный или как дискретный.
input2GPIO33Второй вход. Может работать как счетный или как дискретный.
Кнопка BLEGPIO35Локальная кнопка устройства. Не участвует в логике входов input1 и input2.

Параметр edge задает не только тип значимого фронта, но и внутреннюю подтяжку входов.

  • rising — включается подтяжка к земле (pull-down);
  • falling — включается подтяжка к питанию (pull-up);
  • both — вход становится плавающим, без внутренней подтяжки.

3. Как устройство настраивается

Первичная настройка выполняется по BLE. Покупателю важно знать две вещи:

  • устройство сначала переводится в BLE-режим длинным нажатием кнопки;
  • после этого через BLE ему передаются параметры Wi-Fi, сервера и логики входов.

Для интеграции через приложение или внешний конфигуратор устройство использует BLE GATT:

  • Service UUID: 0xFFE0
  • Characteristic UUID: 0xFFE1

Сообщение готовности после подключения

{"v":1,"messageType":"bleReady","status":"ok"}

Во внешней BLE-настройке используются отдельные сообщения для

  • идентификации устройства;
  • настройки Wi-Fi;
  • настройки MQTT-сервера;
  • режима сна и периода отправки;
  • настройки двух входов;
  • сохранения параметров и перезапуска.

4. Идентификация устройства при настройке

При первичной настройке в BLE передаются тип устройства, серийный номер и модель. Для пользователя это важно только в том смысле, что серийный номер и модель должны соответствовать наклейке или карточке поставки устройства.

Пример factoryConfig

{
  "v": 1,
  "messageType": "factoryConfig",
  "payloadData": {
    "deviceType": "sensor",
    "SN": "SERIAL-NUMBER",
    "deviceModel": "WF-2C1T-P",
    "firmwareModel": "WF2C1T"
  }
}

5. Настройка входов по BLE

При настройке входов покупатель или интегратор задает

  • роль первого входа;
  • роль второго входа;
  • тип значимого фронта;
  • защиту от дребезга;
  • wakeThreshold1 — порог для входа input1, если он счетный;
  • wakeThreshold2 — порог для входа input2, если он счетный.

Сообщение pulseConfig

{
  "v": 1,
  "messageType": "pulseConfig",
  "payloadData": {
    "input1Role": "counter",
    "input2Role": "discrete",
    "edge": "falling",
    "debounceMs": 50,
    "wakeThreshold1": 10,
    "wakeThreshold2": 0
  }
}
ПолеДопустимые значенияПонятный смысл
input1Role, input2Rolecounter, discreteРежим работы каждого входа. counter считает импульсы. discrete не считает импульсы, а отслеживает изменение логического состояния.
edgerising, falling, bothКакой фронт считать значимым для счетных входов. Этот же параметр определяет внутреннюю подтяжку обоих входов.
debounceMsцелое число, мсЗащита от дребезга контактов. Состояние входа считается подтвержденным только после того, как оно остается стабильным в течение указанного времени.
wakeThreshold1целое числоЧерез сколько подтвержденных импульсов на input1 устройство должно проснуться и отправить данные. Если input1 работает как discrete, это поле должно быть равно 0.
wakeThreshold2целое числоЧерез сколько подтвержденных импульсов на input2 устройство должно проснуться и отправить данные. Если input2 работает как discrete, это поле должно быть равно 0.

Практическое правило: если сухой контакт или кнопка замыкают вход на землю, чаще всего нужен edge = falling. В этом случае вход удерживается внутренней подтяжкой к питанию и при замыкании действительно меняет состояние.

6. Поддерживаемые режимы входов

РежимСмыслКак просыпается устройство
counter + counterОба входа считают импульсы независимо друг от друга.По wakeThreshold1, по wakeThreshold2 или по таймеру.
counter + discreteinput1 считает импульсы. input2 используется как дискретный сигнал закрытия очередной партии измерений.По wakeThreshold1, по изменению input2 или по таймеру.
discrete + discreteОба входа только отслеживают логические состояния.По любому подтвержденному изменению input1 или input2, а также по таймеру.

7. Что значат счетчики total и batch

Для счетного входа устройство ведет два регистра:

  • TotalCount — общий накопительный счетчик. Он никогда не сбрасывается автоматически.
  • BatchCount — текущая незавершенная партия измерений.

В режиме counter + discrete при подтвержденном изменении input2 происходит следующее

  • текущее значение input1BatchCount переносится в input1BatchClosedCount;
  • input1BatchCount сразу обнуляется;
  • начинается новый batch для последующих импульсов.

Просто: input1BatchCount — это счетчик текущей открытой партии, а input1BatchClosedCount — это только что завершенная партия, которую устройство отправляет в пакете после срабатывания input2.

8. Сохранение конфигурации

{
  "v": 1,
  "messageType": "commitConfig"
}

Устройство подтверждает сохранение и перезапускается.

9. Что происходит после настройки

  • Устройство перезапускается.
  • Поднимает Wi‑Fi STA.
  • Подключается к MQTT-серверу.
  • Строит топики по серийному номеру.
  • Публикует meta и затем рабочие state-сообщения.

MQTT топики

НазначениеТопик
Состояниеwifi/<SN>
Команда setwifi/<SN>/set
Команда getwifi/<SN>/get
Метаданныеwifi/<SN>/meta

10. Какие данные приходят по Wi‑Fi

Meta

  • deviceSN, deviceType, deviceModel;
  • firmwareVersion, wifiAP, serverName;
  • sleepMode, sigEnabled, reportPeriodSec;
  • input1Role, input2Role, pulseEdge, pulseDebounceMs, pulseWakeThreshold1, pulseWakeThreshold2;
  • состояния и счетчики входов, которые актуальны для выбранного режима.

State: для счетных входов

  • input1TotalCount, input2TotalCount — общие накопительные счетчики;
  • input1BatchCount, input2BatchCount — текущие незавершенные партии;
  • input1BatchClosedCount — закрытая партия для input1 в режиме counter + discrete.

State: для логических состояний

  • input1Level, input2Level — текущий подтвержденный логический уровень входов.

State: для причины публикации

  • eventReason — почему устройство проснулось и отправило пакет;
  • eventSource — какой вход вызвал событие.

Возможные значения eventReason

  • pulse_threshold — достигнут порог импульсов на счетном входе;
  • discrete_reset — в режиме counter + discrete сработал input2 и закрыл batch;
  • discrete_change — в режиме discrete + discrete изменилось состояние одного или обоих входов;
  • timer — сработал периодический таймер отчета.

11. Как понимать режимы на практике

Режим counter + counter

Это режим для двух независимых счетчиков. Оба входа считают импульсы. Каждый вход имеет свои поля TotalCount, BatchCount и свой порог пробуждения. Дискретного сброса batch в этом режиме нет.

Режим counter + discrete

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

Практически это удобно, когда

  • нужно считать общий расход или выпуск продукции на input1;
  • дискретный датчик или концевик на input2 обозначает конец цикла, смены, партии или операции.

Режим discrete + discrete

В этом режиме счетчиков нет. Оба входа передают только логические состояния. Устройство просыпается по любому подтвержденному изменению input1 или input2 и отправляет их актуальные уровни.

12. Локальная кнопка на устройстве

  • Короткое нажатие — инициирует публикацию метаданных устройства.
  • Длинное нажатие (не менее 5 секунд) — запускает BLE для перенастройки.

Эта кнопка не является ни первым, ни вторым рабочим входом.

13. Примеры настройки через BLE

Пример 1. Два независимых счетчика

{
  "v": 1,
  "messageType": "pulseConfig",
  "payloadData": {
    "input1Role": "counter",
    "input2Role": "counter",
    "edge": "falling",
    "debounceMs": 20,
    "wakeThreshold1": 10,
    "wakeThreshold2": 50
  }
}

Пример 2. Один счетчик и дискретный сигнал закрытия партии

{
  "v": 1,
  "messageType": "pulseConfig",
  "payloadData": {
    "input1Role": "counter",
    "input2Role": "discrete",
    "edge": "falling",
    "debounceMs": 50,
    "wakeThreshold1": 10,
    "wakeThreshold2": 0
  }
}

Пример 3. Два дискретных входа

{
  "v": 1,
  "messageType": "pulseConfig",
  "payloadData": {
    "input1Role": "discrete",
    "input2Role": "discrete",
    "edge": "falling",
    "debounceMs": 50,
    "wakeThreshold1": 0,
    "wakeThreshold2": 0
  }
}

14. Типичные ошибки

  • Отправка старого поля wakeThreshold. В новой прошивке нужно использовать только wakeThreshold1 и wakeThreshold2.
  • Неправильный фронт. Если контакт замыкает вход на землю, а задан rising, уровень может не меняться так, как ожидается.
  • Ожидание, что input1BatchCount всегда растет без сброса. В режиме counter + discrete он обнуляется при событии на input2.
  • Путаница между input1BatchCount и input1BatchClosedCount. Первый показывает текущую открытую партию, второй — только что завершенную.
  • Неверно указана модель при первичной настройке. Параметры идентификации должны соответствовать именно этому устройству.

15. Рекомендуемый порядок ввода в эксплуатацию

  • Подготовить устройство и серийный номер.
  • Передать factoryConfig.
  • Передать Wi‑Fi и MQTT параметры.
  • Передать powerConfig.
  • Передать pulseConfig в новой схеме.
  • Передать commitConfig.
  • После перезапуска проверить meta на MQTT.

16. Минимальный набор JSON для ввода в эксплуатацию

{
  "v": 1,
  "messageType": "factoryConfig",
  "payloadData": {
    "deviceType": "sensor",
    "SN": "3DG8-058G-608C-STPL-2C1T",
    "deviceModel": "WF-2C1T-P",
    "firmwareModel": "WF2C1T"
  }
}

{
  "v": 1,
  "messageType": "wifiSsidConfig",
  "payloadData": {
    "ssid": "YOUR_WIFI"
  }
}

{
  "v": 1,
  "messageType": "wifiPasswordConfig",
  "payloadData": {
    "password": "YOUR_PASSWORD"
  }
}

{
  "v": 1,
  "messageType": "serverConfig",
  "payloadData": {
    "server": "mqtt://realiot-1.local"
  }
}

{
  "v": 1,
  "messageType": "powerConfig",
  "payloadData": {
    "sleepMode": "deep",
    "reportPeriodSec": 600
  }
}

{
  "v": 1,
  "messageType": "pulseConfig",
  "payloadData": {
    "input1Role": "counter",
    "input2Role": "discrete",
    "edge": "falling",
    "debounceMs": 50,
    "wakeThreshold1": 10,
    "wakeThreshold2": 0
  }
}

{
  "v": 1,
  "messageType": "commitConfig"
}

17. Итог

Устройство WF-2C1T-P нужно воспринимать как двухвходовой Wi-Fi/BLE датчик, который после настройки может работать в одном из трех режимов.

  • два независимых счетчика;
  • счетчик плюс дискретный вход закрытия партии;
  • два дискретных входа.

Все параметры настраиваются по BLE, а рабочие данные и метаданные устройство публикует в RealIoT по MQTT.

← Назад к карточке устройства