Пульсар API
ПО Комплекс ПУЛСАР
ООО НПП "ТЕПЛОВОДОХРАН" выпускает контроллеры ПУЛЬСАР коммерческого учета ресурсов (Энергия, тепло, вода). Доступ к данным коммерческого учета предоставляется по API ПО Комплекс.
Ссылка на API
Функциональность
Периодический запрос данных:
- показания общедомовых приборов учета;
- показания приборов технического учета;
- показания индивидуальных приборов учета.
Ограничения WEB-API ПО Комплекс
Объекты учета, поддерживаемые Пульсар имеют иерархическую структуру, но нет ни каких признаков определяющих их тип в иерархии. Например, невозможно определить общедомовой или индивидуальный прибор учета.
Объект учета на любом уровне иерархии может иметь или не иметь набор ресурсных параметров, соответственно данные можно получить только с объекта учета у которого есть ресурсные параметры.
Ресурсный параметр предоставляемый api для объекта учета не имеет ни каких данных о типе ресурса который он представляет, только имя и идентификатор.
Сбор данных по каждому параметру возможен через создание специальных заданий на параметр с указанием через какие интервалы времени Пульсар будет их собирать. Пульсар не предоставляет ни какой информации о состоянии и работоспособности датчика, только косвенно отсутствие данных с датчика за заданный период.
Настройка схемы интеграции
- В Библиотеке устройств (Меню->Устройства) найти устройство с типом PULSAR.
- Если такого устройства нет, скачать устройство по ссылке и выполнить Импорт (Меню->Импорт).
Инфо
Основываясь на представленных ограничениях, устройство с типом Pulsar должно c одним каналом.
Например, для счетчика воды с каналом потребления воды. Для ПУЭ канал потребления ЭЭ:
- Пульсар потребление воды;
- Пульсар давление воды.
Модель устройств PULSAR показана ниже
Топик канала | Тип значения | Представление в PULSAR |
---|---|---|
water_cma | нарастающий итог | потребление воды объекта Пульсар |
В каждом устройстве по одному каналу

