From c4126d75696fef836f8e8bd705814a2f818b6302 Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Mon, 8 Jan 2024 08:54:36 -0800 Subject: [PATCH] onvif: publish --- plugins/onvif/package-lock.json | 4 +- plugins/onvif/package.json | 2 +- plugins/onvif/src/onvif-api.ts | 114 ++++++++++++++++---------------- 3 files changed, 60 insertions(+), 60 deletions(-) diff --git a/plugins/onvif/package-lock.json b/plugins/onvif/package-lock.json index 54d770cc9..8e96e6935 100644 --- a/plugins/onvif/package-lock.json +++ b/plugins/onvif/package-lock.json @@ -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", diff --git a/plugins/onvif/package.json b/plugins/onvif/package.json index 6b2a27da8..402b303c8 100644 --- a/plugins/onvif/package.json +++ b/plugins/onvif/package.json @@ -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", diff --git a/plugins/onvif/src/onvif-api.ts b/plugins/onvif/src/onvif-api.ts index 952ecfaf3..afefa0c52 100644 --- a/plugins/onvif/src/onvif-api.ts +++ b/plugins/onvif/src/onvif-api.ts @@ -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); } } }