Library implementing port 32100 UDP Cloud protocol used by many P2P cameras. You can find a description of the protocol in the wiki
npm install --save lib32100
Require the Library
const lib32100 = require('lib32100')
Istantiate a client
const client = lib32100.client()
Note that each client can handle one device (camera) and multiple cloud servers.
Add servers
client.addServer({host: "myserver.example.com", port: 32100})
Set the device UID
client.setUid('PROD123456ABCDE')
Add listeners
client.on('stun', (e) => console.log(JSON.stringify(e)))
client.on('lookup', (e) => console.log(JSON.stringify(e)))
Send commands to the Cloud servers
client.sendSTUNRequest()
client.lookupUid()
Add camera address
client.addCamAddress({host: "192.168.0.100", port: 10088})
Set camera credentials
client.setCamCredentials({user: 'admin', pass: 'password'})
Open direct camera session
client.openDirectCamSession({host: "192.168.0.100", port: 10088})
Check credentials
client.checkCredentials()
Get snapshot
client.getSnapshot()
Send custom GET request
client.sendGet('/custom_url.cgi?myparam=hello')
Send multiple GET requests
client.sendMultipleGet(['/custom_url1.cgi', '/custom_url2.cgi', '/custom_url3.cgi'])
Get live video stream
client.getVideoStream()
Get live audio stream
client.getAudioStream()
Stop video stream
client.stopVideoStream()
Stop audio stream
client.stopAudioStream()
Get various information
client.getParams()
client.getCameraParams()
client.getFactoryParam()
client.getStatus()
client.cameraControl()
client.getMisc()
client.login()
client.getRtsp()
client.getOnvif()
client.getRecord()
client.wifiScan()
client.getWifiScanResult()
Move in directions in steps
client.stepDown()
client.stepLeft()
client.stepRight()
client.stepUp()
Move in directions
client.moveDown()
client.moveLeft()
client.moveRight()
client.moveUp()
client.stopMove()
Close session
client.closeCamSession()
You can listen on the following events:
stun (server response)
lookup (server response)
lookupACK (server response)
unknownMsg (any message not yet parsable by the library)
pingpong (camera ping or pong)
close (camera closed session)
confirmed (camera comfirmed ID i.e. session opened)
ack (camera acked a message)
http (an http response)
audio (live audio data)
video (live video data)
complete (a complete http response)
lostConnection (the connection was lost)
This implementation is not based on official specs but purely on reverse engineering of the protocol. I cannot guarantee it will work on every device.
MIT. Copyright (c) Fabrizio Bertone