Documentation
¶
Overview ¶
Package demo 实现 CloudPath 的参考演示设备适配器(reference demo device)。
诚实性红线 ¶
本适配器不对应任何真实硬件:不打开串口、不访问任何外设、不生成随机假数。 它上报的是**本进程内真实维护的状态**(运行时长、心跳计数、命令计数、可写回 的设定值与开关);命令真实改变这些进程内状态并产生事件。设备类别在 State.Raw、Descriptor 与 plugin.yaml 中始终标注为 reference demo device, 绝不允许被 UI 或上报误标成真实硬件。
存在意义 ¶
让没有任何板子的电脑也能接入 CloudPath:Edge→Server→WebUI 的多设备、实时 状态、独立控制、断线重连全链路可以在纯软件下跑通与验收(无硬件依赖)。
拆仓红线 ¶
本包只依赖 sdk/go/driverkit 与 sdk/go/model, 不 import 任何 internal/*(由 demo_test.go 的导入扫描锁定)。
Index ¶
- Constants
- func ParseSetArgs(args string) (map[string]string, error)
- type Adapter
- func (a *Adapter) Capabilities() []model.Capability
- func (a *Adapter) Descriptor(cfg driverkit.Config) model.Descriptor
- func (a *Adapter) Name() string
- func (a *Adapter) Open(ctx context.Context, cfg driverkit.Config, onEvent func(driverkit.Event)) (driverkit.Device, error)
- func (a *Adapter) PortRequired() bool
- func (a *Adapter) SupportedCommands() []string
Constants ¶
const ( CmdPing = "ping" // 存活探测:计数 +1 并产生 probed 事件 CmdSet = "set" // 写回可读写法:value=<整数> / enabled=<bool>(亦接受 JSON 对象) CmdDump = "dump" // 触发一次状态读取(状态本身始终实时可读) CmdNoop = "noop" // 空操作:只验证命令链路可达 )
命令白名单。server 的命令校验与前端命令面板都以 SupportedCommands() 为 唯一事实源;本包不得在别处另立一份命令表。
const ( EventBooted = "device-booted" EventProbed = "probed" EventSetpoint = "setpoint-changed" EventToggled = "toggled" )
事件类型(capability-model.md §4:事件类型属于 Capability 命名空间, 不维护平台级写死枚举;本包的事件在 Capabilities() 中声明)。
const ( KeyLevel = "value" KeyEnabled = "enabled" )
set 命令可写的键(与 setpoint@1 / toggle@1 的 action inputSchema 一致)。
const Kind = "reference-demo-device"
Kind 是设备类别标注(诚实性红线):出现在 State.Raw 与 Descriptor 观测中, 让任何消费方都能一眼看出这不是真实硬件。
const Name = "demo"
Name 是注册的适配器名,同时是 plugin.yaml contributes.drivers 的贡献 ID。
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Adapter ¶
type Adapter struct{}
Adapter 实现 driverkit.Adapter(以及 DescriptorProvider / CapabilityProvider)。
func (*Adapter) Capabilities ¶
func (a *Adapter) Capabilities() []model.Capability
Capabilities 返回参考演示设备使用的 Capability catalog(/api/capabilities 事实源)。
actions 的键**等于命令白名单里的命令名**:前端 commandActions 直接把它渲染成 可点击按钮(cmd = action key),因此本设备在 schema-driven UI 里得到的是真实 控件,而不是 JSON 编辑器。
func (*Adapter) Descriptor ¶
func (a *Adapter) Descriptor(cfg driverkit.Config) model.Descriptor
Descriptor 返回参考演示设备的静态 Descriptor(Entity/Capability 结构 + 身份)。 观测值由 dev.Descriptor 在设备实例上填充。
func (*Adapter) Open ¶
func (a *Adapter) Open(ctx context.Context, cfg driverkit.Config, onEvent func(driverkit.Event)) (driverkit.Device, error)
Open 立即成功:无硬件可打开。返回的设备由本进程内的真实状态驱动, 并启动心跳计数循环(ctx 取消或 Close 后停止)。
func (*Adapter) PortRequired ¶
PortRequired 声明本适配器**不需要真实端口**。
edge 的配置校验以结构性接口方式读取该方法(examples/* 不得 import internal/*, 因此约定写在两侧文档里):未实现该方法的适配器(如 stcb)默认 port 必填, 校验强度不被削弱。
func (*Adapter) SupportedCommands ¶
SupportedCommands 返回命令白名单(唯一事实源)。