nayota-ai-camera-sdk
v0.0.6
Published
nayota-ai-camera-server rest-api
Readme
Nayota AI Camera SDK
这个SDK提供了与Nayota AI摄像头系统进行交互的完整接口,包括摄像头管理、OCR识别、实时数据推送、统计分析等功能。
安装
npm install nayota-ai-camera-sdk快速开始
初始化
import aiCameraSDK from 'nayota-ai-camera-sdk'
// 配置SDK
aiCameraSDK.config({
aiCameraServer: 'http://your-server-url/api' // 设置服务器地址
})
// 监听错误事件
aiCameraSDK.on('error', (errorMessage) => {
console.error('API错误:', errorMessage)
})功能模块
1. 摄像头管理 (Camera)
提供摄像头的基础管理功能,包括开关控制、配置管理、实时画面获取等。
// 获取摄像头列表
const cameras = await aiCameraSDK.camera.getCameras()
// 开启摄像头
await aiCameraSDK.camera.toggleCamera('camera001', {
rtsp_url: 'rtsp://user:[email protected]:554/stream',
type: 'ai'
})
// 获取当前帧
const frame = await aiCameraSDK.camera.getCameraFrame('camera001', 'ai')
// 设置ROI区域
await aiCameraSDK.camera.setRoi('camera001', [[100, 100], [200, 100], [200, 200], [100, 200]])
// 获取人员计数
const count = await aiCameraSDK.camera.getPersonCount('camera001')主要功能:
- 摄像头开关控制
- 摄像头列表查询
- 实时画面获取
- ROI区域设置与查询
- 人员计数功能
- IoT摄像头集成
2. OCR识别 (OCR)
提供强大的光学字符识别功能,支持从实时视频流和静态图像中识别文字。
// 从RTSP流识别OCR
const ocrResult = await aiCameraSDK.ocr.recognizeFromStream(
'rtsp://user:[email protected]:554/stream',
{
waitTime: 5,
returnImage: true,
roi: [[100, 100], [200, 100], [200, 200], [100, 200]]
}
)
// 从图像文件识别OCR
const fileInput = document.getElementById('file-input')
const file = fileInput.files[0]
const result = await aiCameraSDK.ocr.recognizeFromImage(file, {
returnImage: true,
roi: [100, 100, 300, 300]
})
// 批量识别多个流
const batchResults = await aiCameraSDK.ocr.batchRecognizeFromStreams([
'rtsp://camera1/stream',
'rtsp://camera2/stream'
])主要功能:
- RTSP流OCR识别
- 图像文件OCR识别
- ROI区域指定
- 批量识别处理
- 置信度控制
- 结果图像标注
3. 系统设置 (Settings)
管理系统的全局配置,包括AI参数、OCR设置、系统参数等。
// 获取当前设置
const settings = await aiCameraSDK.settings.getSettings()
// 更新全局摄像头开关
await aiCameraSDK.settings.toggleGlobalCamera(true)
// 更新AI检测设置
await aiCameraSDK.settings.updateAiSettings({
detectionThreshold: 0.8,
trackingInterval: 200
})
// 更新OCR设置
await aiCameraSDK.settings.updateOcrSettings({
confidenceThreshold: 0.9,
language: 'ch_sim'
})
// 重置为默认设置
await aiCameraSDK.settings.resetToDefaults()主要功能:
- 全局摄像头开关
- AI检测参数配置
- OCR识别参数设置
- 系统性能参数调整
- 配置的保存与恢复
4. 统计数据 (Statistics)
提供丰富的数据统计和分析功能,支持人员流量、时长分析、占用率统计等。
// 创建统计记录
await aiCameraSDK.statistics.createStatistic({
cameraId: 'camera001',
type: 'person_count',
data: { count: 15, peak_time: '14:30' },
date: '2023-01-01'
})
// 获取时长统计
const durationStats = await aiCameraSDK.statistics.getDurationStatistics(
['camera001', 'camera002'],
'2023-01'
)
// 获取占用率数据
const occupancyData = await aiCameraSDK.statistics.getMaxOccupancyData(
['camera001', 'camera002'],
'2023-01-01',
'2023-01-07'
)
// 获取统计汇总
const summary = await aiCameraSDK.statistics.getStatisticsSummary({
cameraIds: ['camera001', 'camera002'],
startDate: '2023-01-01',
endDate: '2023-01-07',
type: 'person_count'
})主要功能:
- 统计记录CRUD操作
- 月度时长统计
- 最大占用率分析
- 批量数据处理
- 统计汇总报表
5. 减排数据 (Reduces)
环保相关的减排数据管理,支持CO2、PM2.5等多种减排类型的记录和分析。
// 创建减排记录
await aiCameraSDK.reduces.createReduce({
deviceId: 'device001',
type: 'CO2',
amount: 125.5,
unit: 'kg',
period: 'daily',
metadata: {
source: 'ai_camera',
method: 'calculation'
}
})
// 获取减排记录
const reduces = await aiCameraSDK.reduces.getReduces({
deviceId: 'device001',
type: 'CO2',
startDate: '2023-01-01',
endDate: '2023-01-31'
})
// 获取减排汇总
const summary = await aiCameraSDK.reduces.getReducesSummary({
deviceIds: ['device001', 'device002'],
types: ['CO2', 'PM2.5'],
startDate: '2023-01-01',
endDate: '2023-01-31'
})
// 导出减排数据
const exportFile = await aiCameraSDK.reduces.exportReduces(
{ deviceId: 'device001' },
'xlsx'
)主要功能:
- 减排记录CRUD操作
- 多种减排类型支持
- 减排数据统计汇总
- 数据导出功能
- 元数据管理
6. WebSocket实时通信
提供实时数据推送功能,支持摄像头数据、OCR结果的实时接收。
// 创建WebSocket连接
const wsClient = aiCameraSDK.websocket.createWebSocketConnection({
url: 'ws://localhost:5000/ws',
token: 'your-auth-token',
reconnectInterval: 3000,
maxReconnectAttempts: 10
})
// 设置事件监听器
wsClient.on('connected', () => {
console.log('WebSocket连接成功')
// 订阅摄像头数据
wsClient.subscribeCamera('camera001')
// 订阅OCR结果
wsClient.subscribeOcr('camera001')
})
wsClient.on('camera_data', (data) => {
console.log('收到摄像头数据:', data)
// 处理实时摄像头数据
})
wsClient.on('ocr_result', (data) => {
console.log('收到OCR结果:', data)
// 处理OCR识别结果
})
wsClient.on('error', (error) => {
console.error('WebSocket错误:', error)
})
// 连接服务器
await wsClient.connect()主要功能:
- 实时数据推送
- 自动重连机制
- 事件驱动架构
- 摄像头数据订阅
- OCR结果实时接收
7. 网络管理 (Network)
系统网络配置管理功能。
// 获取所有网络接口
const interfaces = await aiCameraSDK.network.getAllInterfaces()
// 获取特定接口详情
const ethDetails = await aiCameraSDK.network.getInterfaceDetails('eth0')
// 更新网络配置
await aiCameraSDK.network.updateInterfaceConfig('eth0', {
ipMethod: 'static',
ip4: '192.168.1.100',
gateway4: '192.168.1.1',
dns: ['8.8.8.8', '8.8.4.4']
})完整使用示例
智能监控应用
import aiCameraSDK from 'nayota-aiCamera-sdk'
class SmartMonitoringApp {
constructor() {
this.wsClient = null
this.cameras = new Map()
}
async initialize() {
// 配置SDK
aiCameraSDK.config({
superServiceServer: 'http://your-server-url/api'
})
// 获取摄像头列表
const cameraList = await aiCameraSDK.camera.getCameras('ai')
// 设置摄像头
for (const camera of cameraList) {
await this.setupCamera(camera)
}
// 建立WebSocket连接
await this.setupWebSocket()
// 启动定时统计
this.startStatistics()
}
async setupCamera(camera) {
try {
// 开启摄像头
await aiCameraSDK.camera.toggleCamera(camera.cameraId, {
rtsp_url: camera.rtsp_url,
type: 'ai'
})
// 设置ROI区域
if (camera.roi) {
await aiCameraSDK.camera.setRoi(camera.cameraId, camera.roi)
}
console.log(`摄像头 ${camera.cameraId} 设置完成`)
} catch (error) {
console.error(`设置摄像头 ${camera.cameraId} 失败:`, error)
}
}
async setupWebSocket() {
this.wsClient = aiCameraSDK.websocket.createWebSocketConnection({
url: 'ws://localhost:5000/ws',
token: localStorage.getItem('auth_token')
})
// 监听连接事件
this.wsClient.on('connected', () => {
console.log('WebSocket连接成功')
// 订阅所有摄像头数据
this.cameras.forEach((_, cameraId) => {
this.wsClient.subscribeCamera(cameraId)
})
})
// 监听摄像头数据
this.wsClient.on('camera_data', (data) => {
this.handleCameraData(data)
})
// 监听OCR结果
this.wsClient.on('ocr_result', (data) => {
this.handleOcrResult(data)
})
await this.wsClient.connect()
}
handleCameraData(data) {
// 更新界面显示
this.updateCameraDisplay(data.cameraId, {
personCount: data.person_count,
image: data.image,
timestamp: data.timestamp
})
// 记录统计数据
this.recordStatistics(data)
}
handleOcrResult(data) {
// 处理OCR识别结果
console.log(`OCR识别结果:`, data.ocr_results)
// 保存识别记录
this.saveOcrResults(data)
}
async recordStatistics(data) {
try {
await aiCameraSDK.statistics.createStatistic({
cameraId: data.cameraId,
type: 'person_count',
data: {
count: data.person_count,
timestamp: data.timestamp
},
date: new Date().toISOString().split('T')[0]
})
} catch (error) {
console.error('记录统计数据失败:', error)
}
}
async generateDailyReport() {
try {
const today = new Date().toISOString().split('T')[0]
const cameraIds = Array.from(this.cameras.keys())
// 获取今日统计
const statistics = await aiCameraSDK.statistics.getStatistics({
cameraIds,
date: today
})
// 获取时长统计
const durationStats = await aiCameraSDK.statistics.getDurationStatistics(
cameraIds,
today.substring(0, 7) // YYYY-MM
)
// 生成报表
const report = {
date: today,
statistics,
durationStats,
totalCameras: cameraIds.length
}
console.log('日报表:', report)
return report
} catch (error) {
console.error('生成日报表失败:', error)
}
}
startStatistics() {
// 每小时生成统计
setInterval(() => {
this.generateDailyReport()
}, 60 * 60 * 1000)
}
}
// 使用示例
const app = new SmartMonitoringApp()
app.initialize().then(() => {
console.log('智能监控应用初始化完成')
}).catch(error => {
console.error('应用初始化失败:', error)
})API文档
详细的API文档请参考各模块的JSDoc注释:
错误处理
所有API调用都会返回Promise,建议使用try/catch进行错误处理:
try {
const result = await aiCameraSDK.camera.getCameras()
console.log('成功:', result)
} catch (error) {
console.error('错误:', error)
}也可以使用全局错误监听:
aiCameraSDK.on('error', (errorMessage) => {
console.error('API错误:', errorMessage)
// 统一错误处理逻辑
})开发指南
环境要求
- Node.js >= 14.0.0
- 支持ES6+的现代浏览器
- WebSocket支持
配置选项
aiCameraSDK.config({
superServiceServer: 'http://localhost:5000/api', // 服务器地址
timeout: 30000, // 请求超时时间
retryTimes: 3, // 重试次数
retryDelay: 1000 // 重试延迟
})最佳实践
- 初始化顺序:先配置SDK,再进行API调用
- 错误处理:为所有异步操作添加错误处理
- WebSocket管理:及时清理WebSocket连接,避免内存泄漏
- 性能优化:合理使用批量操作,避免频繁的单个请求
- 安全考虑:妥善管理认证令牌,避免在客户端暴露敏感信息
许可证
MIT License
更新日志
v1.0.0
- 初始版本发布
- 完整的摄像头管理功能
- OCR识别支持
- 实时数据推送
- 统计分析功能
- 减排数据管理
- 系统设置管理
- 网络配置管理
技术支持
如有问题或建议,请联系技术支持团队。
