{"id":15509881,"url":"https://github.com/atorber/iot-puppet","last_synced_at":"2026-04-17T17:31:35.933Z","repository":{"id":49981027,"uuid":"518483862","full_name":"atorber/iot-puppet","owner":"atorber","description":"物联网平台MQTT2MQTT协议转换对接代理服务框架","archived":false,"fork":false,"pushed_at":"2023-08-09T12:27:32.000Z","size":82,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-19T22:29:33.426Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atorber.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-07-27T14:07:01.000Z","updated_at":"2023-10-08T12:32:28.000Z","dependencies_parsed_at":"2024-04-27T02:45:13.292Z","dependency_job_id":null,"html_url":"https://github.com/atorber/iot-puppet","commit_stats":null,"previous_names":["atorber/iot-puppet"],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/atorber/iot-puppet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorber%2Fiot-puppet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorber%2Fiot-puppet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorber%2Fiot-puppet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorber%2Fiot-puppet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atorber","download_url":"https://codeload.github.com/atorber/iot-puppet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorber%2Fiot-puppet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31938626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T17:29:20.459Z","status":"ssl_error","status_checked_at":"2026-04-17T17:28:47.801Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-10-02T09:44:45.439Z","updated_at":"2026-04-17T17:31:35.905Z","avatar_url":"https://github.com/atorber.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# iot-gateway-puppet\n\n物联网平台MQTT2MQTT协议转换对接代理服务框架，支持以下协议转换：\n\n- 百度智能边缘baetyl子设备消息对接DMP(默认puppet，适用于BIE)\n\n- 82bot对接DMP(puppet:82mqtt，适用于软网关)\n\n- TBD MQTT透传消息解析为Blink（puppet:mrdpt2m,mqtt raw data parsing transformation to mqtt，适用于协议适配）\n\n## 快速开始\n\n### baetyl对接DMP\n\n本地运行通过设置外部mqtt broker模拟baetyl-broker进行调试，在本地通过iotcore提供的mqtt-broker代替baetyl-broker(在baetyl中运行时不需要配置`baetyl_broker_`开头的环境变量，程序直接使用baetyl内置的证书进行连接鉴权)\n\n1. 环境准备，安装nodejs \u003e 16,下载本项目，安装依赖\n\n```\nnpm install\n```\n\n2. 设置baetyl-broker client信息环境变量\n\n```\nexport baetyl_broker_host=\"xxxx\"\nexport baetyl_broker_username=\"xxxx\"\nexport baetyl_broker_password=\"xxxx\"\nexport baetyl_broker_port=\"xxxx\"\nexport baetyl_broker_report_topic=\"xxxx\"\nexport baetyl_broker_event_topic=\"xxxx\"\n```\n\n对照代码位置\n\n```\n//  启动baetyl客户端\nconst optionsBaetyl = {\n    host: process.env['baetyl_broker_host']||'0.0.0.0',\n    username: process.env['baetyl_broker_username']||'',\n    password: process.env['baetyl_broker_password']||'',\n    port: process.env['baetyl_broker_port']||1883,\n    clientId: v4()\n}\n\n const baetylCleint = mqtt.connect(optionsBaetyl)\n\n```\n\n3. 设置DMP配置相关的环境变量,此处所有配置从DMP中获得\n\n```\nexport entrypoint=\"http://180.76.145.103:8372\"\nexport productKey=\"cgateway\"\nexport deviceName=\"bietest001\"\nexport deviceSecret=\"zqjxba22s4h4rbj945jp\"\nexport instanceId=\"zasr9fjmk53aur26\"\n```\n\n4. 启动程序\n\n```\nnpm start\n```\n\n5. 模拟baetyl向所设置的baetyl_broker_report_topic中发布如下消息\n\n```\n{\n    \"kind\":\"deviceReport\",\n    \"meta\":{\n        \"accessTemplate\":\"xw-modbus-access-template\",\n        \"device\":\"xw-mod-1\",\n        \"deviceProduct\":\"modbus-simulator-20220728\",\n        \"node\":\"node的名称\",\n        \"nodeProduct\":\"固定值\"\n    },\n    \"content\":{\n        \"blink\":{\n            \"reqId\":\"033cc79a-6adf-4d40-b5a1-3ff33693f19c\",//uuid，保证唯一即可\n            \"method\":\"thing.event.post\",//固定值，就是这个值\n            \"version\":\"1.0\",//固定值，就是这个值\n            \"timestamp\":1659003513995,\n            \"properties\":{\n                \"temperature\":27.1,\n                \"humidity\":22,\n                \"switch\":\"on/off\"\n            }\n        }\n    }\n}\n```\n### 82bot对接DMP\n\n设置环境变量 `export puppet=\"82mqtt\"`,其余环境变量不变\n\n    82MQTT client信息环境变量\n\n    ```\n    export puppet=\"82mqtt\"\n    export baetyl_broker_host=\"xxxx\"\n    export baetyl_broker_username=\"xxxx\"\n    export baetyl_broker_password=\"xxxx\"\n    export baetyl_broker_port=\"xxxx\"\n    ```\n\n    设置DMP配置相关的环境变量,此处所有配置从DMP中获得\n\n    ```\n    export entrypoint=\"http://180.76.145.103:8372\"\n    export productKey=\"cgateway\"\n    export deviceName=\"bietest001\"\n    export deviceSecret=\"zqjxba22s4h4rbj945jp\"\n    export instanceId=\"zasr9fjmk53aur26\"\n    ```\n\n    启动程序\n\n    `npm start`\n    \n### mrdpt2m协议解析转换-TBD\n\nMQTT数据解析转换为Blink转发到DMP（mqtt raw data parsing transformation to mqtt）\n\nMQTT网桥实现，支持自定义MQTT消息解析并转换为Blink，使用productKey、productType拓展不同厂家设备的解析协议\n\n- 上行：订阅-解析——转换——转发\n\n- 下行：订阅-转换-下发\n\n## docker下运行\n\n1. 打包docker镜像\n\n```\ndocker build -t iot-gateway-puppet-baetyl .\n```\n\n2. 运行docker\n\n\u003e 在baetyl中部署运行时不需要再设置外部mqtt-broker，将环境变量替换为实际的设备配置\n\n```\ndocker run --env entrypoint=\"http://180.76.145.103:8372\" --env productKey=\"cgateway\" --env deviceName=\"bietest001\" --env deviceSecret=\"zqjxba22s4h4rbj945jp\" --env instanceId=\"zasr9fjmk53aur26\" iot-gateway-puppet-baetyl:latest\n```\n\n## 从dockerhub拉取镜像\n\n1. 拉取镜像\n\n```\ndocker pull atorber/iot-gateway-puppet-baetyl:latest\n```\n\n2. 运行\n\n\u003e 将环境变量替换为实际的设备配置\n\n- baetyl\n\n```\ndocker run --env entrypoint=\"http://180.76.145.103:8372\" --env productKey=\"cgateway\" --env deviceName=\"bietest001\" --env deviceSecret=\"zqjxba22s4h4rbj945jp\" --env instanceId=\"zasr9fjmk53aur26\" atorber/iot-gateway-puppet-baetyl:latest\n```\n\n\u003e 默认使用应用证书连接,不需要配置baetyl_broker相关环境变量\n\n- 82bot\n\n```\ndocker run --env puppet=\"82mqtt\" --env baetyl_broker_host=\"xxxx\" --env baetyl_broker_username=\"xxxx\" --env baetyl_broker_password=\"xxxx\" --env baetyl_broker_port=\"xxxx\" --env entrypoint=\"http://180.76.145.103:8372\" --env productKey=\"cgateway\" --env deviceName=\"bietest001\" --env deviceSecret=\"zqjxba22s4h4rbj945jp\" --env instanceId=\"zasr9fjmk53aur26\" atorber/iot-gateway-puppet-baetyl:latest\n```\n\n## 更新日志\n\n2022-10-17\n\n- 增加对82机器人接入的支持，设置环境变量 `export puppet=\"82mqtt\"`,其余环境变量不变\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatorber%2Fiot-puppet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatorber%2Fiot-puppet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatorber%2Fiot-puppet/lists"}