Skip to content

henrydog7/frankenstat

Repository files navigation

LED Light Example

Build and Flash firmware

Follow the ESP RainMaker Documentation Get Started section to build and flash this firmware. Just note the path of this example.

What to expect in this example?

  • This example uses the BOOT button and RGB LED on the ESP32-S2-Saola-1/ESP32-C3-DevKitC board to demonstrate a lightbulb.
  • The LED acts as a lightbulb with hue, saturation and brightness.
  • Pressing the BOOT button will toggle the power state of the lightbulb. This will also reflect on the phone app.
  • Toggling the button on the phone app should toggle the LED on your board, and also print messages like these on the ESP32-S2 monitor:
I (16073) app_main: Received value = true for Lightbulb - power
  • You may also try changing the hue, saturation and brightness from the phone app.

LED not working?

The ESP32-S2-Saola-1 board has the RGB LED connected to GPIO 18. However, a few earlier boards may have it on GPIO 17. Please use CONFIG_WS2812_LED_GPIO to set the appropriate value.

Reset to Factory

Press and hold the BOOT button for more than 3 seconds to reset the board to factory defaults. You will have to provision the board again to use it.

Command Response

This example also shows a demo for ESP RainMaker's command - response framework.

Registering Commands

  • Enable the command response framework using CONFIG_ESP_RMAKER_CMD_RESP_ENABLE
  • Register your command and a handler using esp_rmaker_cmd_register(ESP_RMAKER_CMD_CUSTOM_START, ESP_RMAKER_USER_ROLE_PRIMARY_USER | ESP_RMAKER_USER_ROLE_SECONDARY_USER, led_light_cmd_handler, false, NULL);
    • This registers a command with id = ESP_RMAKER_CMD_CUSTOM_START (0x1000), which will be accessible to primary as well as secondary users (but not admin) and registers the function led_light_cmd_handler as the callback
  • Whenever the node receives a command with id = ESP_RMAKER_CMD_CUSTOM_START (0x1000), it calls led_light_cmd_handler.
  • The handler parses the data for brightness and on, calls app_light_set_brightness() or app_light_set_power() as per the data received and also sends the updated params via esp_rmaker_param_update_and_report().
  • **Note that the command - response framework is independent of RainMaker params. This example is updating the RainMaker params just so that the state is consistent. Going ahead, some special commands will be added for param updates so that this additional call won't be required.

Sending Commands

The RainMaker CLI can be used for sending commands to the node. Once the user node association (preferably from phone apps) is done and you are logged in using CLI, execute these commands:

$ ./rainmaker.py  create_cmd_request --timeout 60 6055F97E2008 4096 '{"brightness":50}'
Request Id: BK00t2QNe7oT12dBdh9f8X
Status: success

$ ./rainmaker.py get_cmd_requests BK00t2QNe7oT12dBdh9f8X                               
Requests: [{'node_id': '6055F97E2008', 'request_id': 'BK00t2QNe7oT12dBdh9f8X', 'request_timestamp': 1685382006, 'status': 'in_progress', 'expiration_timestamp': 1685382066}]
Total: 1

$ ./rainmaker.py get_cmd_requests BK00t2QNe7oT12dBdh9f8X
Requests: [{'node_id': '6055F97E2008', 'request_id': 'BK00t2QNe7oT12dBdh9f8X', 'request_timestamp': 1685382006, 'response_timestamp': 1685382039, 'response_data': {'status': 'success'}, 'status': 'success', 'device_status': 0, 'expiration_timestamp': 1685382066}]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published