C’est pour le moment une ébauche, j’aimerai au final que les commandes soient créées automatiquement.
juste après la ligne 1130 ajoute ceci :
////////////////////// preset test ////////////////////
try {
switch ($request) {
case 'preset':
$presetToken = $this->getConfiguration('stopCmdUrl','');
if ($presetToken != '' ) {
log::add('camera', 'debug', 'ptz_GotoPreset() -> ' . $presetToken);
$onvif->ptz_GotoPreset($profileToken, $presetToken, $speedX, $speedY, $speedZ);
return true;
}
}
} catch (Exception $e) {
log::add('camera', 'debug', 'onvif error reason for ' . $request . ' : ' . json_encode($onvif->getLastResponse()));
}
//////////////////////////////////////////////////
ensuite dans ton équipement ajoute une commande action/défaut puis dans url de la commande met preset et dans la commande URL stop le numero de preset voulu :

Si tu connais pas les numéros de preset, tu peux tester ceci dans un bloc code :
require_once __DIR__ . '/../../plugins/camera/3rdparty/ponvif.php';
$eqLogics = eqLogic::byType('camera', true);
foreach ($eqLogics as $eqLogic) {
if ($eqLogic->getConfiguration('device') != 'onvif') continue;
$profileToken = $eqLogic->getConfiguration('cameraStreamProfileToken');
try {
$scenario->setLog(' ------------- ' . $eqLogic->getHumanName() . ' ------------- ');
$onvif = new Ponvif();
$onvif->setUsername($eqLogic->getConfiguration('username'));
$onvif->setPassword($eqLogic->getConfiguration('password'));
$onvif->setIPAddress($eqLogic->getConfiguration('ip') . ':' . $eqLogic->getConfiguration('onvif_port', 80));
$onvif->initialize();
$presets = $onvif->ptz_GetPresets($profileToken);
foreach ($presets as $preset) {
$scenario->setLog(json_encode($preset));
}
//$scenario->setLog(json_encode($onvif->ptz_GetPresets($profileToken)));
} catch (Exception $e) {
$scenario->setLog($eqLogic->getHumanName() . ' - [ONVIF] : ' . $e->getMessage());
}
}
Le résultat de ce bloc code m’intéresse pour comparer les différentes valeurs que peuvent envoyer différente cam, si tu peux partager le résultat stp.
exemple pour ma cam Reolink Trackmix :
------------------------------------
[2026-08-07 17:59:14][SCENARIO] -- Début : . Tags : {"#trigger#":"user","#trigger_name#":"","#trigger_id#":"","#trigger_message#":"Scénario lancé manuellement","#trigger_value#":"admin"}
[2026-08-07 17:59:14][SCENARIO] - Exécution du sous-élément de type [action] : code
[2026-08-07 17:59:14][SCENARIO] Exécution d'un bloc code
[2026-08-07 17:59:14][SCENARIO] ------------- [Luna][trackmix] -------------
[2026-08-07 17:59:15][SCENARIO] {"Token":"000","Name":"PointGarde","PTZPosition":null}
[2026-08-07 17:59:15][SCENARIO] {"Token":"001","Name":"camion arr","PTZPosition":null}
[2026-08-07 17:59:15][SCENARIO] {"Token":"002","Name":"Maison int","PTZPosition":null}
[2026-08-07 17:59:15][SCENARIO] {"Token":"004","Name":"provisoire","PTZPosition":null}
[2026-08-07 17:59:15][SCENARIO] Fin correcte du scénario
Les numéros de preset correspondent au Token.