espressif / esp-rainmaker

ESP RainMaker Agent for firmware development
Apache License 2.0
432 stars 145 forks source link

OTA - 2 variants understanding (MEGH-4120) #212

Closed jacek12345 closed 1 year ago

jacek12345 commented 1 year ago

Sorry for my question if I completely mistanderstood OTA flow. I'm trying to choose which variant should be used is developed product. Analysing, but each variant have something that make it unconvenient or even unusable in end product. Suppose that i misunderstand somwething, so please correct.

  1. OTA Using Parameters "This is the simplest way of pushing out an OTA FW upgrade by "End Users" and can be triggered from the RainMaker CLI."

Great, End User (primary or secondary) is the user that bought the product and controll it via mobile app. He can update firmware in his product, this is what I need. But wait.... he has to use CLI? Not pusch the button in mobile app? Impossible.

  1. OTA Using Topics "This is a more advanced way of pushing out an OTA FW Upgrade, avaiable to "Admin Users" and can be triggered from the RainMaker Dashboard."

Great, so this is what I need. I (developer) can pusch firmware and even decide updating policy and have very usefull dashboard for manage process. But wait... who is Admin User? "Admin User" - A user who owns the MQTT credentials of a given node is the Admin User for that node. So, a user who claims a node either using Host driven claiming or Assisted Claiming becomes an admin user for the given node." So, developer (me) is not Admin User for product (node) that somebody bought, registered and climed withg his app assistance? End customer have to use ESP Insights Dashoard for frimware updating? Impossible.

I need some simple method for updating firmware by end user, directly from his mobile app (simply pusch the button) - firmware should be pusched on server by developer (me). OR I need method for updating all devices that all people ever bought, claimed and use on the whole world. I should see this all in my ESP Insights Dashboard and should start OTA.

What is the best method for supply end product to end user with firmware upgrade possibility (as simple as pusch button for end customer or ALL_DEVICES_UPGRADING available for developer)?

shahpiyushv commented 1 year ago

@jacek12345 , claiming is a concept only for the public RainMaker deployment. To build a PoC using the public RainMaker, the best approach is to use Host Driven Claiming with your account so that you become the admin. Then once the nodes are in field, create an OTA Job from dashboard by setting the "User Approval" flag

Screenshot 2022-12-27 at 1 10 00 AM

Thereafter, there are some /user/nodes/ota_update APIs under OTA Service, which can be called by end users to see if there is any OTA Job available for their nodes and if there is, just start it. The corresponding support is also being added in the RainMaker phone apps.

In private RainMaker deployments, the process of node registration is different and so, the admin ownership is established during the manufacturing step itself.

There are some other features being added to OTA via dashboard. We will improve the documentation so that the usage is easier to understand.

jacek12345 commented 1 year ago

thank You @shahpiyushv

In private RainMaker deployments, the process of node registration is different and so, the admin ownership is established during the manufacturing step itself

Do You have any docs with information how to establish the admin ownership during the manufacturing for private RainMaker deployment? I think, this is to early for private deployment for us but would know how the process looks.

shahpiyushv commented 1 year ago

@jacek12345, please check out the Rainmaker Admin CLI . This CLI can be used only with private deployments and can't be tested with the public RainMaker.

jacek12345 commented 1 year ago

Thereafter, there are some /user/nodes/ota_update APIs under OTA Service, which can be called by end users to see if there is any OTA Job available for their nodes and if there is, just start it. The corresponding support is also being added in the RainMaker phone apps.

Thank You @shahpiyushv I'm trying with swagger UI, but i don't know what is "base64_fwimage" in otaimage command.

Can You confirm or correct, that can simply use this set of commands from mobile app for OTA?:

  1. GET ota_update
  2. POST ota_update
  3. GET ota_status Or should use something more?
jacek12345 commented 1 year ago

@jacek12345, please check out the Rainmaker Admin CLI . This CLI can be used only with private deployments and can't be tested with the public RainMaker.

There is: "ESP RainMaker Admin CLI is a tool offered by Espressif Rainmaker for admin users to be able to perform mass manufacturing of nodes of ESP32-S2 and ESP32 based products. This tool will enable you to perform node id generation and certificate registration operations required for the manufacturing process." What about ESP32-S3?

shahpiyushv commented 1 year ago

@jacek12345

Can You confirm or correct, that can simply use this set of commands from mobile app for OTA?:

GET ota_update POST ota_update GET ota_status Or should use something more?

This is correct. You can upload OTA Image and create the OTA Job from the RainMaker dashboard with "User Approval" enabled and thereafter, the above 3 APIs can be used to query and start the OTA Job from the end user side.

What about ESP32-S3?

All ESP32 based chips are supported. We will rephrase the line soon.

jacek12345 commented 1 year ago

Thank You @shahpiyushv