- Открыть Настройки драйвера
- Нажать кнопку сканирования (сверху справа)
- Ввести необходимые настройки или оставить по умолчанию: startRange - начальный ip адрес диапазона сканирования, End Range - конечный ip адрес диапазона сканирования, Port list - через запятую порты сервиса onvif (по умолчанию: 80, 7575, 8000, 8080, 8081), User name - по умолчанию admin, Password - по умолчанию admin
- Нажать START SCAN
Если все сделано правильно, в основном окне настроек появятся найденые камеры и через несколько секунд должны будут подтянуться снапшоты
Драйвер автоматически подписывается на события к настроенным камерам. События, которые генерирует камера, появятся в объектах вида:
onvif.0.122_116_220_230_2033.message.ruleengine.cellmotiondetector.motion.IsMotion
onvif.0.122_116_220_230_2033.message.ruleengine.tamperdetector.tamper.IsTamper
Для этого используется команда:
sendTo('onvif.0', command, message, callback);
Пример скрипта для запроса снапшота и отправка в телеграм:
const fs = require('fs');
function getSnapshot(caption){
sendTo('onvif.0', 'saveFileSnapshot', {"id":"192_168_1_4_80", "file":"/opt/cameras/snapshot.jpg"}, (data) => {
console.log('image принят: ' + data);
if (data === "OK")
sendTo('telegram.0', {text: '/opt/cameras/snapshot.jpg', caption: caption});
});
}
caption - заголовок для картинки в телеграме. Вызывать можно как по событию, так и по кнопке/рассписанию.
Вариант загрузки в промежуточный Buffer в место файла:
function getSnapshot(){
sendTo('onvif.0', 'getSnapshot', {"id":"192_168_1_4_80"}, (result) => {
if (result.err) log(result);
if (result.img){
log('image принят: ' + typeof result.img);
sendTo('telegram.0', {
user: 'user',
text: result.img.rawImage,
type: 'photo',
caption: 'Camera 1'
});
}
});
}
Чтобы отключить подписку на события от камеры, необходимо выставить состояние subscribeEvents = false
и перезапустить адаптер.
При изменении в панели администратора, перезугрузка адаптера выполняется автоматически.
События имеют тип "Объект", например:
{
'Value': false,
'UtcTime': '2020-04-26T17:35:34.000Z'
}
Value
- значение/состояние,
UtcTime
- время изменения значения/состояния
Т.к. адаптер работает по подписке на события, то время состояния state.ts
может не совпадать с реальным временем события в камере.
- Open Driver Settings
- Press the scan button (top right)
- Enter the necessary settings or leave the default: startRange - the starting ip address of the scanning range, End Range - the ending ip address of the scanning range, Port list - comma-separated ports of the onvif service (default: 80, 7575, 8000, 8080, 8081), User name - default admin, Password - default admin
- Press START SCAN
If everything is made correctly, then the found cameras will appear in a primary window of settings and in several seconds snapshots will have to be tightened.
The driver automatically subscribes to events for the configured cameras. The events generated by the camera will be displayed in the following objects:
onvif.0.122_116_220_230_2033.message.ruleengine.cellmotiondetector.motion.IsMotion
onvif.0.122_116_220_230_2033.message.ruleengine.tamperdetector.tamper.IsTamper
To do this, use the command:
sendTo('onvif.0', command, message, callback);
Example of a script for request of the snapshot and sending to Telegram:
const fs = require('fs');
function getSnapshot(caption){
sendTo('onvif.0', 'saveFileSnapshot', {"id":"192_168_1_4_80", "file":"/opt/cameras/snapshot.jpg"}, (data) => {
console.log('image received: ' + data);
if (data === "OK")
sendTo('telegram.0', {text: '/opt/cameras/snapshot.jpg', caption: caption});
});
}
caption - is heading for the picture in Telegram It is possible to cause both on an event, and according to the button/schedule.
The option of loading into an intermediate Buffer in the file location:
function getSnapshot(){
sendTo('onvif.0', 'getSnapshot', {"id":"192_168_1_4_80"}, (result) => {
if (result.err) log(result);
if (result.img){
log('image received: ' + typeof result.img);
sendTo('telegram.0', {
user: 'user',
text: result.img.rawImage,
type: 'photo',
caption: 'Camera 1'
});
}
});
}
To disconnect the subscription to events from the camera, you need to set the status subscribeEvents = false
and restart the adapter.
When changing in the admin panel, the adapter is restarted automatically.
Events are of type "Object", for example:
{
'Value': false,
'UtcTime': '2020-04-26T17:35:34.000Z'
}
Value
- value/state,
UtcTime
- state change time
because the adapter works by subscribing to events, the state time of state.ts
may not coincide with the real time of the event in the camera.
- (haba1234) Added new state
- (haba1234) Snapshot preview is squeezed
- (haba1234) Preview is buffered and not requested again
- (haba1234) After a minute, re-subscribe to camera events after 4 errors
- (haba1234) Support digest authentification
- (haba1234) node >= 10
- (haba1234) Updated admin panel
- (haba1234) States as an Object
- (haba1234) Error control 'pullMessages'. Disconnect if there are more than three errors
- (haba1234) Encryption disabled. Compatibility issues
- (haba1234) Added support for the Discovery adapter
- (haba1234) Added password encryption
- (haba1234) Added camera settings
- (haba1234) Changes in the structure of objects (ATTENTION! After updating, delete cameras and add again)
- (haba1234) Fixed issue #9
- (haba1234) Fixed uncaught exception: The "chunk" argument must be one of type string or Buffer
- (haba1234) Add state 'subscribeEvents'
- (haba1234) Port polling bug fixed
- (haba1234) bag fix and different little things
- (haba1234) compact mode
- (haba1234) deprecated 'request' is replaced by class 'http'
- (haba1234) 'onvif-snapshot' is replaced by class 'http'
- (haba1234) Added translate
- (haba1234) Refactoring code
- (haba1234) add events and snapshot
- (Kirov Ilya) intial commit
The MIT License (MIT)
Copyright (c) 2018-2020 Haba1234 [email protected]