How can i setup my OpenThread device running MQTT-SN clients examples to connect to AWS IoT Cloud - amazon-web-services

I am currently building a open thread based application using nRF5 SDK for Thread and nRF52840 development kits. I have chosen MQTT-SN as my application level protocol to communicate with cloud.
All my thread devices are sending data to Eclipse Paho MQTT-SN gateway. This thread devices doesn't have there own Root CA certificate nor private keys etc as there are no such macro definitions provided in Nordic SDK for Thread. So how can this thread devices communicate with the AWS MQTT broker without authentication certificates.
I know i have to enable Authentication in paho mqttsn gateway config file and provide root CA certificates, private keys in configuration file. And if i enable authentication, my thread devices wont be able to communicate with MQTTSN gateway. There is something called client list but i don't actually know whats the use of it if i have to add my new device name all time in that client list.
So can anyone please guide me how could i transmit data from my thread devices acting as MQTT-SN clients to AWS broker via MQTT-SN Gateway. Or any way around that i am unable to see.
Thanks in advance.

Related

SIM800 MQTT publish to Google IoT Core

I'm trying to publish some data to Google Cloud using the SIM800 module together with ESP32. Google IoT Core provides its documentation on connecting MQTT clients here. It says:
Associate the MQTT client with MQTT server certificates.
However, in the SIM800 manufacturer's documentation on AT commands usage (here), there is nothing about associating the tls certificate. Given information concern making simple connections providing only the host, username and the password.
How can I make a connection that would take the certificate into account?

how to establish a private network connection of AWS server to a remote IoT device running linux?

how to deploy a code to a remote IoT device running linux? Is there any zombie program to be written on the remote IoT device to establish a connection? Or is there any custom publisher subscriber shell script/python program needs to be handled at IoT device side? Is there any alternative web servers / Is it possible to deploy a code from gitlab to remote IoT device?
AWS IoT Greengrass is exactly the service you are looking for. You can set it up to be started with systemd and it will run a daemon that keeps your IoT device and the shadow device in sync. You can even deploy long-running lambda functions on your device that will only run locally (not in the cloud). All the deployment, secure connection, updating and offline handling is done by Greengrass.
I played with that and my Raspi with Sense HAT as my home office sensor. Now have a fancy dashboard of my room temperature, humidity and more... lots of fun.
You can get started here.

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

how to connect device to AWS greengrass

I am using MOKOSMART_mkgw1 to collect data and send it to AWS IoT Core.
for that, I need to set the following configurations,
endpoint (aws iot endpoint)
topic (any)
device certificate and private key
root ca.
I was able to connect and send data to aws iot core.
now I want to connect it to aws greengrass device instead of iot core directly.
i have greengrass running, on ip 192.196.1.12 on port 8883 (windows machine).
i download Group CA using basic discovery api. so i used this mqtt settings for device:
broker endpoint (192.168.1.12:8883)
topic (same as registered in subscription in aws iot GG)
device certificate and private key (the device is registered in aws iot GG)
Group CA (downloaded by basic discovery sample application)
but i am still not able to connect to aws gg?
my understanding is aws GG also has a MQTT broker. so by providing a proper authentication and topic, i should be able to connect to it, whether or not I have aws device SDKs or not. am i wrong? what does "basic discovery example" do extra to be able to connect to aws gg ??
I am so sorry for wasting your time if you brainstorm on this question.
the issue was, I was passing a random clientID in MQTT.
instead, I passed "Device Name" as the client ID and it worked.
keep this question here if someone else falls in the same hole.