HTTP

Référence du pilote HTTP : scruter des points de terminaison HTTP et HTTPS comme des tags, les identifiants, la composition du chemin, l'analyse du corps, les écritures PUT et les types.

Afficher en Markdown

Le pilote HTTP scrute des points de terminaison HTTP génériques comme des tags : un capteur LAN avec un petit serveur web, une passerelle qui publie des relevés à des URL fixes, un service à vous. C'est le pilote client le plus simple du produit : Ganter Lab se connecte au matériel par de simples requêtes GET et lit chaque corps de réponse comme une valeur.

Deux propriétés tracent la limite de ce à quoi il sert :

  • Le transport est celui que l'adresse nomme. Un équipement dont l'hôte est écrit https://host joint son service par TLS ; un hôte écrit seul est du HTTP simple. Dans les deux cas, le pilote envoie l'identifiant de l'équipement à chaque requête, un nom d'utilisateur et un mot de passe en HTTP Basic ou un jeton bearer. Ce que les pilotes AVEVA PI et Redfish apportent encore pour ces deux services, c'est leur vocabulaire : chemins PI et WebIds, arbres de ressources Redfish, que ce pilote ignore.
  • Le corps de réponse entier est la valeur. Le pilote n'est pas un extracteur de champ JSON : un tag numérique attend que le corps soit le nombre nu.

Champs de connexion

Champ Ce que c'est Format Défaut
Hôte Le nom d'hôte ou l'adresse IP du point de terminaison. Écrit https://host, il est joint par TLS, ce qui garde un identifiant hors du câble ; un hôte écrit seul est du HTTP simple. Nom d'hôte, IP, ou l'un ou l'autre précédé de http:// ou https:// vide
Port réseau Le port TCP. Zéro signifie le port sur lequel le transport répond : 80 en simple, 443 en HTTPS. numéro de port 0
Chemin de ressource Un préfixe de chemin facultatif placé devant le chemin de chaque tag, par exemple api/v2. Vide ne préfixe rien. texte de chemin vide
Nom d'utilisateur Le compte pour l'authentification HTTP Basic, employé seulement quand aucun jeton bearer n'est réglé. Vide (et sans jeton) laisse les requêtes anonymes. Texte libre vide
Mot de passe Le mot de passe associé au nom d'utilisateur. Protégé au repos par utilisateur Windows ; un secret saisi sous un autre compte Windows s'affiche comme illisible et doit être saisi de nouveau. Texte libre vide
Jeton bearer Un jeton envoyé en Authorization: Bearer … à chaque requête. Quand il est réglé, il l'emporte sur la paire nom d'utilisateur et mot de passe. Protégé au repos de la même façon. Texte de jeton vide

À la connexion, le pilote vérifie le point de terminaison par une requête HEAD vers l'adresse configurée, l'hôte suivi du chemin de ressource, en se rabattant sur GET quand HEAD n'est pas implémenté ; une adresse qui répond correctement à l'une ou l'autre compte comme joignable. Un service dont la racine répond 404 alors que son API répond normalement est donc en ligne, tant que le chemin de ressource pointe vers l'API. En HTTPS, le certificat TLS du service doit passer la validation de certificat Windows normale. Un identifiant sur une adresse qui ne nomme aucun TLS voyage sans chiffrement, et la station l'écrit dans le journal du connecteur au moment où l'équipement se connecte. Chaque requête reçoit dix secondes : un point de terminaison qui accepte la connexion puis ne dit rien coûte une lecture, pas l'équipement entier, parce que les autres tags de l'équipement sont lus dans la même passe. La période de scrutation est configurable : la valeur par défaut de l'équipement (1000 ms) s'applique à chaque tag qui ne donne pas la sienne.

Adressage des tags

Le champ Chemin du tag est le chemin d'URL relatif au chemin de ressource de l'équipement :

Champ Ce qu'il fait Valeurs Défaut
Chemin Le chemin demandé pour ce tag. L'URL complète est <transport>://<host>:<port>/<chemin de ressource>/<chemin>. Texte libre (obligatoire) vide

Exemple : l'hôte 192.168.0.40, le chemin de ressource api et le chemin de tag sensors/temp scrutent http://192.168.0.40/api/sensors/temp.

Lectures

Chaque scrutation récupère l'URL du tag en GET et analyse le corps de réponse entier selon le type de donnée déclaré du tag :

Type Corps accepté
Float Un nombre au format invariant (21.5, point décimal, sans séparateur de milliers)
Int32 Un entier (42)
Boolean true ou false
String N'importe quoi ; le corps est la valeur telle quelle (un document JSON arrive sous forme de texte brut)

Un corps que le type déclaré ne sait pas analyser, ou un code d'état hors succès, se lit comme une lecture en échec : le tag passe en mauvaise qualité et sa politique de lecture en échec décide de ce qui est présenté, comme le décrit la page Connector.

Écritures

Les tags dont le mode d'accès est inscriptible écrivent en PUT vers la même URL : le corps est la valeur en JSON, envoyée avec le type de contenu application/json. Un nombre part en littéral nu (42.5), un booléen en true ou false, et le texte part entre guillemets ("automatic"). C'est le point de terminaison qui décide de ce qu'il en fait ; un état hors succès se lit comme une écriture en échec. Comme partout ailleurs, la zone d'écriture prend la valeur physique et les étapes de conversion du tag sont remontées avant que la valeur brute ne parte sur le bus, comme le décrit la page Connector.

Types de donnée pris en charge

Boolean, Int32, Float et String.

Commandes

Un tag lit une valeur ; une commande demande au service de faire quelque chose. Déclarez-en chacune sur l'équipement, dans la carte Commandes de sa page : un nom, le chemin auquel elle est envoyée en POST (sous l'adresse propre de l'équipement, exactement comme l'est le chemin d'un tag), et éventuellement le nom de la seule valeur qu'elle prend. Le verbe Exécuter de la ligne l'envoie et rapporte ce que le service a répondu, et la commande devient aussi une méthode sur l'équipement dans l'espace d'adressage OPC UA propre à cette station, si bien que tout ce qui peut appeler une méthode peut l'envoyer. La valeur que vous tapez est envoyée dans le corps de la requête, telle qu'écrite.

Ce que le service répond est le résultat de la commande. Un état que le service retourne hors de la plage de succès est le service qui refuse la commande, pas la connexion qui échoue : le refus nomme l'état et cite ce que le service a dit avec lui (« HTTP 500 : le brûleur est en sécurité »), et rien d'autre sur l'équipement n'en est dérangé.

Découverte

Le pilote n'a pas de balayage de découverte. Ajoutez chaque point de terminaison par son hôte et chaque valeur par son chemin ; l'ajout d'un équipement est décrit sur la page Connector.