Bof, c’est pas si complexe que ça 
Et c’est pas directement du jeedom la pour le coup, c’est un peu de développement.
J’ai demandé à une gentille IA de me pondre un squelette ça ressemblerait à ça :
<?php
// Vérifie que la requête est bien en POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(['error' => 'Méthode non autorisée. Utilisez POST.']);
exit;
}
// Lit le corps de la requête
$input = file_get_contents('php://input');
$data = json_decode($input, true);
// Vérifie que le paramètre DurationSec est présent
if (!isset($data['DurationSec'])) {
http_response_code(400);
echo json_encode(['error' => 'Le paramètre "DurationSec" est requis.']);
exit;
}
// Prépare l'URL cible avec le paramètre GET
$baseUrl = 'https://example.com/api'; // Remplace par ton URL cible
$duration = urlencode($data['DurationSec']);
$targetUrl = $baseUrl . '?DurationSec=' . $duration;
// Effectue la requête GET
$ch = curl_init($targetUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);
$error = curl_error($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// Retourne le résultat
header('Content-Type: application/json');
echo json_encode([
'requested_url' => $targetUrl,
'status' => $httpCode,
'error' => $error ?: null,
'response' => $response ?: null
]);
Avec cette base, le script va récupérer le paramètre DurationSec qu’il reçoit dans un JSON et l’envoyer à une URL que tu peux paramétrer pour pousser ça à un virtuel dans jeedom.
C’est un peu de taff mais pas la mort non plus 
Bon pour blinder un peu la sécurité ça serait bien de vérifier en tout premier la SecretKey et de tout arrêter (die) si elle n’est pas celle que tu attends.
L’avantage avec les IA, c’est qu’il suffit de demander …
<?php
// Clé secrète attendue
$expectedSecret = 'MaSuperCleSecrete123'; // À personnaliser
// Vérifie que la requête est bien en POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(['error' => 'Méthode non autorisée. Utilisez POST.']);
exit;
}
// Lit le corps de la requête
$input = file_get_contents('php://input');
$data = json_decode($input, true);
// Vérifie que SecretKey est présent et correct
if (!isset($data['SecretKey']) || $data['SecretKey'] !== $expectedSecret) {
http_response_code(403);
echo json_encode(['error' => 'Accès refusé. Clé secrète invalide.']);
exit;
}
// Vérifie que DurationSec est présent
if (!isset($data['DurationSec'])) {
http_response_code(400);
echo json_encode(['error' => 'Le paramètre "DurationSec" est requis.']);
exit;
}
// Prépare l'URL cible avec le paramètre GET
$baseUrl = 'https://example.com/api'; // Remplace par ton URL cible
$duration = urlencode($data['DurationSec']);
$targetUrl = $baseUrl . '?DurationSec=' . $duration;
// Effectue la requête GET
$ch = curl_init($targetUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);
$error = curl_error($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// Retourne le résultat
header('Content-Type: application/json');
echo json_encode([
'requested_url' => $targetUrl,
'status' => $httpCode,
'error' => $error ?: null,
'response' => $response ?: null
]);