MQTT.fx est un client MQTT basé sur Java et construit sur Eclipse Paho, compatible avec Windows, Mac et Linux. Utilisez MQTT.fx pour vérifier la connectivité des appareils avec IoT Platform, vous abonner à des topics et publier des messages. Cette rubrique explique comment utiliser MQTT.fx sous Windows pour simuler la connexion d'un appareil MQTT à IoT Platform.
Prérequis
-
Créez un produit et un appareil, puis obtenez les paramètres de connexion MQTT.Créer un produit et un appareil,Obtenir les valeurs des paramètres de signature MQTT.
Cet exemple utilise le certificat de l'appareil et les paramètres de connexion MQTT présentés dans le tableau suivant, comme décrit dans la rubrique Connexion MQTT-TLS.
Paramètre Valeur ProductKey a1***DeviceName device1DeviceSecret f35***d9eclientId `a1***.device1securemode=2,signmethod=hmacsha256,timestamp=2524608000000
`
username device1&a1***passwd 86761***21dmqttHostUrl a1***.iot-as-mqtt.cn-shanghai.aliyuncs.comport 1883 -
Définissez une propriété du modèle TSL pour tester la communication montante et descendante.Définir un modèle TSL pour un produit.
Cet exemple définit le modèle TSL illustré dans la figure suivante :

