UMDK-IEC61107

Осуществляет работу с электросчетчиком «СЕ102М» компании Энергомера, подключенному по интерфейсу физического уровня RS485.

Использует выходы DIO25 и DIO26 для приема и передачи, а также DIO30 и DIO29 для сигналов RE и DE драйвера RS485.

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

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

Команды

NB: В конце каждой команды необходимо указать номер устройства из базы данных(БД), которому адресуется команда! База данных адресов устройств формируется перед началом обмена информацией с электросчетчиком.

Пример: Идентификатор счетчика(«ADDRESS») - № 112609312, то при добавлении в базу данных ему будет присвоен номер «DEVICE», к примеру 01. Соответственно при обращении к электросчетчику № 112609312, необходимо будет в конце каждой команды указывать его номер в базе, в данном примере - «DEVICE» = 01, а не весь его адрес «ADDRESS»!

NB: Для возможности редактирования(программирования) данных устройства необходимо после монтажа и подключения нажать на счетчике кнопку «ДСТП» 
и отправить команду установки режима программирования.

Установка режима программирования электросчетчика с номером «DEVICE»:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "set init DEVICE"

Работа с базой данных

Очистка базы данных:

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

Добавление устройства с адресом «ADDRESS» в базу данных:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "add ADDRESS"

Удаление устройства с адресом «ADDRESS» из БД:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "remove address ADDRESS"

Удаление устройства с номером «DEVICE» из БД:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "remove device DEVICE"

Поиск номера устройства с адресом «ADDRESS» в БД:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "find address ADDRESS"

Поиск адреса устройства с номером «DEVICE» в БД:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "find device DEVICE"

Получение служебной информации электросчетчика

Запрашивает заводской номер счетчика:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get serial DEVICE"

Запрашивает идентификатор(адрес устройства) счетчика:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get id_device DEVICE"

Работа с часами и датой электросчётчика

Запрашивает текущее время:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get time DEVICE"

Установка текущего времени «HH:MM:SS» (часы:минуты:секунды):

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "set time HH:MM:SS DEVICE"

Запрашивает текущюю дату:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get date DEVICE"

Установка текущей даты «DW.DD.MM.YY»(день недели.день.месяц.год):

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "set date DW.DD.MM.YY DEVICE"
NB: дни недели: 00 - Воскресение, 01 - Понедельник,... 06 - Суббота.

Получение электрических параметров электросчетчика

Запрашивает действующее значения напряжения(В):

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get volt DEVICE"

Запрашивает действующее значения тока(А):

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get current DEVICE"

Запрашивает мгновенное значения мощности(кВт):

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get power DEVICE"

Информация о состоянии электросчетчика

Тариф по умолчанию – номер тарифного регистра, в который будут помещаться данные об энергопотреблении в случае невозможности 
определения действующего тарифа (сбой часов реального времени или ошибка в составлении тарифного расписания).

Запрашивает номер тарифа по умолчанию

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get default_tariff DEVICE"

Установка номера тарифа по умолчанию

Тариф по умолчанию «Tt»: 0 - T01, 1 - T02, 2 - T03, 3 - T04.
mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "set default_tariff Tt DEVICE"

Запрашивает информацию о состоянии электросчетчика

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get status DEVICE"

Состояние устройства включает в себя:

* Действующий тариф
* Номера тарифов, задействованные в текущем тарифном расписании
* Статус ошибки составления тарифного расписания
* Сезонное время
* Состояние часов
* Состояние коррекции времени
* Состояние батареи
* Срок годности батареи
* Состояние напряжения
* Характер нагрузки
* Напраление энергии
* Состояние показателей энергии
* Состояние датчика вскрытия крышки
* Состояние памяти программ
* Состояние метрологических параметров

Установка тарифного расписания

Счетчик позволяет задавать до 36 различных суточных тарифных расписаний. В пределах суток возможно задать до двенадцати точек времени переключения действующего тарифа. Время переключения – начало действия тарифа – задается с точностью до 1 мин. В одно время суток может действовать только один тариф. Определенный тариф действует от заданного времени до ближайшего времени переключения на другой тариф.

