📊 ioBroker Simple-API Skill
Production-ready ioBroker client for OpenClaw automation.
Full access to ioBroker via the simple-api adapter. Read states, objects, historical data, write to states, execute JavaScript, and monitor your smart home. The skill automatically handles caching, rate limiting, and circuit breaker protection. Use this skill to integrate OpenClaw with your ioBroker installation for full smart home control.
🚀 Quick Start
Prerequisites
- - ioBroker with simple-api adapter installed
- Adapter running on a port (default 8087)
Minimal Configuration
The skill auto-detects config on first run. Manual config in openclaw.json:
CODEBLOCK0
Test Connection
CODEBLOCK1
Returns connection status, uptime, and state count.
⚙️ Configuration
| Option | Required | Default | Description |
|---|
| INLINECODE1 | Yes | INLINECODE2 | ioBroker simple-api base URL |
| INLINECODE3 |
Yes |
8087 | ioBroker simple-api port |
|
username | No | (empty) | Basic Auth username |
|
password | No | (empty) | Basic Auth password |
Auto-Detection
The skill automatically detects the OpenClaw config path:
- 1. From environment variables (
OPENCLAW_HOME, OPENCLAW_STATE_DIR) - From its own installation path (skill → workspace → .openclaw)
- Creates default config on first run if missing
Runtime Config
Change config at runtime:
CODEBLOCK2
📖 Read Operations
Get State Value
CODEBLOCK3
With JSON parsing:
CODEBLOCK4
Get State + Object
CODEBLOCK5
Get Multiple States
CODEBLOCK6
List Objects/States
CODEBLOCK7
Search
CODEBLOCK8
Query History
CODEBLOCK9
Supported time formats:
- -
-1h, -30m, -7d (relative) - INLINECODE12 (today at midnight)
- INLINECODE13 (absolute)
CSV Export
CODEBLOCK10
📤 Write Operations
Set State
CODEBLOCK11
Toggle
CODEBLOCK12
Set Multiple
CODEBLOCK13
Create/Delete State
CODEBLOCK14
Enable/Disable
CODEBLOCK15
💻 Script Execution
Execute JavaScript
CODEBLOCK16
List Scripts
CODEBLOCK17
🔌 System Commands
| Command | Description |
|---|
| INLINECODE14 | Connection status, uptime, state count |
| INLINECODE15 |
Cache statistics (hits, misses, size) |
|
rate | Rate limit status |
|
system | Hosts, memory, CPU info |
|
runtime | Uptime, CPU, memory, disk |
|
adapters | List installed adapters |
|
instances | Adapter instances with status |
|
status | Full skill status |
🎬 Scenes & Snapshots
Scenes
CODEBLOCK18
Snapshots
CODEBLOCK19
📊 Groups & Enums
CODEBLOCK20
⚡ Features
Caching
- - 30 second TTL for frequently accessed states
- Automatic cache invalidation on writes
Rate Limiting
- - 10 requests/second to prevent API flooding
- Queue management for burst requests
Circuit Breaker
- - Auto-recovery on failures
- Exponential backoff with jitter
Batch Operations
- - Efficient bulk get/set
- Parallel execution option
Type Coercion
- - Convert between boolean/number/string
- Automatic JSON parsing
Historical Queries
- - Multiple aggregation types (minmax, average, sum, count)
- Configurable time ranges
📋 API Reference
Commands Summary
| Command | Description |
|---|
| INLINECODE22 | Get state value |
| INLINECODE23 |
Get state + object |
|
getBulk:<ids> | Multiple states |
|
objects:<pattern> | List objects |
|
states:<pattern> | List states |
|
search:<pattern> | Search data |
|
query:<id>?dateFrom=... | Query history |
|
set:<id>?value=... | Set state |
|
toggle:<id> | Toggle state |
|
setBulk:<id1>=<v1>&<id2>=<v2> | Multiple writes |
|
create:<id>?common=... | Create state |
|
delete:<id> | Delete state |
|
exec:<js> | Execute JS |
|
scene:name={...} | Create scene |
|
snapshot:name=... | Take snapshot |
|
groups | List enums |
|
health | Connection check |
|
cache | Cache stats |
|
system | System info |
|
runtime | Runtime info |
📁 Resources
Files
- -
skill.js - Main implementation - INLINECODE43 - Skill loader
- INLINECODE44 - MIT No Attribution
🔗 External Links
📊 ioBroker Simple-API 技能
适用于 OpenClaw 自动化的生产级 ioBroker 客户端。
通过 simple-api 适配器完全访问 ioBroker。可读取状态、对象、历史数据,写入状态,执行 JavaScript,并监控您的智能家居。该技能自动处理缓存、速率限制和断路器保护。使用此技能将 OpenClaw 与您的 ioBroker 安装集成,实现完整的智能家居控制。
🚀 快速入门
前置条件
- - 已安装 simple-api 适配器的 ioBroker
- 适配器在某个端口上运行(默认 8087)
最小配置
该技能在首次运行时自动检测配置。在 openclaw.json 中手动配置:
json
{
entries: {
iobroker-simple-api: {
config: {
url: http://CHANGEMEIP,
port: 8087,
username: ,
password:
}
}
}
}
测试连接
health
返回连接状态、运行时间和状态数量。
⚙️ 配置
| 选项 | 必需 | 默认值 | 描述 |
|---|
| url | 是 | http://CHANGEMEIP | ioBroker simple-api 基础 URL |
| port |
是 | 8087 | ioBroker simple-api 端口 |
| username | 否 | (空) | 基本认证用户名 |
| password | 否 | (空) | 基本认证密码 |
自动检测
该技能自动检测 OpenClaw 配置路径:
- 1. 从环境变量(OPENCLAWHOME、OPENCLAWSTATE_DIR)
- 从其自身安装路径(技能 → workspace → .openclaw)
- 首次运行时若缺失则创建默认配置
运行时配置
在运行时更改配置:
config:baseUrl=http://CHANGEMEIP:8087
config:timeout=20000
📖 读取操作
获取状态值
getPlainValue:javascript.0.sensor.temperature
带 JSON 解析:
getPlainValue:javascript.0.data?json
获取状态 + 对象
get:javascript.0.sensor.temperature
获取多个状态
getBulk:javascript.0.sensor.temperature,javascript.0.sensor.humidity
列出对象/状态
objects:* # 所有对象
objects:javascript.0.* # JavaScript 适配器对象
states:* # 所有状态
states:humidity* # 以 humidity 开头的状态
搜索
search:temperature
search:livingroom
查询历史
query:javascript.0.sensor.temperature?dateFrom=-1h
query:system.host.*?dateFrom=-24h&aggregate=minmax
支持的时间格式:
- - -1h、-30m、-7d(相对时间)
- today(今天午夜)
- 2024-01-01(绝对时间)
CSV 导出
csv:javascript.0.sensor.temperature?dateFrom=-24h
📤 写入操作
设置状态
set:javascript.0.light?value=on
set:javascript.0.counter?value=42&type=number&ack=true
切换
toggle:javascript.0.switch
批量设置
setBulk:javascript.0.light1=on&javascript.0.light2=off
创建/删除状态
create:javascript.0.myNewState?common={type:number,name:My State}
delete:javascript.0.myNewState
启用/禁用
enable:javascript.0.myNewState
disable:javascript.0.myNewState
💻 脚本执行
执行 JavaScript
exec:$(javascript.0.sensor.temp).val(true)
eval:2+2
列出脚本
scripts
jsinfo
🔌 系统命令
| 命令 | 描述 |
|---|
| health | 连接状态、运行时间、状态数量 |
| cache |
缓存统计(命中、未命中、大小) |
| rate | 速率限制状态 |
| system | 主机、内存、CPU 信息 |
| runtime | 运行时间、CPU、内存、磁盘 |
| adapters | 列出已安装的适配器 |
| instances | 适配器实例及状态 |
| status | 完整技能状态 |
🎬 场景与快照
场景
scene:mynight={light.living:on,light.bedroom:off}
scenes
activate:mynight
deletescene:mynight
快照
snapshot:backup=state1,state2
snapshots
diff:snap1 vs snap2
diff:snap1 vs current
📊 组与枚举
groups
groups:rooms
group:enum.rooms.living
⚡ 功能特性
缓存
- - 频繁访问的状态 30 秒 TTL
- 写入时自动缓存失效
速率限制
- - 每秒 10 个请求以防止 API 洪泛
- 突发请求的队列管理
断路器
批量操作
类型转换
- - 在布尔/数字/字符串之间转换
- 自动 JSON 解析
历史查询
- - 多种聚合类型(最小最大值、平均值、总和、计数)
- 可配置的时间范围
📋 API 参考
命令汇总
| 命令 | 描述 |
|---|
| getPlainValue:<id> | 获取状态值 |
| get:<id> |
获取状态 + 对象 |
| getBulk:
| 多个状态 |
| objects: | 列出对象 |
| states: | 列出状态 |
| search: | 搜索数据 |
| query:?dateFrom=... | 查询历史 |
| set:?value=... | 设置状态 |
| toggle: | 切换状态 |
| setBulk:=&= | 批量写入 |
| create:?common=... | 创建状态 |
| delete: | 删除状态 |
| exec: | 执行 JS |
| scene:name={...} | 创建场景 |
| snapshot:name=... | 拍摄快照 |
| groups | 列出枚举 |
| health | 连接检查 |
| cache | 缓存统计 |
| system | 系统信息 |
| runtime | 运行时信息 |
📁 资源
文件
- - skill.js - 主要实现
- index.js - 技能加载器
- LICENSE - MIT 无署名许可
🔗 外部链接