This page last changed on Jan 19, 2014 by adrian1983.

what's the syntax for the regular expression field when you use http protocol?

thanks in advance

I found a tutorial here: http://www.codeproject.com/Articles/9099/The-30-Minute-Regex-Tutorial

I am collecting texts and links relating to ReGex in my private space.

Posted by pz1 at Jan 19, 2014 11:48

thanks for the answer.

i'm trying to read the value of an arduino input with an http GET request.
When i use it from a browser it works good for exemple if i want to read the variable "J"(which represent the value of an input) i send a GET http://192.X.X.X/J and the browser print 3 (which is the right value) but when i use it with openremote i really don't see how i could represent J in the regular expression path.
Do you have an idea ?? I tried to write simply J but it didn't work. I'm gonna try other things.

thanks

Posted by adrian1983 at Jan 19, 2014 13:43

Please be more concrete.
Give screendumps of the http command that you defined, and the sensor that you configured on that command.
Can you give more detail on the source you are reading? what is it xml, html?....

Posted by pz1 at Jan 19, 2014 13:59

Sorry, it's a little complicated cause i'm reading informations from an arduino with a fake webserver in it cause the arduino is not running a real webserver as a service. It's maybe why i can't have a real http answer of my arduino.
I will continue to try things.
(It's hard to explain it and i won't give you the all code of my arduino it would be too long).

Thanks.

Posted by adrian1983 at Jan 19, 2014 14:12

Well, then you're on your own.

Posted by pz1 at Jan 19, 2014 14:41

From this, it looks to me that "http://192.X.X.X/J" is the URL to use in the HTTP command the it returns a string "3" which is the value you want to use.
I don't see the need to any regular expressions here. Those are just to process the response body from the HTTP request to e.g. extract a value from a longer output.

Posted by ebariaux at Jan 20, 2014 08:07

eric tu es français ???

Posted by adrian1983 at Feb 06, 2014 16:40

eric i think you totaly understood my problem!! but i don't get how you extract J inside the response???

Posted by adrian1983 at Feb 06, 2014 16:43

Je suis Belge et parle français. Si tu préfères, on peut discuter du problème en français et je posterai la conclusion en anglais pour les autres.

For non French speaking users, we'll discuss the issue in French here and I'll post the conclusion in English for general information.

Posted by ebariaux at Feb 07, 2014 13:52

Pas certain. Je ne comprend pas bien d'où vient le J.

D'après ce que je comprend, c'est juste le nom d'une variable, donc c'est constant et tu peux le "hardcoder" dans l'URL.
Ce qui est variable, c'est la valeur retournée. Et elle est dans la réponse à la command, pas dans l'URL.

Posted by ebariaux at Feb 07, 2014 13:54

En fait le J est la variable qui contient la valeur d'une entrée de l'arduino (je ne sais pas si j'ai précisé que je travaille avec un arduino) donc dans ma requete HTTP j'envoie http://192......../J et dans mon code arduino cette commande me renvoie bien la valeur de J. Pour les tests j'ai forcé la valeur de J à 3 quand j'envoie ma requete depuis mon navigateur je vois bien 3 apparaître sur ma page web. Le problème c'est que je ne comprends pas comment je dois faire avec openremote pour pouvoir traiter cette valeur et l'afficher grâce au système de sensor?? comment openremote se débrouille pour parser la réponse et afficher 3 ??

merci d'avance.

Posted by adrian1983 at Feb 08, 2014 10:06

Si la requête retourne juste la valeur 3, sans autre texte, alors aucun parsing à faire.
Tu peux simplement créer un sensor de type "custom" (ou range si c'est uniquement une valeur numérique) et utiliser cela dans l'interface utilisateur (sur un label par exemple) ou dans les règles.

Sinon, peux-tu poster la résultat de la requête? Par exemple le "view source" du résultat de la requête dans un browser.

Posted by ebariaux at Feb 08, 2014 10:40

Je vois ce que tu veux dire mais dans une réponse HTTP obligatoirement il y a toute l'entête ainsi que la réponse "200 ok"qui est renvoyeé non ??? donc comment openremote fait pour se concentrer uniquement sur le champ 3 et virer tout le reste de la trame de réponse. Je suis entrain de tester la même chose avec une petite page en PHP et j'ai le même problème.
J'envoie mon GET depuis openremote avec une valeur à retourner, wireshark voit bien l'échange mais rien ne se produit dans Openremote.

Posted by adrian1983 at Feb 08, 2014 14:35

Au niveau TCP effectivement, il y a bien toute la structure du protocol HTTP, mais si tu utilises une commande HTTP, tout cela est pris en compte par le protocol et tu as juste le "payload" en retour.

Peux-tu décrire ce que tu as fait dans OR ?

Tu devrais avoir une commande HTTP. Il vaut mieux paramétrer un "polling interval". Ensuite lier cette commande à un sensor, puis le sensor sur un label.

Posted by ebariaux at Feb 10, 2014 08:02

la config sur laquelle je travaille sur mes informations de retour depuis plusieurs semaines est exactement celle que tu décris!!

J'ai testé a base de requête HTTP en premier, pour les tests j'ai essayé d'envoyer mes requetes sur un serveur que j'ai codé en PHP je n'ai aucun retour dans openremote alors que je fais le même test à l'aide de HERCULES (logiciel client TCP) j'ai bien mon retour d'infos.

Ensuite je viens de teste avec un serveur que j'ai codé en C# mais la j'utilise des requêtes TCP HERCULES affiche bien la valeur de retour mais Openremote ne veut rien savoir !!

Je suis perdu!

Posted by adrian1983 at Feb 11, 2014 14:23

ah oui et wireshark voit bien les échanges avec la trame de retour renvoyée sur OpenRemote mais Openremote n'affiche strictement rien dans le Label!!

Posted by adrian1983 at Feb 11, 2014 14:24

ça maaaaaarrrchheeee j'en pouvais plus je n'avais jamais utilisé le polling !!! je pense que ça vient de là!!
je pensais que ce n'était pas nécéssaire.

Posted by adrian1983 at Feb 11, 2014 15:29

bonjour,

je viens de débuter un projet sous openremote + ARDUINO.
J'aimerais communiquer avec un arduino (allumer une led pour commencer) :

  • dans un premier temps je pensais utiliser la liaison série mais cela ne fonctionne pas pourtant lorsque je le teste avec un terminal série cela fonctionne.
  • Comme j'ai un shield Ethernet je me suis dit que j'allais utiliser les commandes par HTTP get....
    Est ce que tu pourrais mettre le code de l'arduino et les paramètre utilisé du côté openremote stp ?

Merci d'avance
Lionel

Posted by lionel81 at Jun 19, 2014 21:28
Document generated by Confluence on Jun 05, 2016 09:38