From d3be2ceb58ae9cadd0ffe3512197cfa58877182b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A5=88=E7=A7=91=E6=96=AF=EF=BC=88NexIoT=EF=BC=89?= <16120872+nexiot@user.noreply.gitee.com> Date: Tue, 23 Sep 2025 13:51:09 +0800 Subject: [PATCH] =?UTF-8?q?news=EF=BC=9A=E5=A2=9E=E5=8A=A0=E5=85=AC?= =?UTF-8?q?=E4=BC=97=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 55 ++++++++++++++++----------------- __MACOSX/shot/gongzhonghao.jpg | Bin 0 -> 27596 bytes 2 files changed, 26 insertions(+), 29 deletions(-) create mode 100644 __MACOSX/shot/gongzhonghao.jpg diff --git a/README.md b/README.md index db63d6e..4ee9ff0 100644 --- a/README.md +++ b/README.md @@ -157,7 +157,8 @@ cd cn-universal-web & ./bin/restart.sh ## 📈 正在推进 -- **🔄 小程序开发**:付费图鸟定制UI,具备指令控制、属性、告警查看,轻量化、多管理员 +- **🔄 小程序开发**:正在定制UI,具备指令控制、属性、告警查看,轻量化 +- **🔄 扩展推送**:MQTT / RocketMQ / DB / Kafka - **🔄 其他**:也可以提一些意见 ## 💡 最佳实践 @@ -179,32 +180,28 @@ cd cn-universal-web & ./bin/restart.sh #### 🌊 NB水浸传感器系列 1. **【手把手实战:水浸传感器开箱:初见与硬件解析】** - - 📺 [B站观看](https://www.bilibili.com/video/BV1kLY5z5EMH/?share_source=copy_web&vd_source=c9e1500efcc8aa0763f711fadaa68dff) - - 📝 内容:设备开箱、硬件介绍、基本功能测试 + - 📺 [B站观看](https://www.bilibili.com/video/BV1kLY5z5EMH/?share_source=copy_web&vd_source=c9e1500efcc8aa0763f711fadaa68dff) + - 📝 内容:设备开箱、硬件介绍、基本功能测试 2. **【手把手实战:NexIoT接入Ctwing参数配置】** - - 📺 [B站观看](https://www.bilibili.com/video/BV1jVY7zVEjM/?share_source=copy_web&vd_source=c9e1500efcc8aa0763f711fadaa68dff) - - 📝 内容:天翼物联平台参数配置、设备注册流程 + - 📺 [B站观看](https://www.bilibili.com/video/BV1jVY7zVEjM/?share_source=copy_web&vd_source=c9e1500efcc8aa0763f711fadaa68dff) + - 📝 内容:天翼物联平台参数配置、设备注册流程 3. **【手把手实战:NB水浸传感器CTWing接入全流程】** - - 📺 [B站观看](https://www.bilibili.com/video/BV1sJaZzBEfr/?share_source=copy_web&vd_source=c9e1500efcc8aa0763f711fadaa68dff) - - 📝 内容:完整的设备接入流程,从配置到数据上报 + - 📺 [B站观看](https://www.bilibili.com/video/BV1sJaZzBEfr/?share_source=copy_web&vd_source=c9e1500efcc8aa0763f711fadaa68dff) + - 📝 内容:完整的设备接入流程,从配置到数据上报 ### 🔌 TCP直连接入教程 #### ⚡ DL/T64电表系列 -1. **【开源】手把手实战:DL/T64电表TCP直连接入】** - - 📺 [B站观看](https://www.bilibili.com/video/BV1x4pBzZEVN/?share_source=copy_web&vd_source=c9e1500efcc8aa0763f711fadaa68dff) - - 📝 内容:TCP协议解析、设备直连配置、数据解析 +1. **【【开源】手把手实战:DL/T64电表TCP直连接入】** + - 📺 [B站观看](https://www.bilibili.com/video/BV1x4pBzZEVN/?share_source=copy_web&vd_source=c9e1500efcc8aa0763f711fadaa68dff) + - 📝 内容:TCP协议解析、设备直连配置、数据解析 -2. **【开源】手把手实战:产品创建与SNI解读】** - - 📺 [B站观看](https://www.bilibili.com/video/BV1zSWNzoETF/?share_source=copy_web&vd_source=c9e1500efcc8aa0763f711fadaa68dff) - - 📝 内容:产品创建流程、SNI设备标识解析、协议调试 - -3. **【NexIoT开源】手把手实战:如何写TCP接入的DL/T645电表解析脚本】** - - 📺 [B站观看](https://www.bilibili.com/video/BV1SAWVzwEZE/?share_source=copy_web&vd_source=c9e1500efcc8aa0763f711fadaa68dff) - - 📝 内容:数据流介绍、调试IDE的编写和调试、645电表的编写 +2. **【【开源】手把手实战:产品创建与SNI解读】** + - 📺 [B站观看](https://www.bilibili.com/video/BV1zSWNzoETF/?share_source=copy_web&vd_source=c9e1500efcc8aa0763f711fadaa68dff) + - 📝 内容:产品创建流程、SNI设备标识解析、协议调试 ### 🎯 更多教程 @@ -254,7 +251,7 @@ cd cn-universal-web & ./bin/restart.sh 有任何问题加入QQ群 -| ![QQ群](/__MACOSX/shot/qq.png) | ![微信群](/__MACOSX/shot/wx.png) | +| ![QQ群](/__MACOSX/shot/qq.png) | ![微信群](/__MACOSX/shot/wx.png) | ![公众号](/__MACOSX/shot/gongzhonghao.jpg) | ## 🤝 贡献指南 @@ -283,9 +280,9 @@ cd cn-universal-web & ./bin/restart.sh ``` 4. **创建 Pull Request** - - 在 Gitee 上创建 Pull Request - - 详细描述你的修改内容 - - 等待代码审查 + - 在 Gitee 上创建 Pull Request + - 详细描述你的修改内容 + - 等待代码审查 ### 📝 代码规范 @@ -319,21 +316,21 @@ cd cn-universal-web & ./bin/restart.sh ### 📜 授权说明 1. **授权用户可无限期在其内部使用** - - 企业授权用户不含分公司、子公司及第三方公司 - - 个人授权用户仅可个人使用,不可用于在职公司或任何第三方 + - 企业授权用户不含分公司、子公司及第三方公司 + - 个人授权用户仅可个人使用,不可用于在职公司或任何第三方 2. **授权用户不可向第三方发行或转让授权源码** - - 无论有偿或无偿 - - 不可申请包含本项目的授权源码的软件著作权 - - 用户可申请自主二次研发部分源码的软件著作权 + - 无论有偿或无偿 + - 不可申请包含本项目的授权源码的软件著作权 + - 用户可申请自主二次研发部分源码的软件著作权 3. **授权用户仅可通过项目形式进行源码的二次开发** - - 完成的定制化软件必须加密打包后才可交付客户 - - 如需交付项目源码,必须为客户购买对应的商业授权 + - 完成的定制化软件必须加密打包后才可交付客户 + - 如需交付项目源码,必须为客户购买对应的商业授权 ### 🔒 开源和商业 -开源版本暂不包含 **TCP**、**天翼物联ctaiot** 模块。可自行二次开发扩展,商用使用需获取授权。 +开源版本暂不包含 **TCP**、**天翼物联ctaiot** 模块。可自行二次开发扩展,商用授权需获取授权。 ### 🙏 致谢 diff --git a/__MACOSX/shot/gongzhonghao.jpg b/__MACOSX/shot/gongzhonghao.jpg new file mode 100644 index 0000000000000000000000000000000000000000..84d359327078025b64313a8ca958a764bfc52969 GIT binary patch literal 27596 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 W4JCuA;oI}*0zm&i`Cola!T$pF