Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

Commander le relais des lumières du bureau depuis un terminal sur mon bureau Ubuntu

Commander le relais des lumières du bureau depuis un terminal sur mon bureau Ubuntu

Résolu 8 7

Traduit de English par IA ·

Alors, c’est à moitié une question de confort et à moitié l’envie d’apprendre l’API.Notre bureau d’analytique et les lumières du quai à côté sont commutés par une carte relais ESP32 qui remonte vers Hermetry via MQTT. Il y a un tableau avec une carte d’interrupteur, et ça fonctionne bien depuis le navigateur. Mais je passe toute la journée dans un terminal sous Ubuntu et je voudrais un raccourci clavier qui bascule les lumières du bureau sans ouvrir le tableau.Ce que j’ai essayé : j’ai pris le jeton d’accès de l’appareil dans le tiroir Credentials et j’ai envoyé une requête à l’endpoint HTTP de l’appareil :

curl -X POST "https://<device host>/api/v1/telemetry" 
  -H "Authorization: Bearer <ACCESS_TOKEN>" 
  -H "Content-Type: application/json" 
  -d '{"light": false}'

Ça répond 200, et pendant un instant la carte d’interrupteur affiche Off, mais les lumières restent allumées et quelques secondes plus tard la carte repasse sur On lorsque l’ESP32 renvoie son état. Je m’adresse donc manifestement à la mauvaise chose. Quel endpoint faut-il utiliser pour que l’appareil fasse réellement quelque chose ?

♥ 0

Traduit de English par IA ·

Publier de la télémétrie avec le jeton de l’appareil revient à vous faire passer pour l’appareil. Hermetry se contente d’enregistrer ce que « l’appareil » envoie. Vous avez besoin d’une commande dans le sens inverse.

♥ 0

Traduit de English par IA ·

Ok, ça explique le retour en arrière de la carte. Donc c’est /api/v1/rpc ? La page HTTP de l’appareil liste celui-là

♥ 1

Traduit de English par IA ·

Celui-là concerne le côté appareil, il attend des commandes. Je pense qu’il te faut une clé API à la place du jeton de l’appareil ; j’ai fait quelque chose de similaire avec python requests il y a quelque temps, mais je ne me souviens plus du chemin.

QoS 1 and a lot of patience.
♥ 1

Traduit de English par IA ·

Nous faisons exactement cela pour l’éclairage des lignes de notre usine, à partir d’un petit script sur le PC du superviseur. C’est l’API Commands avec une clé d’API.Votre carte de commutation envoie déjà une commande, et les cartes ne peuvent envoyer que les commandes présentes dans le catalogue Commands du profil d’appareil au niveau Basic. La méthode existe donc. Pour voir son nom exact et ses paramètres, interrogez l’API avec la même clé que vous allez créer : GET /tenant/<tenantId>/api/iot/devices/<deviceId>/rpc-commands liste ce qu’une commande peut envoyer à cet appareil.Créez la clé sous API Keys : accordez-lui la permission d’envoyer des commandes de base et de lire les commandes, ajoutez l’adresse de votre bureau à la liste d’adresses IP autorisées, puis choisissez une date d’expiration. Ensuite :

#!/bin/sh
# ~/bin/office-lights  (chmod 700)
KEY=$(cat ~/.config/hermetry/key)
curl -s -X POST "https://<your host>/tenant/<tenantId>/api/iot/devices/<deviceId>/rpc" 
  -H "Authorization: Bearer $KEY" 
  -H "Content-Type: application/json" 
  -d "{"method":"light.set","params":{"on":$1},"timeoutMs":10000}"

Une commande bidirectionnelle avec un délai d’expiration de 30 secondes ou moins attend et répond 200 avec le statut, vous voyez donc SUCCESSFUL ou l’erreur dans le terminal. Associez office-lights true et office-lights false à deux raccourcis et c’est terminé. Une clé d’API ne peut envoyer que les méthodes présentes dans le catalogue, ce qui est d’ailleurs ce que vous voulez ici.Documentation : Commands API.

Ground loops are my cardio.
Solution acceptée♥ 9

Traduit de English par IA ·

Les clés expirent par défaut après 90 jours (un an au maximum), alors notez quelque part un rappel, sinon votre raccourci cessera discrètement de fonctionner au bout de trois mois. Et gardez le fichier de clé en chmod 600, pas dans votre dépôt de dotfiles.

♥ 0

Traduit de English par IA ·

Ça marche. Mon seul souci : le catalogue ne contient pas light.set, notre intégrateur l’a appelé relay.set avec un paramètre state (0 ou 1). L’appel rpc-commands l’a tout de suite affiché. Le premier raccourci était Super+L, qui bien sûr verrouille l’écran ; il est maintenant sur Super+F9.

♥ 0

Traduit de English par IA ·

+1, je garde ça pour la porte de garage à la maison

♥ 0

Traduit de English par IA ·

Super. Nous avons ajouté une invite « Êtes-vous sûr ? » à la nôtre pour les lumières du quai, après que quelqu’un les a éteintes alors qu’un chauffeur faisait encore marche arrière.

♥ 0
9 sujets de 1 à 9 (sur un total de 9)
  • Vous devez être connecté pour répondre à ce sujet.

Rejoignez la discussion

Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

Partager