Besoin d'un coup de pousse script node JS

none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour tout le monde,

Je viens poster ici ce soir car j'essai de bricoler un petit script node JS afin de piloter une caméra IP...

J'ai donc installé un serveur node.js, et installé le module onvif suivant ce site

https://github.com/futomi/node-onvif#OnvifDevice-ptzMove-method

Pour le moment j'arrive a piloter ma camera avec ce code:

const onvif = require('node-onvif');
var sourceFile = require('./config.js');

// Create an OnvifDevice object
let device = new onvif.OnvifDevice({
  xaddr: sourceFile.xaddr,
  user : sourceFile.user,
  pass : sourceFile.pass
});

// Initialize the OnvifDevice object
device.init().then(() => {
  // Move the camera
  return device.ptzMove({
    'speed': {
      x: 0.0, // Speed of pan (in the range of -1.0 to 1.0)
      y: -1.0, // Speed of tilt (in the range of -1.0 to 1.0)
      z: 0.0  // Speed of zoom (in the range of -1.0 to 1.0)
    },
//   'timeout': 0.3 // seconds
  });
})



.then(() => {
  console.log('Mouvement a gauche ok!');
}).catch((error) => {
  console.error(error);
});



Le souci c'est que la camera ne bouge que d'un "pas" a la fois hors j'aimerai pouvoir lui donner une position...


J'ai donc trouvé ce code (toujours dans la même page a l'onglet continuousMove)

let params = {
  'ProfileToken': '2_def_profile6',
  'Velocity'    : {'x': -1, 'y': 0, 'z': 0},
  'Timeout'     : 1 
};

device.services.ptz.continuousMove(params).then((result) => {
  console.log(JSON.stringify(result['data'], null, '  '));
}).catch((error) => {
  console.error(error);
});



Je pense que cela doit être pour piloter la camera en mouvement continu mais...

De plus je ne vois pas comment l'inclure dans un script suivant l'exemple du premier...

Merci a vous pour votre aide
A voir également:

1 réponse

none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention  
 
Je m'auto répond,

J'ai avancé un peu..

J'ai testé ceci :

const onvif = require('node-onvif');

// Create an OnvifDevice object
let device = new onvif.OnvifDevice({
  xaddr: 'http://192.168.1.19:5000/onvif/device_service',
  user : 'admin',
  pass : '123456'
});

// Initialize the OnvifDevice object
device.init().then((info) => {
  // Show the detailed information of the device.
  console.log(JSON.stringify(info, null, '  '));
}).catch((error) => {
  console.error(error);
});


Et ce la fonctionne bien.

Du coup j'ai testé cela:

const onvif = require('node-onvif');

// Create an OnvifDevice object
let device = new onvif.OnvifDevice({
  xaddr: 'http://192.168.1.19:5000/onvif/device_service',
  user : 'admin',
  pass : '123456'
});

let params = {
  'ProfileToken': '2_def_profile6',
  'Velocity'    : {'x': -1, 'y': 0, 'z': 0},
  'Timeout'     : 1 
};

device.services.ptz.continuousMove(params).then((result) => {
  console.log(JSON.stringify(result['data'], null, '  '));
}).catch((error) => {
  console.error(error);
});


Cela me retourne une erreur, mais je me demande ce qu'est 'ProfileToken'
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Si tu as une erreur... il serait bien de nous la donner.
Concernant le profil token,
Dans la documentation on peut lire

Property Type Required Description
ProfileToken String required a token of the profile


quelques lignes plus bas dans les exemples on trouve
let profile = device.getCurrentProfile();
  let params = {
    'ProfileToken': profile['token'],
    'Speed'       : 1
  };


Sachant que tu peux gérer les différents profils (en créer, en supprimer...)
https://github.com/futomi/node-onvif#createprofileparams-callback-method

.

Après... je ne fais pas de node et ne connais pas ce plugin... je n'ai fait que lire la doc...
mais ça te donne quelques réponses je pense.
0