@enerlab/thingsboard-客户端
类型安全 Script 客户端 企业 (原始内容存档于2018-03-26) (英语). REST API with 佐德语Name v4 运行时验证.
来源于官方 ThingsBoard OpenAPI 3.1 spec 使用 @ hey- api/ openapi- ts (韩语)。 。 。 .
特征
- Full ThingsBoard REST API覆盖率,由 TB 专业版 spec生成(PE 是 CE 的超级集——只使用 CE 的消费者会看到 SDK 函数,用于 PE 唯一的端点,即他们的服务器上的404)
login()编号 :logout()助手( 不在 OpenAPI 类别中, 手工提供)- 用于所有端点、请求正文和响应的脚本类型
- 在 API 边界进行运行时间验证的 Zod 计划
- 土著
fetch– 在Node.js 20+, Bun, Deno 和浏览器中工作 - 可树摇动 — 只导入最小捆绑大小的端点
版本
软件包版本映射了目标ThingsBoard服务器版本,外加一个预放标签,将精确的上游光谱构建:
MAJOR.MINOR.PATCH-<edition>.<build>.<client-revision>
MAJOR.MINOR.PATCH与 TB 服务器版本完全匹配(例如:.4.3.1) (中文(简体) ).<edition>光谱来源于 TB 版本 :pe或者说ce。 。 。 .<build>是TB的积分计数器info.version(例如:.4.3.1.1PE→1) (中文(简体) ).<client-revision>仅针对客户端修改的递增(codegen tweaks,补丁-script 更新,帮助者添加),对应相同的上层光谱构建. 开始于0每个新光谱获取 .
简单的版本像 4.3.1 为: 从未出版 ——每一次放出都带有完整的放出前标记,因此上游出处总是可见. 消费者使用 ^4.3.1 (c) 明确标出:
"@enerlab/thingsboard-client": "4.3.1-pe.1.0"
| 活动 | 版本 |
|---|---|
从 TB 创建的第一个客户端 4.3.1.1PE | 4.3.1-pe.1.0 |
| 只有客户端的固定; 相同的光谱构建 | 4.3.1-pe.1.1 |
对抗肺结核 4.3.1.2PE | 4.3.1-pe.2.0 |
| 4.3.2 (建造0,PE) | 4.3.2-pe.0.0 |
支持的 TB 版本/ 分支布局
main 跟踪最新的TB小于包目标。 当套件移动到一个新的肺结核未成年人时, a release/<MAJOR>.<MINOR>.x 树枝断了 main 首先; 仅客户端的修补可以返回到该分支上并作为新版本发布 -N 对旧行的修订。 目前仅 main 它的目标是TB 4.3.x.
安装
pnpm add @enerlab/thingsboard-client
快速启动
import { client, login, getDeviceByIdUsingGet } from '@enerlab/thingsboard-client'
// Configure the base URL
client.setConfig({
baseUrl: 'https://your-thingsboard.com',
})
// Login — auto-stores the JWT token on the client
await login('[email protected]', 'tenant')
// Make type-safe API calls
const { data, error } = await getDeviceByIdUsingGet({
path: { deviceId: 'your-device-id' },
})
if (error) {
console.error('Failed to fetch device:', error)
} else {
console.log('Device:', data.name)
}
使用已存在的托肯
如果您已经有一个JWT(例如上一个会话),请直接设定:
import { client, getDeviceByIdUsingGet } from '@enerlab/thingsboard-client'
client.setConfig({
baseUrl: 'https://your-thingsboard.com',
auth: 'eyJ...',
})
const { data } = await getDeviceByIdUsingGet({
path: { deviceId: 'your-device-id' },
})
使用单独的客户端实例
对于多个TimesBoard实例或孤立的认证上下文,创建专用客户端:
import { createClient, createConfig, login, getDeviceByIdUsingGet } from '@enerlab/thingsboard-client'
const myClient = createClient(createConfig({
baseUrl: 'https://other-thingsboard.com',
}))
await login('[email protected]', 'admin', { client: myClient })
const { data } = await getDeviceByIdUsingGet({
path: { deviceId: 'device-id' },
client: myClient,
})
树摇
所有 SDK 函数都导出为独立的可树动函数. 您的捆绑机将只包含您实际导入的端点, 保持您的捆绑小—— 对前端和移动应用程序尤其重要 .
// Only getDeviceByIdUsingGet and its Zod validator end up in your bundle
import { getDeviceByIdUsingGet } from '@enerlab/thingsboard-client'
佐德·斯克马斯
导入 Zod 计划用于运行时间验证 :
import { zDevice } from '@enerlab/thingsboard-client/zod'
// Validate external data
const result = zDevice.safeParse(unknownData)
if (result.success) {
console.log('Valid device:', result.data.name)
}
发展
先决条件
- 节点.js 20+
- pnpm 8+ 时间长度
设置
# Install dependencies
pnpm install
# Download the ThingsBoard OpenAPI spec
# Default URL is https://demo.thingsboard.io (Community Edition).
# Override with THINGSBOARD_SPEC_URL to target a PE instance or a specific TB version.
pnpm fetch-spec
# Generate the TypeScript client
pnpm generate
# Type-check
pnpm typecheck
# Run tests
pnpm test
# Lint
pnpm lint
# Build
pnpm build
更新光谱
要更新到更新的 ThingsBoard API 版本 :
# From demo.thingsboard.io (latest Community Edition)
pnpm fetch-spec
# Or from your own instance
THINGSBOARD_SPEC_URL=https://my-tb.example.com/v3/api-docs?group=thingsboard pnpm fetch-spec
# Regenerate the client
pnpm generate
项目结构
thingsboard-client/
├── src/
│ ├── index.ts # Package entry — re-exports everything
│ ├── auth.ts # login() / logout() helpers
│ └── generated/ # Auto-generated by @hey-api/openapi-ts (gitignored)
│ ├── client.gen.ts # Fetch client instance
│ ├── sdk.gen.ts # SDK functions for every endpoint
│ ├── types.gen.ts # TypeScript types
│ └── zod.gen.ts # Zod schemas
├── tests/
│ ├── auth.test.ts # login/logout tests
│ └── zod-contracts.test.ts # Zod schema contract tests
├── spec/
│ └── thingsboard-openapi.json # Downloaded OpenAPI spec (committed)
├── scripts/
│ └── fetch-spec.ts # Script to download the spec
├── vitest.config.ts
├── openapi-ts.config.ts # @hey-api/openapi-ts configuration
├── tsconfig.json
└── package.json
ThingsBoard API 参考文献
API文件全文见:
- 物板 REST API 文档
- 交互式 Swagger 用户界面 (演示实例)
许可证
麻省理工学院