Les appareils simulés par MQTT.fx en ligne prennent uniquement en charge la communication non transparente. Pour tester la communication transparente, utilisez un appareil physique ou un SDK.
Configuration de la connexion MQTT.fx
-
Téléchargez et installez MQTT.fx.
Cette rubrique utilise mqttfx-5.2.0-windows-x64 à titre d'exemple. L'interface utilisateur réelle peut différer des captures d'écran.
RemarqueDemandez une licence pour l'outil MQTT.fx si nécessaire.
Ouvrez MQTT.fx. Dans la barre de menus, cliquez sur Extras et sélectionnez Edit Connection Profiles.
-
Sur la page Edit Connection Profiles, configurez les paramètres suivants.
-
Configurez les informations de base.
Paramètre Description Profile Name Saisissez un nom personnalisé, par exemple iot connection. Profile Type Pour la connexion du client ApsaraMQ for MQTT, sélectionnez MQTT Broker. Broker Address Domaine de connexion MQTT. Utilisez la valeur de la section Prérequis : a1***.iot-as-mqtt.cn-shanghai.aliyuncs.com. - a1*** correspond au ProductKey du produit dans cet exemple.
- cn-shanghai correspond à la région dans cet exemple.
N'incluez pas le numéro de port.
Broker Port Définissez ce paramètre sur 1883. Client ID Champ de protocole MQTT. Format fixe :
${ClientId}|securemode=${Mode},signmethod=${SignMethod}|timestamp=${timestamp}|.Saisissez la valeur clientId obtenue dans la section Prérequis : a1***.device1|securemode=2,signmethod=hmacsha256,timestamp=2524608000000|.
Description des paramètres :
- ${ClientId} : ID client de l'appareil, de l'application ou du client web.Important Cette valeur doit être personnalisée et comporter moins de 64 caractères. Pour un appareil, utilisez son adresse MAC ou son numéro de série (SN). Cela vous aide à identifier les différents appareils.
- ${Mode} : Mode de sécurité. Les valeurs valides sont 2 (mode de connexion directe TLS, qui nécessite de configurer les paramètres SSL/TLS) et 3 (mode de connexion directe TCP, qui ne nécessite pas de configurer les paramètres SSL/TLS).
- ${SignMethod} : Type d'algorithme. Les valeurs prises en charge sont hmacsha256, hmacmd5 et hmacsha1.
- ${timestamp} : Heure actuelle en millisecondes. Vous pouvez laisser le paramètre timestamp vide.
Dans les paramètres de connexion fournis par IoT Platform, ${ClientId} est par défaut une chaîne composée de
${ProductKey} + '.' + ${DeviceName}, ${Mode} est par défaut 2 et ${SignMethod} est par défaut hmacsha256. Vous pouvez les modifier selon vos besoins.Important- Ne confondez pas le Client ID dans MQTT.fx avec le ${ClientId} de l'appareil.
- N'omettez pas les barres verticales (|) entre les paramètres ou à la fin de la chaîne.
- Lorsque vous définissez les paramètres, assurez-vous qu'il n'y a aucun espace dans ou autour des valeurs des paramètres.
- Après avoir saisi le Client ID, ne cliquez pas sur Generate.
General Utilise la valeur par défaut. Ajustez selon vos besoins. -
Cliquez sur User Credentials, cochez la case Use Username/Password et définissez les champs User Name et Password.
Paramètre Description User Name Format : ${DeviceName}&${ProductKey}.Saisissez la valeur username obtenue dans la section Prérequis : device1&a1***.
device1correspond au DeviceName de l'appareil.a1***correspond au ProductKey de l'appareil.
Password Généré en chiffrant les paramètres concaténés à l'aide du DeviceSecret et de la méthode de signature sélectionnée. Saisissez la valeur passwd obtenue dans la section Prérequis : 86761***21d.
Important- Dans certaines versions de MQTT.fx, la chaîne de mot de passe ne s'affiche pas après le collage. Si le curseur se déplace à la fin de la zone de texte, le collage a réussi. Ne collez pas à nouveau le mot de passe.
- Les paramètres et leurs valeurs sont sensibles à la casse.
- Client IDSi vous modifiez les paramètres ${ClientId} ou ${SignMethod} dans le Client ID, vous devez recalculer le mot de passe. Assurez-vous que le nouveau mot de passe utilise des valeurs correspondant aux paramètres mis à jour. Pour plus d'informations sur la configuration des paramètres et les méthodes de calcul, consultez les rubriques Calculer un mot de passe à l'aide d'un script Node.js.
-
Pour le mode de connexion directe TLS (securemode=2), cliquez sur SSL/TLS, cochez la case Enable SSL/TLS et définissez le paramètre Protocol sur TLSv1.2.
ImportantPour le mode de connexion directe TCP (
securemode=3
), vous n'avez pas besoin de configurer les paramètres SSL/TLS. Passez à l'étape suivante.
-
Une fois la configuration terminée, cliquez sur OK en bas à droite.
-
Cliquez sur Connect.
Un voyant vert à droite indique une connexion réussie.
Dans la console IoT Platform, sous l'instance correspondante, accédez à . Sélectionnez le produit pour afficher l'état de l'appareil. L'état de l'appareil doit être Online.
Les sections suivantes expliquent comment tester la communication montante et descendante à l'aide de topics personnalisés et de topics de modèle TSL. Si vos résultats diffèrent de cet exemple, la connexion a échoué. Corrigez la configuration en vous basant sur les informations du journal.
Communication à l'aide de topics personnalisés
Pour plus de détails sur les topics personnalisés, consultez la rubrique
Communication à l'aide de topics personnalisés
. Cet exemple utilise les topics personnalisés par défaut fournis par IoT Platform :
| Topic | Autorisation | Description |
/a1***/device1/user/update/error |
Publish | Montante : L'appareil publie des messages vers IoT Platform. |
/a1***/device1/user/get |
Subscribe | Descendante : L'appareil s'abonne pour recevoir des messages d'IoT Platform. |
Communication montante
Dans MQTT.fx, cliquez sur Publish. Dans la zone de texte Publish, saisissez un topic disposant des autorisations Publish :
/a1***/device1/user/update/error.-
Dans le volet de l'éditeur de texte, saisissez le contenu du message, puis cliquez sur Publish.
Dans la zone de texte Topic, saisissez un chemin de topic personnalisé, par exemple
/${productKey}/${deviceName}/user/update/error. Définissez QoS sur QoS 0. Dans le volet de l'éditeur de message, saisissez le contenu de test, par exemple This is a publish test.. -
Connectez-vous à la console IoT Platform. Sur la page Simple Log Service de l'instance, consultez les journaux Device-to-Cloud Messages. Interroger les journaux IoT Platform.
Dans la liste des journaux, cliquez sur View Details pour l'entrée de journal cible afin d'afficher le Topic du message (tel que
/productKey/deviceName/user/update/error) et le Content (tel queThis is a publish test.). Un statut de journal 200 indique que le message a été envoyé avec succès.
Communication descendante
Dans MQTT.fx, cliquez sur Subscribe. Dans la zone de texte Subscribe, saisissez un topic disposant des autorisations Subscribe :
/a1***/device1/user/get.-
Cliquez sur Subscribe.
Une fois l'abonnement réussi, le topic apparaît dans la liste.
Connectez-vous à la console IoT Platform. Sous l'instance, accédez à .
Dans la colonne Actions de l'appareil, cliquez sur View pour accéder à la page Device Details.
Cliquez sur l'onglet Topic List. Dans la colonne Actions du topic abonné, cliquez sur Publish Message.
Saisissez le contenu du message, par exemple This is a test., et cliquez sur OK.
-
Revenez à MQTT.fx pour afficher le message reçu.
Dans l'onglet Subscribe, le topic personnalisé abonné
/${productKey}/device1/user/geta reçu 1 message. Le contenu du message estThis is a test, le QoS est 0 et le Content Type esttext/plain, ce qui indique que le message de l'appareil a été livré avec succès via le topic personnalisé et reçu par le client.
Communication à l'aide de topics de modèle TSL
Pour les topics de communication du modèle TSL, consultez la rubrique
. Cet exemple utilise les topics de communication de modèle TSL suivants :
| Topic | Autorisation | Description |
/sys/a1****/device1/thing/event/property/post |
Publish | Montante : L'appareil signale les données de propriété à IoT Platform. |
/sys/a1****/device1/thing/event/property/post_reply |
Subscribe | Descendante : L'appareil s'abonne pour recevoir les réponses aux rapports de propriété d'IoT Platform. |
/sys/a1****/device1/thing/service/property/set |
Subscribe | Descendante : L'appareil s'abonne pour recevoir les commandes de définition de propriété d'IoT Platform. |
Rapport des propriétés par l'appareil
Dans MQTT.fx, cliquez sur Subscribe. Dans la zone de texte Subscribe, saisissez un topic disposant des autorisations Subscribe :
/sys/a1****/device1/thing/event/property/post_reply.Dans MQTT.fx, cliquez sur Publish. Dans la zone de texte Publish, saisissez un topic disposant des autorisations Publish :
/sys/a1****/device1/thing/event/property/post.-
Dans le volet de l'éditeur de texte, saisissez les données de propriété que vous souhaitez signaler, puis cliquez sur Publish.
Les données de propriété signalées doivent utiliser le format JSON Alink standard, comme décrit dans la rubrique
Rapport des propriétés par l'appareil
. Cet exemple signale les données des propriétés
LightCurrent
et
LightSwitch
.
Le corps du message JSON Alink inclut
method(défini surthing.event.property.post),id,params(contenant les valeurs de propriété de LightSwitch et LightCurrent), etversion. Connectez-vous à la console IoT Platform. Sous l'instance, accédez à .
Dans la colonne Actions de l'appareil, cliquez sur View. Sur la page Device Details, cliquez sur TSL Model Data pour afficher les données de l'appareil.
Définir les propriétés de l'appareil
Dans MQTT.fx, cliquez sur Subscribe. Dans la zone de texte Subscribe, saisissez un topic disposant des autorisations Subscribe :
/sys/a1****/device1/thing/service/property/set.Connectez-vous à la console IoT Platform. Sous l'instance, accédez à .
Sélectionnez l'appareil à déboguer. Sur l'onglet Property Debugging, définissez Main Light Switch sur Off-0.
Cliquez sur Set pour envoyer l'instruction.
-
Dans MQTT.fx, sur l'onglet Subscribe, affichez le message reçu par l'appareil.
Voici un exemple du message reçu :
/sys/axxxxx/device1/thing/service/property/set {"method":"thing.service.property.set","id":"2016306076","params":{"LightSwitch":0},"version":"1.0.0"}
Affichage des journaux
Connectez-vous à la console IoT Platform. Sur la page Simple Log Service de l'instance, consultez les journaux opérationnels, y compris l'heure, le TraceID et le type d'activité.Interroger les journaux IoT Platform.
-
Dans MQTT.fx, cliquez sur Log pour afficher les journaux d'opération et les journaux d'erreur. Voici un exemple de sortie de journal :
INFO --- MqttFX ClientModel : messageArrived() with topic: /ext/error/axxx0/device1 INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : addPublishTopic : /a1xxx/device1/user/get INFO --- MqttFX ClientModel : sucessfully published message test to topic /axxx/device1/user/g INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : sucessfully published message test to topic /axxx/device1/user/g INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : sucessfully published message test to topic /axxx/device1/user/g INFO --- BrokerConnectorController : onDisconnect INFO --- ScriptsController : Clear console. INFO --- MqttFX ClientModel : Cancel script excution. INFO --- ScriptsController : Clear console. INFO --- MqttFX ClientModel : Cancel script excution. INFO --- ScriptsController : Clear console. INFO --- ScriptsController : Clear console. INFO --- BrokerConnectorController : onConnect INFO --- ScriptsController : Clear console. INFO --- MqttFX ClientModel : MqttClient with ID a1xxx0.device1|securemode=2,signmethod=hmacsha INFO --- MqttFX ClientModel : session present: false INFO --- SubscribeController : onSubscribe INFO --- MqttFX ClientModel : rebuildMessagesList() INFO --- MqttFX ClientModel : attempt to addRecentSubscriptionTopic INFO --- MqttFX ClientModel : addRecentSubscriptionTopic : de.jensd.mqttfx.entities.Topixxx1 INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : addPublishTopic : /axxx/device1/user/get INFO --- MqttFX ClientModel : sucessfully subscribed to topic /a1xxxSp0/device1/user/get (QoS 0) INFO --- MqttFX ClientModel : messageArrived() with topic: /a1Kucxxx/device1/user/get INFO --- MqttFX ClientModel : messageArrived() added: message #1 to topic '/axxx/device1/user/ INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : addPublishTopic : /a1xxx/device1/user/update/error INFO --- MqttFX ClientModel : sucessfully published message This is a publish test. to topic /a1Kuc5