onvif: publish

This commit is contained in:
Koushik Dutta
2024-01-08 08:54:36 -08:00
parent 074ba733a3
commit c4126d7569
3 changed files with 60 additions and 60 deletions

View File

@@ -1,12 +1,12 @@
{
"name": "@scrypted/onvif",
"version": "0.1.1",
"version": "0.1.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@scrypted/onvif",
"version": "0.1.1",
"version": "0.1.2",
"license": "Apache",
"dependencies": {
"@koush/axios-digest-auth": "^0.8.7",

View File

@@ -1,6 +1,6 @@
{
"name": "@scrypted/onvif",
"version": "0.1.1",
"version": "0.1.2",
"description": "ONVIF Camera Plugin for Scrypted",
"author": "Scrypted",
"license": "Apache",

View File

@@ -88,68 +88,68 @@ export class OnvifCameraAPI {
this.cam.on('event', (event: any, xml: string) => {
ret.emit('data', xml);
if (!event.message.message.data?.simpleItem?.$)
return;
const dataValue = event.message.message.data.simpleItem.$.Value;
const eventTopic = stripNamespaces(event.topic._);
if (event.message.message.data && event.message.message.data.simpleItem && event.message.message.data.simpleItem.$) {
const dataValue = event.message.message.data.simpleItem.$.Value;
if (eventTopic.includes('MotionAlarm')) {
// ret.emit('event', OnvifEvent.MotionBuggy);
if (dataValue)
ret.emit('event', OnvifEvent.MotionStart)
else
ret.emit('event', OnvifEvent.MotionStop)
if (eventTopic.includes('MotionAlarm')) {
// ret.emit('event', OnvifEvent.MotionBuggy);
if (dataValue)
ret.emit('event', OnvifEvent.MotionStart)
else
ret.emit('event', OnvifEvent.MotionStop)
}
else if (eventTopic.includes('DetectedSound')) {
if (dataValue)
ret.emit('event', OnvifEvent.AudioStart)
else
ret.emit('event', OnvifEvent.AudioStop)
}
// Reolink
else if (eventTopic.includes('Visitor') && (dataValue === true || dataValue === false)) {
if (dataValue) {
ret.emit('event', OnvifEvent.BinaryStart)
}
else if (eventTopic.includes('DetectedSound')) {
if (dataValue)
ret.emit('event', OnvifEvent.AudioStart)
else
ret.emit('event', OnvifEvent.AudioStop)
else {
ret.emit('event', OnvifEvent.BinaryStop)
}
// Reolink
else if (eventTopic.includes('Visitor') && (dataValue === true || dataValue === false)) {
if (dataValue) {
ret.emit('event', OnvifEvent.BinaryStart)
}
// Mobotix T26
else if (eventTopic.includes('VideoSource/Alarm')) {
if (dataValue === "Ring" || dataValue === "CameraBellButton") {
ret.emit('event', OnvifEvent.BinaryRingEvent);
}
}
// else if (eventTopic.includes('DigitalInput')) {
// if (dataValue)
// ret.emit('event', OnvifEvent.BinaryStart)
// else
// ret.emit('event', OnvifEvent.BinaryStop)
// }
else if (this.binaryStateEvent && eventTopic.includes(this.binaryStateEvent)) {
if (dataValue)
ret.emit('event', OnvifEvent.BinaryStart)
else
ret.emit('event', OnvifEvent.BinaryStop)
}
else if (eventTopic.includes('RuleEngine/CellMotionDetector/Motion')) {
// unclear if the IsMotion false is indicative of motion stop?
if (event.message.message.data.simpleItem.$.Name === 'IsMotion' && dataValue) {
ret.emit('event', OnvifEvent.MotionBuggy);
}
}
else if (eventTopic.includes('RuleEngine/ObjectDetector')) {
if (dataValue) {
try {
const eventName = event.message.message.data.simpleItem.$.Name;
const className = this.detections.get(eventName);
this.console.log('object detected:', className);
ret.emit('event', OnvifEvent.Detection, className);
}
else {
ret.emit('event', OnvifEvent.BinaryStop)
}
}
// Mobotix T26
else if (eventTopic.includes('VideoSource/Alarm')) {
if (dataValue === "Ring" || dataValue === "CameraBellButton") {
ret.emit('event', OnvifEvent.BinaryRingEvent);
}
}
// else if (eventTopic.includes('DigitalInput')) {
// if (dataValue)
// ret.emit('event', OnvifEvent.BinaryStart)
// else
// ret.emit('event', OnvifEvent.BinaryStop)
// }
else if (this.binaryStateEvent && eventTopic.includes(this.binaryStateEvent)) {
if (dataValue)
ret.emit('event', OnvifEvent.BinaryStart)
else
ret.emit('event', OnvifEvent.BinaryStop)
}
else if (eventTopic.includes('RuleEngine/CellMotionDetector/Motion')) {
// unclear if the IsMotion false is indicative of motion stop?
if (event.message.message.data.simpleItem.$.Name === 'IsMotion' && dataValue) {
ret.emit('event', OnvifEvent.MotionBuggy);
}
}
else if (eventTopic.includes('RuleEngine/ObjectDetector')) {
if (dataValue) {
try {
const eventName = event.message.message.data.simpleItem.$.Name;
const className = this.detections.get(eventName);
this.console.log('object detected:', className);
ret.emit('event', OnvifEvent.Detection, className);
}
catch (e) {
this.console.warn('error parsing detection', e);
}
catch (e) {
this.console.warn('error parsing detection', e);
}
}
}