- Собрать Типовую конфигурацию с таким Устройством.
- Подключить Типовую конфигурацию к контроллеру на объекте.
- Измеряемому параметру в поле "Альтернативное название (код)" введите значение ID ресурса ПО Комплекс Пульсар. Таким образом будет задана связка между параметром Inspark и ресурсом Пульсар.
Установка модуля интеграции
Запуск
java -jar pulsar-gate.jar
Установка в качестве демона линукс:
Создать директорию /opt/pulsar-gate и поместить в нее pulsar-gate.jar, application.yml
mkdir /opt/pulsar-gate
cp pulsar-gate.jar /opt/pulsar-gate
cp application.yml /opt/pulsar-gate
cp pulsar-gate.conf /opt/pulsar-gate
Создать файл сервиса /etc/systemd/system/pulsar-gate.service следующего содержания:
[Unit]
Description=pulsar-gate
After=syslog.target
[Service]
User=root
Group=root
ExecStart=/opt/pulsar-gate/pulsar-gate.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Перечитать список сервисов linux
systemctl daemon-reload
Запуск и остановку сервиса можно осуществлять стандартными командами, модуль работает только в режиме 2
service pulsar-gate start
service pulsar-gate status
service pulsar-gate stop
Если нужно добавить в автозапуск при рестарте, обычно это делается так:
systemctl enable pulsar-gate
Ограничение памяти в качестве демона
Для установки лимитов памяти нужно создать в директории pulsar-gate.jar файл конфигурации pulsar-gate.conf и задать в нем нужные лимиты, например:
JAVA_OPTS="-Xms100m -Xmx300m"
Настройка модуля интеграции
Модуль работает в двух режимах:
- печать конфигурации Пульсар
- сбор данный с ПК Пульсар
Печать конфигурации Пульсар
В этом режиме модуль в лог выдает по всей иерархии объектов Пульсар названия и идентификаторы объектов учета и ресурсные параметры с их названием и идентификаторами которые собираются на объектах учета.
Также дополнительно выводится информация о последних архивных данных за текущие сутки (чтобы оценить возможность или наличие сбора данных на этом объекте по данному параметру)
2024-05-16 12:17:07.189 INFO [r.infsys.sem.pulsar.PrintApplication] (main) AccountingObject=AccountingObject(id=531,
name=Дом Новая 51В, parentId=10, parameters=[
ResourceParameter(id=3836, name=Газ-Антисаб. Выход1, accountingId=531),
ResourceParameter(id=2433, name=Газ-Объём1 раб.(м3), accountingId=531),
ResourceParameter(id=3847, name=Газ-Время нормальной работы, accountingId=531),
ResourceParameter(id=3849, name=Газ-Объем раб. общ.(м3) без коррекции, accountingId=531),
ResourceParameter(id=3845, name=Газ-Объём2 раб.(м3), accountingId=531),
ResourceParameter(id=3848, name=Газ-Ошибки, accountingId=531),
ResourceParameter(id=3846, name=Газ-Температура газа (гр.С), accountingId=531),
ResourceParameter(id=3850, name=Газ-Объём3 ст. общ.(м3), accountingId=531),
ResourceParameter(id=3713, name=ХВС-Давление1(МПа), accountingId=531),
ResourceParameter(id=2441, name=ХВС-Объём1(м3), accountingId=531),
ResourceParameter(id=3769, name=ХВС-Объём4(м3), accountingId=531),
ResourceParameter(id=265, name=Электроэнергия-Актив1 т.1(кВт*ч), accountingId=531),
ResourceParameter(id=2172, name=Электроэнергия-Актив1 т.2(кВт*ч), accountingId=531),
ResourceParameter(id=2175, name=Электроэнергия-Актив1 т.3(кВт*ч), accountingId=531),
ResourceParameter(id=2180, name=Электроэнергия-Актив1 т.4(кВт*ч), accountingId=531),
ResourceParameter(id=926, name=Электроэнергия-Реакт1 т.1(кВт*ч), accountingId=531),
ResourceParameter(id=3696, name=Электроэнергия-U1 Ввод1(В), accountingId=531),
ResourceParameter(id=3695, name=Электроэнергия-U2 Ввод1(В), accountingId=531),
ResourceParameter(id=3694, name=Электроэнергия-U3 Ввод1(В), accountingId=531),
ResourceParameter(id=271, name=Электроэнергия-Актив2 т.1(кВт*ч), accountingId=531),
ResourceParameter(id=2169, name=Электроэнергия-Актив2 т.2(кВт*ч), accountingId=531),
ResourceParameter(id=2174, name=Электроэнергия-Актив2 т.3(кВт*ч), accountingId=531),
ResourceParameter(id=2178, name=Электроэнергия-Актив2 т.4(кВт*ч), accountingId=531),
ResourceParameter(id=925, name=Электроэнергия-Реакт2 т.1(кВт*ч), accountingId=531),
ResourceParameter(id=3699, name=Электроэнергия-U1 Ввод2(В), accountingId=531),
ResourceParameter(id=3697, name=Электроэнергия-U2 Ввод2(В), accountingId=531),
ResourceParameter(id=3698, name=Электроэнергия-U3 Ввод2(В), accountingId=531),
ResourceParameter(id=2151, name=Электроэнергия-Актив3 т.1(кВт*ч), accountingId=531),
ResourceParameter(id=2150, name=Электроэнергия-Реакт3 т.1(кВт*ч), accountingId=531),
ResourceParameter(id=2153, name=Электроэнергия-Актив4 т.1(кВт*ч), accountingId=531),
ResourceParameter(id=2152, name=Электроэнергия-Реакт4 т.1(кВт*ч), accountingId=531)])
2024-05-16 12:17:07.222 INFO [r.infsys.sem.pulsar.PrintApplication] (main) ArchiveValue=ArchiveValue(value=334252.8125, date=2024-05-16T00:00:00, quality=192, parameterId=2433)
2024-05-16 12:17:07.222 INFO [r.infsys.sem.pulsar.PrintApplication] (main) ArchiveValue=ArchiveValue(value=334255.90625, date=2024-05-16T01:00:00, quality=192, parameterId=2433)
2024-05-16 12:17:07.222 INFO [r.infsys.sem.pulsar.PrintApplication] (main) ArchiveValue=ArchiveValue(value=334258.90625, date=2024-05-16T02:00:00, quality=192, parameterId=2433)
2024-05-16 12:17:07.222 INFO [r.infsys.sem.pulsar.PrintApplication] (main) ArchiveValue=ArchiveValue(value=334262.0, date=2024-05-16T03:00:00, quality=192, parameterId=2433)
2024-05-16 12:17:07.222 INFO [r.infsys.sem.pulsar.PrintApplication] (main) ArchiveValue=ArchiveValue(value=334265.0, date=2024-05-16T04:00:00, quality=192, parameterId=2433)
2024-05-16 12:17:07.222 INFO [r.infsys.sem.pulsar.PrintApplication] (main) ArchiveValue=ArchiveValue(value=334268.09375, date=2024-05-16T05:00:00, quality=192, parameterId=2433)
2024-05-16 12:17:07.222 INFO [r.infsys.sem.pulsar.PrintApplication] (main) ArchiveValue=ArchiveValue(value=334271.09375, date=2024-05-16T06:00:00, quality=192, parameterId=2433)
2024-05-16 12:17:07.222 INFO [r.infsys.sem.pulsar.PrintApplication] (main) ArchiveValue=ArchiveValue(value=334274.09375, date=2024-05-16T07:00:00, quality=192, parameterId=2433)
2024-05-16 12:17:07.222 INFO [r.infsys.sem.pulsar.PrintApplication] (main) ArchiveValue=ArchiveValue(value=334277.0, date=2024-05-16T08:00:00, quality=192, parameterId=2433)
2024-05-16 12:17:07.222 INFO [r.infsys.sem.pulsar.PrintApplication] (main) ArchiveValue=ArchiveValue(value=334279.59375, date=2024-05-16T09:00:00, quality=192, parameterId=2433)
2024-05-16 12:17:07.222 INFO [r.infsys.sem.pulsar.PrintApplication] (main) ArchiveValue=ArchiveValue(value=334282.0, date=2024-05-16T10:00:00, quality=192, parameterId=2433)
2024-05-16 12:17:07.222 INFO [r.infsys.sem.pulsar.PrintApplication] (main) ArchiveValue=ArchiveValue(value=334284.40625, date=2024-05-16T11:00:00, quality=192, parameterId=2433)
2024-05-16 12:17:07.222 INFO [r.infsys.sem.pulsar.PrintApplication] (main) ArchiveValue=ArchiveValue(value=334286.09375, date=2024-05-16T12:00:00, quality=192, parameterId=2433)
Совет
Из представленного лога можно определить, что на объекте Дом Новая 51В заявлено к сбору большое количество параметров, но за последние сутки данные собирались только по ResourceParameter(id=2433, name=Газ-Объём1 раб.(м3), accountingId=531).
Причину отсутствия остальных данных определить по WEB-API не возможно.
ID=2433 вносится в поле Альтернативное название (код) в параметре Inspark.
Конфигурация модуля хорошо документирована, необходимо внести данные по серверу ПО Комплекс ПУЛЬСАР и задать режим сбора.
Примеры основных секций application.yml приведен ниже:
pulsar:
# задается адрес и доступ сервера Пульсар
server:
url: http://192.168.1.101:4540/
user: demo
password: demo
# в формате cron строки задается режим сбора (задан опрос 4 раза каждый час в 0,15,30,45 минуту)
cron: 0 0,15,30,45 * * * ?
sem-next:
# адрес rest-сервера Inspark
rest:
url: http://192.168.1.102:8080/sem-restservices/
user: admin
password: admin
# очередь для измерений в шине Inspark
artemis:
broker-url: tcp://192.168.1.102:61616
user: artemis
password: SuperHot
event-queue: jms.queue.EventImport
measure-queue: jms.queue.Measure
Сбор данных с ПК Пульсар
Алгоритм работы модуля для сбора измерений:
- считывание всех параметров типа PULSAR;
- проверка наличия у параметра заполненного поля "Альтернативное название (код)", если кода нет- логирование;
- проверка наличия ресурсных параметров заданных в Inspark в ПК Пульсар, при отсутствии логирование;
- создание заданий на опрос значений параметров в соответствии с настройкой типового параметра "Интервал опроса" в Пульсар;
- чтение данных по заданиям и отправка измерений по параметрам в Inspark.