<?php
// --- Configuration BoPi ---
// L'adresse IP de votre appareil BoPi doit être passée en argument via l'URL eedomus (ex: &bopi_ip=192.168.1.100)
$bopi_ip = getArg('bopi_ip');
$api_url = 'http://'.$bopi_ip.':80'; // L'URL de base de l'API locale BoPi, généralement sur le port 80
// Durée de mise en cache des données en minutes pour éviter de surcharger l'API BoPi
$CACHE_DURATION = 45; // minutes
// --- Logique de mise en cache ---
// Vérifie si des données XML sont déjà en cache et sont encore valides
$last_xml_success = loadVariable('last_xml_success_bopi_'.$bopi_ip);
if ((time() - $last_xml_success) / 60 < $CACHE_DURATION)
{
// Si les données sont en cache, les renvoie immédiatement avec un statut de cache positif
sdk_header('text/xml');
$cached_xml = loadVariable('cached_xml_bopi_'.$bopi_ip);
// Met à jour le statut du cache dans le XML pour indiquer qu'il s'agit de données en cache
$cached_xml = str_replace('<Cachestatus>0</Cachestatus>', '<Cachestatus>1</Cachestatus>', $cached_xml);
echo $cached_xml;
die(); // Arrête l'exécution du script
}
// --- Appel de l'API BoPi (aucune authentification nécessaire, comme indiqué) ---
// Point de terminaison pour récupérer toutes les données des capteurs (nous utilisons v2 si disponible, sinon /allsensors)
$url = $api_url.'/allsensorsv2';
$response = httpQuery($url, "GET"); // Requête GET sans données POST ni en-têtes d'authentification
$ar_response = sdk_json_decode($response);
// --- Traitement de la réponse et gestion des erreurs ---
if ($ar_response == null || !is_array($ar_response) || count($ar_response) == 0)
{
// Si la réponse est vide ou invalide, renvoie une erreur
die("## ERROR : La réponse de l'API BoPi est vide ou invalide : [".$response."]");
}
else
{
// Les données de l'API BoPi sont généralement un tableau d'objets, comme:
// [{"type": "Temperature", "value": 25.5}, {"type": "pH", "value": 7.2}, ...]
// La fonction jsonToXML de l'SDK Eedomus va convertir ceci en XML pour Eedomus.
// Convertit la réponse JSON de BoPi en format XML
$xml_result = jsonToXML($response);
// Ajoute un statut de cache au XML, indiquant que ce sont de nouvelles données (0)
$xml_result = str_replace("<root>", "<root><Cachestatus>0</Cachestatus>", $xml_result);
// Sauvegarde la date du succès de la dernière récupération XML et les données XML en cache
saveVariable('last_xml_success_bopi_'.$bopi_ip, time());
saveVariable('cached_xml_bopi_'.$bopi_ip, $xml_result);
// Définit le type de contenu de la réponse comme XML
sdk_header('text/xml');
// Affiche le XML résultant
echo $xml_result;
}
?>
BoPi a écrit:Bonsoir à tous,
Je suis le créateur de BoPi mais comme je suppose que ce forum n'accepte pas la pub, je ne vais pas essayer de vous le vendre. Je l'ai à la base crée pour moi parce que les solutions dispo sur le marché ne me convenait pas soit en termes de fonctionnalités ou de prix. Puis j'ai passé 2 ans à en faire un produit commercialisable et adapté à plus de piscines.
.........
Pajemafa a écrit:Bonjour,
je n'ai pas de pac , donc je vais peut etre dire une conn...rie.
as tu un thermostat sur ta PAC , si oui un contact en série sur les fils du thermostat commandé par eedomus et pbs réglé
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)