NVS
Component registry: espressif/brookesia_service_nvs
Helper header:
#include "brookesia/service_helper/nvs.hpp"Helper class:
esp_brookesia::service::helper::NVS
Overview
brookesia_service_nvs provides NVS (non-volatile storage) for the ESP-Brookesia ecosystem:
Namespaces: Key–value storage partitioned by namespace.
Types: Boolean, 32-bit signed integer, and UTF-8 string.
Persistence: Data survives power cycles in the NVS partition.
Thread safety: Optional TaskScheduler–based async execution.
Queries: List keys in a namespace or read specific keys.
Features
Namespaces
Default: If omitted, namespace
"storage"is used.Multiple: Create several namespaces for different data.
Isolation: Namespaces are independent.
Supported Types
Bool:
true/false.Int: 32-bit signed integer.
String: UTF-8 string.
Note
Beyond these primitives, NVS Helper templates esp_brookesia::service::helper::NVS::save_key_value() and esp_brookesia::service::helper::NVS::get_key_value() can store and retrieve arbitrary types.
Core Capabilities
List key metadata in a namespace.
Set multiple key–value pairs in batch.
Read one key or all pairs in a namespace.
Delete a key or clear a namespace.
Standard Include / Helper Class
Standard include:
#include \"brookesia/service_helper/nvs.hpp\"Helper class:
esp_brookesia::service::helper::NVS
Service Interfaces
Functions
List
Description
List key-value entries in an NVS namespace. Return type: JSON array<object>. Example: [{“nspace”:”storage”,”key”:”key1”,”type”:”String”},{“nspace”:”storage”,”key”:”key2”,”type”:”Int”}]
Execution
Requires scheduler: Required
Parameters
NspaceType:
StringRequired: optional
Default:
"storage"Description: Namespace to list (optional). Uses the default namespace when omitted.
Schema JSON
Show raw JSON
{
"name": "List",
"description": "List key-value entries in an NVS namespace. Return type: JSON array<object>. Example: [{\"nspace\":\"storage\",\"key\":\"key1\",\"type\":\"String\"},{\"nspace\":\"storage\",\"key\":\"key2\",\"type\":\"Int\"}]",
"require_scheduler": true,
"parameters": [
{
"name": "Nspace",
"description": "Namespace to list (optional). Uses the default namespace when omitted.",
"type": "String",
"required": false,
"default_value": "storage"
}
]
}
CLI Command
svc_call NVS List {"Nspace":null}
Set
Description
Set key-value pairs in an NVS namespace.
Execution
Requires scheduler: Required
Parameters
NspaceType:
StringRequired: optional
Default:
"storage"Description: Namespace to write (optional). Uses the default namespace when omitted or empty.
KeyValuePairsType:
ObjectRequired: required
Description: Key-value pairs as a JSON object. Allowed value types: [“Bool”,”Int”,”String”]. Example: {“key1”:”value1”,”key2”:2,”key3”:true}
Schema JSON
Show raw JSON
{
"name": "Set",
"description": "Set key-value pairs in an NVS namespace.",
"require_scheduler": true,
"parameters": [
{
"name": "Nspace",
"description": "Namespace to write (optional). Uses the default namespace when omitted or empty.",
"type": "String",
"required": false,
"default_value": "storage"
},
{
"name": "KeyValuePairs",
"description": "Key-value pairs as a JSON object. Allowed value types: [\"Bool\",\"Int\",\"String\"]. Example: {\"key1\":\"value1\",\"key2\":2,\"key3\":true}",
"type": "Object",
"required": true,
"default_value": null
}
]
}
CLI Command
svc_call NVS Set {"Nspace":null,"KeyValuePairs":null}
Get
Description
Get key-value pairs by keys from an NVS namespace. Return type: JSON object. Example: {“key1”:”value1”,”key2”:2,”key3”:true}
Execution
Requires scheduler: Required
Parameters
NspaceType:
StringRequired: optional
Default:
"storage"Description: Namespace to read (optional). Uses the default namespace when omitted.
KeysType:
ArrayRequired: optional
Default:
[]Description: Keys to read as JSON array<string> (optional). Returns all pairs when omitted. Example: [“key1”,”key2”,”key3”]
Schema JSON
Show raw JSON
{
"name": "Get",
"description": "Get key-value pairs by keys from an NVS namespace. Return type: JSON object. Example: {\"key1\":\"value1\",\"key2\":2,\"key3\":true}",
"require_scheduler": true,
"parameters": [
{
"name": "Nspace",
"description": "Namespace to read (optional). Uses the default namespace when omitted.",
"type": "String",
"required": false,
"default_value": "storage"
},
{
"name": "Keys",
"description": "Keys to read as JSON array<string> (optional). Returns all pairs when omitted. Example: [\"key1\",\"key2\",\"key3\"]",
"type": "Array",
"required": false,
"default_value": []
}
]
}
CLI Command
svc_call NVS Get {"Nspace":null,"Keys":null}
Erase
Description
Erase key-value pairs from an NVS namespace.
Execution
Requires scheduler: Required
Parameters
NspaceType:
StringRequired: optional
Default:
"storage"Description: Namespace to erase (optional). Uses the default namespace when omitted.
KeysType:
ArrayRequired: optional
Default:
[]Description: Keys to erase as JSON array<string> (optional). Erases all pairs when omitted or empty. Example: [“key1”,”key2”,”key3”]
Schema JSON
Show raw JSON
{
"name": "Erase",
"description": "Erase key-value pairs from an NVS namespace.",
"require_scheduler": true,
"parameters": [
{
"name": "Nspace",
"description": "Namespace to erase (optional). Uses the default namespace when omitted.",
"type": "String",
"required": false,
"default_value": "storage"
},
{
"name": "Keys",
"description": "Keys to erase as JSON array<string> (optional). Erases all pairs when omitted or empty. Example: [\"key1\",\"key2\",\"key3\"]",
"type": "Array",
"required": false,
"default_value": []
}
]
}
CLI Command
svc_call NVS Erase {"Nspace":null,"Keys":null}
Events
This contract does not publish standard event schemas.