Да можно, но лень и хочется феншуя
Нет счастья в жизни.
Если я начинаю проверять топик /zoneminder#, то время от времени:
ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x9e1380 } [/zoneminder#] map[] 1325})
и постоянно:
WARNING: [wbgo_mqtt] MQTT connection lost: write tcp 127.0.0.1:38904->127.0.0.1:1883: write: broken pipe
Если /devices/3, например, то просто тишина в эфире. Что-то я делаю не так…
Со стороны брокер вот такой:
А чем проверяете? TrackMqtt?
Верно будет /devices/3/#
Привет!
- MQTTexplorer в данном скриншоте под Ubuntu
- Варнинги и другие ахтунги цитировал из messages в /var/log/
- За тройкой никакого ветвления нет с точки зрения публикующего устройства…
Надо в конфиге /etc/mosquitto/mosquitto.conf
поменять persistence true
на persistence false
Затем перезапустить контроллер.
Ну и для полного порядка после перезагрузки удалить /mnt/data/var/lib/mosquitto/mosquitto.db
А оно ж есть…
Да, в скриншоте есть, факт
Завтра дотерзаю
Доброе утро!
Заклинание
Надо в конфиге
/etc/mosquitto/mosquitto.conf
поменятьpersistence true
наpersistence false
Затем перезапустить контроллер.
Ну и для полного порядка после перезагрузки удалить /mnt/data/var/lib/mosquitto/mosquitto.db
Ни на что не повлияло. Как только
trackMqtt("/devices/3/controls/#"
совпадает с тем, что прилетает от ZM, начинается Ошибка записи файла: MQTT RPC request timed out MqttTimeoutError в вэб-интерфейся и всякие спецэффекты, описанные ранее.
Значит, предположение неверно, восстанавливать настройки в конфиге брокера не надо.
Тут слегка непонятно… trackMqtt
как хук, создается один раз.
пример можно посмотреть тут: Сообщение при отключении или неисправности в Telegram - #3 от пользователя BrainRoot
Спасибо, сработало. Парсить строку, или есть путь проще?
> 2022-04-07 18:42:40name: /devices/3/controls, value: {"eventtype":"event_start","hookvalue":"0","detection":{"boxes":[[340,128,628,448],[411,147,467,204]],"frame_id":"snapshot","labels":["person","Pavel"],"confidences":[0.936543047428131,1],"image_dimensions":{"original":[1080,1920],"resized":[450,800]}},"monitor":"3","state":"alarm","name":"TR-D8123ZIR3:(7944) [s] detected:person:94% Pavel:100% Motion All","eventid":"7944"}
> 2022-04-07 18:42:45name: /devices/3/controls, value: {"eventid":"7944","detection":[],"hookvalue":0,"eventtype":"event_end","monitor":"3","name":"Ended:TR-D8123ZIR3:(7944) Motion: All","state":"alarm"}
Самому парсить - не надо:
//https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse
var text = '{"eventtype": "event_start", "hookvalue": 0}'
log.info (JSON.parse(text))
Возвращается объект, к его элементам можно по именам обращаться.
ЗЫ движок форма кавычки испортил, поэтому для примера пару элементов взял.
В общем, работает это так:
> trackMqtt("Zoneminder/#", function(message){ //Эта фигня самостоятельна и работает без всяких возбудителей типа whenChanged и таймеров
> foo = JSON.parse(message.value) //Распарсиваем содержимое в содержательной части и пихаем в некий 'foo'
> dev["ZM/topic"] = message.topic; //Часть содержимого, где про топик (помним, что путь к топику заканчивается #)
> dev["ZM/monitor"] = foo["monitor"]; //Достаём из message.value значение 'monitor'
> dev["ZM/eventtype"] = foo["eventtype"]; // -**- 'eventtype'
> dev["ZM/eventid"] = foo["eventid"];
> dev["ZM/detection"] = foo["name"];
> dev["ZM/detected"] = foo["detection"]["labels"][((foo["detection"]["labels"].length)-1)]; //ZM отдаёт результаты опознания в виде массива, см. начало темы. Мы получаем кол-во элементов вещественным числом, а нумерация начинается с нуля. Поэтому вычитаем 1 и вынимаем последний элемент.
> });
Вот. Отчитался.
Но с точки зрения контроля доступа -лажа.
Потому, что выходя нельзя поворачиваться к вызывной панели лицом. Оно тут же откроет дверь…
Придётся добавлять голос.
Хм. Запретить правилом открывать дверь если она только что была открыта разве что?
Просто добавлю голос. Вызывная панель в режиме камеры отдаёт серверу звук тоже. Раз уж всё равно пришлось GPU в ZM втыкать - пусть анализирует. По результатам могу доложиться.
Так, голос - понятно, можно завести на ZM, хотя я давненько не обновлял его, не испоьзовал аудио. А как наличие голоса тут поможет, не пойму.
Планирую прикрутить что-то типа vosk для распознавания голоса. Ну и открывать, если совпала узнаваемая морда и голосовая команда.
Ну, это прямо хорошо. То есть распознавать голос - уже после того как отработает распознавание картинки?
Я думаю, внутри одного события. Еще не вник в тему голоса, но по-идее, это идентификатор не хуже физиономии. Ни кто не мешает в промежутке пару секунд, получив из конкретного источника опознанную биометрию, проверить и наличие второго фактора.
Только вот времени на это нет совсем
Вот да, время - это самое ценное. Когда-то мог сутками сидеть и впиливать в том же ZM протоколы управления PTZ камерами китайскими…
Вспомнила бабка, как девкой была!
Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.