NVS

[English]

  • 组件注册表: espressif/brookesia_service_nvs

  • 辅助头文件: #include "brookesia/service_helper/nvs.hpp"

  • 辅助类: esp_brookesia::service::helper::NVS

概述

brookesia_service_nvs 是为 ESP-Brookesia 生态系统提供的 NVS(Non-Volatile Storage,非易失性存储)服务,提供:

  • 命名空间管理:基于命名空间的键值对存储,支持多个独立的存储空间。

  • 数据类型支持:支持 布尔值整数字符串 三种基本数据类型。

  • 持久化存储:数据存储在 NVS 分区中,断电后数据不丢失。

  • 线程安全:可选基于 TaskScheduler 实现异步任务调度,保证线程安全。

  • 灵活查询:支持列出命名空间中的所有键值对,或按需获取指定键的值。

功能特性

命名空间管理

  • 默认命名空间:如果不指定命名空间,将使用默认命名空间 "storage"

  • 多命名空间:可以创建多个命名空间来组织不同类型的数据。

  • 命名空间隔离:不同命名空间的数据相互独立,互不影响。

支持的数据类型

  • 布尔值(Bool)truefalse

  • 整数(Int):32 位有符号整数。

  • 字符串(String):UTF-8 编码的字符串。

备注

除了上述三种基本数据类型外,NVS Helper 提供的 esp_brookesia::service::helper::NVS::save_key_value()esp_brookesia::service::helper::NVS::get_key_value() 模板助手函数还支持存储和获取任意类型的数据。

核心功能

  • 列出键信息:列出命名空间中所有键的信息(包括键名、类型等)。

  • 设置键值对:支持批量设置多个键值对。

  • 获取键值对:支持获取指定键的值,或获取命名空间中的所有键值对。

  • 删除键值对:支持删除指定键,或清空整个命名空间。

服务接口

函数

List

描述

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”}]

执行要求
  • 是否需要调度器: 需要

参数
  • Nspace

    • 类型: String

    • 是否必填: 可选

    • 默认值: "storage"

    • 描述: Namespace to list (optional). Uses the default namespace when omitted.

Schema JSON
展开查看 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 命令
svc_call NVS List {"Nspace":null}

Set

描述

Set key-value pairs in an NVS namespace.

执行要求
  • 是否需要调度器: 需要

参数
  • Nspace

    • 类型: String

    • 是否必填: 可选

    • 默认值: "storage"

    • 描述: Namespace to write (optional). Uses the default namespace when omitted or empty.

  • KeyValuePairs

    • 类型: Object

    • 是否必填: 必填

    • 描述: Key-value pairs as a JSON object. Allowed value types: [“Bool”,”Int”,”String”]. Example: {“key1”:”value1”,”key2”:2,”key3”:true}

Schema JSON
展开查看 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 命令
svc_call NVS Set {"Nspace":null,"KeyValuePairs":null}

Get

描述

Get key-value pairs by keys from an NVS namespace. Return type: JSON object. Example: {“key1”:”value1”,”key2”:2,”key3”:true}

执行要求
  • 是否需要调度器: 需要

参数
  • Nspace

    • 类型: String

    • 是否必填: 可选

    • 默认值: "storage"

    • 描述: Namespace to read (optional). Uses the default namespace when omitted.

  • Keys

    • 类型: Array

    • 是否必填: 可选

    • 默认值: []

    • 描述: Keys to read as JSON array<string> (optional). Returns all pairs when omitted. Example: [“key1”,”key2”,”key3”]

Schema JSON
展开查看 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 命令
svc_call NVS Get {"Nspace":null,"Keys":null}

Erase

描述

Erase key-value pairs from an NVS namespace.

执行要求
  • 是否需要调度器: 需要

参数
  • Nspace

    • 类型: String

    • 是否必填: 可选

    • 默认值: "storage"

    • 描述: Namespace to erase (optional). Uses the default namespace when omitted.

  • Keys

    • 类型: Array

    • 是否必填: 可选

    • 默认值: []

    • 描述: Keys to erase as JSON array<string> (optional). Erases all pairs when omitted or empty. Example: [“key1”,”key2”,”key3”]

Schema JSON
展开查看 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 命令
svc_call NVS Erase {"Nspace":null,"Keys":null}

事件

无。