JohnKoz
JohnKoz

Reputation: 978

DeviceClient.GetTwinAsync() returns null?

I've created an IotHub, added a device, created a UWP app which uses the DeviceClient to successfully connect to the hub. I can send telemetry as expected, and see the results in the Device Explorer.

However, when I try to fetch the device twin, I'm returned a null.

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

Are there any common scenarios that might cause this? Such as creating the IoTHub & device before Twin's were released. Or, not having set any desired properties before hand? Or, using the wrong shared access key? (etc.)

-John

Upvotes: 0

Views: 461

Answers (1)

JohnKoz
JohnKoz

Reputation: 978

SOLUTION: Twin capabilities requires the MQTT protocol, I was using AMQP. I'm sure there is a mention of this buried somewhere, but after spinning on this for hours I can safely say it wasn't obvious.

On a more practical note: it would probably be helpful to throw an exception in the GetTwinAsync() method, if it is called on a connection that is not capable of supporting Twin.

Hopefully this post will help the next person.

-John

Upvotes: 1

Related Questions