XPATH avec fichier XML

Capteurs et actionneurs HTTP

XPATH avec fichier XML

Messagepar DomotiFred » 25 Sep 2013 18:02

Bonjour,

Je viens de faire installer une pompe à chaleur.
Je peux avoir accès à la centrale de cette pompe par IP.
Cette centrale est capable de générer un fichier XML avec les données que je souhaite récupérer en les envoyant sur un serveur FTP par exemple. C'est donc maintenant chose faite et je récupère bien le fichier suivant :

<?xml version="1.0" encoding="UTF-8"?>
<PCOWEB>
<SYSTEM>
<HOSTNAME>pCOWeb1EDB15</HOSTNAME>
<DATE>20130925184100</DATE>
<IP_ADDRESS>192.168.1.45</IP_ADDRESS>
<MAC_ADDRESS>00:0a:5c:■■:■■:■■</MAC_ADDRESS>
<UPTIME>0d1h22m</UPTIME>
<SYS_VERSION>B1.2.4</SYS_VERSION>
<APP_VERSION>A1.5.0</APP_VERSION>
<SEPARATOR_CHAR>.</SEPARATOR_CHAR>
</SYSTEM>
<PCO>
<PCONAME>Releves PAC DIMPLEX - Domotifred 25-09-2013 V 1.1</PCONAME>
<PCOID>1</PCOID>
<DIGITAL>
<VARIABLE>
<INDEX>41</INDEX>
<VALUE>0</VALUE>
</VARIABLE>
<VARIABLE>
<INDEX>42</INDEX>
<VALUE>0</VALUE>
</VARIABLE>
<VARIABLE>
<INDEX>43</INDEX>
<VALUE>0</VALUE>
</VARIABLE>
<VARIABLE>
<INDEX>44</INDEX>
<VALUE>0</VALUE>
</VARIABLE>
<VARIABLE>
<INDEX>45</INDEX>
<VALUE>0</VALUE>
</VARIABLE>
<VARIABLE>
<INDEX>46</INDEX>
<VALUE>0</VALUE>
</VARIABLE>
<VARIABLE>
<INDEX>49</INDEX>
<VALUE>0</VALUE>
</VARIABLE>
<VARIABLE>
<INDEX>50</INDEX>
<VALUE>0</VALUE>
</VARIABLE>
</DIGITAL>
<INTEGER>
<VARIABLE>
<INDEX>1</INDEX>
<VALUE>1</VALUE>
</VARIABLE>
<VARIABLE>
<INDEX>2</INDEX>
<VALUE>0</VALUE>
</VARIABLE>
</INTEGER>
<ANALOG>
<VARIABLE>
<INDEX>1</INDEX>
<VALUE>20.5</VALUE>
</VARIABLE>
<VARIABLE>
<INDEX>2</INDEX>
<VALUE>20.3</VALUE>
</VARIABLE>
<VARIABLE>
<INDEX>3</INDEX>
<VALUE>47.3</VALUE>
</VARIABLE>
<VARIABLE>
<INDEX>5</INDEX>
<VALUE>39.0</VALUE>
</VARIABLE>
<VARIABLE>
<INDEX>53</INDEX>
<VALUE>15.0</VALUE>
</VARIABLE>
<VARIABLE>
<INDEX>58</INDEX>
<VALUE>10.0</VALUE>
</VARIABLE>
</ANALOG>
</PCO>
</PCOWEB>

Je peux donc créer des capteurs HTTP avec la box eedomus.
J'y arrive par exemple en voulant afficher le temps depuis lequel la centrale est en route en tapant l'URL suivante :
http://192.168.1.48/infospacdimplex.xml

et en tapant le chemin XPath suivant :
/PCOWEB/SYSTEM/UPTIME

Jusque là, pas de problème.
Le problème commence quand je veux trouver la bonne syntaxe pour faire afficher la température extérieure (20,5°C) qui correspond à la ligne :
<ANALOG>
<VARIABLE>
<INDEX>1</INDEX>
<VALUE>20.5</VALUE>
</VARIABLE>

Je suis incapable de trouver la syntaxe qui va bien pour ce chemin XPath, car j'ai plusieurs "VARIABLE" identiques, malgré le fait que j'ai des index différents...
Quelqu'un aurait t'il la solution miracle ?

Merci d'avance.
3 Eedomus+ 96 Zwave 6 EnOcean 3 Xee 14 cam IP 1 Connexoon 8 SONOS 8 Google Home 7 ChromeCast 1 Synology 1513+ 1 Smartcoffee 1 robot tondeuse 1 Lametric Time 1 Nokia Cardio SARAH Infra LAN/WIFI en full Ubiquiti Serrure NUKI V1 et V2
DomotiFred
 
Messages : 1279
Inscription : 15 Mars 2013
Localisation : 78

Re: XPATH avec fichier XML

Messagepar DomotiFred » 25 Sep 2013 18:08

Je me réponds :-)

La syntaxe est la suivante :
/PCOWEB/PCO/ANALOG/VARIABLE[INDEX=1]/VALUE
3 Eedomus+ 96 Zwave 6 EnOcean 3 Xee 14 cam IP 1 Connexoon 8 SONOS 8 Google Home 7 ChromeCast 1 Synology 1513+ 1 Smartcoffee 1 robot tondeuse 1 Lametric Time 1 Nokia Cardio SARAH Infra LAN/WIFI en full Ubiquiti Serrure NUKI V1 et V2
DomotiFred
 
Messages : 1279
Inscription : 15 Mars 2013
Localisation : 78

Re: XPATH avec fichier XML

Messagepar DomotiFred » 01 Oct 2013 13:12

Bonjour,

J'ai pratiquement terminé, mais la, je sèche grave.
Je voudrais extraire et transformer les infos en caractères gras dans le fichier XML ci-dessous :
<PCOWEB>
<SYSTEM>
<HOSTNAME>pCOWeb1EDB15</HOSTNAME>
<DATE>20130925184100</DATE>
</SYSTEM>
</PCOWEB>
en une date, heure et minute compréhensibles avec une requête Xpath.
La requête qui m'extrait la chaîne complète est la suivante : /PCOWEB/SYSTEM/DATE
et j'obtiens comme résultat 20130925184100
mais je souhaiterais pouvoir connaître comment écrire ma requête Xpath pour afficher comme résultat : 2013 09 25 - 18 41 00 ou mieux 2013/09/25 - 18H41M00 ou encore encore mieux : 25/09/2013 - 18H41

Merci d'avance à celui qui pourra m'aiguiller :-)
3 Eedomus+ 96 Zwave 6 EnOcean 3 Xee 14 cam IP 1 Connexoon 8 SONOS 8 Google Home 7 ChromeCast 1 Synology 1513+ 1 Smartcoffee 1 robot tondeuse 1 Lametric Time 1 Nokia Cardio SARAH Infra LAN/WIFI en full Ubiquiti Serrure NUKI V1 et V2
DomotiFred
 
Messages : 1279
Inscription : 15 Mars 2013
Localisation : 78

Re: XPATH avec fichier XML

Messagepar DomotiFred » 02 Oct 2013 17:38

Bonsoir,

Personne pour répondre à mon problème de syntaxe Xpath ?
3 Eedomus+ 96 Zwave 6 EnOcean 3 Xee 14 cam IP 1 Connexoon 8 SONOS 8 Google Home 7 ChromeCast 1 Synology 1513+ 1 Smartcoffee 1 robot tondeuse 1 Lametric Time 1 Nokia Cardio SARAH Infra LAN/WIFI en full Ubiquiti Serrure NUKI V1 et V2
DomotiFred
 
Messages : 1279
Inscription : 15 Mars 2013
Localisation : 78

Re: XPATH avec fichier XML

Messagepar Madoma73 » 04 Oct 2013 22:44

Salut,
désolé domotifred, mais de mon côté, je ne me suis encore jamais penché sur la syntaxe XPATH.


Pierre
Pierre
Madoma73
 
Messages : 1439
Inscription : 16 Sep 2012
Localisation : 38

Re: XPATH avec fichier XML

Messagepar DomotiFred » 05 Oct 2013 17:49

Bonsoir Pierre,

Dommage :-(
En attendant, j'ai trouvé un lien qui permet de générer le chemin Xpath en plaçant la souris sur la valeur qu'on souhaite extraire du fichier XML.
http://www.xmltoolbox.com/xpath_generator.html

C'est très sympa, malheureusement ça ne fait pas de choses complexes.
3 Eedomus+ 96 Zwave 6 EnOcean 3 Xee 14 cam IP 1 Connexoon 8 SONOS 8 Google Home 7 ChromeCast 1 Synology 1513+ 1 Smartcoffee 1 robot tondeuse 1 Lametric Time 1 Nokia Cardio SARAH Infra LAN/WIFI en full Ubiquiti Serrure NUKI V1 et V2
DomotiFred
 
Messages : 1279
Inscription : 15 Mars 2013
Localisation : 78

Re: XPATH avec fichier XML

Messagepar hugosc » 05 Oct 2013 19:43

Bonjour,

Plusieurs fonctions XPATH sont disponibles, et décrites sur http://doc.eedomus.com/index.php/Capteurs_HTTP

Suggestion de syntaxe pour DomotiFred :
Code : Tout sélectionner
concat(substring(/PCOWEB/SYSTEM/DATE,7,2),'/',substring(/PCOWEB/SYSTEM/DATE,5,2),'/',substring(/PCOWEB/SYSTEM/DATE,1,4),' - ',substring(/PCOWEB/SYSTEM/DATE,9,2),'H',substring(/PCOWEB/SYSTEM/DATE,11,2))
hugosc
 
Messages : 15
Inscription : 19 Sep 2012

Re: XPATH avec fichier XML

Messagepar DomotiFred » 06 Oct 2013 08:54

Bonjour Hugosc,

C'est génial, ça marche impec :-)
J'avais bien essayé de comprendre la syntaxe décrite, entre autre, dans le lien que tu signales, mais sans exemple précis, et débutant totalement dans ce domaine, je me perdais totalement...
Encore merci. Je vais pouvoir m'essayer à d'autres formules magiques maintenant ;-)
3 Eedomus+ 96 Zwave 6 EnOcean 3 Xee 14 cam IP 1 Connexoon 8 SONOS 8 Google Home 7 ChromeCast 1 Synology 1513+ 1 Smartcoffee 1 robot tondeuse 1 Lametric Time 1 Nokia Cardio SARAH Infra LAN/WIFI en full Ubiquiti Serrure NUKI V1 et V2
DomotiFred
 
Messages : 1279
Inscription : 15 Mars 2013
Localisation : 78


Retour vers Requêtes HTTP

Qui est en ligne ?

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