Запрос «NUM» расписания («NUM» - номер суточного тарифного расписания(от 01 до 36)):

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get schedule NUM DEVICE"

Установка «NUM» тарифного расписания (Tt - тариф, Hh:Mm - часы:минуты) в устройстве с номером «DEVICE»:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "set schedule NUM Tt Hh:Mm DEVICE"

Установка тарифного расписания №01 на 2 точки переключения Т01 07:00 Т02 23:30 в устройстве с номером «DEVICE»:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "set schedule 01 01 07:00 02 23:30 DEVICE"

Установка списка исключительных дней

Счетчик позволяет задавать до 32 дат исключительных дней. Исключительные дни – это дни календарного года, тарификация в которых отличается от тарификации по дню недели, заданной в сезонной программе. Такими днями могут быть официальные праздничные дни, пере- нос выходных на рабочие дни недели и наоборот. Каждому исключительному дню может быть назначено любое суточное тарифное расписание из подготовленного списка.

Запрос списка исключительных дней:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get holidays DEVICE"

Установка полного списка исключительных дней(32 даты) осуществляется двумя командами - записью первой части списка(первые 16 дат) и второй части(вторые 16 дат). При этом команды необходимо послать друг за другом. При установке шестнадцати и менее дней необходимо послать только одну команду - на установку первой половины списка.

Запись первой половины списка исключительных дат(DD - дата, MM - месяц, SCH - № тарифного расписания):

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "set holidays part_1 DD.MM:SCH DEVICE"

Запись второй половины списка исключительных дат(DD - дата, MM - месяц, SCH - № тарифного расписания):

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "set holidays part_2 DD.MM:SCH DEVICE"

Установка 1,2 января и 8 марта на тарифное расписание №2, 9 мая на ТР №3:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "set holidays part_1 01.01:02 02.01:02 08.03:02 09.05:03 DEVICE"

Получение показаний электросчетчика

Запрос суммарных показаний энергии от сброса:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get value total_all DEVICE"

Запрос суммарных показаний энергии на конец месяца «MM.YY», где MM - месяц, YY - год:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get value total_month MM.YY DEVICE"

Запрос суммарных показаний энергии на конец суток «DD.MM.YY», где DD - день, MM - месяц, YY - год:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get value total_day DD.MM.YY DEVICE"

Запрос показаний энергии, учтенной за месяца «MM.YY», где MM - месяц, YY - год:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get value month MM.YY DEVICE"

Запрос показаний энергии, учтенной за сутки «DD.MM.YY», где DD - день, MM - месяц, YY - год:

mosquitto_pub -t "devices/lora/NNNNNNNNNNNNNNN/iec61107" -m "get value day DD.MM.YY DEVICE"

Сообщения

Общие сообщения

При вводе некорректной(несуществующей) команды будет получено сообщение «invalid command»:

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

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

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

При некорректных параметрах запроса будет получено сообщение «error»:

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

Сообщения при работе с базой данных

При некорректных параметрах запроса будет получено сообщение «error»:

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

В сообщениях при успешном выполнении команды присутствуют адрес электросчетчика «ADDRESS», а также его номер «DEVICE» в БД.

При успешном выполнении команды добавления адреса в БД модуль отвечает сообщением:

