Kaptain.
Telegram /
LinkedIn /
Email /
GIT /
RSS /
GPG /
Заказ печатных плат

№ 12606 В разделе
Sysadmin
от June 3rd, 2025,
В подшивках: Bash, Security
Обмен данными идет в XML.
Сформируем шаблон запроса и сохраним в файл hiwatch-body.tmpl:
<?xml version="1.0" encoding="UTF-8"?> <TextOverlayList version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema"> <TextOverlay> <id>1</id> <displayText>$CAM_TEXT</displayText> <enabled>true</enabled> <positionX>0</positionX> <positionY>576</positionY> </TextOverlay> </TextOverlayList>
Здесь передаются координаты OSD, ID, явное включение вывода и сам текст. Разумеется, все можно шаблонизировать.
Теперь делаем скрипт hiwatch-set-text.sh, который выведет текст:
#!/bin/bash
# Добываем данные из MQTT
romashka=$(/usr/bin/mosquitto_sub -C 1 -N -h 192.168.1.9 -p 1883 -u login -P password -t "/device/48:55:19:C8:E4:0A/termo/1/data" -W 1)
zemlya=$(/usr/bin/mosquitto_sub -C 1 -N -h 192.168.1.9 -p 1883 -u login -P password -t "/device/zemlya/termo/1/data" -W 1)
# Генерируем строку, которую вставим в шаблон
export CAM_TEXT="Romashka: ${romashka}, Grunt: ${zemlya}"
# Подгружаем шаблон и сразу же вставляем в него переменные
body=$(envsubst < hiwatch-body.tmpl)
# URL камеры куда упадет запрос
url="http://192.168.3.54/ISAPI/System/Video/inputs/channels/1/overlays/text"
# Вписываем креды от камеры и через PUT кидаем текст запроса
curl -s --digest -X PUT -u login:password "$url" -d "$body"
Смотрим результат.
Вы великолепны.
Fortune cookie: Today's spam: I have it all!
Leave a Reply