{"id":13834494,"url":"https://github.com/dragonxu/edgex-thingsboard","last_synced_at":"2025-07-10T04:32:13.977Z","repository":{"id":47303631,"uuid":"361438453","full_name":"dragonxu/edgex-thingsboard","owner":"dragonxu","description":null,"archived":false,"fork":false,"pushed_at":"2021-04-23T07:21:12.000Z","size":66,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-08-05T14:15:27.579Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dragonxu.png","metadata":{"files":{"readme":"README.cn.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-04-25T13:37:56.000Z","updated_at":"2022-07-20T14:50:20.000Z","dependencies_parsed_at":"2022-09-06T12:02:17.134Z","dependency_job_id":null,"html_url":"https://github.com/dragonxu/edgex-thingsboard","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonxu%2Fedgex-thingsboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonxu%2Fedgex-thingsboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonxu%2Fedgex-thingsboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonxu%2Fedgex-thingsboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dragonxu","download_url":"https://codeload.github.com/dragonxu/edgex-thingsboard/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225618851,"owners_count":17497591,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T14:00:35.745Z","updated_at":"2024-11-20T19:32:04.401Z","avatar_url":"https://github.com/dragonxu.png","language":null,"funding_links":[],"categories":["Integrations"],"sub_categories":["IoT systems"],"readme":"# Edgex-thingsboard\r\n\r\n用于将Edgex网关接入Thingsboard物联网平台。\r\n\r\n- 将 Edgex 设备自动连接到 Thingsboard\r\n- 将 Edgex 设备数据上报到 Thingsboard\r\n- 响应 Thingsboard RPC 命令\r\n\r\n## 使用方式\r\n\r\n启动服务时，需配置Thingsboard服务端MQTT的连接信息。\r\n\r\n如使用配置文件方式：\r\n\r\n```\r\n[Mqtt]\r\nAddress = \"tcp://localhost:1883\"\r\nUsername = \"edgex-thingsboard\"\r\nClientId = \"client-id\"\r\nTimeout = 10000\r\n```\r\n\r\n或使用环境变量方式：\r\n\r\n```\r\nMQTT_ADDRESS: tcp://localhost:1883\r\nMQTT_USERNAME: edgex-thingsboard\r\nMQTT_CLIENTID: client-id\r\nMQTT_TIMEOUT: \"10000\"\r\n```\r\n\r\n其中：\r\n\r\n|参数|名称|描述|\r\n|---|---|---|\r\n| Mqtt.Address | MQTT Broker 地址| |\r\n| Mqtt.Username | 用户名　| |\r\n| Mqtt.ClientId | 客户端ID | |\r\n| Mqtt.Timeout | 超时时间 | 单位为毫秒 |\r\n\r\n## 编译\r\n\r\n使用消息总线 zeroMQ [需要先安装 zeroMQ 库](https://github.com/edgexfoundry/edgex-go#zeromq).\r\n\r\n## 实现原理\r\n\r\n### 连接设备\r\n\r\n1. Edgex会按如下格式发送MQTT消息给Thingsboard：\r\n\r\n发送消息：\r\n\r\n```json\r\n{\r\n  \"device\": \"Virtual-Sensor-01\"\r\n}\r\n```\r\n\r\n其中：\r\n\r\n|参数|名称|描述|\r\n|---|---|---|\r\n| device | 设备名称 ||\r\n\r\n### 控制RPC\r\n\r\n1. Thingsboard会按如下格式发送MQTT消息给Edgex：\r\n\r\n发送消息： \r\n\r\n```json\r\n{\r\n  \"device\": \"Virtual-Sensor-01\",\r\n  \"data\": {\r\n    \"id\": 4,\r\n    \"method\": \"GET\",\r\n    \"service\": \"edgex-core-command\",\r\n    \"uri\": \"/api/version\",\r\n    \"params\": {},\r\n    \"api_timeout\": 10000\r\n  }\r\n}\r\n```\r\n\r\n其中： \r\n\r\n|参数|名称|描述|\r\n|---|---|---|\r\n| device | 设备名称 ||\r\n| data.id | 请求ID ||\r\n| data.service | 微服务名称 ||\r\n| data.uri | HTTP接口地址 ||\r\n| data.method | HTTP请求方法 ||\r\n| data.params | HTTP请求参数 ||\r\n| data.api_timeout | HTTP请求超时时间 | 单位为毫秒 |\r\n\r\n|service值|对应微服务名称|微服务接口地址|\r\n|---|---|---|\r\n| edgex-core-command | 命令微服务 | https://app.swaggerhub.com/apis-docs/EdgeXFoundry1/core-command |\r\n| edgex-core-data | 核心数据微服务 | https://app.swaggerhub.com/apis-docs/EdgeXFoundry1/core-command |\r\n| edgex-core-metadata | 元数据微服务 | https://app.swaggerhub.com/apis-docs/EdgeXFoundry1/core-command |\r\n| edgex-support-notifications | 通知微服务 | https://app.swaggerhub.com/apis-docs/EdgeXFoundry1/core-command |\r\n| edgex-support-scheduler | 调度微服务 | https://app.swaggerhub.com/apis-docs/EdgeXFoundry1/support-scheduler/1.2.1 |\r\n| edgex-sys-mgmt-agent | 系统管理微服务 | https://app.swaggerhub.com/apis-docs/EdgeXFoundry1/support-scheduler/1.2.1 |\r\n\r\n2. Edgex处理完RPC消息后，会返回如下MQTT消息给Thingsboard：\r\n\r\n```json\r\n{\r\n  \"device\": \"Virtual-Sensor-01\",\r\n  \"id\": 4,\r\n  \"data\": {\r\n    \"http_status\": 200,\r\n    \"success\": true,\r\n    \"message\": \"\",\r\n    \"result\": {}\r\n  }\r\n}\r\n```\r\n\r\n其中：\r\n\r\n|参数|名称|描述|\r\n|---|---|---|\r\n| id | 请求ID ||\r\n| device | 设备名称 ||\r\n| data.http_status | HTTP状态码 ||\r\n| data.success | 响应结果 ||\r\n| data.message | 响应错误信息 ||\r\n| data.result | 响应数据 ||\r\n\r\n\r\n### 遥测数据\r\n\r\nEdgex会将遥测数据按如下格式发往给Thingsboard：\r\n\r\n```json\r\n{\r\n  \"Device A\": [{\r\n    \"ts\": 1483228800000,\r\n    \"values\": {\r\n      \"temperature\": 42,\r\n      \"humidity\": 80\r\n    }\r\n  }, {\r\n    \"ts\": 1483228801000,\r\n    \"values\": {\r\n      \"temperature\": 43,\r\n      \"humidity\": 82\r\n    }\r\n  }],\r\n  \"Device B\": [{\r\n    \"ts\": 1483228800000,\r\n    \"values\": {\r\n      \"temperature\": 42,\r\n      \"humidity\": 80\r\n    }\r\n  }]\r\n}\r\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdragonxu%2Fedgex-thingsboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdragonxu%2Fedgex-thingsboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdragonxu%2Fedgex-thingsboard/lists"}