Framework

ThingsBoard #

# java, 社区版、企业版
文档
    github.com/thingsboard/thingsboard
    thingsboard.io/docs
    localhost:8080/swagger-ui.html      # 本地swagger
安装
    docker
        docker run -it -p 9090:9090 -p 1883:1883 -p 5683:5683/udp -v ~/.mytb-data:/data -v ~/.mytb-logs:/var/log/thingsboard --name mytb thingsboard/tb-postgres
    maven
        确定ui/pom.xml中<nodeVersion>
        mvn install -DskipTests
    配置
        application
            zk
                ZOOKEEPER_ENABLED
                ZOOKEEPER_URL
            cassandra
                CASSANDRA_URL
                CASSANDRA_USERNAME
                CASSANDRA_PASSWORD
            redis
                REDIS_HOST
                REDIS_PORT
                REDIS_DB
                REDIS_PASSWORD
            postgresql
                SPRING_DATASOURCE_URL
                SPRING_DATASOURCE_USERNAME
                SPRING_DATASOURCE_PASSWORD
            kafka
                TB_KAFKA_SERVERS
    运行
        application
            server
        transport
            http
    demo数据
        admin
            sysadmin@thingsboard.org    sysadmin
        tenant
            tenant@thingsboard.org  tenant
        customer
            customer@thingsboard.org或customerA@thingsboard.org  customer
            customerB@thingsboard.org   customer
            customerC@thingsboard.org   customer
        device
            A1, A2, A3  A1_TEST_TOKEN,...   customerA
            B1  B1_TEST_TOKEN   customerB
            C1  C1_TEST_TOKEN   customerC
            'DHT11 Demo Device'     DHT11_DEMO_TOKEN
            'Raspberry Pi Demo Device'  RASPBERRY_PI_DEMO_TOKEN
包结构
    application                         # 可改, 网关
        server
            install
            config                      # 同源策略、swagger、websocket、消息、安全
            exception
            controller                  # 页面调用
            service
            actors
                service
                    DefaultActorService
                        actorContext
                            actorService(this)
                            actorSystem
                            appActor
                            statsActor
                        rpcManagerActor
    common                              # 不可改, 功能代理
        data                            # 数据结构
        message                         # 消息类型
        transport                       # 客户端调用
    dao                                 # 可改, 业务, 适配db
        model                           # 数据库对象
        resources
            sql                         # 表结构
    netty-mqtt                          # 不可改, 数据通信协议
    rule-engine                         # 不可改, 规则引擎
    transport                           # 不可改, 设备端运行
        http                            # 启动http传输协议
        coap
        mqtt
    tools                               # 可改, 工具
    ui                                  # 可改, 页面, angular, react, webpack
    docker                              # 不可改, 打包
    msa                                 # 不可改,分布式
        black-box-tests                 # 黑盒测试
        js-executor                     # 执行js
    log
    img         
模块
    application
        common
            data                        # 数据结构
            message                     # 消息结构
            transport                   # 接口结构,适配客户端
    dao                                 # 交互data, 兼容不同db
    tools
        extensions
            kafka
            mqtt
            rabbitmq
            rest-api-call
        extensions-api
            action
            filter
            plugin
            processor
        extensions-core                 # 实现公用extensions-api
    transport
        http                            # rest
        coap                            # californium
        mqtt                            # netty
    规则引擎                             # 基于actors执行
        filters
        processors
        action
    ui                                  # node.js + yarn
表结构
    tenant
    customer                            # 关联tenant
    tb_user                             # user信息、角色
    user_credentials                    # user密码
    admin_settings                      # admin信息, key value形式
    audit_log                           # 登录日志

    asset
    entity_view     
    attribute_kv                        # entity attribute
    component_descriptor                # node类

    device                              # 设备, label
    device_credentials                  # 设备ACCESS_TOKEN
    ts_kv                               # 设备事件
    ts_kv_latest                        # 设备当前状态

    rule_chain                          # rule root chain
    rule_node                           # rule节点
    relation                            # rule关系
    event                               # rule事件
    alarm                               # alarm事件

    dashboard                           # dashboard设置
    widget_type                         # widget, 别名
    widgets_bundle
api
    host:port/api/v1/$ACCESS_TOKEN/
        telementry                      # 上传遥测数据
            post {"key1":"value1"}
            post [{"key1":"value1"}]
            post {"ts":1451649600512, "values":{"key1":"value1"}}
        attributes
            post {"attribute1":"value1"}          # 更新属性
            get                         # 请求属性
        attributes/updates
            get ?timeout=20000          # 订阅属性
        rpc
            get ?timeout=20000          # 要求订阅,返回id, method, params
            post {"method": "getTime", "params":{}}     # 执行method
        rpc/{$id}
            post
        claim                           # 用户认领设备
            post
服务架构
产品架构
    设备接入: MQTT、CoAP、HTTP
    规则引擎                             # 处理设备消息
        消息(message)
            设备传入数据
            设备生命周期事件
            rest api事件
            rpc请求
        规则节点(node)                   # 过滤消息
            filter
            enrichment
            transformation
            action
            external
            rule chain
        规则链                           # 连接节点
    核心服务
        设备认证: token、X.509
        规则和插件
        多租户(tenant)
            客户
                资产
                设备
        部件(widget)仪表盘(dashboard)
            alarm
            实体视图
                设备即服务(DaaS)
                共享资产、设备
                传感器等权限
        告警和事件
    网关: rest api, websocket
    actor模型: 用于并发
    集群: zookeeper服务发现, 一致性哈希
    安全: SSL
    第三方
        akka
        zookeeper
        grpc
        cassandra

    system
        general
        mail
        security
功能模块
    admin
    tenant
        rule chain
            filter
            enrichment
            transformation
            action
            *analytics
            external
            rule chain
        *data converters
        *integrations
        *roles
        *customers hierarchy
        *user groups
        customers
        *customer groups
        assets
        *asset groups
        devices
        *device groups
        entity views
        *entity view groups
        widgets library
        dashboards
        *dashboard groups
        *scheduler
            report
            send rpc
            update attributes
        *white labeling
            main server
            mail templates
            custom translation
            custom menu
            white labeling
            login white labeling
            self registration
        audit logs
    entities
        包含
            tenants
            customers
            users
            devices
            assets
            alarms
            dashboards
            rule node
            rule chain
        操作
            detail
            assigned to customer
            attributes
                client
                server
                shared
            telemetry
            alarms
            events
            relations
            audit logs