DeviceClient.GetTwinAsync() возвращает значение null?

Я создал IoTHub, добавил устройство, создал приложение UWP, которое использует DeviceClient для успешного подключения к концентратору. Я могу отправить телеметрию, как и ожидалось, и увидеть результаты в обозревателе устройств.

Однако, когда я пытаюсь получить двойник устройства, мне возвращается нуль.

    var deviceClient = DeviceClient.CreateFromConnectionString(deviceConnectionString, TransportType.Amqp);
    var twin = await deviceClient.GetTwinAsync();  // <<<< returns null

Существуют ли какие-либо общие сценарии, которые могут вызвать это? Например, создание IoTHub и устройства до выпуска Twin. Или, не установив заранее никаких желаемых свойств? Или, используя неправильный общий ключ доступа? (и т.д.)

-Джон


person JohnKoz    schedule 04.03.2017    source источник


Ответы (1)


РЕШЕНИЕ. Возможности Twin требуют протокола MQTT, я использовал AMQP. Я уверен, что где-то есть упоминание об этом, но после того, как я крутил это в течение нескольких часов, я могу с уверенностью сказать, что это не было очевидным.

Более практическое замечание: вероятно, было бы полезно генерировать исключение в методе GetTwinAsync(), если он вызывается для соединения, которое не поддерживает Twin.

Надеюсь, этот пост поможет следующему человеку.

-Джон

person JohnKoz    schedule 04.03.2017
comment
Спасибо за подтверждение, Рита. А как насчет второй части моего наблюдения, имеет ли смысл генерировать исключение? - person JohnKoz; 07.03.2017
comment
Может быть. Вы можете открыть задачу для этого на github. - person Rita Han; 07.03.2017