Kbsa 如何通过 Sh 传输虚拟组件数据

如何通过Shelly LoRa Add-on传输虚拟组件数据

LoRa Add-on article.png

概述

本方案说明如何通过长距离LoRa无线电将一个BT Home / 虚拟组件 从一个Shelly设备(发送端)的状态传输到另一个(接收端)设备。通过附加一个Shelly LoRa Add-on对于每个 Gen 3 / Gen 4 设备,您可以在空旷区域内将虚拟的“开/关”、“开/关”或数值推送到最远 5 公里,即使 Wi-Fi 或 BLE 无法覆盖的地方也能实现。

发送端上的Shelly Script监控一个虚拟组件,每当其数值发生变化时,会加密新的状态并通过LoRa进行广播。
接收端的一个辅助脚本会解密数据包,并更新本地虚拟组件(或触发您选择的其他逻辑)。

此设置允许通过LoRa将虚拟组件的状态安全地从一个Shelly设备发送到另一个Shelly设备,模拟传感器数据传输,例如使用自定义虚拟组件和Shelly脚本实现门/窗状态的传递。

先决条件

  • 2× Shelly LoRa扩展模块(一个用于发送端,一个用于接收端)

  • 2× 支持LoRa扩展模块的Shelly设备

逐步操作指南

1. 在发送端设备上创建虚拟组件

  • 打开发送端设备的本地网页界面。

  • 导航至组件。

  • 创建所需的BTHome / 虚拟组件并附加相关的报告传感器。

示例:如果您正在模拟 Shelly BLU Door/Window 传感器,状态通常为“打开”和“关闭”。

2. 设置虚拟组件的值

使用以下函数设置虚拟组件的状态:

Virtual.prototype.setValue(new_value);

参考API文档:https://shelly-api-docs.shelly.cloud/gen2/Scripts/ShellyScriptLanguageFeatures/#virtualprototypesetvaluenew_value

3. 安装并修改发送端脚本

使用此处提供的脚本:

👉 https://github.com/ALLTERCO/shelly-script-examples/blob/main/lora-encrypted-communication/lora-send-encrypted-msg.js

修改脚本:

  • 添加Shelly.addStatusHandler()以监控来自传感器的变化。

  • 指定正确的组件ID以准确跟踪更新。您可以在本地网页界面的相应组件详情中找到此ID。

4. 安装并修改接收端脚本

使用此处提供的脚本:

👉 https://github.com/ALLTERCO/shelly-script-examples/blob/main/lora-encrypted-communication/lora-receive-encrypted-msg.js

编辑接收端脚本中的以下行以处理并记录接收到的传感器状态:

console.log("Message received: ", decryptedMessage);

此输出将反映虚拟组件的当前状态(例如,“open”或“closed”)。

我们重视您的反馈!

感谢您抽出时间阅读我们的文章!内容是否对您有帮助或有趣?

您的见解能帮助我们改进。我们非常感谢任何反馈。如果您有时间,

请通过以下邮箱与我们分享:

Integration@shelly.com

使用设备: