npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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 // 重试延迟
})

最佳实践

  1. 初始化顺序:先配置SDK,再进行API调用
  2. 错误处理:为所有异步操作添加错误处理
  3. WebSocket管理:及时清理WebSocket连接,避免内存泄漏
  4. 性能优化:合理使用批量操作,避免频繁的单个请求
  5. 安全考虑:妥善管理认证令牌,避免在客户端暴露敏感信息

许可证

MIT License

更新日志

v1.0.0

  • 初始版本发布
  • 完整的摄像头管理功能
  • OCR识别支持
  • 实时数据推送
  • 统计分析功能
  • 减排数据管理
  • 系统设置管理
  • 网络配置管理

技术支持

如有问题或建议,请联系技术支持团队。