Bibliothèque implémentant le protocole UDP Cloud du port 32100 utilisé par de nombreuses caméras P2P. Vous pouvez trouver une description du protocole dans le wiki
npm install --save lib32100
Exiger la bibliothèque
const lib32100 = require ( 'lib32100' )
Identifier un client
const client = lib32100 . client ( )
Notez que chaque client peut gérer un appareil (caméra) et plusieurs serveurs cloud .
Ajouter des serveurs
client . addServer ( { host : "myserver.example.com" , port : 32100 } )
Définir l'UID de l'appareil
client . setUid ( 'PROD123456ABCDE' )
Ajouter des auditeurs
client . on ( 'stun' , ( e ) => console . log ( JSON . stringify ( e ) ) )
client . on ( 'lookup' , ( e ) => console . log ( JSON . stringify ( e ) ) )
Envoyer des commandes aux serveurs Cloud
client . sendSTUNRequest ( )
client . lookupUid ( )
Ajouter l'adresse de la caméra
client . addCamAddress ( { host : "192.168.0.100" , port : 10088 } )
Définir les informations d'identification de la caméra
client . setCamCredentials ( { user : 'admin' , pass : 'password' } )
Ouvrir une session de caméra directe
client . openDirectCamSession ( { host : "192.168.0.100" , port : 10088 } )
Vérifier les informations d'identification
client . checkCredentials ( )
Obtenir un instantané
client . getSnapshot ( )
Envoyer une demande GET personnalisée
client . sendGet ( '/custom_url.cgi?myparam=hello' )
Envoyer plusieurs requêtes GET
client . sendMultipleGet ( [ '/custom_url1.cgi' , '/custom_url2.cgi' , '/custom_url3.cgi' ] )
Obtenez un flux vidéo en direct
client . getVideoStream ( )
Obtenez un flux audio en direct
client . getAudioStream ( )
Arrêter le flux vidéo
client . stopVideoStream ( )
Arrêter le flux audio
client . stopAudioStream ( )
Obtenez diverses informations
client . getParams ( )
client . getCameraParams ( )
client . getFactoryParam ( )
client . getStatus ( )
client . cameraControl ( )
client . getMisc ( )
client . login ( )
client . getRtsp ( )
client . getOnvif ( )
client . getRecord ( )
client . wifiScan ( )
client . getWifiScanResult ( )
Se déplacer dans les directions par étapes
client . stepDown ( )
client . stepLeft ( )
client . stepRight ( )
client . stepUp ( )
Se déplacer dans des directions
client . moveDown ( )
client . moveLeft ( )
client . moveRight ( )
client . moveUp ( )
client . stopMove ( )
Fermer la session
client . closeCamSession ( )
Vous pouvez écouter les événements suivants :
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)
Cette implémentation n'est pas basée sur des spécifications officielles mais uniquement sur l'ingénierie inverse du protocole. Je ne peux pas garantir que cela fonctionnera sur tous les appareils.
MIT. Copyright (c) Fabrizio Bertone