HTTP
Драйвер получает файлы в формате json от устройств (в примере использовалась камера hik-vision) и передает сообщение на его основе в mqtt
Зависимости проекта
Драйвер разработан на python 3.10.12
- библиотека paho-mqtt 2.1.0
Логирование
Логирование по умолчанию выполняется в файл
/var/log/json2mqtt/json2mqtt.log
Пользователь, запускающий программу, должен обладать правами на запись в этот файл.
Параметром запуска -l
можно изменить имя файла.
Файл конфигурации
Драйвер читает конфигурацию из файла по умолчанию
/etc/driver.json
либо из файла, указанного параметром запуска -c
.
Описание конфигурации см. ниже.
Пример конфигурационного файла расположен в каталоге config
./config/driver.json
Параметры запуска
- -c - используется указанный файл конфигурации (полный путь) вместо файла по умолчанию (/etc/inspark/driver.json)
- -d - выводить в журнал отладочную информацию
- -l - выводить логи в указанный файл вместо файла по умолчанию (/var/log/json2mqtt/json2mqtt.log)
- -v - выводить логи в файл и в консоль (пока не реализовано)
- -p - запускать сервер на указанном порту вместо порта по умолчанию (8088)
Пример запуска с параметрами
python3 /home/ylios/iw/drivers/json2mqtt/src/main.py -v -d -p 9898 -c /home/ylios/iw/drivers/json2mqtt/config/driver.json
Описание конфигурации
Файл driver.json соответствует требованиям к файлам конфигурации драйверов нового поколения. Ниже приведены требования к
каждой из секций со стороны драйвера.
mqtt
Обязательна. Авторизация пока не реализована.
Пример:
"mqtt": {
"port": 1883,
"url": "localhost"
}
port.connection
Обязательна.
type: "opc.ua". Другие типы игнорируются.
tcp: обязательна. Авторизация пока не реализована
enabled: по умолчанию true. Если false, порт игнорируется.
poll_interval: по умолчанию 60. Интервал опроса в секундах.
Пример:
"connection": {
"enabled": true,
"poll_interval": 60,
"rto": 2000,
"sto": 2000,
"type": "opc.ua",
"tcp": {
"url": "opc.tcp://10.4.2.115",
"port": 54000
}
}
port.devices
Обязательна. Содержит описания устройств ОРС сервера.
name: обязательна. Используется в топике сообщений.
cname: обязательна. По ней ищется набор параметров.
sid: обязательна. Идентификатор пространства имен параметров ОРС сервера.
enabled: по умолчанию true. Если false, игнорируется.
Пример:
{
"name": "PD_SIMULATOR",
"sid": 1,
"cname": "simulator"
}
port.parameters.config
Обязательна. Содержит описания параметров ОРС сервера и связь с устройствами.
cname: обязательна. По ней ищется связь с устройствами.
channels: обязательна. Содержит описания параметров.
port.parameters.channels
Массив параметров. Каждый параметр описывается следующими атрибутами.
name: обязательно. Используется в топике сообщений.
node_id: обязательно. Имя узла на ОРС сервере.
enabled: по умолчанию true. Если false, игнорируется.
value_type: не обязательно, если не планируется писать данные в параметр OPC-сервера. При чтении используются метаданные с сервера. В дальнейшем,
при смене типа опроса на бинарный, может быть востребовано.
В настоящее время используются типы: bit, i8, u8, i16, u16, i32, u32, i64, u64, str, float32, float64, date_time
Использование других стандартных атрибутов пока не реализовано.
Пример:
{
"name": "Saw",
"node_id": "PN_SIMULATOR.PD_SIMULATOR.Saw",
"value_type": "float32"
}