Hot answers tagged

8

According to AWS SQS Documentation (as you said the broker is AWS) this should be native: Immediately after the message is received, it remains in the queue. To prevent other consumers from processing the message again, Amazon SQS sets a visibility timeout, a period of time during which Amazon SQS prevents other consuming components from receiving ...


7

You might want to look at the concept of dead-letter queues of AWS SQS. From the AWS docs: A dead letter queue is a queue that other (source) queues can target for messages that can't be processed (consumed) successfully. You can set aside and isolate these messages in the dead letter queue to determine why their processing did not succeed. So, if ...


6

What you linked is far too complicated and in too low level of abstraction that it is for an professional even hard to read and follow it. aws-mqtt-client through npm is the easiest solution I could find. You just have to install npm and make the aws service and client code is quite straight forward: const mqttClient = new AWSMqtt({ accessKeyId: ...


5

Yes, the whole point of using client side certificates is to enable you to reliably uniquely identify each client. AWS will provide APIs to provision each device with it's own cert/key. The other reason is that it means that you can easily ban a single device if the certificate is compromised, if every device reuses the same certificate then you have to ...


5

Keep in mind, that when connecting the first time and trying to register a certificate with JIT you have to provide not only the device certificate but also the CA certificate you used to sign your device certificate (your CA in this case). You can combine the 2 certificates with cat deviceCert.crt caCert.crt > deviceAndCA.crt as explained here. OK, I'...


5

Not the complete answer but a step forward: https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_espressif.html AWS has released their ESP32 support with AWS FreeRTOS. To send directly to S3 without going through IoT Core, you will need your endpoint (obviously) and certificates on the device side to authenticate on the Cloud side. With ...


5

Yes. AWS IoT uses MQTT, which follows a topic-based publish-subscribe pattern. This allows multiple subscribers to a topic, and multiple clients can even publish to the same topic (a topic is not specifically designated for one client to publish or subscribe to). To subscribe, a client must send a SUBSCRIBE packet: The SUBSCRIBE Packet is sent from the ...


4

I finally figured out what my mistake is. It was in the ARN Resources of policy I wrote a wrong topic in the end of policy resources line. I wrote ldr instead of LDRsensor.


4

Lambda is for running tiny functions, not long-running processes. You should have your web page connect directly to AWS IoT using WebSockets. Then it can get messages directly when they happen and display them, etc. If you don't need to store your state, you don't need Dynamo or S3. (Although you may want to use S3 to host the JavaScript/HTML for your ...


4

After some more investigation I found out that 502 error may happen if body is not in quotes. Your null should be "null" https://stackoverflow.com/questions/43708017/aws-lambda-api-gateway-error-malformed-lambda-proxy-response


4

I haven't worked with Azure as such but Message Broker for AWS IoT uses MQTT and is like any other MQTT broker (like mosquitto for Linux). MQTT messages basically work on Topics. If the android app is subscribing to a topic then it can receive messages for that topic. Suppose if you have two IoT devices sending data op topics "Topic/Dev1" and "Topic/Dev2" ...


3

Do you know if the nodes being provisioned have proper date/time set? In my experience with similar situation, it turned out that NTP is often blockedby ISPs and IoT nodes could not fetch network time. It is necessary for the certificate expiration verifications.


3

If the device has been designed properly then even trying to sniff the traffic should not give you anything useful as all the traffic should be encrypted as it travels between the cloud/device. You've not actually said what the specific device is so we don't known what network connectivity it has, but I'm going to assume it has both Ethernet and WiFi. The ...


3

There are some suggestions on the AWS forum which I believe may help you: I did a procedure similar to this.... Initially flash each device with a certificate only used during production. Every device can use the same certificate and it only needs to be in the flash and not in the SOC's key store. Since you encrypt the flash maybe put it into the data ...


3

I believe that stringify can do this, and will also interact with IFTTT if you need to access specific devices. I thought that IFTTT also had a new feature to write applets (with cloud state), but I'm unable to locate that in their documentation right now.


3

localhost always points to the machine the code is running on. In this case the lambda is running on one of Amazon's machines so the web app you are trying to access will not be there (as it's running on your machine). You will need to deploy your web app to somewhere public (e.g. a AWS VM or Light sail instance) and update the lambda to point to that ...


3

Two things: The + as a wild card for subscription is NOT honored. From the documentation: The MQTT wildcard character '+' is not treated as a wildcard within a policy. Attempts to subscribe to topic filters that match the pattern foo/+/bar like foo/baz/bar or foo/goo/bar fails and causes the client to disconnect. The topic string shouldn't have ...


2

After doing some further research, I'm pretty sure Thing Types are what you want. Thing types allow you to store description and configuration information that is common to all things associated with the same thing type. This simplifies the management of things in the thing registry. For example, you can define a LightBulb thing type. All things ...


2

I ran into a similar problem with a different solution If you create a certificate using a default openssl.cnf, or some other mechanism that generates an SSL certificate such as PHP's openssl_csr_sign, make certain your generated certificate does not have the x509_extensions set to make a CA certificate. After three days of banging my head against the wall,...


2

One way is you have to create the web service which upload the data on S3. and call service through http protocol. 1. https://www.w3schools.com/xml/xml_services.asp use this to create the webservice or use angular 2 for creating the rest service call https://sniederm.wordpress.com/2017/04/12/tutorial-ng2-rest-service/


2

AWS Greengrass is designed to do IoT processing at the edge, rather than (or in addition to) sending it to the cloud. So, if you want to do some processing of your data at the edge, you can use any IoT Edge platform that fulfills your requirements. If Greengrass, Amazon documents where this runs. We have only tested it under Intel Linux. Else, if you just ...


2

It depends on the type of data and what you want to do with it. I have a Raspberry Pi AWS IoT project and I'm storing data on DynamoDB. But since I need to do aggregation queries, I then feed it from there to ElasticSearch. You are more than likely going to need to use a Lambda triggered by IoT to move information around on AWS. To view the data and ...


2

This one is a good confusing one, I'm no GraphQL expert however it seems to me that MQTT and GraphQL are not at all the same things because they does not serve the same purpose: MQTT does not really "store" data, it keeps a value (or some values of a topic) until they are updated and then it sends the updated data to the subscriber. The protocol does not ...


2

Why not let it have an initial certificate so that the first message can be "Hello. I'm up and my serial number is abcd." ? In the cloud, you can then look up your sales/fulfillment database and send it the other info about what it is configured as and for which customer. From that point on, the device can behave appropriately, with that ...


1

Check out our https://mqttlab.iotsim.io/aws for Getting Started with AWS IoT.


1

Assuming you have an app to push the WiFi credentials to the device, can you test the MQTT connection from the app over the same network? This would give you access to the errors thrown by the MQTT stack as it tries to connect. Alternatively can the device log errors that could be collected by the app via Bluetooth in the case of a failure. Or since HTTP (...


1

I had to attach the policy to the certificate and set the port to 8883 because the protocol is MQTT and not MQTT over Websockets.


1

Welcome. I love your question, and have marked it a favo(ur)ite. However, it will probably be closed as far too broad. If you can narrow down your requirements, you will probably get a good answer (try to avoid GIGO). Here is one of many possible paths that you could take: My end goal is to be able to develop applications for collecting data from IOT ...


1

I'm not super familiar with Greengrass, but I'm assuming it's similar in design to Azure IoT Edge. Where IoT Edge runs Docker to manage local "modules", it sounds like Greengrass takes Lambda functions which from my understanding could fulfill the same need. Have you looked a creating a Lambda function to read the data stream, format it and publish it? Looks ...


1

Since no answer in all this time, here is one. We have connected Greengrass to NODE-RED. https://gambitcomm.blogspot.com/2019/06/iot-control-system-at-edge-mimic-mqtt.html The NODE-RED subscriber is just another device in your Greengrass group that you need to allow to subscribe. Update: copy/pasted the relevant section as requested When the actuator (eg....


Only top voted, non community-wiki answers of a minimum length are eligible