Tous les produits
Search
Centre de documentation

IoT Platform:Connexion d'un appareil à IoT Platform avec Paho MQTT pour Go

Dernière mise à jour :Aug 09, 2026

Connectez un appareil à Alibaba Cloud IoT Platform et échangez des messages en utilisant la bibliothèque Paho MQTT pour Go.

Remarques sur l'utilisation

Toutes les opérations décrites dans cette rubrique utilisent des autorisations utilisateur standard. Exécutez la commande sudo si une opération requiert des privilèges administrateur.

Prérequis

Un produit et un appareil doivent être créés dans la console IoT Platform, et les informations de certificat de l'appareil (ProductKey, DeviceName et DeviceSecret) doivent être obtenues. Instructions de configuration :

Préparation de l'environnement de développement

Installez Go :

  • Sous macOS, exécutez la commande suivante :

    brew install go
  • Sous Ubuntu, exécutez la commande suivante :

    sudo apt-get install golang-go
  • Sous Windows, téléchargez et installez Go depuis le site officiel de Go.

    Remarque

    Les utilisateurs situés en Chine continentale doivent utiliser un VPN pour accéder au site officiel de Go.

Téléchargement de la bibliothèque Paho MQTT pour Go

Le projet Paho prend en charge plusieurs langages de programmation. Les liens de téléchargement sont disponibles sur la page Eclipse Paho Downloads.

Exécutez les commandes suivantes pour installer la bibliothèque Paho MQTT et ses dépendances :

go get github.com/eclipse/paho.mqtt.golang
go get github.com/gorilla/websocket
go get golang.org/x/net/proxy

Connexion d'un appareil à IoT Platform

  1. Téléchargez le fichier MqttSign.go fourni par Alibaba Cloud. Ce fichier contient le code source nécessaire pour obtenir les paramètres de connexion MQTT.

    Le fichier MqttSign.go définit une fonction qui génère les paramètres de connexion MQTT. Appelez cette fonction pour connecter votre appareil à IoT Platform.

    • Définition :

      type AuthInfo struct {
          password, username, mqttClientId string;
      }
      
      func calculate_sign(clientId, productKey, deviceName, deviceSecret, timeStamp string) AuthInfo;
    • Description :

      Renvoie les paramètres de connexion MQTT : username, password et mqttClientId.

    • Paramètres d'entrée :

      Paramètre

      Type

      Description

      productKey

      String

      ProductKey du produit auquel l'appareil appartient.

      deviceName

      String

      DeviceName de l'appareil.

      deviceSecret

      String

      DeviceSecret de l'appareil.

      clientId

      String

      ID de l'appareil. Jusqu'à 64 caractères. Il est recommandé d'utiliser l'adresse MAC ou le numéro de série (SN) de l'appareil.

      timeStamp

      String

      Horodatage de l'heure actuelle. Unité : millisecondes.

    • Paramètres de sortie :

      Cette fonction renvoie une structure AuthInfo contenant les champs suivants :

      Paramètre

      Type

      Description

      username

      String

      Nom d'utilisateur pour la connexion MQTT.

      password

      String

      Mot de passe pour la connexion MQTT.

      mqttClientId

      String

      ID du client MQTT.

  2. Ajoutez un fichier programme pour connecter un appareil à IoT Platform.

    Écrivez un programme qui appelle la fonction située dans le fichier MqttSign.go afin d'obtenir les paramètres de connexion MQTT.

    Les sections suivantes décrivent comment développer le programme de l'appareil à l'aide d'exemples de code.

    • Spécifiez les informations de l'appareil.

      // set the device info, include product key, device name, and device secret
          var productKey string = "a1Zd7n5***"
          var deviceName string = "testdevice"
          var deviceSecret string = "UrwclDV33NaFSmk0JaBxNTqgSrJW****"
      
          // set timestamp, clientid, subscribe topic and publish topic
          var timeStamp string = "1528018257135"
          var clientId string = "192.168.****"
          var subTopic string = "/" + productKey + "/" + deviceName + "/user/get";
          var pubTopic string = "/" + productKey + "/" + deviceName + "/user/update";
    • Spécifiez les informations de connexion MQTT.

      Appelez la fonction calculate_sign() du fichier MqttSign.go. Cette fonction renvoie les paramètres username, password et mqttClientId en fonction des entrées clientId, productKey, deviceName, deviceSecret et timeStamp. Ajoutez le résultat à la structure opts.

          // set the login broker url
          var raw_broker bytes.Buffer
          raw_broker.WriteString("tls://")
          raw_broker.WriteString(productKey)
          raw_broker.WriteString(".iot-as-mqtt.cn-shanghai.aliyuncs.com:1883")
          opts := MQTT.NewClientOptions().AddBroker(raw_broker.String());
      
          // calculate the login auth info, and set it into the connection options
          auth := calculate_sign(clientId, productKey, deviceName, deviceSecret, timeStamp)
          opts.SetClientID(auth.mqttClientId)
          opts.SetUsername(auth.username)
          opts.SetPassword(auth.password)
          opts.SetKeepAlive(60 * 2 * time.Second)
          opts.SetDefaultPublishHandler(f)
      Important
      • Si vous utilisez une instance publique de l'ancienne version, remplacez cn-shanghai dans raw_broker.WriteString(".iot-as-mqtt.cn-shanghai.aliyuncs.com:1883") par l'ID de la région où se trouve votre appareil. Pour obtenir la liste des ID de région, consultez la page Liste des régions.

      • Si vous utilisez une instance Enterprise Edition ou une instance publique de la nouvelle version, remplacez raw_broker.String() dans opts := MQTT.NewClientOptions().AddBroker(raw_broker.String()); par $<MQTT endpoint>:1833. Exemple : opts := MQTT.NewClientOptions().AddBroker("iot-***.mqtt.iothub.aliyuncs.com:1883");.

        Pour savoir comment obtenir les points de terminaison MQTT, consultez la page Afficher les points de terminaison des instances publiques et Enterprise Edition.

      Pour plus d'informations sur les instances IoT Platform, consultez la page Présentation des instances.

    • Appelez la fonction Connect() de la bibliothèque Paho MQTT pour Go afin de connecter l'appareil à IoT Platform.

          // create and start a client using the above ClientOptions
          c := MQTT.NewClient(opts)
          if token := c.Connect(); token.Wait() && token.Error() != nil {
              panic(token.Error())
          }
          fmt.Print("Connect aliyun IoT Cloud Success\n");
    • Appelez Publish() pour publier des messages. Spécifiez la rubrique cible et la charge utile du message.

          // publish 5 messages to pubTopic("/a1Zd7n5****/deng/user/update")
          for i := 0; i < 5; i++ {
              fmt.Println("publish msg:", i)
              text := fmt.Sprintf("ABC #%d", i)
              token := c.Publish(pubTopic, 0, false, text)
              fmt.Println("publish msg: ", text)
              token.Wait()
              time.Sleep(2 * time.Second)
          }

      Pour en savoir plus sur les rubriques, consultez la page Qu'est-ce qu'une rubrique ?

    • Appelez Subscribe() pour s'abonner à une rubrique et recevoir des messages provenant d'IoT Platform.

          // subscribe to subTopic("/a1Zd7n5***/deng/user/get") and request messages to be delivered
          if token := c.Subscribe(subTopic, 0, nil); token.Wait() && token.Error() != nil {
              fmt.Println(token.Error())
              os.Exit(1)
          }
          fmt.Print("Subscribe topic " + subTopic + " success\n");
                                      

    Pour en savoir plus sur les modèles de communication entre l'appareil et le cloud, consultez la page Présentation des communications entre les appareils, IoT Platform et les serveurs.

  3. Compilez le projet.

