Intégration Etat équipement dans un Script PHP

Bonjour,

J’essaye d’integrer à mon script PHP l’etat d’un équipement.
C’est pour pouvoir modifier facilement la question envoyé à ChatGpt.
Comment remplacer le texte « comment vas tu aujourd’hui » par l’etat de l’équipement #13594# par exemple?

// Message à envoyer à ChatGPT
$prompt = "Comment vas tu aujourd'hui ?";

Merci pour votre aide, je suis novice en code PHP.

Bonjour,

C’est pas du PHP, c’est du « jeedom » et il y a des exemples concrets dans la documentation du plugin

Bonjour

$prompt=cmd::byString('#[Maison][Equipement][info]#');

si je ne dis pas de bêtise

Bonjour,

J’avais regardé mais je n’est pas réussi, voila pourquoi je demande de l’aide

Il est où ce script?
et comment est-il appelé?

il faut donner un peu plus de contexte.
oui j’ai vu l’autre post où tu parles de ce bout de code mais il pourrait être dans un bloc code ou directement dans une commande script ou dans un fichier appelé par la commande script etc

Merci beaucoup pour ton aide mais cela ne fonctionne pas. (La ligne 6 est celle que j’ai modifier)

PS: Il est dans un fichier appelé par une commande script.

Erreur exécution de la commande [Maison][ChatGPT Script][Interroger] : Erreur sur sudo chmod +x /var/www/html/plugins/script/data/ChatGPT.php 2>/dev/null;php /var/www/html/plugins/script/data/ChatGPT.php 2>&1 valeur retournée : 255. Détails : PHP Fatal error: Uncaught Error: Class 'cmd' not found in /var/www/html/plugins/script/data/ChatGPT.php:6 Stack trace: #0 {main} thrown in /var/www/html/plugins/script/data/ChatGPT.php on line 6

Ca fonctionnerait dans un bloc code


si dans un fichier appelé par une commande script alors dans le fichier il faut utiliser des paramètres, voir le paragraphe SCRIPT et « les paramètres » en dessous
et donc la commande script doit être du type « message » et en appelant le script il faudra utiliser le tag #message#

j’ai pas reussi, comme ce ci?
PS: j’ai créer une info message pour vérifier que la question est bien prise en compte

// Message à envoyer à ChatGPT
$prompt = '#message#';

dans la config de la commande => ok c’est #message# qu’il faut passer en paramètre

dans le script => nok

c’est vraiment texto dans la doc dans le paragraphe déjà donné, je vais pas tout recopier ici quand même:

voir le lien vers la doc php aussi

y a même un exemple de code pour récupérer la valeur du paramètre

c’est vraiment texto dans la doc dans le paragraphe déjà donné, je vais pas tout recopier ici quand même:

Ben je suis définitivement con. merci quand même

ce qui est vraiment con c’est pas vous mais c’est le fait de ne pas montrer ou expliquer ce que vous avez changé ni sur quoi vous bloquez.

pcq moi à part répéter ce qui est écrit déjà, je ne sais pas quoi expliquer d’autres puisque vous ne dites pas ce qui bloque; c’est bien le sens de ma phrase: « je vais pas tout recopier ici quand même »

avez-vous lu l’information donnée sur le site de doc php? (le lien donné dans la doc ci-dessus)
ce qu’il faut y est écrit avec exemple. voila pourquoi ca ne sert à rien de répéter la même chose

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";
}

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.