car configOnvif() est appelé par applyModuleConfiguration() qui est lui dans le postSave() donc après sauvegarde, il faut donc refaire un $this->save();.
Edit :
J’ai ajouté le $this->save(); dans applyModuleConfiguration()
Pas de raison que ça puisse pas marcher.
On va corriger et adapter ça pour le proposer ensuite.
J’ai corrigé ce point, en ajoutant un tableau de donnée même quand il n’y a qu’un résultat.
protected function _getActiveSources($videoSources, $profiles) {
// create an array of $videoSources if only one videoSource
$videoSources = ($videoSources === [] || (array_keys($videoSources) === range(0, count($videoSources) - 1)))?$videoSources:array($videoSources);
$sources = array();
// camera may have many sources
for ($i = 0; $i < count($videoSources); $i++) {
// NVT is a camera
if (isset($videoSources[$i]['@attributes'])) {
$sources[$i]['sourcetoken'] = $videoSources[$i]['@attributes']['token'];
$this->_getProfileData($sources, $i, $profiles);
} else {
// NVT is an encoder
if (strtolower($videoSources[$i]['@attributes']['SignalActive']) == 'true') {
$sources[$i]['sourcetoken'] = $videoSources[$i]['@attributes']['token'];
$this->_getProfileData($sources, $i, $profiles);
}
}
}
return $sources;
}
Testé sur mes 2 caméras onvif en simultant 1 et plusieurs profiles, ça renvoie bien l’url.
La découverte n’affichait que 1 seul ligne de résultat et lançait la création de cémara par le port 80, alors que certaines caméras répondent au port 8000 ou autre.
J’ai donc modifié 2 méthodes pour permettre l’ajout depuis la page découverte :
je rentre tous juste de vacances. Je check ça demain.
Possible d’avoir un accès github ? Car j’ai fait pas mal de modif et je ne suis plus ce que j’ai modifié, histoire de partir de 0.
Je regarde ce soir pour reproduire et corriger. Et on pourra proposer les modifs, je pense.
Bloc code scénario, pour rajouter le logicialId :
$cmd = cmd::byId(123456789); // ID de ta commande créée manuellement sans logicalId
$cmd->setLogicalId('ptzleft')->save(); // tu lui mets le logicialId que tu veux
Mais il fout le bordel si on veut ajouter des nouvelles commandes (double save à la suite) et donc crée puis efface les nouvelles commandes.
D’ailleurs return; dans la méthode applyModuleConfiguration empêche de créer les commandes via devicesParameters.
Le save() est fait juste après dans import().
J’ai poussé la modification.
Ca corrige du coup la non création des commandes, @llaumgui
Alors, je confirme que ça marche ! Les commandes sont bien créées, et surtout, les commandes fonctionnent !
Une remarque, le stop n’est pas automatique, alors qu’avant, j’avais un pas. Il faudrait pouvoir avoir le même comportement sinon c’est difficilement utilisable.
Yes, mais je suis obligé de passer par un scénario pour ça… De plus, ce n’est pas précis. Grosso-modo, tu lances une commande et rapidement une autre en espérant qu’elle soit exécutée dans les temps.
Non… Le stop marche bien, mais pas le stop via une poste exécution… Je ne comprends pas pourquoi par contre.
Pour moi : tu appelles ptz_ContinuousMove avec des pantilt entiers (donc 100%). Il faudrait y mettre des décimaux.
Alors 2 solutions de mon point de vue :
Soit on modifie l’interface de configuration (mais c’est lourd, surtout pour une config, et @Loic doit valider comme tu le dis,
soit on rajoute 2 commandes (pour pan_x et pan_y) ? Là, on serait propre au niveau de l’implémentation du protocole PTZ Soap.