Besoin d'un coup de pousse script node JS

Fermé
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020 - 23 avril 2019 à 23:13
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 24 avril 2019 à 09:31
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

1 réponse

none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
24 avril 2019 à 09:11
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
24 avril 2019 à 09:31
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