Azure IoT Hub Framework 3.5 - PullRequest
       39

Azure IoT Hub Framework 3.5

0 голосов
/ 03 июня 2018

Есть ли хорошие руководства или руководства по использованию Azure IoT Hub с использованием протокола MQTT на устройствах с платформой 3.5?Я нашел клиента M2MQTT, но он не будет работать с концентратором IoT Azure.

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

IoT Hub позволяет устройствам обмениваться данными с конечными точками устройства IoT Hub, используя протокол MQTT v3.1.1 напрямую.Вы можете взглянуть на этот документ .В документе учебник написан на языке Python, следующий код представляет собой полный пример для C # с использованием uPLibrary.Networking.M2Mqtt.

C # Пример:

    private static string hostName = "<iothub-hosename>";
    private static int port = 8883;
    private static string deviceId = "<deviceid>";
    private static string userName = "";
    private static string password = "";
    private static string certBase64 = "<DigiCert Baltimore Root Certificate>";

    static void Main(string[] args)
    {

        try
        {
            userName = $"{hostName}/{deviceId}/api-version=2016-11-14";
            password = $"SharedAccessSignature sr=<SAS Token>";

            byte[] certBytes = Convert.FromBase64String(certBase64);
            X509Certificate caCert = new X509Certificate(certBytes);

            MqttClient client = new MqttClient(hostName, port, true, caCert, null , MqttSslProtocols.TLSv1_0);
            client.ProtocolVersion = MqttProtocolVersion.Version_3_1_1;

            client.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;
            client.MqttMsgPublished += Client_MqttMsgPublished;
            client.ConnectionClosed += Client_ConnectionClosed;
            client.Connect(deviceId, userName, password);
            if(client.IsConnected)
            {
                //To receive messages from IoT Hub, a device should subscribe using devices/{device_id}/messages/devicebound/# as a Topic Filter. 
                client.Subscribe(new string[] { $"devices/{deviceId}/messages/devicebound/#" }, new byte[] { MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE });

                //After making a successful connection, a device can send messages to IoT Hub using devices/{device_id}/messages/events/ or devices/{device_id}/messages/events/{property_bag} as a Topic Name. 
                client.Publish($"devices/{deviceid}/messages/events/", System.Text.Encoding.ASCII.GetBytes("{id=123}"), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false);
            }
        }
        catch(Exception ex)
        {
            Console.Write(ex.Message);
        }

        Console.Read();
    }

    private static void Client_MqttMsgPublished(object sender, MqttMsgPublishedEventArgs e)
    {
        Console.WriteLine("Mqtt Published Message-[MsgId:{0}]:{1}", e.MessageId, e.IsPublished ? "Success": "Failure");
    }

    private static void Client_ConnectionClosed(object sender, EventArgs e)
    {
        Console.WriteLine("ConnectionClosed");
    }

    private static void Client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
    {
        Console.WriteLine(System.Text.Encoding.ASCII.GetString(e.Message));
    }

В коде вам может потребоваться скопировать корневой сертификат DigiCert Baltimore в certBase64 из certs.c в виде строки base64 (удалите строки -----BEGIN CERTIFICATE----- и-----END CERTIFICATE----- и удалите \r\n\).

Обновление: enter image description here

Как получить токен SAS?

Можно использовать Device Explorer для генерации токенов SAS, см. Раздел устройства Использование токенов безопасности IoT Hub .

0 голосов
/ 03 июня 2018

Имеется в виду SDK устройства Azure IoT Hub для .NET , и он работает с .NET Framework 3.5 ?Согласно документации GitHub , IoT Hub SDK для .NET поддерживает только .NET Framework 4.5.1 и более поздние версии.

В качестве альтернативы, просто используя Azure IoT Hub Rest API - тогда вы можете отправлять HTTP-запросы из своего устаревшего кода .NET Framework 3.5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...