Common IoT connectivity to GCP, AWS, Azure, etc - amazon-web-services

I've to extend an existing product based on ARM-Cortex M0 and M4 micro-controller (No RTOS-bare metal event loop) to enable IoT capabilities.
I'm using W5500 Hardwired TCP/IP embedded Ethernet controller to enable internet connection for my micro-controllers.
One of the requirement of the project is that it must have cloud connectivity (using MQTT and/or ReST API) with all major vendors i.e. Google Cloud Platform, Amazon Web Services, Microsoft Azure and optional cloud providers like Linode and Digital Ocean.
The cloud connectivity is decided by client during installation.
As these devices are field configurable, connectivity to all these platforms need to be built-in the devices.
While I was scouring over internet regarding this topic, I found out that GCP have their own set of libraries and so do AWS and Azure.
Google Cloud IoT Device SDK for Embedded C
AWS IoT Device SDK for Embedded C
Azure SDK for Embedded C
I was under assumption that either by using simple MQTT and/or ReST API I would be able to communicate with any cloud service. Is my assumption wrong?
Is their any additional communication mechanism/layer that has been introduced over MQTT or ReST API to communicate with these cloud services that warrant need of such explicit libraries.
What are my options here to interface with all these services?
Can I use GCP MQTT library to communicate with AWS or Azure or vice versa?
Can I use Wiznet IO Library's MQTT client to connect to either of these services.

Related

Proxy in between device and Google IoT Core using MQTT?

I have a situation where I want to use Google IoT Core to support bi-directional communication between my devices and existing GCP stack. The trouble is, some of my devices cannot connect to GCP's MQTT bridge because they are blocked from reaching it directly. The communication must instead go through my own hosted server. In fact, some devices will not be allowed to trust traffic either inbound or outbound to anything but my own hosted server, and this is completely out of my control.
Basically all suggested solutions that I have found propose the use of MQTT over WebSockets. WebSockets consume too many system resources for the server I have available, and so MQTT proxy over WebSockets is extremely undesirable and likely is not even feasible for my use case. It also defeats the purpose of using a lightweight, low-bandwidth protocol like MQTT in the first place.
To make matters more complicated, Google IoT Core documentation explicitly says that it does not support bridging MQTT brokers with their MQTT bridge. So hosting my own MQTT server seems to be out of the question.
Is it even possible to create a proxy -- either forward or reverse -- for this use case that allows for native, encrypted, full-duplex MQTT traffic? If so, what would be the recommended way to achieve this?
If you have hybrid set-up, meaning you have on-premise servers and a cloud server and you want to bridge them using Google IoT by using MQTT.
You can try in this github link, upon checking this MQTT broker has been tested to Google IoT. Since Google IoT is not supporting 3rd paryt MQTT broker.

AWS IoT: Possible to connect mobile devices

Is it possible to programmatically connect a mobile device to IoT in AWS?
Would the end-user need to do any configuration on their side for this to work?
It depends on the type of device that you have in hand. The device must have a device certificate, private key, and root CA certificate installed for communicating with AWS IoT Core.
There is a SDK that can help you programatically. The AWS IoT Device SDKs help you to connect your devices to AWS IoT. Here is a list of SDKs based on the platform that you are using.
Here is a good link for reference establishing connection with AWS IoT core service

Choosing AWS service for MQTT broker

I need to build IOT MQTT broker that should work on secure MQTT protocol. I also need to manage users that connects to this service and manage subscription access control. Idon't need MQTT via web socket.
At first glance I was planning to use EC2 service in order to create Ubuntu virtual machine and install Mosquitto service in it. But later I found Internet of Things section that contains set of services.
Is it possible to construct MQTT service according my requirements by using Internet of Things. By choosing Internet of Things I hope to get more specialized functionality.
You can use AWS IoT for this instead, they have a managed MQTT endpoint that you can add 'things' to it.
https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html
You'll be able to easily connect the endpoint to other services as this is part of their cloud solutions.
https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html

Is it possible to control my IoT device from outside my private network using Google IoT Cloud services?

Is it possible to control my IoT device from outside of my private network through Google IoT Cloud services. Especially when my IoT devices are offline.
Yes, you would set up a IoT Core Gateway device in addition to registering regular devices.
Assuming you can program your gateway, it would communicate with Cloud IoT Core via MQTT/HTTP. Then, you can use any protocol you want (zigbee, zwave, bluetooth, etc). The gateway device should be able to store private keys/sign JWTs which are used to authenticate itself to IoT Core, so that the devices themselves don't need to.
For more information, I would read the following: https://cloud.google.com/iot/docs/how-tos/gateways/

Hyperledger Fabric SDK location

In the Hyperledger Fabric architecture where is the SDK hosted?
After pouring through the Fabric guides and documents I still can't find the exact specification of where the SDK for interacting with or deploying chaincode resides in the overall network architecture.
I am curious as if it is a node on the network then I see this as a single point of failure.
So, the SDK is actually the part in the business flow that interacts with the customer, and therefore it can be hosted anywhere.
It can be a web application that acts as a front end, having the fabric as the back-end
It can be a phone application that a user has
It can be even an IoT device on a RaspBerry Pi that simply logs periodically real world data into the blockchain
It can be a service that interacts with other services inside a data center.
Hyperledger client SDK is a component used to interact with Fabric network. It resides outside of the Fabric network but connected with its own Membership Service Provider (MSP) and network connection profiles. The network connection profile provides client applications the information about the target
blockchain network that are necessary for the applications to interact with it.