Assisted Claiming
Register an unclaimed RainMaker device with the cloud and install a device certificate before provisioning.
Requires a connected ESPDevice instance (BLE session via connect()).
What This Module Does ?
Assisted claiming gives a device its cloud identity before Wi-Fi provisioning: the SDK talks to the device over BLE, calls RainMaker claiming APIs, and installs a certificate.
Use this when the device is unclaimed, advertises assisted-claiming, you need ClaimCapabilities.CAMERA_CLAIM for video devices, or provisioning requires a claimed device first.
Skip if the device is already claimed — go to Provisioning.
Claiming (certificates) is separate from provisioning (user mapping + Wi-Fi). See Claiming.
Expected outcome: Certificate installed; device ready for provision().
Common Workflows
Standard claiming
import { ClaimCapabilities } from "@espressif/rainmaker-base-sdk";
await device.connect();
await device.startAssistedClaiming((response) => {
console.log(response.status, response.message);
if (response.status === "succeeded") {
console.log("Ready for provisioning");
}
});
Camera / video devices
await device.startAssistedClaiming(
handleClaimProgress,
ClaimCapabilities.CAMERA_CLAIM
);
Claiming then provisioning
await device.connect();
await device.startAssistedClaiming(onClaimProgress);
await device.scanWifiList();
await device.provision(ssid, password, onProvisionProgress);
Error Handling
| Code | Meaning |
|---|---|
CLAIM_START_FAILED | Device did not accept claim start |
CSR_RETRIEVAL_FAILED | Could not read CSR from device |
CLAIM_API_FAILED | Cloud initiate/verify failed |
CLAIM_ABORTED | Operation aborted mid-flow |
try {
await device.startAssistedClaiming(onProgress);
} catch (error) {
console.error("Claiming failed:", error.code, error.message);
}
Advanced Concepts
Mental model
Claim with cloud → then provision to user.
Claiming flow
When to claim vs skip
Check getDeviceCapabilities() after connect().
Best Practices
- Connect before claiming
- Skip if already claimed
- Use progress callbacks for multi-step UI
- Claim before
provision() - Use
CAMERA_CLAIMfor video devices
Related Resource
- API Reference: