UMDK-PULSE

Модуль предназначен для работы со индивидуальными приборами учёта (ИПУ) воды и других ресурсов с импульсным выходом «сухие контакты», а также предусматривает подключение датчика контроля вскрытия корпуса или цепи пломбировки (нормально замкнутый) и датчика протечки (нормально разомкнутый). Одновременно может обслуживать два импульсных счётчика.

Модуль доступен только в коммерческой версии прошивки с пониженным энергопотреблением. Модуль не распространяется в исходных кодах.

Использует DIO4, 5, 25 и 26 в качестве цифровых входов.

Выходы счётчиков подключаются между «землёй», DIO5 (первый счётчик) и DIO4 (второй счётчик). Датчик вскрытия и датчик протечки подключаются между «землё» и соответствующим GPIO.

После включения модуль находится в неактивном состоянии и не считает импульсы. В активное состояние модуль переводится нажатием кнопки «Connect» или «Safe» (DIO1), после этого модуль устанавливает соединение с базовой станцией и запускает подсчёт импульсов, а также контроль вскрытия корпуса и протечки.

В активном состоянии модуль каждые N часов (по умолчанию N = 4) отправляет на БС почасовой архив показаний, состоящий из одного абсолютного 24-битного значения на каждый счётчик, N-1 16-битных декрементов и байта статуса. Таким образом, объём передаваемых данных, с учётом байта ID модуля, составляет 1 + 1 + 2(3 + (N-1)2) байт, то есть 20 байт для стандартного 4-часового интервала.

Передаваемые значения автоматически пересчитываются в литры в соответствии с установленным коэффициентом (по умолчанию — 1).

При срабатывании датчика контроля вскрытия или датчика протечки сообщение об этом отправляется немедленно.

При нажатии кнопки «Connect»/«Safe» модуль немедленно отправляет текущие данные на базовую станцию.

Команды

Установка периода отравки данных на БС, в часах (по умолчанию 4, максимум — 24):

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/pulse" -m "period N"

Устанавливает коэффициент импульсного выхода ИПУ, литров на импульс (по умолчанию 1):

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/pulse" -m "coeff 10"

Удалённый сброс настроек и значений счётчика:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/pulse" -m "reset"

Удалённый сброс состояния датчика вскрытия корпуса (в случае, если датчик нее замкнут, через 100 мс после прихода команды состояние снова будет изменено на «вскрыто» с отправкой сообщения на БС):

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/pulse" -m "tamper"

Получение текущих значений счётчика (не имеет практического смысла для счётчиков, работающих на батарейном питании в классе A):

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/pulse" -m "get"

Установка начальных значений счётчика, где C — коэффициент пересчёта литров/импульс, P1 и P2 — начальные значения ИПУ, подключённых к первому и второму входам, в литрах:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/pulse" -m "values C P1 P2"

Сообщения

При успешном выполнении команды счётчик отвечает сообщением «ok»:

devices/lora/NNNNNNNNNNNNNNN/pulse
{
    "data": {
        "msg": "ok"
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

При некорректных параметрах запроса:

devices/lora/NNNNNNNNNNNNNNN/pulse
{
    "data": {
        "msg": "invalid command"
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

devices/lora/NNNNNNNNNNNNNNN/pulse
{
    "data": {
        "msg": "invalid parameter"
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

При обнаружении протечки или срабатывании датчика вскрытия корпуса (обрыва контура пломбировки):

devices/lora/NNNNNNNNNNNNNNN/pulse
{
    "data": {
        "msg": "leak"
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

devices/lora/NNNNNNNNNNNNNNN/pulse
{
    "data": {
        "msg": "tamper"
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

В случае, если протечка не устранена, сообщение о ней повторяется каждые 10 минут.

При получении данных со счётчика сообщение содержит в себе два массива почасовых данных и текущий статус датчика вскрытия корпуса («broken» или «ok»):

devices/lora/NNNNNNNNNNNNNNN/pulse
{
    "data": {
        "P1": [100, 99, 95, 95 ], 
        "P2": [62, 62, 60, 59 ], 
        "tamper": "broken"
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

После срабатывания датчика вскрытия корпуса параметр «tamper» может быть изменён на «ok» только командой с БС после восстановления целостности корпуса.

Подключение

Распространение

Модуль распространяется в исходных кодах и может входить в версии прошивок public и commercial.

Исходные коды: