Forum eedomus
http://forum.eedomus.fr/

RESOLU Requete HTTP : réponse NON xml, on récupére comment ?
http://forum.eedomus.fr/viewtopic.php?f=15&t=2539
Page 1 sur 2  Suivant »
Auteur:  nslmanu [ 07 Mars 2015 20:11 ]
Sujet du message:  RESOLU Requete HTTP : réponse NON xml, on récupére comment ?

Hello ,

J'aimerais récupérer dans un status le retour d'une requette http simple qui me renvoie 2 mots à chaque fois sur une page web .... juste 2 mots.

C'est le retour de requete de mon alarme : elle me renvoie cela :

Armed Away

ou

Disarmed Home

Et bien je voudrais mettre ce résultat dans un device virtuel ... mais je ne trouve des infos que sur du XML ... et non du html basique , simple ... meme pas formatté ... brut de pomme !

Si vous avez une solution pour récuperer je suis preneur car j'ai tout essayer avec Xpath au cas où ...

En tous cas merci d'avance pour l'astuce :)

Manu
Auteur:  Tinto [ 07 Mars 2015 21:13 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

Si tu as un serveur dispo, genre un NAS :-) tu fais un petit script qui justement te formate ces "mots" en XML que tu pourras lire avec eedomus.
Auteur:  nslmanu [ 08 Mars 2015 04:59 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

Ok merci :)

Donc rien de possible avec la box elle meme ?

A force de faire des trucs a l'exterieur de la eedomus, je finis par me demander si une autre box n'etait pas mieux :(

Bon n'ayant pas toutes les connaissances de developpement pour le faire en php directement, je peux le faire par script dans une crontab qui selon le résultat va faire appel à une url sur la eedomus et mettre à jour la valeur d'une device : c'est possible ça sur la eedomus de mettre à jour la valeur d'une device via une requete venant de l'extérieur ?

Merci
Auteur:  hugosc [ 08 Mars 2015 08:53 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

Bonjour,
Lorsque tu appelles l'adresse HTTP depuis ton navigateur, as-tu vérifié en affichant le code source que la réponse est uniquement les 2 mots ?
Si le code source de la réponse est du HTML bien formaté par exemple <p>armed away</p>, c'est apparenté à du xml et tu pourras le traiter facilement avec eedomus.
Hugo
Auteur:  Tinto [ 08 Mars 2015 12:21 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

Oui si le HTML est bien formaté un xpath peut suffit. Après, on pourrait trouver normal qu'utiliser un truc externe pour intégrer un truc externe ne soit pas vraiment faute a la box :-)
Auteur:  Nico33 [ 08 Mars 2015 21:01 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

Je suis d'accord avec Tinto. ;)
De toute façon, aucune box n'est parfaite. Quel que soit son prix d'ailleurs.
Auteur:  nslmanu [ 09 Mars 2015 13:21 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

Quand j'enregistre la page : j'ai ceci :

<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body>Disarmed Home</body></html>

Dommage que la eedomus ne gère pas un truc aussi simple :(
Auteur:  Floman321 [ 09 Mars 2015 13:42 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

BOnjour,

si tu ajoute un péripherique http avec pour valeur "<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body>Disarmed Home</body></html>"

et tu créer un régle si compare cette valeur a une valeur connu

SI Peripherique1 = ValeurHtmlDisarmed ALORS
tu deverouille l'alarme
FIN
Auteur:  nslmanu [ 09 Mars 2015 14:01 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

ça me semble bizarre, t'es sur de ton coup ?

:)
Auteur:  Floman321 [ 09 Mars 2015 14:59 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

Je me suis peut etre avancé, les regles ne prenne que des valeurs numerique ?
Il faut essayer.

essaye en php avec un script ?
Je peux t'aider en php si tu veux.
Auteur:  Havok [ 09 Mars 2015 16:17 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

nslmanu a écrit:Quand j'enregistre la page : j'ai ceci :

<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body>Disarmed Home</body></html>

Dommage que la eedomus ne gère pas un truc aussi simple :(


Normalement ca fonctionne avec //body

Sauf que le html n'est pas parfaitement formé, il suffirait juste d'un / en plus après charset=UTF-8

<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"/></head><body>Disarmed Home</body></html>

Bon ca ne résout pas ton soucis mais ca permet de comprendre :) C'est sur qu'avec un script php c'est réglé en 2s
Auteur:  nslmanu [ 09 Mars 2015 16:40 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

J'ai essayé mais suis pas fan du php ... dans le sens pas très calé.

j'ai réussi à faire avec un script shell mais je n'aime pas cette solution : eedomus gère des scripts php, autant les utiliser ou en faire un indépendant ... car mon script n'est pas indépendant.

1 - Mon script récupère le resultat d'une wget et le met dans un fichier : le résultat du ficher est les 2 mots.
2 - ensuite il créé un autre fichier XML ligne par ligne du genre :
<?xml version........
<xml>
<test>les 2 mots</test>
</xml>

En php : je pense que c'est faisable et j'ai essayé ... mais je n'y suis pas arrivé : j'avais un soucis avec le httprequest machin chose ... du coup j'ai fait mon script shell ... mais je n'aime pas.

Je suis bien sur preneur d'un script php qui me fasse cela :) , celui qui pratique le php comme moi le shell , c'est faisable facilement ... et si en plus c'est hébergeable sur la eedomus :) c'est à dire avec les fonctions authorizées par la box, c'est le pied !

Le but d'une box, c'est de ne pas etre dépendant d'autre chose ... mon pt de vue. Homeseer était la perfection pour moi .... sauf d'être obligé d'avoir Windows de me........ à gérer et après plusieurs années, j'ai prix le risque de changer de système.

Merci encore si un "expert" php me file un coup de main sur le coup :)

Et si ce script peut mettre à jour un device virtuel via 2 valeurs : genre ALARME ACTIVEE ou ALARME DESACTIVEE , c'est parfait :)

Manu
Auteur:  Havok [ 09 Mars 2015 17:00 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

En gros il suffit d'interroger ta page avec la fonction (specifique à l'eedomus) :

httpQuery($url, $action = 'GET'/*GET,POST,PUT,DELETE*/, $post = NULL, $oauth_token = NULL, $headers = NULL, $use_cookies = false)

ensuite tu analyse la chaine avec les fonction php classiques et en fonction du résultat tu mets à jour la valeur de ton etat avec :

setValue($periph_id /*Code API*/, $value, $verify_value_list = false)

Tu peux aussi simplement reconstruire le xml et ainsi interroger le script dans la zone "Requete de mise à jour (optionnelle)" de ton etat virtuel

Pour en savoir plus : https://doc.eedomus.com/view/Scripts



Tu peux te lancer et si vraiment tu n'y arrives pas je t'aiderais :)
Auteur:  hugosc [ 09 Mars 2015 18:24 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

Et un simple capteur HTTP avec pour XPath /html/body/text() ça ne suffit pas ?
Auteur:  Havok [ 09 Mars 2015 19:08 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

hugosc a écrit:Et un simple capteur HTTP avec pour XPath /html/body/text() ça ne suffit pas ?


Non car la balise <meta> est mal formée du point de vue xml (plus strict que le html)
Il faudrait qu'elle soit <meta></meta> ou <meta/>
Auteur:  nslmanu [ 09 Mars 2015 19:17 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

Havok a écrit:Tu peux te lancer et si vraiment tu n'y arrives pas je t'aiderais :)


Au milieu de ma vie et une famille à m'occuper :) je vais essayer de me mettre à la découverte d'un langage de programmation ;)

Je vais déjà essayer de comprendre la requete d'eedomus ... ça sera déjà bien :lol:
Auteur:  nslmanu [ 09 Mars 2015 19:30 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

Bon j'ai un résultat : page blanche ... sans erreur affichée mais sans résultat non plus ...

<?

$url = 'https://..............';

httpQuery($url, $action = 'GET', $post = NULL, $oauth_token = NULL, $headers = NULL, $use_cookies = false)

?>


ça devrait au moins me mettre quelque chose :( étonnant. Je continue de chercher ... j'ai un peu de temps là.
Auteur:  Floman321 [ 09 Mars 2015 19:35 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

attends , je suis entrain de te le faire
Auteur:  nslmanu [ 09 Mars 2015 19:37 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

correction :


$result = httpQuery($url,'GET') ;
echo $result;

ça marche mieux .... :)
en gros maintenant :

Et après : on fait une requete sur le device et mettre la value du result ... je vais essayer.
Auteur:  nslmanu [ 09 Mars 2015 19:51 ]
Sujet du message:  Re: Requete HTTP : réponse NON xml, on récupére comment ?

Par contre je pêche pour mettre la variable sur le device ...

<?
$url = "........";
$result = httpQuery($url,'GET') ;

$envoie_result = setValue(123456,"prout",$verify_value_list = false);
echo $envoi_result;
?>

Résultat : vide ... :( mais je n'ai pas capté malgré avoir copié l'exemple fourni par eedomus :(
Et aucune valeur dans l'history du device ...

On y est presque :)
Page 1 sur 2 Le fuseau horaire est UTC+1 heure