Je suis passé par un code de scenario et un virtuel.
ci joint le script si cela intéresse quelqu’un:
// Configuration des clés et URLs
$jeedomApiUrl = "http://ip Jeedom/core/api/jeeApi.php";
$jeedomApiKey = "key api jeep";
$openaiApiKey = 'key api openai';
// ID de l'équipement info dans Jeedom Question
$infoCmdId = 13605;
// Récupération de la valeur de l'équipement info
$infoRequestUrl = "$jeedomApiUrl?apikey=$jeedomApiKey&type=cmd&id=$infoCmdId";
$infoValue = file_get_contents($infoRequestUrl);
if ($infoValue === FALSE) {
echo "Erreur lors de la récupération de la valeur de l'équipement info Jeedom.";
exit;
}
// Nettoyage de la valeur récupérée
$prompt = trim($infoValue);
echo "Message récupéré de Jeedom : $prompt\n";
// Envoi de la requête à l'API OpenAI
$openaiUrl = "https://api.openai.com/v1/chat/completions";
$data = [
"model" => "gpt-3.5-turbo",
"messages" => [
["role" => "system", "content" => "Tu es un assistant pour la domotique Jeedom."],
["role" => "system", "content" => "Répondre avec un maximum de 500 caractères."],
["role" => "user", "content" => $prompt]
],
"max_tokens" => 100,
"temperature" => 0.7
];
// Configuration de la requête HTTP pour OpenAI
$options = [
"http" => [
"header" => "Content-Type: application/json\r\n" .
"Authorization: Bearer " . $openaiApiKey . "\r\n",
"method" => "POST",
"content" => json_encode($data)
]
];
$context = stream_context_create($options);
$response = file_get_contents($openaiUrl, false, $context);
if ($response === FALSE) {
echo "Erreur lors de la requête à l'API OpenAI.";
exit;
}
// Traitement de la réponse
$responseData = json_decode($response, true);
if (isset($responseData['choices'][0]['message']['content'])) {
$chatgptResponse = trim($responseData['choices'][0]['message']['content']);
echo "Réponse de ChatGPT : $chatgptResponse\n";
} else {
echo "Erreur : Aucune réponse valide reçue de ChatGPT.";
exit;
}
// Envoi de la réponse à l'équipement Jeedom (ID 13602)
$cmdId = 13602;
$encodedResponse = urlencode($chatgptResponse);
$jeedomRequestUrl = "$jeedomApiUrl?apikey=$jeedomApiKey&type=cmd&id=$cmdId&value=$encodedResponse";
$request_http = new com_http($jeedomRequestUrl);
$request_http->setCURLOPT_HTTPAUTH(CURLAUTH_DIGEST);
$ret = $request_http->exec();
if ($ret === false) {
echo "Erreur lors de l'envoi à Jeedom.\n";
} else {
echo "Réponse envoyée à Jeedom avec succès.\n";
}