Entrée HTTP Virtuelle

Introduction

Avec les entrées HTTP virtuelles vous pouvez lire les valeurs directement depuis un site web ou un fichier XML. Ainsi, les requêtes de données sur un appareil à interface web est beaucoup plus facile, car il n’est plus nécessaire d’utiliser le PicoC.

Possibilités: commandes de chauffage, système PV, applications multimédias, …

Configurer une entrée virtuelle HTTP

Pour ajouter une entrée virtuelle HTTP, veuillez cliquer sur « Entrée Virtuelle » dans l’arborescence périphérique. Puis dans le menu en haut à droite, cliquez sur « Entrée virtuelle HTTP ».

create_httpin

Dans les propriétés de l’entrée virtuelle HTTP reportez le protocole, l’adresse et le port ainsi que le cycle d’interrogation de l’appareil avec lequel on désire communiquer.

Dans notre exemple nous souhaitons recupérer une valeur de façon cyclique depuis un site web. Pour plus de simplicité, nous utilisons un autre Miniserver, mais cela fonctionne avec n’importe quel appareil de la même manière.

Lorsqu’une authentification est nécessaire, nous pouvons renseigner l’adresse et le mot de passe de la façon suivante:

http://UTILISATEUR:MOTDEPASSE@ADRESSE-IP

Dans notre exemple nous nous connectons à l’adresse IP 192.168.0.17 avec l’utilisateur « benutzer » et le mot de passe « passwort ».

./dev/sps/io/Test/state est la commande webservice pour la requête de statut d’une entrée d’un Miniserver.

settings_httpin

Commande HTTP virtuelle

Pour l’instant la page web est rechargée toute les 10 secondes. Cependant, afin d’être capable de lire une valeur, nous devons maintenant ajouter une commande HTTP virtuelle.

Sélectionnez votre entrée virtuelle HTTP dans l’arborescence périphérique et vous verez ainsi apparaitre dans le menu en haut à droite le bouton « Commande HTTP Virtuelle ». Celle ci s’ajoutera au document avec un clic.

create_httpcommand

Avant que nous puissions configurer la commande HTTP, et la reconnaissance de commande, nous avons besoin de savoir comment le site à partir duquel nous voulons interroger les données est structuré.

Pour ce faire, nous allons simplement sur la page à partir d’un navigateur.

Comme on le voit dans la capture d’écran ci dessous, la valeur que nous souhaitons intérroger est à côté de value= ».

browser_response

Ceci est important pour la reconnaissance de commande.

Nous allons donc y mettre: value= »\v

Cela signifie Prend la valeur texte (\v), qui se situe après value= » .

settings_httpcommand

Une erreur courante consiste à utiliser \1 au lieu de \v. Sur les sites les chiffres sont souvent dépeints comme un seul caractère ASCII. La valeur ASCII, cependant, est 38 plus la valeur réelle. Par exemple, 3 serait interprété comme le nombre 41.

Voici le résultat de notre exemple:

Toutes les 10 secondes, le Miniserver avec l’adresse IP 192.168.0.17, est interrogé sur la valeur de son entrée.

check_value

Reconnaissance de commande avancée

La reconnaissance de commande nous offre de nombreuses possibilités:

\vValeur texte: toutes les valeur de la table ASCII sont acceptée. Les décimales doivent être séparées par une virgule ou un point.
\1La valeur numérique des octets reçus est copié dans la sortie comme un octet significatif (LSB) (Bits 0 – 7).
\2La valeur numérique des octets reçus sera prise en bits 8-15 à la sortie.
\3La valeur numérique des octets reçus sera prise en bits 16-23 à la sortie.
\4La valeur numérique des octets reçus sera prise en bits les plus signifiant à la sortie (MSB)  (Bits 24 – 31).
\hValeur texte hexa: D’une table ASCII, la valeur est définie et affichée en hexadécimal.
\xHexadezimal Ex. \x09 für 0x09
\\\ (Backslash)
\.N’importe quel caractère
\wN’importe quel mot
\#N’importe quel nombre
\tTabulation (0x09)
\bTabulation (0x09) ou espace (0x20)
\rRetour à la ligne (0x0D)
\nSauter une ligne (0x0A)
\dN’importe quel chiffre (0-9)
\mN’importe quel lettre (A-Z,a-z) ou N’importe quel chiffre (0-9)
\aN’importe quel lettre (A-Z,a-z)
\s12sauter 12 caractères (\s17 = saute 17 caractères)
\ixxx\iSauter au texte xxx Ex.: \ivalue\i saute jusqu’a value

Il est possible d’utiliser plusieurs reconnaissance de commande dans une seule commande.