Exemple de code

Connectez un appareil à IoT Platform en utilisant l'exemple de code fourni.

  1. Téléchargez et décompressez le package de démonstration.

    Le package aiot-go-demo contient les fichiers suivants :

    Fichier

    Description

    MqttSign.go

    Contient le code permettant de générer les paramètres de connexion MQTT. Lorsque le fichier iot.go s'exécute, il appelle calculate_sign() pour obtenir les paramètres username, password et mqttClientId.

    iot.go

    Contient la logique de connexion d'un appareil à IoT Platform et d'activation de la communication.

    x509

    Certificat racine d'IoT Platform, requis pour les connexions des appareils.

    Remarque

    Si vous connectez un appareil à IoT Platform via une passerelle cloud MQTT, vous pouvez utiliser un certificat personnalisé pour vérifier l'identité de l'appareil. Pour plus d'informations, consultez l'Étape 1 : Générer des certificats personnalisés.

  2. Remplacez les informations de l'appareil dans le fichier iot.go par vos propres informations.

    Utilisez un éditeur de texte pour modifier le fichier iot.go :

    • Remplacez les valeurs des paramètres productKey, deviceName et deviceSecret par les informations de certificat de votre appareil.

    • Facultatif : configurez les paramètres timeStamp et clientId. Vous pouvez remplacer la valeur du paramètre clientId par l'adresse MAC ou le numéro de série (SN) de votre appareil.

      Ces paramètres sont facultatifs pour la connectivité, mais il est recommandé de les définir avec des valeurs réelles.

    • Modifiez les paramètres de connexion MQTT utilisés pour connecter l'appareil à IoT Platform. Pour plus d'informations, reportez-vous à l'étape 2 de la section « Connexion d'un appareil à IoT Platform » de cette rubrique.

  3. Exécutez la commande suivante dans l'invite de commandes pour lancer le fichier iot.go :

    go run iot.go MqttSign.go 

    Après l'exécution, les journaux locaux suivants sont générés :

    clientId192.168.****deviceNametestdeviceproductKeya1Zd7n5****timestamp1528018257135
    1b865320fc183cc747041c9faffc9055fc45****
    Connect aliyun IoT Cloud Success
    Subscribe topic /a1Zd7n5****/testdevice/user/get success
    publish msg: 0
    publish msg:  ABC #0
    publish msg: 1
    publish msg:  ABC #1
    publish msg: 2
    publish msg:  ABC #2
    publish msg: 3
    publish msg:  ABC #3
    publish msg: 4
    publish msg:  ABC #4
    publish msg: 5
    publish msg:  ABC #5

    Connectez-vous à la console IoT Platform pour afficher l'état de l'appareil et les journaux de votre instance.

    • Dans le volet de navigation de gauche, choisissez Device Management > Devices. Vous constaterez que l'état de l'appareil est Online.

    • Choisissez Monitoring & O&M > Log Service. Vous pouvez consulter les IoT Platform logs et les on-premises device logs. Pour plus d'informations, consultez les pages Journaux IoT Platform et Journaux des appareils locaux.

Codes d'erreur

Si l'appareil ne parvient pas à se connecter à IoT Platform via MQTT, utilisez les codes d'erreur pour résoudre le problème. Pour plus d'informations sur les codes d'erreur côté serveur, consultez la page Dépannage.