关注分享主机优惠活动
国内外VPS云服务器

这是我的第一次尝试! 在 Spirit 1 上实现 DDC 协议嗅探器

总结:看我最后的结果,跳过10000字。 我这里只是简单的实现了。 页面绘制有点别扭,只好做点什么了。 添加了设备选择框、数据传输编辑框和设备响应显示框。

这是我的第一次尝试! 在 Spirit 1 实现 DDC 协议嗅探器

之前,我购买了一台名为 Spirit 1 的设备,该设备由智能边缘计算系统 EdgerOS 提供支持。 通过该设备,您可以连接应用程序和设备,并通过 JavaScript 应用程序控制连接的设备。 ,我打算在这台Spirit 1上连接一个基于SDDC协议的红外温度传感设备来检测房间的温度。 红外温度传感设备的开发请参见这篇文章:ESP32S应用-第一个基于红外测温枪的设备。 经过扫描、发现并最终通过SDDC协议使用爱智的设备应用程序将设备添加到Spirit 1后,出现了问题(请参阅本文了解如何将设备添加到爱智:Edge First体验电脑Spirit 1)。 不知道精灵1有没有收到消息,我在官网查了一个多小时,得出的结论是没有提供可测试的入口(ノ=Д=)ノ┻⁄┻。 幸运的是,我在官网上找到了一些小demo。 根据官方网站,您需要自己创建一个应用程序并将其部署到 Spirit 1,以便您可以通过手机控制该设备。 同一个设备发送消息后,您可以通过应用程序检索相应的消息内容。

我立即去官网查找应用开发说明,找到了实现这个功能的模块设备。 唯一的缺点是该模块是Spirit 1的内置模块,因此无法在其他系统环境中使用。 使用。 它只支持ZDDC和SDDC协议,但我的红外温度是感应程度是基于这个SDDC协议的,所以没有什么大问题。 最后我别无选择,只能实现一个可以自己调试的工具应用。 因此,我花了一个晚上观察他们的应用程序开发,最终提出并最终部署了一个非常非常低级的测试应用程序。

看我最终的结果(哈哈哈哈...省略一万字):

我这里只是实现了。 页面绘制有点别扭,只好做点什么了。 。 添加了设备选择框、数据传输编辑框和设备响应显示框。

它也比较容易使用。 选择设备,编写要发送的命令消息,然后单击发送。 应用后端通过设备模块处理Spirit 1的数据,最终发送给我。 在我制作的红外测温设备中,设备收到消息后,将当前环境温度和目标温度发送回Spirit 1。 应用程序的后端还侦听设备通过设备模块发送的消息。 发送到前端。 打印它,以便您可以在未来的开发过程中测试设备和 Spirit 1 之间的通信。 我只能说一件事:Tanniu୧( ⁼̴̶̤̀ω⁼̴̶̤́ )૭ 。

等一下...

...

下面是一个严肃的故事,讲的是实现的技术难度(开个玩笑而已,(ಡωಡ) )听到听到听到)。 事实上,实现上述功能非常容易。 仅使用官网提供的内置模块设备完成。 但是当我按照官网文档开发的时候,发现这个jsre和node.js非常相似。 如果很多功能都按原样移植的话,对于习惯用node.js开发的人来说会更容易使用。 前端好像没有什么要求。 我按照官网推荐使用VUE进行开发。 非常方便。 只需复制代码(ಡωಡ)hiahiahia即可。

但是,创建这样一个单页应用程序仍然需要一整天的时间。 由于这是我们第一次开发它,因此我们在开发过程中遇到了各种问题。庆幸的是,最终的结果也符合预期。 我觉得可以称为全栈开发( ̄▽ ̄)~。

我将向您展示几行代码,以便让您有所了解。 ⁞ 一: •̀ ⌂ •́ : ⁞-︻╦̵̵͇̿̿̿̿══╤─

const Device = require("device");const deviceMap = new Map(); // 收集设备列表 // 获取设备列表 Device.list(true, (error, list) => { if (error) { console.error("Device.list 错误!" + error); } else { list.forEach ((item) => { Device .info(item.devid, (error, info) => { if (error) { console.error("Device.info 错误!" + error); } else { deviceMap.set( item.devid, { devid : item .devid, ...info, }); } }) }});//监听设备加入 Device.on("join", function (devid, info) { deviceMap.set(devid, { devid , ... info }); io.emit("list", [...deviceMap.values()]); //通过socket.io推送数据到前端 } ); // 监听设备丢失 Device.on( "lost" , 函数 (devid) { deviceMap.delet(David); io.emit("list", [...deviceMap.values()]); //通过socket.io推送数据到前端});

发送消息和设备监听消息也比较easy:

...const dev = new Device();...// 发送消息 dev.send({unit: "Centigrade"}, (err ) => { ...}, 3) // 监控接收设备发送的消息 device.on("message", function (msg) { ... console.log("message: ", msg) // Telnet 可以通过 192.168.128.1 查看和打印日志81端口io.emit("消息", msg) ...});

实现的主要关键代码如上。 一开始我有点惊讶。 ,这段代码是否实现了应用程序和设备之间的通信? 然而,当我稍后测试时,应用程序和设备之间建立了数据连接。 如果您有兴趣,请访问我的 Gitee 存储库。 通讯工具的测试代码现已完成。 好吧好吧,我不写了。 我要和猫一起玩。

本文仅供个人学习和使用。 如有错误请指正。 (੭ ˙ᗜ˙ )੭ 谢谢主席!

未经允许不得转载:主机频道 » 这是我的第一次尝试! 在 Spirit 1 上实现 DDC 协议嗅探器

评论 抢沙发

评论前必须登录!