Does Microsoft IoT Central send data through an Azure IoT Hub...? - azure

I am just reading up on the new IoT Central, currently in preview.
Our customers seldom let their devices connect to cloud by themselves,
but are rather connected to some kind of management system that in turn connects to Azure.
We however consider using IoT Central for demo purposes and would like to know if devices defined in IoT Central sends their data to an IoT Hub of choice or if is handled in any other way behind the scenes?

Microsoft IoT Central does use an IoT Hub internally. If you look here you can see that when you add a physical device to an IoT Central application it generates an IoT Hub device connection string: https://learn.microsoft.com/microsoft-iot-central/tutorial-add-device#get-connection-string-for-real-device-from-application.
However, you cannot get admin access to the IoT Hub or use an IoT Hub of your own choosing - all you have is the device connection string.

Related

Azure Device Provisioning to Edge Device

I am trying to figure out how to use DPS to pass down to a device which edge device to connect to. Is this an option to do with DPS or do we have do to this manually?
The DPS is a helper service for IoT hub that will provide the right IoT hub without requiring human intervention
The IoT Hub Device Provisioning Service (DPS) is a helper service for IoT Hub that enables zero-touch, just-in-time provisioning to the right IoT hub without requiring human intervention.
Below are the scenarios in which DPS is an excellent choice for getting devices connected and configured to IoT Hub.
Zero-touch provisioning to a single IoT solution without hardcoding IoT Hub connection information at the factory (initial setup)
Load-balancing devices across multiple hubs
Connecting devices to their owner's IoT solution based on sales transaction data (multitenancy)
Connecting devices to a particular IoT solution depending on use-case (solution isolation)
Connecting a device to the IoT hub with the lowest latency (geo-sharding)
Reprovisioning based on a change in the device
Rolling the keys used by the device to connect to IoT Hub (when not using X.509 certificates to connect)
Here are a few references which have the complete information on DPS.
https://learn.microsoft.com/en-us/azure/iot-dps/about-iot-dps
https://learn.microsoft.com/en-us/azure/iot-dps/

loriot - IoT Central connection

How can I connect devices connected to loriot to Azure IoT Central?
I've got the documentation of connecting it to an Azure IoT Hub, but I'm actually using IoT central, so this seems to work differently.
Log in to the Azure portal (Microsoft Azure account required).
Create a IoT Hub
Copy Shared access primary key from IoT Hub > Settings > Shared
access policies > device
Use this primary key and the IoT Hub Name to configure your LORIOT
application output
From IoT Hub > Explorers > IoT devices: create a device using the
Device EUI as Device ID
Messages will have the following format:
https://docs.loriot.io/display/LNS5/Uplink+Data+Message
Loroiot setup only allows "IoT Hub Name" & "Primary Key" which IoT Central application does not expose unless a Device Provisioning Call is made to it from device or API. It is possible to get the device key from Azure CLI or IoT Central portal, but IoTHub name is only via the DPS call.
One option is to get this IoTHub name seperately and then configure Loroiot, but in case of HA/DR the IoTHub name could change (IoT Central manages multiple IoTHubs for HA/DR and scale).
In absence of Loroiot having this functionality, check if its API allows configuration then orchestrate provisioning via script, function, etc.
https://learn.microsoft.com/en-us/rest/api/iot-dps/device/runtime-registration

While connecting devices to Azure cloud , which is advisable to use - Azure IoT Hub or Azure IoT Central?

So basically i'm working on a project which involves getting data using a sensor (say analyzing temperature/vibration etc.) and then transfer the data to cloud (Azure) which in turn can be used to show users the data - in an app/website. Do i use Azure IoT Hub or Azure IoT Central to store , stream and make use of data so that i can display the respective data of each user when they logon to the website?
Azure IoT Central is a set of pre-built IoT applications while IoT Hub is a service. You either use or build your own solution.

Storing Data Azure Iot Central

