Azure / azure-iot-arduino

Azure IoT library for the Arduino
Other
168 stars 95 forks source link

When can we have AMQP_Protocol or MQTT_Protocol support? #26

Closed yaweiw closed 7 years ago

yaweiw commented 8 years ago

as titled.

olivierbloch commented 8 years ago

Hi @yaweiw This is a perfectly reasonable ask (at least for MQTT as I suspect AMQP might be a bit too much in terms of memory usage to be brought up). We will look into this soon and will keep you posted here.

henrik-d commented 8 years ago

Can you please confirm or refute, that currently only sending data to the IoTHub is supported and not receiving messages via MQTT? I'm a bit confused...

olivierbloch commented 8 years ago

At this point you can only use HTTP to send AND receive messages using the Arduino lib. We are planning to bring MQTT support soon and certainly AMQP later.

henrik-d commented 8 years ago

Hey, thanks for the answer. How can I receive notifications with HTTP? Does your lib use long polling?

Plans for supporting MQTT sound good!

olivierbloch commented 8 years ago

The library doesn't implement long poling, you have to do it in your loop. MQTT will definitively solve this.

yaweiw commented 8 years ago

For AMQP & MQTT, I use below code snippet to poll for iot client status while ((IoTHubClient_LL_GetSendStatus(iotHubClientHandle, &status) == IOTHUB_CLIENT_OK) && (status == IOTHUB_CLIENT_SEND_STATUS_BUSY)) { IoTHubClient_LL_DoWork(iotHubClientHandle); ThreadAPI_Sleep(100); }

olivierbloch commented 7 years ago

Hi @yaweiw I wouldn't recommend using this pattern. When using the lower layer of the C SDK (you can read more about lower layer vs. convenience layer of the C SDK here), the DoWork is about triggering all the work the client SDK has to do: send a message, receive a message,...). If you condition the call to DoWork on the GetSendStatus, then you will never receive a message if you are not sending one...

yaweiw commented 7 years ago

@olivierbloch in our code, sending is happening constantly.. any possibility to just receive while not send. I guess it's no according to behavior of IoTHubClient_LL_DoWork?

olivierbloch commented 7 years ago

Actually you can receive without ever sending. You need to register the callback for receiving messages, then regularly call DoWork. If a message is sent from the Cloud to the device then the next time the DoWork is called, the device client will get the message and will invoke the callback you registered. Our samples show this pattern

henrik-d commented 7 years ago

@olivierbloch Could you roughly estimate when you will support MQTT with this library? In 1 month, 6 month or 1 year?

mingdee commented 7 years ago

Please I would like to have that answer as well.

magohl commented 7 years ago

Would also very much like to know any kind of rough timeline indication on this. Thanks for the great work!

olivierbloch commented 7 years ago

We are actively working on bringing MQTT support and expect this to be shipped in the next month or so.

spincraft commented 7 years ago

MQTT would make a great Holiday gift! Thanks for your efforts. Best regards

mamokarz commented 7 years ago

Hi, Microsoft has just added MQTT for Arduino... Happy holydays!