Bonjour flc85
flc85 a écrit:Le but est d'obtenir les infos d'un optimiseur solaire qui génère un fichier xml à l'adresse suivante 192.168.1.247/status.xml les infos qui m'intéresse le plus sont les 5 premières valeurs de inans.
1-puissance consommée
2-puissance produite
3-% routage 1
4-% routage 2
5-Tension réseau
J'avoue être perdu avec toutes les infos que tu me donnes
Pas de problème
Tu sauves le script joint plus bas sur ton disque : solaire.php (par exemple)
Tu crée un capteur http "configuration" "Ajouter ou supprimer un périphérique" "Ajouter un autre type de périphérique" "HTTP Capteur" (réseau) "Créer"
Tu complètes comme sur l'image jointe (n'oublie pas la pièce).
- Solaire.png (34.43 Kio) Consulté 13533 fois
Ensuite tu cliques sur "sauver puis continuer à éditer".
Tu cliques sur "script", puis tout en bas sur "parcourir" et tu sélectionne solaire.php puis "ouvrir" et enfin "envoyer".
Si on te dit de te connecter sur le site de secours, tu acceptes et tu recommences l'opération depuis le page script.
Tu remets le lien dans URL de la Requête.
Ensuite tu cliques sur "sauver puis continuer à éditer" et tu cliques sur "tester".
Dans la fenêtre de test, tu cliques encore sur "tester" et tu vérifies que ça fonctionne.
Ensuite, tu reviens sur la fenêtre de ton périphérique et tu cliques sur "dupliquer", tu changes le nom, les unités éventuellement et le XPATH tu peux aussi lier le nouveau périphérique au premier ("Paramètres expert" "rattacher à")
et tu refais la même chose pour tous tes périphs.
Normalement, tout doit marcher
- Code : Tout sélectionner
<?php
// optimisateur de production solaire
// V1.0 : opa95 2023-02-03
//Récupération des valeurs par //champ/@vi
$url = getArg('url');
$url = $url.'/sensors.xml';
$response = httpQuery($url, 'GET', '','', $header);
/*
$response = '<xml>
<rtcc>15:58:45 VE</rtcc>
<paramSys>
15:58:45;03/02/2023;On;01:00;0,0;MS_PV2_2;5.0.1;0000220;102e;102c;00:00;00:00
</paramSys>
<inAns>
0,1;-565,3;25; 0;227,1;0,0;0,0;0,0; 0; 0; 0; 0; 0; 0; 0; 0;
</inAns>
<survMm>0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;</survMm>
<cmdPos>0;0;0;0;0;0;0;0;</cmdPos>
<outStat>6;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;</outStat>
<cptVals>10bee;ffffffec;ffffa2f3;ff43f90a;0;0;0;0;</cptVals>
<chOutVal>0;0;0;ff;:0,0;0,0;0,0;0,0;</chOutVal>
</xml>';
*/
$response = xpath($response,"concat('rtcc=',//rtcc,'@paramSys=',//paramSys,'@inAns=',//inAns,'@survMm=',//survMm,'@cmdPos=',//cmdPos,'@outStat=',//outStat,'@cptVals=',//cptVals,'@chOutVal=',//chOutVal)");
$response = trim(str_replace(';@','@',$response));
$response = str_replace(',','.',$response);
$arr_response = explode('@',$response);
foreach ($arr_response as $field) {
list($key,$values) = explode('=',$field);
$arrValue = array();
$arr_values = explode(';',$values);
foreach ($arr_values as $value){
if ($value != '') $result[$key][] = trim($value);
}
}
@sdk_header('text/xml');
$xml = '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL;
$xml .= ' <root>'.PHP_EOL;
$key = 'inAns';
$xml .= ' <current>'.PHP_EOL;
$xml .= ' <conso>'.$result[$key][0].'</conso> ';
$xml .= '<production>'.$result[$key][1].'</production> ';
$xml .= '<routage_1>'.$result[$key][2].'</routage_1> ';
$xml .= '<routage_2>'.$result[$key][3].'</routage_2> ';
$xml .= '<tension>'.$result[$key][4].'</tension> ';
$xml .= PHP_EOL.' </current>'.PHP_EOL;
foreach ($result as $key => $value){
$xml .= ' <'.$key.' ';
foreach ($result[$key] as $key1 => $value1){
$xml .= 'v'.$key1.'="'.$value1.'" ';
}
$xml .= '/>'.PHP_EOL;
}
$xml .= ' </root>'.PHP_EOL;
echo $xml;
?>
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)