Publish data to Azure IoT Hub with MQTT - mqtt

I am having a device which able to publish data to any MQTT broker. I am trying to publish data to Azure IoT Hub with this device as client.
Machine is having the data as follows,
Device/Topic1/Param1
Device/Topic1/Param2
Device/Topic1/Param3
Device/Topic2/Param1
Device/Topic2/Param2 and so on around 50 parameters from 7 different topics.
How can send all those parameters to Azure IoT Hub with MQTT? In IoT Hub I able to create device but it gives only one topic per device. Is there any other feasibility?

Related

Send reported properties to Azure IOT Central with IOS SDK

I'm struggling with the IOT Central SDK to send reported properties to my IOT Central but so far I haven't found any way to do it.
Have anyone managed to perform this very task? I have no problem sending properties or events / telemetries but I've been struggling with this for a while with no results.
The Device Twins features are supported for devices with the MQTT or AMQP protocols to the Azure IoT Central (Azure IoT Hub).
For your requirement such as using a device in the iOS Application, I do recommend using the MQTT protocol directly to the Azure IoT Central (Azure IoT Hub) and some iOS MQTT client library, for example MQTT-Client-Framework.
For test purposes of the features how to use the MQTT protocol directly, you can use any MQTT client tools such as MQTTBox, MQTT.fx, etc.
The following screen snippets show an example of using the MQTT protocol directly to the Azure IoT Central, where the MQTTBox client updated a device1 reported property (name battery):

Google IoT-core v1 API discovery not found

I have some issues trying to access google iot-core API from my remote server (hosted on Digital Ocean). The same piece of code could work on my local machine, and I ensured that even the service key was the same, yet there was no explicit message to point me in some general direction.
I'm not sure if this is an issue with the discovery API as I could get the proper response on my local machine using the curl command below but when i tried to do this on my remote server it returned a 404 error. Anyone experienced this before?
curl https://cloudiot.googleapis.com/$discovery/rest?version=v1
Google Cloud IoT API endpoint is:
https://cloudiot.googleapis.com/
The current version is v1 and it is available here:
https://cloudiot.googleapis.com/v1
The discovery doc for this API and this version is:
https://www.googleapis.com/discovery/v1/apis/cloudiot/v1/rest
You may find Google API Explorer a useful tool too:
https://developers.google.com/apis-explorer/#p/
Here is the API Explorer result for Cloud IoT API v1:
https://developers.google.com/apis-explorer/#search/cloudiot/cloudiot/v1/
Even with these endpoints, you will need to authenticate your curl requests before they succeed.
I strongly encourage you to consider using Google's SDKs (Libraries) for interaction with any Google service and for Cloud IoT for service management (munging registries, devices etc.).
Once your configuration is established, your devices should use either MQTT or HTTP.

How to stream data that is generated by an IoT gateway application to predix cloud?

I've devices configured with IoT gateway application(built with MEAN.JS), these devices send data to IoT gateway where i can access data now i wish to do some analytics on same data how can i send this data to predix cloud so that i can use predix services for analytics
We can achieve this requirement using predix-uaa-client NPM package
all you've to do is-
1.create a predix account, predix-uaa service, predix-time-series service and attach uaa-service & time-series service
2.Make note of Uaa Url, client_id, client_secret and predix time-series ingest zone id
pass Uaa Url, client_id, client_secret and predix time-series ingest zone id to predix-uaa-client package it responses with token.access_token.
Use token.access_token as a Bearer token Authroization header in calls to secured services.
once it securely calls service create websocket connection and start sending data to predix-time-series service
here sample code to achieve it
First you need to sign up for a free Predix account on predix.io. Subscribe to the (free version) of the UAA service, and Time Series database service. Create a UAA Client with permissions to access your Time Series instance. Then you can use a websocket to securely push data into the cloud. You can learn more by using the Predix Toolkit: https://predix-toolkit.run.aws-usw02-pr.ice.predix.io/
(Source code for the toolkit is here: https://github.com/predixdev/security-starter)
Lots of helpful tutorials are here:
https://www.predix.io/resources/tutorials

Minimize Internet access for Bluemix Local

My customer wants to have Bluemix Local on their isolated DC from pulic.
They have a policy not to have internet access on the DC. Only allow to connect to internet in a limited period of time based on the IT/LOB request.
I know that the Bluemix Local need to have internet connection with IBM site for the purpose of the Remote maintenance by IBM.
Question:
Is it possible to minimize the on-line time between the Bluemix Local and IBM site ? The customer wants it offline normally and online only at the event of maintenance.
Thank you for your support.
Kohzo
The component that allow Bluemix local to be managed by IBM operation team is called "Relay".
Relay achieves secure connectivity through an open, outbound SSL, VPN tunnel that originates from the inception virtual machine on-premises by using certificates that are specific to each Bluemix Local instance.
The traffic on this tunnel is automated activity for serving and maintaining the platform, compute resources, and services for your instance. The traffic includes the monitoring capability that is used by IBM operations to complete problem determination for your local instance.
Only the IBM team that is working on local environment can securely access Bluemix instance. Access to ocal environment is secured by using two-factor authentication during multiple steps in the connection process. IBM provides a list of the approved users and IDs who can access the environment, and then customer can audit any access to the environment.
Since if a network interruption occurs Relay automatically re-establishes the connection, it does mean that the Relay must be always up .

How convert an OMA-DM protocol message to an LWM2M message?

I am working on a device management solution for an IoT device. The device will host an LWM2M client. A gateway device (currently an Intel Galileo board), will host an OMA-DM client and a LWM2M server.
The general scenario is that the nodes should be able to be managed by any OMA-DM or LWM2M compliant device management server.
In case of an OMA-DM server, the commands will be sent to the gateway where they will be received by an OMA-DM client and passed on to the nodes directly as LWM2M commands or the client will use the APIs of the LWM2M server to create and send the message/command.
As such I wanted to know if there is any solution currently available that can help with this.
OR
Are there any guides or papers or any information of any kind to help me implement this solution?
OMA has something called the LwM2M gateway which interfaces an OMA-DM server to an LwM2M Server. So check out the MAI (Mobile Application Interface) gateway specs (which I don't think are finalized yet).

Resources