je me réponds à moi même …
En attendant un retour du dev j’ai fait la modification suivante dans le plugin … fichier httpRemoteEvent.class.php
Remplacer la fonction event() par
public static function event() {
foreach (eqLogic::byType('httpRemoteEvent') as $eqLogic) {
if($_REQUEST['eqId'] == $eqLogic->getId()){
$cmdNotUpdate=true;
foreach ($eqLogic->getCmd() as $cmd) {
$paramName = $cmd->getConfiguration('paramName') ? $cmd->getConfiguration('paramName') : 'param'.$cmd->getId();
if (array_key_exists($paramName, $_REQUEST)) {
log::add('httpRemoteEvent', 'debug', 'Param : ' . $paramName . ' exist');
$content = $eqLogic->getCmd(null, 'content_'.$paramName);
if (is_object($content)) {
$contentTxt = file_get_contents('php://input');
if($contentTxt != null){
log::add('httpRemoteEvent', 'debug', 'Set payload : ' . $contentTxt . ' for cmd ' . $content->getName() . ' and equipment id : ' . $_REQUEST['eqId']);
$content->setCollectDate('');
$content->event($contentTxt);
$cmdNotUpdate=false;
} else {
$value = $_REQUEST[$paramName];
log::add('httpRemoteEvent', 'debug', 'Param : ' .$paramName);
log::add('httpRemoteEvent', 'debug', 'Value : ' .$value);
if(strlen($value)){
log::add('httpRemoteEvent', 'debug', 'Set ' .$value . ' for cmd ' . $content->getName(). ' and equipment id : ' . $_REQUEST['eqId']);
$content->setCollectDate('');
$content->event($value);
$cmdNotUpdate=false;
}
}
}
}
}
if ($cmdNotUpdate) {
$contentTxt = file_get_contents('php://input');
if($contentTxt != null){
$content = $eqLogic->getCmd(null, 'content');
if (is_object($content)) {
log::add('httpRemoteEvent', 'debug', 'No specific cmd find but cmd content find -> set payload');
$content->setCollectDate('');
$content->event($contentTxt);
}
}
}
}
}
echo 'OK';
}
Ajout de la fonction preSave() de la class httpRemoteEventCmd (tjs le même fichier)
Permet d’affecter le logical id avec la valeur content_commandeName … permettra à la fonction event de savoir à qui affecter le payload lors de la réception de l’event
public function preSave() {
if (is_object($this)) {
if (strlen($this->getLogicalId()) < 1) {
//log::add('httpRemoteEvent', 'debug', '****cmd postSave **** - : ' . $this->getHumanName() . ' set eqlogic');
$this->setLogicalId('content_'. $this->getName());
}
}
}
Avec tout cela maintenant on peut executer une requête http depuis n’importe quel serveur et le payload pourra être interprété pour chacune des commandes de l’équipement…
Exemple curl linux : cette commande valorisera la commande radarrde l’équipement 979
curl -i -X PUT -d "{\"geoloc\": {\"lat\": \"38.1899\", \"lon\": \"-76.5087\"}, \"longitude\": \"-76.5087\" }" 'https://dnsJeedom/core/api/jeeApi.php?apikey=UneClefApiJeedom&type=httpRemoteEvent&eqId=979&radarr'
A partir de là on peut faire ce qu’on veut …
Par exemple pour ceux qui ont une seedbox et utilisent des outils comme sonarr ou radarr … il est possible de paramétrer l’envoi d’un webhook lors d’un évènement sur un fichier (download start, stop, finish, etc …) … on obtient un résultat du style …
A voir dans le temps si pas de bug dans ce que j’ai fait
@chris94440