Onvif camera control


Working for me.
I wouldn't waste any time over the features that don't work for me, if they work for others then it is most likely that the camera just doesn't support them.


Looking through the config I see that getNodes on the PTZ node shows homeSupported: false so that suggests the goHome should not work, so that's ok.
getStatus show pan, tilt and zoom position all on 0.25. The camera hasn't got pan and tilt, but the zoom position doesn't change. Am I correct in assuming that the number should show the current zoom position?


There appears to be a bug in the getSnapshot method. I imported the flow and selected my camera in the onvif node, and deleted the config node for the one in the flow. When I try to run getSnapshot it is failing with 404 error, on IP which I think is the IP of the original camera in the flow. Possibly the getSnapshot code does not realise the config node has been switched, or is not being re-deployed. A full deploy fixed it.

Just to let you know, there is an error in readme in the first get snapshot flow, the node type is onvifmedia instead of onvif-media.


@BartButenaers, FYI, I can confirm that with the beta.6 version the nodes now connect with the camera.

The node "Onvif Commands" with the "start listening" action causes high load on my raspberry pi.
Don't now is this is a node-red issue or a Onvif issue.
Anyway, Good work !


Hi @prutspapa, @Colin,
Thanks for the feedback!!

Due to daily-work-related activities, I won't be able to respond to the questions until 27 march.
But please keep testing and giving input if you have some spare time left ...

See you guys later !!


Some last feedback ...

Well it would be nice if I could somehow visualise which functionality is supported on your camera, and which functionality isn't supported. But if you look at this wsdl, you will see that (only for PZT) a lot of different kindof tests are required:

And for the other nodes (media, event, ...) again other kind of tests would be required to implement this ... But we can try to implement as much as possible, and e.g. show a node status 'unsupported action' ??

I think you are correct, but my camera's only support Pan-Tilt but no zoom. So I cannot test it. Have ordered a new camera with zoom support, but that one hasn't arrived yet...

Yes the http request is send on the server side, which isn't aware of your changes on the client side. So when you change the config node, it think it is normal that you have to deploy to make that change become active. Not????

@prutspapa: In the readme page you can see that the Event-node isn't working yet. Reason is that I couldn't test it, since my current Panasonic camera doesn't support event streams. Indeed I can see via the getServices (in the Device-node) that none of the 3 stream types are supported:


As soon as I have my new camera, I can try to test this...


I am not able to replicate what I am sure I saw, I had deployed, but only Changed Nodes, I had to do a Full Deploy to get it to work. However, since I am not now able to replicate the situation perhaps I had not actually deployed at all.


FYI, just had some time to test. It seems my camera supports 2 of the 3 streams


My camera was all working with the onvif node, but now it isn't. It is a little while since I used it so I don't know when it stopped working. I am on node red 0.19.5 and nodejs 10.15.3. The onvif node is at 0.6.0. I am seeing this error in a Catch node

Error: Wrong ONVIF SOAP response
    at /home/colinl/.node-red/node_modules/onvif/lib/utils.js:77:14
    at Parser.<anonymous> (/home/colinl/.node-red/node_modules/xml2js/lib/parser.js:303:18)
    at Parser.emit (events.js:189:13)
    at Parser.exports.Parser.Parser.parseString (/home/colinl/.node-red/node_modules/xml2js/lib/parser.js:313:16)
    at Parser.parseString (/home/colinl/.node-red/node_modules/xml2js/lib/parser.js:5:59)
    at Object.exports.parseString (/home/colinl/.node-red/node_modules/xml2js/lib/parser.js:354:19)
    at parseSOAPString (/home/colinl/.node-red/node_modules/onvif/lib/utils.js:62:9)
    at IncomingMessage.<anonymous> (/home/colinl/.node-red/node_modules/onvif/lib/cam.js:203:4)
    at IncomingMessage.emit (events.js:194:15)
    at endReadableNT (_stream_readable.js:1125:12)
    at process._tickCallback (internal/process/next_tick.js:63:19)

Hey Colin (@Colin), that is indeed something I have also from time to time with my own cameras. Unfortunately I have so much work with other Node-RED issues, that I have had no time at all to work on my Onvif nodes meanwhile. Will come back on this once my backlog has become smaller ...


Ok, did you find a way to clear it? I have tried re-starting NR.