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

Afficher la température en direct sur ma propre page web : MQTT WebSocket, ou une autre solution ?

Afficher la température en direct sur ma propre page web : MQTT WebSocket, ou une autre solution ?

Résolu 6 4

Traduit de Türkçe par IA ·

Bonjour, c’est mon premier message, je ne fais que lire depuis longtemps. Dans la serre, je mesure la température et l’humidité avec un ESP32, les données partent vers Hermetry en MQTT et ça rend bien sur le tableau de bord. Mais je veux faire une page très simple qui s’ouvrira sur le téléphone de mes parents, avec un seul chiffre : « combien de degrés dans la serre ».Auparavant, j’avais installé Mosquitto à la maison, où j’ouvrais un listener WebSocket et je me connectais directement depuis le navigateur avec MQTT.js, c’était très facile. J’ai essayé la même chose avec Hermetry, j’ai mis le token de l’appareil dans la page et j’essaie de me connecter comme ceci :

const client = mqtt.connect('wss://<broker host>:8883/mqtt', {
  username: 'cihaz_tokeni',
  password: ''
});

La console affiche cette erreur :

WebSocket connection to 'wss://<broker host>:8883/mqtt' failed

Le port est-il faux, ou dois-je activer WebSocket quelque part ? Ou bien se connecter directement depuis le navigateur est-il une mauvaise idée ?

♥ 0

Traduit de Türkçe par IA ·

Un navigateur ne peut pas parler du MQTT en TCP brut, donc WebSocket est indispensable. 8883 est le port MQTT/TLS habituel, et je pense qu’il n’y a pas de WebSocket dessus. Honnêtement, je ne sais pas si Hermetry dispose d’un port ws séparé.

♥ 0

Traduit de Türkçe par IA ·

Le port mis à part, si tu mets le token de l’appareil dans la page, quiconque regarde le code source de la page peut publier des données au nom de ton appareil avec ce token. La température de la serre affiche 80 degrés, ta mère va paniquer 🙂 Retire le token de là.

♥ 1

Traduit de Türkçe par IA ·

Vous avez raison, je n’y avais pas pensé. La page était déjà hébergée sur GitHub Pages 😬 J’ai supprimé le token. Alors, comment dois-je procéder maintenant ?

♥ 0

Traduit de Türkçe par IA ·

La documentation indique pour les appareils MQTT 3.1.1 (8883 TLS, 1883 si le profil l’autorise) et HTTPS, sans MQTT via websocket. Le chemin du navigateur vers le broker est donc fermé, et je trouve que c’est bien ainsi, car le jeton de l’appareil est l’identité de l’appareil, et non celle du lecteur.La lecture se fait via l’API REST. Pour les dernières valeurs, il existe ce point de terminaison :

GET /tenant/<tenantId>/api/telemetry/latest?kind=iot_device&entityId=<cihazId>&keys=temperature,humidity
Authorization: Bearer sk_live_...

Mais la clé API ne doit pas non plus être placée dans le navigateur, c’est le même problème. Chez moi, j’ai fait ainsi : sur un Raspberry Pi à la maison, une application Flask de 20 lignes tourne, et la clé est stockée dans sa variable d’environnement. La page interroge Flask sur /sera, Flask interroge Hermetry et ne renvoie que deux chiffres.Lors de la création de la clé, sur la page API Keys, n’accorde que le droit de lecture de la télémétrie (les modules proposent le préréglage prêt à l’emploi Read only) et indique l’IP publique de la maison dans la liste d’IP autorisées. La clé n’est affichée qu’une seule fois, alors n’oublie pas de la copier.Détails : API d’historique et la page d’authentification. Encore plus simple : créer un petit tableau de bord dans Hermetry et inviter ta mère dans l’organisation en tant qu’utilisatrice, mais si tu veux une page d’un seul chiffre pour ton téléphone, la solution Flask est pratique.

Sahadan selamlar.
Solution acceptée♥ 9

Traduit de Türkçe par IA ·

C’est fait ! Flask tourne sur le Pi, et la page interroge le serveur toutes les 30 secondes. D’abord j’ai eu une erreur 401, j’avais oublié d’écrire « Bearer » devant la clé. De plus, l’IP de la maison est variable : l’IP que j’avais inscrite dans la liste d’autorisation a changé le lendemain, alors je l’ai laissée vide pour le moment. Je vais demander une IP fixe à mon modem.

♥ 0

Traduit de Türkçe par IA ·

+1. La durée de validité par défaut de la clé est de 90 jours, notez-la dans votre calendrier, sinon la page s’affichera silencieusement vide au bout de trois mois.

♥ 0
7 sujets de 1 à 7 (sur un total de 7)
  • 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