Question Xpath

Échangez ici vos astuces sur la gestion des règles eedomus

Question Xpath

Messagepar soundfab » 31 Mars 2021 13:00

bonjour voici mon XML :

<?xml version="1.0" encoding="ISO-8859-1"?><root><status>docked</status><raw>{"version":1,"reqId":"6064637066b5d","result":"ok","data": {},"error":null,"alert":null,"state":1,"action":0,"cleaning": {"category":2,"mode":2,"modifier":1,"navigationMode":1,"spotWidth":0,"spotHeight":0},"details": {"isCharging":false,"isDocked":true,"isScheduleEnabled":false,"dockHasBeenSeen":false,"charge":100},"availableCommands": {"start":true,"stop":false,"pause":false,"resume":false,"goToBase":false},"availableServices": {"findMe":"basic-1","generalInfo":"basic-1","houseCleaning":"basic-4","IECTest":"advanced-1","logCopy":"basic-1","manualCleaning":"basic-1","maps":"basic-2","preferences":"basic-2","schedule":"basic-2","softwareUpdate":"basic-1","spotCleaning":"basic-3","wifi":"basic-1"},"meta": {"modelName":"BotVacD7Connected","firmware":"4.5.3-189"}}</raw></root>

Je voudrais juste récupérer dans Xpath la valeur du paramètre error , cela est-il possible ?
Merci à tous pour votre aide .
Fab
soundfab
 
Messages : 127
Inscription : 27 Nov 2017

Re: Question Xpath

Messagepar opa95 » 31 Mars 2021 13:50

Avec un script, oui sans problème
Il faut récupérer le contenu du champ <raw> qui est en json et le traiter comme tel.
Directement je ne sais pas comment : peut-être en créant un capteur virtuel qui va lire le contenu de raw : xpath ->//raw
puis en relisant la valeur de ce capteur et en disant que c'est du json
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)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Question Xpath

Messagepar merguez07 » 31 Mars 2021 14:05

bonjour,
oui...avec un xpath à rallonge

substring(substring-after(substring(substring-before(/root/raw,'alert'),0,string-length(substring-before(/root/raw,'alert'))-2),'error'),3)
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: Question Xpath

Messagepar opa95 » 31 Mars 2021 14:14

C'est quand même plus sympa quand l'appli renvoie un vrai XML ou un vrai json
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)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Question Xpath

Messagepar KikiFUNstyle » 31 Mars 2021 16:22

merguez07 a écrit:bonjour,
oui...avec un xpath à rallonge

substring(substring-after(substring(substring-before(/root/raw,'alert'),0,string-length(substring-before(/root/raw,'alert'))-2),'error'),3)

:crazy: :clap:
ZWave / RFXCom / broadlink RM /Google Mini / Yeelight / Xiaomi Vacuum V1 / Shelly <3 / Node-RED <3 <3
[Store] Shelly
KikiFUNstyle
 
Messages : 908
Inscription : 24 Avr 2014
Localisation : Toulouse

Re: Question Xpath

Messagepar opa95 » 31 Mars 2021 16:54

merguez07 a écrit:bonjour,
oui...avec un xpath à rallonge

substring(substring-after(substring(substring-before(/root/raw,'alert'),0,string-length(substring-before(/root/raw,'alert'))-2),'error'),3)

Il me semble qu'il faut plutôt mettre
substring(substring-after(substring(substring-before(/root/raw,'alert'),0,string-length(substring-before(/root/raw,'alert'))-1),'error'),3)
avec -1 au lieu de -2, sinon tu obtiens "nul" au lieu de "null"
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)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Question Xpath

Messagepar soundfab » 31 Mars 2021 17:26

trop de talents les gars !! merci !!
j'aurai préférer aussi un vrai XML mais l'appli pour aspirateur robot Neato ne le fait pas . mais c 'est deja cool d'en avoir developé une . On fait avec :)

Encore Merci !
soundfab
 
Messages : 127
Inscription : 27 Nov 2017

Re: Question Xpath

Messagepar opa95 » 31 Mars 2021 17:36

soundfab a écrit:trop de talents les gars !! merci !!
j'aurai préférer aussi un vrai XML mais l'appli pour aspirateur robot Neato ne le fait pas . mais c 'est deja cool d'en avoir developé une . On fait avec :)

Encore Merci !

Sinon, on peut modifier le php correspondant à l'aspirateur, mais je ne peux pas y accéder car je n'ai pas de compte chez neato
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)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Question Xpath

Messagepar merguez07 » 31 Mars 2021 18:59

opa95 a écrit:Il me semble qu'il faut plutôt mettre
substring(substring-after(substring(substring-before(/root/raw,'alert'),0,string-length(substring-before(/root/raw,'alert'))-1),'error'),3)
avec -1 au lieu de -2, sinon tu obtiens "nul" au lieu de "null"


effectivement, petite erreur que tu as su corriger ;)
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: Question Xpath

Messagepar opa95 » 02 Avr 2021 09:13

Bonjour
soundfab a écrit:trop de talents les gars !! merci !!
j'aurai préférer aussi un vrai XML mais l'appli pour aspirateur robot Neato ne le fait pas . mais c 'est deja cool d'en avoir developé une . On fait avec :)

Encore Merci !

Sinon tu peux modifier le script "neato.php
en remplaçant les lignes 194 à 199 par

echo ('<?xml version="1.0" encoding="ISO-8859-1"?>');
echo ('<root>');
echo ('<status>'.$'status'.'</status>');
echo ('<raw>'.$robotState['status'].'</raw>');
$xml=(jsonToXML($json));
$xml=substr($xml,strpos($xml,'<root>')+6);//longueur de <root>=6
echo ($xml);
sur mon pc ça marche sur l'eedomus aussi, mais je n'ai pu tester que le bout de programme ci-dessus car je n'ai pas de code neato.
Tu a accès ensuite à n'importe quelle valeur, par exemple avec dans xpath
//firmware
tu obtiens bien "4.5.3-189"
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)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Question Xpath

Messagepar opa95 » 02 Avr 2021 09:18

envoi trop rapide
echo ('<?xml version="1.0" encoding="ISO-8859-1"?>');
echo ('<root>');
echo ('<status>'.$'status'.'</status>');
$xml=(jsonToXML($json));
$xml=substr($xml,strpos($xml,'<root>')+6);//longueur de <root>=6
echo ($xml);

Je n'ai pas laissé la ligne "raw", mais ça marche aussi si tu la laisses (j'ai testé).
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)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Question Xpath

Messagepar soundfab » 02 Avr 2021 13:57

opa95 a écrit:envoi trop rapide
echo ('<?xml version="1.0" encoding="ISO-8859-1"?>');
echo ('<root>');
echo ('<status>'.$'status'.'</status>');
$xml=(jsonToXML($json));
$xml=substr($xml,strpos($xml,'<root>')+6);//longueur de <root>=6
echo ($xml);

Je n'ai pas laissé la ligne "raw", mais ça marche aussi si tu la laisses (j'ai testé).



Merci pour ton aide !! top !
mais quand je veux sauvegarde , j ai une petite erreur .

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting T_VARIABLE or '$' in neato.php on line 196
soundfab
 
Messages : 127
Inscription : 27 Nov 2017

Re: Question Xpath

Messagepar opa95 » 02 Avr 2021 14:06

Envoie-moi la copie des lignes 194 à 198 une fois que tu as fait l'inclusion pour que je voie bien la ligne de l'erreur (196) et les précédentes.
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)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise


Retour vers Règles et programmations

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 10 invité(s)

cron