devices/lora/NNNNNNNNNNNNNNN/iec61107
{
    "data": {
        "cmd": "added",
        "device": DEVICE,
        "address": ADDRESS
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

При успешном выполнении команды удаления адреса из БД модуль отвечает сообщением:

devices/lora/NNNNNNNNNNNNNNN/iec61107
{
    "data": {
        "cmd": "removed",
        "device": DEVICE,
        "address": ADDRESS
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

При успешном выполнении команды поиска адреса в БД модуль отвечает сообщением:

devices/lora/NNNNNNNNNNNNNNN/iec61107
{
    "data": {
        "cmd": "found",
        "device": DEVICE,
        "address": ADDRESS
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

Сообщения при работе с электросчнетчиком

NB: В каждом ответном сообщении на корректную команду присутствует номер устройства «DEVICE» в БД, с которым на данный момент осуществляется работа.

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

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

При некорректных параметрах запроса будет получено сообщение «error»:

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

При отсутствии подключения с электросчетчиком, при отсутствии устройства с запрашиваемым номером в БД, будет получено сообщение «no response»:

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

При длительном выполнении команды модуль отправит сообщение «please wait»:

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

При вводе некоректных данных электросчетчик ответит прориетарным сообщением-ошибкой:

NUMB_ERR - номер ошибки, поддерживаемый данным устройством,
"MESSAGE" - сообщение ошибки.
devices/lora/NNNNNNNNNNNNNNN/iec61107
{
    "data": {
        "device": DEVICE,
        "err": NUMB_ERR,
        "msg": "MESSAGE"
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

Сообщение при запросе заводского номера электросчетчика:

devices/lora/NNNNNNNNNNNNNNN/iec61107
{
    "data": {
        "device": DEVICE,
        "serial": "SERIAL"
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

Сообщение при запросе идентификатора(адреса устройства) счетчика:

devices/lora/NNNNNNNNNNNNNNN/iec61107
{
    "data": {
        "device": DEVICE,
        "id device": "ID_DEVICE"
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

При запросе текущего времени:

devices/lora/NNNNNNNNNNNNNNN/iec61107
{
    "data": {
        "device": DEVICE,
        "time": "13:29:33"
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

При запросе текущей даты:

devices/lora/NNNNNNNNNNNNNNN/iec61107
{
    "data": {
        "device": DEVICE,
        "day": "Tue"
        "date": 30.01.18
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

Сообщение при запросе действующего значения напряжения(В):

devices/lora/NNNNNNNNNNNNNNN/iec61107
{
    "data": {
        "device": DEVICE,
        "voltage": 226.87
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

Сообщение при запросе действующего значения тока(А):

devices/lora/NNNNNNNNNNNNNNN/iec61107
{
    "data": {
        "device": DEVICE,
        "current": 12.686
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

Сообщение при запросе мгновенного значения мощности(кВт):

devices/lora/NNNNNNNNNNNNNNN/iec61107
{
    "data": {
        "device": DEVICE,
        "power": 2.711792
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

Сообщение при запросе номера тарифа по умолчанию:

devices/lora/NNNNNNNNNNNNNNN/iec61107
{
    "data": {
        "device": DEVICE,
        "default tariff": 1
    },
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN",
        "rssi" : -16, 
        "temperature" : 30, 
        "battery" : 3300, 
        "date" : "2017-02-21T13:29:22.843900Z"
    }
}

Запрос информации о текущем состоянии электросчетчика:

devices/lora/NNNNNNNNNNNNNNN/iec61107
{ 
    "data": { 
        "device": DEVICE, 
        "current tariff": "T03", 
        "schedule tariffs": [ 1, 2, 3, 4, ], 
        "schedule status": "normal", 
        "season": "winter", 
        "time status": "normal", 
        "time correction": "allowed", 
        "battery status": "charged", 
        "battery lifetime": "normal", 
        "voltage status": "normal", 
        "load": "capacitive", 
        "direction": "direct", 
        "energy values": "normal", 
        "tamper": "normal", 
        "program memory": "normal", 
        "metrology": "normal" 
    }, 
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN", 
        "rssi": -40, 
        "temperature": -10, 
        "battery": 3350, 
        "date": "2018-01-26T12:09:04.331795Z" 
    }
}

При получении тарифного расписания:

NB: "T00" - тарификация не задана!
devices/lora/NNNNNNNNNNNNNNN/iec61107
{ 
    "data": { 
        "device": DEVICE, 
        "T01": "06:15", 
        "T02": "11:37", 
        "T03": "14:25", 
        "T04": "17:18", 
        "T00": "00:00", 
        "T00": "00:00", 
        "T00": "00:00", 
        "T00": "00:00", 
        "T00": "00:00", 
        "T00": "00:00", 
        "T00": "00:00", 
        "T00": "00:00" 
    }, 
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN", 
        "rssi": -40, 
        "temperature": -10, 
        "battery": 3350, 
        "date": "2018-01-26T12:09:04.331795Z" 
    }
}

В данном примере тарифное расписание следующее:

с 00:00 - Т04,
с 06:15 - Т01,
с 11:37 - Т02,
с 14:25 - Т03,
с 17:18 - Т04.

Сообщение при запросе списка исключительных дней:

N - номер части таблицы дней, DD.MM - день.месяц, SCH - номер тарифного расписания.
devices/lora/NNNNNNNNNNNNNNN/iec61107
{ 
    "data": { 
        "device": DEVICE, 
        "holidays list": "N/2", 
        "DD.MM": SCH, 
        "DD.MM": SCH, 
        "DD.MM": SCH, 
        "DD.MM": SCH, 
        "DD.MM": SCH, 
        "DD.MM": SCH, 
        "DD.MM": SCH, 
        "DD.MM": SCH, 
        "DD.MM": SCH, 
        "DD.MM": SCH, 
        "DD.MM": SCH, 
        "DD.MM": SCH, 
        "DD.MM": SCH, 
        "DD.MM": SCH, 
        "DD.MM": SCH, 
        "DD.MM": SCH
    }, 
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN", 
        "rssi": -40, 
        "temperature": -10, 
        "battery": 3350, 
        "date": "2018-01-26T12:09:04.331795Z" 
    }
}
При получении списка исключительных дней приходит два сообщения:

NB: "00.00" - день не задан!
devices/lora/NNNNNNNNNNNNNNN/iec61107
{ 
    "data": { 
        "device": DEVICE, 
        "holidays list": "1/2", 
        "01.01": 2, 
        "02.01": 2, 
        "08.03": 2, 
        "09.05": 2, 
        "00.00": 0,
        "00.00": 0, 
        "00.00": 0, 
        "00.00": 0, 
        "00.00": 0,
        "00.00": 0, 
        "00.00": 0, 
        "00.00": 0, 
        "00.00": 0, 
        "00.00": 0, 
        "00.00": 0, 
        "00.00": 0 
    }, 
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN", 
        "rssi": -40, 
        "temperature": -10, 
        "battery": 3350, 
        "date": "2018-01-26T12:09:04.331795Z" 
    }
}
devices/lora/NNNNNNNNNNNNNNN/iec61107
{ 
    "data": { 
        "device": DEVICE, 
        "holidays list": "2/2", 
        "00.00": 0,
        "00.00": 0,
        "00.00": 0,
        "00.00": 0,
        "00.00": 0,
        "00.00": 0, 
        "00.00": 0, 
        "00.00": 0, 
        "00.00": 0,
        "00.00": 0, 
        "00.00": 0, 
        "00.00": 0, 
        "00.00": 0, 
        "00.00": 0, 
        "00.00": 0, 
        "00.00": 0 
    }, 
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN", 
        "rssi": -40, 
        "temperature": -10, 
        "battery": 3350, 
        "date": "2018-01-26T12:09:04.331795Z" 
    }
}
В данном примере исключительные дни следующие:

1 января - по тарифному расписанию №2,
2 января - по тарифному расписанию №2,
8 марта - по тарифному расписанию №2,
9 мая - по тарифному расписанию №2.

Сообщение при получении показаний энергии:

devices/lora/NNNNNNNNNNNNNNN/iec61107
{ 
    "data": { 
        "device": DEVICE, 
         "T01": 2.61, 
         "T02": 0.46,
         "T03": 0.70,
         "T04": 0.04, 
         "Total": 3.81
    }, 
    "status": {
        "devEUI" : "NNNNNNNNNNNNNNN", 
        "rssi": -40, 
        "temperature": -10, 
        "battery": 3350, 
        "date": "2018-01-26T12:09:04.331795Z" 
    }
}

Подключение

К порту UART через адаптер интерфейса RS485.

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

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