[Résolu] Capteur HTTP

Discussion sur la box eedomus

[Résolu] Capteur HTTP

Messagepar Onehebergeur » 22 Avr 2022 15:06

Bonjour à tous, auriez vous une solution pour pouvoir créer 2 capteurs HTTP identique mais avec un chemin Xpath différent et récupérer la valeur "power" :

- de la voiture 1 (Id 37959) donc 12.589
- de la voiture 2 (Id 37958) donc 12.52

en sachant que la mise en forme du XML est celle-ci :

<?xml version="1.0" encoding="ISO-8859-1"?>
<root><entry><id>37959</id>
<attributes><priority>0</priority>
<sat>0</sat>
<event>0</event>
<ignition>0</ignition>
<motion>0</motion>
<rssi>4</rssi>
<io200>0</io200>
<io69>2</io69>
<pdop>0</pdop>
<hdop>0</hdop>
<power>12.589</power>
<battery>4.052</battery>
<io68>0</io68>
<operator>20815</operator>
<odometer>393800</odometer>
<distance>0</distance>
<totalDistance>34234355.87</totalDistance>
<hours>23726890</hours>
</attributes>
<deviceId>2</deviceId>
<type>0</type>
<protocol>teltonika</protocol>
<serverTime>2022-04-22T13:32:16.044+00:00</serverTime>
<deviceTime>2022-04-22T13:31:10.000+00:00</deviceTime>
<fixTime>2022-04-22T13:31:10.000+00:00</fixTime>
<outdated>0</outdated>
<valid>0</valid>
<latitude>50.3515849</latitude>
<longitude>3.524095</longitude>
<altitude>0</altitude>
<speed>0</speed>
<course>0</course>
<address>0</address>
<accuracy>0</accuracy>
<network>0</network>
</entry>
<entry><id>37958</id>
<attributes><priority>0</priority>
<sat>13</sat>
<event>0</event>
<ignition>0</ignition>
<motion>0</motion>
<rssi>5</rssi>
<io200>0</io200>
<io69>1</io69>
<pdop>1.3</pdop>
<hdop>0.8</hdop>
<power>12.52</power>
<battery>4.071</battery>
<io68>0</io68>
<operator>20801</operator>
<odometer>86905</odometer>
<distance>0</distance>
<totalDistance>133968.85</totalDistance>
<hours>8205990</hours>
</attributes>
<deviceId>4</deviceId>
<type>0</type>
<protocol>teltonika</protocol>
<serverTime>2022-04-22T13:25:01.029+00:00</serverTime>
<deviceTime>2022-04-22T13:24:17.000+00:00</deviceTime>
<fixTime>2022-04-22T13:24:17.000+00:00</fixTime>
<outdated>0</outdated>
<valid>1</valid>
<latitude>50.3498116</latitude>
<longitude>3.5437</longitude>
<altitude>47</altitude>
<speed>0</speed>
<course>154</course>
<address>1 1 Place Gabriel Péri, Marly, FR</address>
<accuracy>0</accuracy>
<network>0</network>
</entry>
</root>

et 2ieme questions ... Est-il possible de créer un capteur ou autre périphérique qui ira interroger régulièrement latitude et longitude pour voir la position sur une carte + historisation ?

Merci d'avance pour vos retours !
Dernière édition par Onehebergeur le 26 Avr 2023 12:42, édité 3 fois.
Onehebergeur
 
Messages : 82
Inscription : 09 Mai 2014
Localisation : Sebourg

Re: Capteur HTTP

Messagepar JuanMarco » 22 Avr 2022 16:56

Bonjour,

Je pense qu'avec une équation de ce type dans le Xpath,
pour l'un : //entry[id='37959']/attributes/power
et pour l'autre : //entry[id='37958']/attributes/power
tu devrais récupérer la valeur pour chaque capteur HTTP

Même principe pour la latitude et longitude, mais la visualisation de la position sur une carte dans eeDomus ne me semble pas possible. Peut-être que quelqu'un d'autre aura une solution ?

A+
JuanMarco
 
Messages : 61
Inscription : 17 Déc 2018

Re: Capteur HTTP

Messagepar opa95 » 22 Avr 2022 17:59

Bonjour
Tu peux aussi l'écrire comme cela
//entry[id='37959']//power
D'une manière générale, depuis le panneau du plugin, tu cliques sur tester et tu essayes diverses formules dans le XPATH.
Si tu as déjà le XML et que tu dois faire des essais, tu peux recopier le XML dans la grande zone et cliquer sur la case "Utiliser le résultat XML :"
avant de relancer le 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 : 731
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Capteur HTTP

Messagepar Onehebergeur » 23 Avr 2022 10:42

Merci à tous pour votre aide !!!
Cela fonctionne par contre pour la position GPS je ne pense pas que cela sois possible mais auriez vous une "formule Xpath" pour avoir via 1 seul capteur la latitude et longitude ?

Avoir les 2 séries de chiffres sur la même capteur ?

Merci encore à tous et bon WE.
Onehebergeur
 
Messages : 82
Inscription : 09 Mai 2014
Localisation : Sebourg

Re: Capteur HTTP

Messagepar opa95 » 23 Avr 2022 10:58

Onehebergeur a écrit:Merci à tous pour votre aide !!!
Cela fonctionne par contre pour la position GPS je ne pense pas que cela sois possible mais auriez vous une "formule Xpath" pour avoir via 1 seul capteur la latitude et longitude ?

Avoir les 2 séries de chiffres sur la même capteur ?

Merci encore à tous et bon WE.

Bonjour
Tu utilises la fonction concat()
concat(//latitude,' ',//longitude) avec espace entre ' '
tu obtiens
50.3515849 3.524095
(ou le symbole que tu veux)
concat(//latitude,' / ',//longitude)
50.3515849 / 3.524095
:)
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 : 731
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Capteur HTTP

Messagepar Onehebergeur » 23 Avr 2022 13:23

Merci je vais tester cela, par contre j'ai encore un dernier souci dsl ...l'ID concernant ma demande initial change donc ... sa déconne ...

Voici ce que j'ai maintenant :

<?xml version="1.0" encoding="ISO-8859-1"?>
<root><entry><id>38354</id>
<attributes><priority>0</priority>
<sat>14</sat>
<event>0</event>
<ignition>0</ignition>
<motion>0</motion>
<rssi>3</rssi>
<io200>0</io200>
<io69>1</io69>
<pdop>0.9</pdop>
<hdop>0.7</hdop>
<power>12.563</power>
<battery>4.047</battery>
<io68>0</io68>
<operator>20815</operator>
<odometer>405078</odometer>
<distance>0</distance>
<totalDistance>34245302.22</totalDistance>
<hours>24641890</hours>
</attributes>
<deviceId>2</deviceId>
<type>0</type>
<protocol>teltonika</protocol>
<serverTime>2022-04-23T11:18:33.425+00:00</serverTime>
<deviceTime>2022-04-23T11:17:01.000+00:00</deviceTime>
<fixTime>2022-04-23T11:17:01.000+00:00</fixTime>
<outdated>0</outdated>
<valid>1</valid>
<latitude>50.33951</latitude>
<longitude>3.6429416</longitude>
<altitude>73</altitude>
<speed>0</speed>
<course>174</course>
<address>10 10 Rue de Remonval, Sebourg, FR</address>
<accuracy>0</accuracy>
<network>0</network>
</entry>
<entry><id>38353</id>
<attributes><priority>0</priority>
<sat>10</sat>
<event>0</event>
<ignition>0</ignition>
<motion>0</motion>
<rssi>4</rssi>
<io200>0</io200>
<io69>1</io69>
<pdop>1.6</pdop>
<hdop>1</hdop>
<power>12.465</power>
<battery>4.048</battery>
<io68>0</io68>
<operator>20801</operator>
<odometer>95266</odometer>
<distance>0</distance>
<totalDistance>142311.66</totalDistance>
<hours>8983990</hours>
</attributes>
<deviceId>4</deviceId>
<type>0</type>
<protocol>teltonika</protocol>
<serverTime>2022-04-23T11:15:20.498+00:00</serverTime>
<deviceTime>2022-04-23T11:14:58.000+00:00</deviceTime>
<fixTime>2022-04-23T11:14:58.000+00:00</fixTime>
<outdated>0</outdated>
<valid>1</valid>
<latitude>50.3393816</latitude>
<longitude>3.6428716</longitude>
<altitude>48</altitude>
<speed>0</speed>
<course>313</course>
<address>10 10 Rue de Remonval, Sebourg, FR</address>
<accuracy>0</accuracy>
<network>0</network>
</entry>
</root>

Concernant ma demande initial pour la balise "power" avez vous une autre solution ?
Par exemple demander le 1er "power" et pour l'autre le second ?

Ce qui ne change jamais : deviceId>2</deviceId> je sais pas si cela peut aider ?
Pour les "address" jai réussi en faisant :

//entry[deviceId='2']/address
//entry[deviceId='4']/address

Et enfin pour la position GPS j'essai cela mais cela ne fonctionne pas :

//entry[deviceId='2'] /concat(//latitude,' ',//longitude)
//entry[deviceId='4'] /concat(//latitude,' ',//longitude)
Dernière édition par Onehebergeur le 23 Avr 2022 14:16, édité 1 fois.
Onehebergeur
 
Messages : 82
Inscription : 09 Mai 2014
Localisation : Sebourg

Re: Capteur HTTP

Messagepar opa95 » 23 Avr 2022 15:12

Bonjour
Si tu es sur que le 'deviceId' est stable, tu peux mettre
Code : Tout sélectionner
//entry[deviceId='2']//power

ou
Code : Tout sélectionner
//entry[deviceId='4']//power


sinon, s'il n'y a que 2 entry, on peut mettre
Code : Tout sélectionner
//power

et
Code : Tout sélectionner
sum(//power)-//power


Pour la latitude et la longitude, tu utilises mal la fonction concat()
concat('Bonjour',' ','Onehebergeur' donnera 'Bonjour Onehebergeur'
donc il faut
Code : Tout sélectionner
concat(//entry[deviceId='2']/latitude,' ',//entry[deviceId='2']/longitude)

c'est la valeur de la latitude : //entry[deviceId='2']/latitude
et la valeur de la longitude : //entry[deviceId='2']/longitude
qu'il faut concaténer avec un espace entre les 2.
et
Code : Tout sélectionner
concat(//entry[deviceId='4']/latitude,' ',//entry[deviceId='4']/longitude)

:)
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 : 731
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Capteur HTTP

Messagepar Onehebergeur » 23 Avr 2022 16:09

Que dire ...

Mille merci ! Tout fonctionne !!!

Mais j'avoue que c'est quand même dommage, ayant un capteur http avec des postions GPS, ne pas avoir un script ou autre qui mettre d'avoir une carte, une historisation sur une carte ... voir même le tracé journalier ... Je l'avais avant avec mon module Xee mais je ne l'ai plus.
Onehebergeur
 
Messages : 82
Inscription : 09 Mai 2014
Localisation : Sebourg

Re: Capteur HTTP

Messagepar Onehebergeur » 20 Avr 2023 10:29

Bonjour à tous, depuis qq tps cela ne fonctionne plus, voici le retour que j'ai :

XML error: HTTP 401 Unauthorized - WebApplicationException (SecurityRequestFilter:125 < ...)

URL de la requête : http://[VAR1]:[VAR2]@192.168.1.100:18082/api/positions

Fonctionne bien via un navigateur en remplaçant VAR1 par le login et VAR2 par le MDP.

Avez-vous une idée ?
Onehebergeur
 
Messages : 82
Inscription : 09 Mai 2014
Localisation : Sebourg

Re: Capteur HTTP

Messagepar opa95 » 20 Avr 2023 10:49

Bonjour Onehebergeur
Onehebergeur a écrit:Bonjour à tous, depuis qq tps cela ne fonctionne plus, voici le retour que j'ai :

XML error: HTTP 401 Unauthorized - WebApplicationException (SecurityRequestFilter:125 < ...)

URL de la requête : http://[VAR1]:[VAR2]@192.168.1.100:18082/api/positions

Fonctionne bien via un navigateur en remplaçant VAR1 par le login et VAR2 par le MDP.

Avez-vous une idée ?

Normalement la box remplace [VAR1] (et VAR2) par le contenu de VAR1 (et de VAR2).
Envoie la copie d'écran du panneau de ton capteur HTTP.
Depuis ce panneau, appuie sur tester et vérifie la requête utilisée. Si elle est correcte, appuie sur tester dans le panneau de test pour vérifier qu'elle marche.
A défaut de comprendre pourquoi, remplace directement dans l'URL de la requête du panneau du capteur HTTP [VAR1] par le texte du login et [VAR2] par le texte du mp :)
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 : 731
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Capteur HTTP

Messagepar Onehebergeur » 20 Avr 2023 11:12

J'ai déja fait tout cela, remplacer VAR 1 et 2 ...

J'ai ce message : XML error: HTTP 401 Unauthorized - WebApplicationException (SecurityRequestFilter:125 < ...)

Image
http://onehebergeur.com/1.jpg

Quand je copie / colle l'url dans un navigateur, cela fonctionne ...
Onehebergeur
 
Messages : 82
Inscription : 09 Mai 2014
Localisation : Sebourg

Re: Capteur HTTP

Messagepar opa95 » 20 Avr 2023 13:13

Bonjour Onehebergeur
Onehebergeur a écrit:J'ai déja fait tout cela, remplacer VAR 1 et 2 ...

J'ai ce message : XML error: HTTP 401 Unauthorized - WebApplicationException (SecurityRequestFilter:125 < ...)

Image
http://onehebergeur.com/1.jpg

Quand je copie / colle l'url dans un navigateur, cela fonctionne ...

D'après la copie d'écran,
ton login est eedomus et mp aussi? :)
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 : 731
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Capteur HTTP

Messagepar Onehebergeur » 24 Avr 2023 12:47

Merci encore à @opa95 qui m'a réglé mon souci en MP et m'a créer mon script !!!
Onehebergeur
 
Messages : 82
Inscription : 09 Mai 2014
Localisation : Sebourg

Re: Capteur HTTP

Messagepar opa95 » 24 Avr 2023 14:09

Bonjour Onehebergeur
Onehebergeur a écrit:Merci encore à @opa95 qui m'a réglé mon souci en MP et m'a créer mon script !!!

Merci pour ton commentaire.
Pour ceux que ça intéresse, le problème venait d'un changement de comportement du serveur qui demandait une autorisation du genre "Basic Authorization" qui est faite par défaut sur les navigateurs récents mais n'a pas été mis à jour dans eedomus.
Il faut donc adapter le "header" en lui envoyant le code d'autorisation ($auth) avant la lecture http :
Code : Tout sélectionner
$header = array('Authorization: Basic ' . $auth);
@$response = httpQuery($url, 'GET', '', '', $header, '', '', $info);

Si la demande est faite directement depuis un navigateur, on peut récupérer le code généré, sinon j'ai utilisé un code javascript (je ne sais pas le faire directement depuis la box en php :( ).
:)
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 : 731
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Résolu] Capteur HTTP

Messagepar thrymartin » 29 Avr 2023 05:00

Une page peut bloquer à cause du User Agent aussi, pour ne pas répondre aux requêtes php par exemple, la solution est aussi dans le Header
thrymartin
 
Messages : 920
Inscription : 03 Mars 2019
Localisation : La Réunion

Re: [Résolu] Capteur HTTP

Messagepar opa95 » 29 Avr 2023 09:24

Bonjour thrymartin
thrymartin a écrit:Une page peut bloquer à cause du User Agent aussi, pour ne pas répondre aux requêtes php par exemple, la solution est aussi dans le Header

Dans certains cas, le problème vient effectivement du User Agent, mais pas ici comme précisé dans le message précédent.
Il est dommage que la box n'envoie pas automatiquement "Authorization: Basic " comme le font les navigateurs (du moins ceux que j'utilise), ce qui permettrait d'envoyer la requête directement sans faire de script supplémentaire. :)
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 : 731
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Résolu] Capteur HTTP

Messagepar thrymartin » 30 Avr 2023 04:28

Au cas ou, la liste...
https://en.wikipedia.org/wiki/List_of_H ... der_fields

on y retrouvera "authorization" qui permet à l'user agent de donner login/pass
et user-agent qui permet à l'user agent de s'identifier
thrymartin
 
Messages : 920
Inscription : 03 Mars 2019
Localisation : La Réunion


Retour vers Box eedomus

Qui est en ligne ?

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