一些 开源物联网(IoT)平台,它们广泛应用于设备管理、数据采集、远程监控和边缘计算等场景:


🌟 主流开源物联网平台

平台 描述 技术栈 许可证
ThingsBoard 功能丰富,支持设备管理、遥测数据收集、规则引擎、告警等 Java, Spring, Akka, Cassandra / PostgreSQL Apache 2.0
EMQX 高性能 MQTT 消息服务器,支持百万级连接 Erlang/OTP Apache 2.0
Kaa IoT 模块化设计,支持设备管理、数据分析、设备集群 Java, Spring Apache 2.0
Mainflux 现代、可扩展的平台,支持 MQTT, HTTP, CoAP Go, NATS, PostgreSQL, Redis Apache 2.0
Thingspeak 适合快速原型和数据可视化(尤其是科研和教育) MATLAB, PHP GPLv3
OpenHAB 专注智能家居物联网的集成与自动化 Java, OSGi EPL-1.0
Node-RED 可视化编程工具,适合边缘节点和轻量级 IoT 集成 Node.js Apache 2.0

🚀 选择建议

应用场景 推荐平台
工业物联网、大规模部署 ThingsBoard / Kaa / Mainflux
消息中间件、高并发 EMQX
智能家居 OpenHAB / Home Assistant
教育、科研、快速实验 Thingspeak / Node-RED

🌐 关键特性对比

特性 ThingsBoard EMQX Kaa Mainflux Node-RED
设备管理 ⚠️ (需集成)
数据持久化 ⚠️ (需外部DB) ⚠️ (外部集成)
可视化仪表盘 ⚠️ (部分) ⚠️ (需开发)
高并发消息 ⚠️ ⚠️ ⚠️
多协议支持 MQTT, CoAP, HTTP MQTT, WebSocket MQTT, CoAP, HTTP MQTT, CoAP, HTTP MQTT, HTTP, WebSocket
规则引擎 ⚠️ (简单规则) ⚠️ ⚠️ ⚠️ (需编排)

ThingsBoard 部署

好的!下面是一个基于 TimescaleDBThingsBoarddocker-compose.yml 示例文件,适合在支持 x86_64 架构的笔记本或服务器上运行。这个示例包含了:

  • ThingsBoard 物联网平台(连接 postgresql)

services:
  postgres:
    restart: always
    image: "postgres:16"
    ports:
      - "5432"
    environment:
      POSTGRES_DB: thingsboard
      POSTGRES_PASSWORD: postgres
    volumes:
      - postgres-data:/var/lib/postgresql/data
  thingsboard-ce:
    restart: always
    image: "thingsboard/tb-node:4.0.1.1"
    ports:
      - "8080:8080"
      - "7070:7070"
      - "1883:1883"
      - "8883:8883"
      - "5683-5688:5683-5688/udp"
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "10"
    environment:
      TB_SERVICE_ID: tb-ce-node
      SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/thingsboard
    depends_on:
      - postgres

volumes:
  postgres-data:
    name: tb-postgres-data
    driver: local

说明

  • thingsboard

    • 使用 ThingsBoard 官方 PostgreSQL 版本镜像(默认连接 PostgreSQL)
    • 环境变量配置数据库连接信息
    • 映射 8080 端口用于 Web 访问
    • 依赖 timescaledb 服务,保证先启动数据库

使用步骤

  1. 将上面内容保存为 docker-compose.yml 文件。
  2. 修改密码环境变量 your_password 为你自己的安全密码。
  3. 在目录终端执行:
docker-compose up -d
  1. 等待容器启动,浏览器访问 http://localhost:8080 即可看到 ThingsBoard 界面。

  2. 第一次运行前,需要先初始化数据库,

docker compose run --rm -e INSTALL_TB=true -e LOAD_DEMO=true thingsboard-ce
  1. demo默认登陆用户名和密码
  • System Administrator: sysadmin@thingsboard.org / sysadmin
  • Tenant Administrator: tenant@thingsboard.org / tenant
  • Customer User: customer@thingsboard.org / customer

后续可以写更复杂的配置(比如加密、备份、日志管理)

如果出现错误,使用下面的命令查看

docker logs timescaledb | grep -i "error"

示例 docker-compose 配置

  • timescaledb 版本

    • 使用官方 TimescaleDB 镜像(基于 PostgreSQL 14)
    • 创建数据库 thingsboard,用户密码都设为 thingsboardyour_password(你可以修改)
    • 端口映射到宿主机的 5432
    • 数据卷持久化数据库数据
version: '3.8'

services:
  timescaledb:
    image: timescale/timescaledb:2.11.0-pg14
    container_name: timescaledb
    environment:
      POSTGRES_USER: thingsboard
      POSTGRES_PASSWORD: 1234
      POSTGRES_DB: thingsboard
    ports:
      - "5432:5432"
    volumes:
      - ./timescaledb-data:/var/lib/postgresql/data
    restart: unless-stopped

  tb-redis:
    image: redis:7-alpine
    container_name: tb-redis
    ports:
      - "6379:6379"
    restart: unless-stopped

  thingsboard:
    image: thingsboard/tb-node:4.0.1.1
    container_name: thingsboard
    depends_on:
      - timescaledb
      - tb-redis
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://timescaledb:5432/thingsboard
      SPRING_DATASOURCE_USERNAME: thingsboard
      SPRING_DATASOURCE_PASSWORD: 1234

#      TB_QUEUE_TYPE: redis
#      TB_QUEUE_REDIS_HOST: tb-redis
#      TB_QUEUE_REDIS_PORT: 6379
    ports:
      - "8081:8080"
      - "1883:1883"
      - "8883:8883"
    restart: unless-stopped

支持 Redis 队列

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