Metadata-Version: 2.4
Name: esp-rainmaker-cli
Version: 1.8.1
Summary: A python utility to perform host based claiming
Home-page: https://github.com/espressif/esp-rainmaker-cli
Author: Espressif Systems
Author-email: 
License: Apache-2.0
Project-URL: Documentation, https://rainmaker.espressif.com/docs/cli-setup
Project-URL: Source, https://github.com/espressif/esp-rainmaker-cli
Project-URL: Changelog, https://github.com/espressif/esp-rainmaker-cli/blob/master/CHANGELOG.md
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Topic :: Software Development :: Embedded Systems
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.22.0
Requires-Dist: cmd2>=0.9.18
Requires-Dist: protobuf>=5.29.3
Requires-Dist: packaging>=19.2
Requires-Dist: oauth2client>=4.1.3
Requires-Dist: click>=5.0
Requires-Dist: pyserial>=3.0
Requires-Dist: future>=0.15.2
Requires-Dist: pyparsing>=2.4.0
Requires-Dist: pyelftools>=0.22
Requires-Dist: esptool>=4.4
Requires-Dist: esp-secure-cert-tool==1.0.1
Requires-Dist: setuptools
Requires-Dist: esp_idf_nvs_partition_gen>=0.1.6
Requires-Dist: bleak>=0.20.0
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: project-url
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# ESP RainMaker CLI

[![PyPI version](https://img.shields.io/pypi/v/esp-rainmaker-cli)](https://pypi.org/project/esp-rainmaker-cli/)

Welcome to the `esp-rainmaker-cli` repository!

This repository contains the source of ESP RainMaker Command Line utility.

## About RainMaker

[ESP RainMaker](https://github.com/espressif/esp-rainmaker)
is an end-to-end solution offered by Espressif to enable remote control and
monitoring for ESP32 based products without any configuration required in the Cloud.

## How to install

[esp-rainmaker-cli](https://pypi.org/project/esp-rainmaker-cli) is available on Python Package Index (PyPI).
It can be installed using pip.

```
python3 -m pip install esp-rainmaker-cli
```

## Usage

Please check the [CLI Usage guide](docs/README.md) for more information.

For more help, you can also run the following command:

```
esp-rainmaker-cli --help
```

## Key Features

### 🔧 Enhanced Device Provisioning
Support for BLE, SoftAP, and Console transport modes with Security 0/1/2 schemes. Use the new `--pop` flag for cleaner syntax.
```bash
esp-rainmaker-cli provision --pop abcd1234 --transport ble --device_name PROV_device
```

### ⚡ ESP Local Control
Direct device communication on your local network with 5-10x faster response times using the `--local` flag.

For detailed documentation, see [Provisioning Guide](docs/commands/provisioning.md) and [ESP Local Control Guide](docs/commands/local_control.md).

## Development Guide

Development mode allows you to run the latest version of esp-rainmaker-cli from the repository.
If you are making any changes to the tool then in order to test the changes please follow the below steps.

```
python3 -m pip install -e .
```

This will install esp-rainmaker-cli's dependencies and create an executable script wrappers in the user's bin
directory. The wrappers will run the scripts found in the git working directory directly, so any time the working
directory contents change it will pick up the new versions.


Changelog
---------
# Changelog

All major changes to ESP RainMaker CLI will be documented in this file.

## [1.8.1] - 19-Dec-2025
### Added
- An option --no-retry for provisioning, to avoid user-interactive prompts asking to retry in case of failures

## [1.8.0] - 18-Dec-2025
### Added
- Retry support for WiFi provisioning - allows users to retry provisioning on failure,
  resets device state machine using prov-ctrl endpoint, and sends new credentials on the same secure session
- Support for passing QR code payload to provisioning command

## [1.7.0] - 11-Nov-2025
### Added
- BLE Transport support for provisioning
- Challenge-response based user-node mapping
- Local control over HTTP
- Security v2 for provisioning and local control

## [1.6.0] - 16-Sep-2025
### Added
- Support for camera device type in claiming

## [1.5.4] - 16-Sep-2025
### Added
- Support for changing logs path
- Support for passing access token externally

## [1.5.3] - 26-Jun-2025
### Added
 - New `deleteuser` command for permanent account deletion with two-step verification
### Fixed
 - login command was not displaying currently logged-in user when session exists
 - login, signup, forgotpassword commands were giving deprecation warning for pkg_resources

## [1.5.2] - 23-Jun-2025
### Fixed
- `requirement`: bump esp-idf-nvs-partition-gen to v0.1.9

## [1.5.1] - 20-Jun-2025
### Fixed
- `claim` command was failing

## [1.5.0] - 18-Jun-2025
### Added
- Group management support with the following subcommands:
  - `add`: Create a new group with optional description, type, and parent group
  - `remove`: Delete an existing group
  - `edit`: Modify group properties including name, description, and parent
  - `list`: Display all available groups
  - `show`: View detailed information about a specific group
  - `add-nodes`: Add one or more nodes to a group
  - `remove-nodes`: Remove nodes from a group
  - `list-nodes`: View nodes in a group with optional detailed info and sub-groups

## [1.4.0] - 16-Jun-2025
### Added
- Support for setting parameters and schedules for multiple nodes in a single command
- New module `rmaker_lib/schedule_utils.py` for schedule formatting and parsing

## [1.3.0] - 16-Jun-2025
### Added
- Multi-profile support for managing multiple ESP RainMaker deployments
- New `profile` command with subcommands:
  - `list`: Show all configured profiles
  - `current`: Display active profile
  - `switch`: Change to a different profile
  - `add`: Configure a new profile
  - `remove`: Delete an existing profile
- Global `--profile` option available with all commands to specify which profile to use

## [1.2.0] - 06-Jun-2025
### Added
- New `getnodedetails` command for formatted node information with raw data option
- Support for schedule management with `get/setschedule` commands
- Comprehensive documentation for all supported features

