I'm working on a project that might grow up to several thousands of things. The management is on AWS. My lack of knowledge is about practical operations, like the creation of the things.

Currently we need to:

  1. power up the board to get (via serial, display, WiFi, etc...) the ID
  2. on AWS create a new thing with this ID
  3. create the certificates as well
  4. download the certificates and copy them to the board
  5. add the new thing to our system's database
  6. assign the new thing to the commercial stuff (i.e. customer, plant, etc...)

Please note that each board is configured and installed at office. So we known in advance which is the final customer/plant.

Of course this procedure is time consuming and error prone. It works only for few prototypes. But it cannot work when the numbers grow.

Is there a way to automate this? For another customer - where I had the whole control of the code, so no AWS but a plain and simple PHP backend - I did something like this:

  1. On power up the board checks if it was already configured
  2. If not, sends its own ID to a local webserver
  3. If the ID is unknown, it's added to the database ("thing" created) in a special table of the newly discovered things
  4. If there are systems that are waiting for boards, the software assigns the new discovered things to them and put the record in another table
  5. The board updates itself downloading the configuration from a REST service

It worked fine but there were two main characteristics that now I don't have:

  • the boards had a display, so it was easy to catch the right one
  • I wrote all the code, there were no "hidden" or third-party code like in AWS

Please, would you help me to understand how one should approach these simple operations in a Could-based environment?

1 Answer 1


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 configuration, the first message being a confirmation that it is so configured.

If no info can be found in your fulfillment database, the device has nothing to do until next power on or perhaps tries in a few hours.

  • I would have thought that allow to rewrite the certificate is a hole in the security. Well, perhaps I can allow this only if the current certificate is the "dummy" one.
    – Mark
    Feb 12, 2021 at 1:37
  • Out of curiosity, are you aware what the "big" company do?
    – Mark
    Feb 12, 2021 at 1:38
  • 1
    To be clear, I'm suggesting that you have two certificates. One default certificate, which just identifies the device as having been programmed by you. The other certificate is the certificate to use after the initialization is done. I suggest you keep the first one around so that in the case of issues with using the second one (say, failing 3 times in succession), you can go into some sort of reset which again starts from the beginning using step one. Feb 20, 2021 at 23:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.