Для интеграции с NBIOT устройствами используется модуль NBIOT, который принимает трафик от NBIOT по MQTT протоколу.
Важно! Поскольку формат данных NBIOT устройств не стандартизован, то каждый тип устройства требует проверки на совместимость с модулем.
Список совместимых устройств NBIOT сопровождается на сайте компании.
mkdir /opt/nbiot-gate
cp nbiot-gate.jar /opt/nbiot-gate
cp application.yml /opt/nbiot-gate
cd /etc/init.d
chmod +x /opt/nbiot-gate/nbiot-gate.jar
ln -s /opt/nbiot-gate/nbiot-gate.jar nbiot-gate
systemctl daemon-reload
service nbiot-gate start
service nbiot-gate status
service nbiot-gate stop
Настройки содержатся в файле application.yml который должен располагаться в директории запуска (т.е. рядом с nbiot-gate.jar).
Прежде всего следует настроить способ логирования (для докеров принято логировать в консоль, для standalone установок в файлы):
spring:
# профили логирования, console - вывод в консоль, file - вывод в файл
profiles:
active: console
Параметры подключения к БД - нужно задать урл, пользователя и пароль
spring:
datasource:
# подключение к БД (урл, пользователь, пароль)
url: jdbc:postgresql://192.168.1.13:5432/semdb?currentSchema=sem
username: postgres
password: postgres
Параметры подключения к JMS брокеру артемис - нужно задать урл, пользователя и пароль
artemis:
url: tcp://localhost:61616
user: artemis
password: artemis
Параметры подключения к MQTT брокеру - нужно задать урл, пользователя и пароль
mqtt:
url: tcp://localhost:1883
user: admin
password: admin
Метрики публикуются в формате прометеус экспортер по адресу http://localhost:8739/metrics
Порт можно поменять в конфиге application.yml (server.port).
Доступны метрики:
Прием измерений от устройств
Измерения от NBIOT устройства приходят в топики измерений (up), пример:
/ASUNO-NBIOT/0100112233445566/up
Где:
ASUNO-NBIOT
- префик шлюза nbiot
0100112233445566
- серийный номер устройства
up
- признак поступивших от устройства данных
Для того чтобы получать данные от устройства, приведенного в примере нужно:
создать запись в таблице device_gate (username = „ASUNO-NBIOT“)
создать устройство с нужными каналами в Device с типом DeviceType = NBIOT, документ по каналам для умной лампы ATB-LAMP v1
создать контроллер с типовой конфигурацией, содержащей созданное устройство
связать схему подключения устройства DeviceConnect с записью device_gate где username = „ASUNO-NBIOT“
задать устройству на контроллере (Unit) серийный номер (в этом примере serialnumber = 0100112233445566)
Отправка команд устройствам
Команды устройствами принимаются в топиках команд (down), пример:
/ASUNO-NBIOT/0100112233445566/down
{"bright": 100, "mode": 1}
Для отправки команд нужно:
Модуль прогноза погоды представляет собой отдельный серверный компонент, который устанавливается в отдельном экземпляре сервера приложений. Этот компонент эмулирует поведение метеодатчиков с использованием внешнего сервиса погоды. На стороне ядра платформы реализован виртуальное метеоустройство (метео-контроллер), который запрашивает погоду у модуля прогноза.
Пуск докер сервера осуществляется следующим образом:
docker login registry.infsys.ru
docker run -d --name weather -p 8080:8080 registry.infsys.ru/iss/weather
helm repo add sem-next http://registry.infsys.ru/stable/
выполните обновление скриптов helm helm repo update
Внесите все необходимые параметры в файл переменных, либо используйте опцию --set
| Параметр | Значение в value.yaml | Коммментарии |
|----------|-----------------------|--------------|
| images.repository| registry.infsys.ru/iss/weather| образ weather |
| images.tag | latest | тег для контейнеров |
| images.pullPolicy | Always | иногда полезно ставить Always, не всегда измененные контейнеры имеют новый тег |
| service.port | 8080 | порт http для обращения клиентов к weather|
| providers| openweathermap | В текущей версии используется только провайдер погоды openweathermap. Для этого провайдера можно внести любое кол-во AppID, по которым сервис будет запрашивать погоду |
| max-requests-per-minute | 58 | максимальное количество запросов в минуту к провайдеру |
Запустите сервер в K8
helm install <имя инстанса> [-f <имя файла yaml >] sem-next/weather -n <имя namespace>
, где
Пример:
helm install oras sem-next/weather -n inspark
При изменении начальных значений необхдимо провести upgrade инстанса:
helm upgrade <имя инстанса> [-f <имя файла yaml >] sem-next/weather -n <имя namespace>
Удаление инстанса выполняется командой:
helm uninstall <имя инстанса> -n <имя namespace>
Для запуска модуля прогноза погоды, в конфигурационном файле sem-next.xml пропишите секцию запуска приложений при старте сервера приложений:
<weather>
<uri>http://127.0.0.1:8085/weather/api</uri>
</weather>
В секции настройки указывается TCP/IP адрес хоста, где запускается модуль погоды. Если модуль погоды запускается для конкретного инстанса платформы, вместе с остальными модулями ядра, то указывается адрес основного хоста.