can I access to the Iot Hub behind the Azure Iot Central? I need to use:
IoT Edge feature
Device Provisioning
Get to Event-Hub Endpoint to process data
Cheers
Azure IoT Central has evolved since many of these answers were posted.
Today, IoT Central IoT Edge Support is preview and the Device Templates are in place to support it.
For the original data access requirement, use the continuous data export feature in Azure IoT Central to export your data to Azure Event Hubs, Azure Service Bus, or Azure Blob storage instances.
Azure IoT Central is a fully managed solution, you can't access underlying services including Azure IoT Hub. They are not exposed.
Reference "Compare Azure IoT Central and Azure IoT options".
What you can do is device connection. You can send device-to-cloud message and update device twin.
Reference "Device connectivity in Azure IoT Central".
Compare to Azure IoT Central, Azure IoT solution accelerators(original name: Azure IoT Suite) gives you more control of the underlying services. You have access to the underlying Azure services to manage them, or replace them as needed. For your use case, you can consider Azure IoT solution accelerators.
your requirement '3. Get to Event-Hub Endpoint to process data' can be done using your IoT Central App feature such as Continuous Data Export to the Event Hub.
The other way is to obtain an internal IoT Hub access to the events default endpoint from your IoT Central application access token like is shown here.
This approach allows to obtain an eventhubSasToken like is shown in the following code snippet:
"eventhubSasToken": {
"sasToken": "SharedAccessSignature sr=sb%3A%2F%2Fep-ns-saas-ep-15-262-xxxxxxxxxx.servicebus.windows.net%2Fep-ehub-saas-iothu-1044564-xxxxxxxxxx&sig=xxxxxx&se=1546197703&skn=service",
"entityPath": "ep-ehub-saas-iothu-1044564-xxxxxxxxxx",
"hostname": "sb://ep-ns-saas-ep-15-262-xxxxxxxxxx.servicebus.windows.net/"
}
IoT Edge is not supported in IoT Central. If you would like to request this feature, please add it to UserVoice and describe your use case.
Device Provisioning Service is supported in IoT Central. See https://learn.microsoft.com/en-us/azure/iot-central/concepts-connectivity
While there is no way to access the underlying services, you can export your data using Continuous Data Export to your own Event Hub endpoint in your own Azure subscription. From there you can process the data how you like.

Can Azure IOT hub be used to read(Get) data from some devices?

In my case I have 1000+ of devices that stores activity inside. I need to send a http get request to this device to get those data in csv or json format and save it in a storage hosted on azure.
Cab IOT hub require data using get request and can it be scheduled to read daily/weekly?
What other azure services would you suggest to facilitated this scheduled reads?
You have not mentioned which the Azure IoT Hub scale tier is used. Basically there are two price groups such as Basic and Standard with a significant different cost and capabilities. The Basic tier offers only services for one-way communications between the devices and Azure IoT Hub.
Based on that, the following scenarios can be used for your business case:
1. Basic Tier (non event-driven solution)
The device pushs periodicaly a telementry and non-telemetry messages based on the needs to the Azure IoT Hub, where the non-telemetry messages are routed to the Azure Function via the Service Bus Queue/Topic. Responsibility for this non-telemetry pipe is to persist a real device state in the database. Note, that the 6M messages will cost only $50/month. The back-end application can any time to query this database for devices state.
2. Standard Tier (event-driven solution) In this scenario you can use a Device Twin of the Azure IoT Hub to enable storing a real-device state in the cloud-backend (described by #HelenLo). The device can be triggered by C2D message, changing a desired property, invoking a method or based on the device edge trigger to the action for updating a state (reported properties).
The Azure IoT Hub has a capabilities to run your scheduled jobs for multiple devices.
In this solution, the back-end application can call any time a job for ExportDevicesAsync to the blob storage, see more details here. Note, that the 6M messages will cost $250/month.
As you can see the above each scenario needs to build a different device logic model based on the communications capabilities between the devices and Azure IoT Hub and back. Note, there are some limitations for these communications, see more details here.
You can consider using Device Twin of IoT Hub
https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-device-twins
Use device twins to:
Store device-specific metadata in the cloud. For example, the deployment location of a vending machine.
Report current state information such as available capabilities and conditions from your device app. For example, a device is connected to your IoT hub over cellular or WiFi.
Synchronize the state of long-running workflows between device app and back-end app. For example, when the solution back end specifies the new firmware version to install, and the device app reports the various stages of the update process.
Query your device metadata, configuration, or state.
IoT Hub provides you with the ability to connect your devices over various protocols. Preferred protocols are messaging protocols, such as MQTT or AMQP, but HTTPS is also supported. Using IoT hub, you do not request data from the device, though. The device will send the data to the IoT Hub. You have to options to implement that with IoT Hub:
The device connects to the IoT Hub whenever it has some data to be sent, and pushes the data up to IoT Hub
The device does not send any data on its own, but stays always or at least regularly connected to IoT Hub. You then can send a cloud to device message over IoT Hub to the device, requesting the data to be sent. The device then sends the data the same way it would in the first option.
When the data then has been sent to IoT Hub, you need to push it somewhere where it is persistently stored - IoT Hub only keeps messages for 1 day by default. Options for this are:
Create a blob storage account and push to that directly from IoT Hub using a custom endpoint This would probably be the easiest and cheapest. Dependening on how you need to access your data, a blob might not be the best option, though
Create a function app, create a function with an EventHubTrigger, connect it to IoT Hub and let the function process incoming data by outputting it into any kind of data sink, such as SQL, CosmosDB, Table Storage...

Resources