Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

events not working #76

Closed
ljubomirb opened this issue Jun 12, 2017 · 8 comments
Closed

events not working #76

ljubomirb opened this issue Jun 12, 2017 · 8 comments

Comments

@ljubomirb
Copy link

ljubomirb commented Jun 12, 2017

I tried with node 6.10, 8.0, 8.1.
I'm not sure if it's related to camera (some clone from china), since I can see events in its manager (some internet explorer activex plugin), but... if someone else also has this problem, then there might be something here to explore...

var CAMERA_HOST = '192.168.1.10',
    USERNAME = 'admin',
    PASSWORD = '',
    PORT = 8899;

var http = require('http'),
    Cam = require('onvif').Cam;

new Cam({
    hostname: CAMERA_HOST,
    username: USERNAME,
    password: PASSWORD,
    port: PORT
}, function(err) {
    if (err) {
        console.log('Connection Failed');
        return;
    }
    console.log('CONNECTED');   
    this.on('event', function(camMessage) { console.log(camMessage) });

});

Error: You should create pull-point subscription first!
at Cam.pullMessages (/home/mm/Downloads/tempp/node_modules/onvif/lib/events.js:137:9)
at Cam._eventPull (/home/mm/Downloads/tempp/node_modules/onvif/lib/events.js:196:8)
at Cam. (/home/mm/Downloads/tempp/node_modules/onvif/lib/events.js:100:12)
at ClientRequest. (/home/mm/Downloads/tempp/node_modules/onvif/lib/cam.js:225:4)
at emitOne (events.js:115:13)
at ClientRequest.emit (events.js:210:7)
at Socket.socketOnEnd (_http_client.js:435:9)
at emitNone (events.js:110:20)
at Socket.emit (events.js:207:7)
at endReadableNT (_stream_readable.js:1045:12)

--
and when I remove require ('http') (wich should not be a problem), then error changes to:

TypeError: Cannot read property 'events' of undefined
    at Cam._request (d:\moje\pcele\nodetesting\test_onvif3\node_modules\onvif\lib\cam.js:175:16)
    at Cam.createPullPointSubscription (d:\moje\pcele\nodetesting\test_onvif3\node_modules\onvif\lib\events.js:87:10)
    at Cam._eventRequest (d:\moje\pcele\nodetesting\test_onvif3\node_modules\onvif\lib\events.js:183:14)
    at Cam.<anonymous> (d:\moje\pcele\nodetesting\test_onvif3\node_modules\onvif\lib\events.js:170:14)
    at emitTwo (events.js:125:13)
    at Cam.emit (events.js:213:7)
    at _addListener (events.js:248:14)
    at Cam.addListener (events.js:298:10)
    at Cam.<anonymous> (d:\moje\pcele\nodetesting\test_onvif3\app.js:12:10)
    at Cam.<anonymous> (d:\moje\pcele\nodetesting\test_onvif3\node_modules\onvif\lib\cam.js:104:13)
@batchnulls
Copy link

Have you tried with latest from Github? I'm now getting Error: socket hang up from pullMessages in (events.js) after adding a log for err.

I'm testing with a Reolink RLC-410. Trying to find consistent documentation. I'm seeing examples that say wsa:To must be specified, as well as other formats. New to onvif so still have some more digging to do.

@Codelica
Copy link

I see the same error:

Error: You should create pull-point subscription first!

Which seems to stem from the createPullPointSubscription() call in events.js which going back further gives an error from the request made, in my case:

ONVIF SOAP Fault: Argument Value Invalid

On my Hikvision gear at least. If I look at the actual request, I'm not sure what is invalid. There certainly isn't much in the body and the rest appears to mainly be auth boilerplate:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
  <s:Header>
    <Security s:mustUnderstand="1" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <UsernameToken>
        <Username>admin</Username>
        <Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">xxxxxxxxxxxxxxx</Password>
        <Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">nXsBIjyqKGLT2AqWGht/ug==</Nonce>
        <Created xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2018-05-16T22:31:28.780Z</Created>
      </UsernameToken>
    </Security>
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <CreatePullPointSubscription xmlns="http://www.onvif.org/ver10/events/wsdl"/>
  </s:Body>
</s:Envelope>

Will continue to dig a bit..

@bartbutenaers
Copy link

Hi James (@Codelica),
Have you ever found a solution for the pull-point subscription error?
Thanks !!
Bart

@Codelica
Copy link

Codelica commented Mar 5, 2019

@bartbutenaers I'm afraid I didn't. Had to move on with some other projects, so this was left on the "someday" list :) Sorry...

@Tsopic
Copy link

Tsopic commented Jun 28, 2019

Event subscribing is something I'm trying to figure out as well. Why it has to be so complicated?

@ozett
Copy link

ozett commented Oct 28, 2019

someone who fixed/improved onvif-event handling may kindly state this here on this thered?
i subscribe now and wait for update...
👍

@Tsopic
Copy link

Tsopic commented Oct 28, 2019

@RogerHardiman
Copy link
Collaborator

I have rewritten parts of the events code and it works nicely with Hikvision and Axis equipment.
The new code handles the missing wsa:To field in the XML and subscribes to the pull point first.
Example6.js gives a simple demo.

So I will close this issue report as we have now code for events. Please raise a new report if you still have problems.
Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants