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

Raspberry Pi interroge le dernier niveau du réservoir via l'API et reçoit toujours une erreur 401

Raspberry Pi interroge le dernier niveau du réservoir via l'API et reçoit toujours une erreur 401

Résolu 4 3

Traduit de English par IA ·

Je débute dans le domaine de l’IoT, je suis développeur backend et on m’a confié ce projet.Nous avons déjà un capteur de niveau de réservoir qui remonte ses données vers Hermetry (appareil « tank-01 », clé level_pct). Quelqu’un veut un Pi au bureau qui fasse retentir un buzzer lorsque le niveau dépasse 90. Mon plan était un petit service Python sur le Pi qui interroge Hermetry toutes les 5 secondes pour obtenir la dernière valeur. J’ai copié le jeton d’accès depuis la page de tank-01 et j’ai fait ceci :

GET https://<host>/api/telemetry/latest?kind=iot_device&entityId=6f1c...&keys=level_pct
Authorization: Bearer <tank-01 token>
-> 401

J’ai essayé avec et sans « Bearer », même résultat. Le jeton est-il faux, ou est-ce le mauvais point de terminaison ?

Measure twice, poll once.
♥ 0

Traduit de English par IA ·

Ceci est un identifiant d’appareil. Il permet à un appareil de se connecter, il ne lit rien pour vous. L’API de gestion demande une clé API. De plus, interroger toutes les 5 secondes, c’est beaucoup pour un buzzer.

Measure twice, poll once.
♥ 0

Traduit de English par IA ·

Brian a raison, et il te manque aussi le préfixe de l’organisation. J’ai monté à peu près la même chose pour une chambre froide l’an dernier.1. API Keys (Developer menu) > New API Key. Sous Module permissions, donne uniquement un accès en lecture seule à la télémétrie, rien d’autre. Définis une liste d’adresses IP autorisées sur celle du bureau et note la date d’expiration : par défaut 90 jours, un an au maximum. Mets un rappel dans l’agenda, la nôtre a expiré un samedi.2. Tous les chemins de gestion se trouvent sous le tenant :

GET https://<host>/tenant/<tenantId>/api/telemetry/latest?kind=iot_device&entityId=<deviceId>&keys=level_pct
Authorization: Bearer sk_live_...

La réponse ressemble à {« latest »: {« level_pct »: {« ts »: …, « value »: 91.2}}}. Compare le ts avec le précédent pour ne pas faire biper deux fois sur la même mesure.3. Gère le 429 et attends le nombre de secondes indiqué par Retry-After. Interroge toutes les 30 s environ, le réservoir ne se remplit pas en 5 s.L’autre solution, si tu veux un résultat instantané : fais du Pi un device à part entière, crée une règle sur le réservoir qui lui envoie une commande lorsque level_pct dépasse 90, et laisse le Pi attendre sur GET /api/v1/rpc avec son propre token de device. Plus de pièces mobiles, pas de polling. Pour un buzzer, je prendrais la clé API. Les conventions sont décrites dans REST API basics.

Solution acceptée♥ 5

Traduit de English par IA ·

C’étaient deux bugs : le token et la partie /tenant/<tenantId> manquante (j’ai eu un 404 une fois la clé obtenue, puis je m’en suis rendu compte). Ça tourne à 30 s maintenant avec une clé en lecture seule limitée à notre IP. Le buzzer a retenti ce matin quand ils l’ont rempli, donc ça marche.

Measure twice, poll once.
♥ 0

Traduit de English par IA ·

Stockez la clé dans un fichier accessible uniquement à root, et non dans le script que vous collerez un jour dans un ticket.

Measure twice, poll once.
♥ 1
5 sujets de 1 à 5 (sur un total de 5)
  • 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