thinger/ttn-stack-plugin
The Things Network是一个LoRaWAN网络解决方案,可简化大型IoT应用在全球协作物联网网络上的部署。Thinger.io为The Things Stack用户提供了增强集成能力,通过易于配置的工具实现设备数据的存储、分析和展示。该插件支持接收The Things Stack Webhook消息,并提供以下特色功能:
payload_raw或payload_fields。payload_raw或payload_fields。为更好理解后续内容,以下介绍The Things Stack的基本概念:
本节介绍配置The Things Stack插件的不同界面。
集成的第一步是创建新的插件配置。可为The Things Stack中部署的每个应用创建多个具有自定义行为的配置文件。创建新应用配置文件只需输入应用ID并点击绿色的“添加应用”按钮。注意,ID必须与The Things Stack应用中定义的标识符完全一致。
“应用ID(Application Id)”下拉菜单用于选择和配置特定的应用配置文件,若选择“default”配置文件,则该配置将应用于所有与插件集成的应用。
!!! warning
创建应用时,应用标识符必须与The Things Stack中定义的完全相同。
如上图所示,可通过以下参数配置插件行为:
可在Thinger.io中配置The Things Stack下行流程,选择部分参数的行为,如下所示:
此选项卡用于配置载荷数据处理,将The Things Stack Webhook接收的二进制载荷转换为用户友好的变量,或将下行JSON转换为将传输到The Things Stack的二进制缓冲区。
界面提供Node.js脚本代码编辑器,可定义编码/解码流程,并提供测试工具验证“上行”和“下行”流程的行为。
以下部分提供配置上行和下行方法的额外信息。
=== "上行"
上行方法在网关通过The Things Stack网络发送新消息后调用。根据The Things Stack应用中的配置,此函数将接收不同输入: * **Base64字符串**:若The Things Stack应用为载荷定义了“自定义Javascript格式化器(Custom Javascript Formatter)”但未提供解码器函数,此方法将接收Base64编码的原始载荷。此时需编写函数将Base64数据转换为JSON对象。 * **Cayene LPP生成的JSON对象**:若The Things Stack应用定义了“Cayene LPP”载荷格式化器,The Things Stack会自动将二进制数据转换为平台可直接使用的JSON对象。此时无需定义自定义上行方法,除非需要进行额外处理(如合并计算字段)。 * **自定义解码器生成的JSON对象**:若The Things Stack应用为载荷定义了“自定义Javascript格式化器”并提供了解码器函数,此函数将接收The Things Stack函数的输出。此时在插件中创建自定义上行方法是冗余的,可选择在The Things Stack或插件中创建函数。 此方法的输出必须是包含平台所需信息的JSON对象。以下是将Base64数据转换为包含“temperature”(温度)和“humidity”(湿度)的JSON对象的上行方法示例: ```javascript /* 将Base64载荷转换为Thinger.io可使用的JSON对象 */ module.exports.uplink = function(payload){ const buffer = Buffer.from(payload, 'base64'); let processed = {}; processed.temperature = buffer.readInt16LE(0)/100.0; processed.humidity = buffer.readInt16LE(2)/100.0; return processed; }; ``` !!! info 上行方法必须始终返回JSON对象。
=== "下行"
下行方法在插件向The Things Stack发起下行请求前调用。要向The Things Stack发起下行请求,插件必须接收HTTP POST调用,指示Thinger.io设备标识符,并自动向所需的The Things Stack端点及其特定协议发起请求。有关更多详细信息,请查看后续部分。 根据插件通过REST API的调用方式,此函数将接收不同输入: * **JSON对象**:若对定义了“downlink”属性的Thinger.io设备进行下行调用(若插件配置了“初始化下行数据”,该属性会自动初始化),此方法将接收该属性的JSON内容。通常包含用户友好的设备配置,需编码为Base64二进制。 * **JSON对象**:若插件下行请求在POST调用中包含JSON载荷,此函数将接收该载荷而非设备“downlink”属性中的内容。 此方法的输出应为以下之一: * **Base64字符串**:若The Things Stack应用未定义转换器,需返回可直接发送到The Things Stack网络的二进制信息。 * **JSON对象**:若The Things Stack应用为载荷提供转换器,此方法可返回JSON对象,该对象将在转换器方法中可用。此时在插件中创建自定义下行方法是冗余的,可选择在The Things Stack或插件中创建函数。或者,若需自定义f_port,可通过输入消息`{ "f_port": 1, "payload": "<要发送到下行的期望载荷>" }`指定下行使用的专用“f_port”。 将JSON设备配置转换为The Things Stack所需Base64的下行方法示例: ```javascript /* 将包含设备配置的JSON对象转换为The Things Stack期望的Base64字符串 */ module.exports.downlink = function(payload){ let bytes = []; bytes[0] = payload.enabled ? 1 : 0; bytes[1] = payload.frequency; bytes[2] = payload.threshold; return Buffer.from(bytes).toString('base64'); }; ``` !!! info 若The Things Stack应用未定义转换器,下行方法应返回Base64字符串。
插件配置界面的最后一个选项卡为“Webhook设置”,旨在帮助开发人员完成The Things Stack控制台中的集成,提供设置Webhook配置文件所需的所有信息。
!!! info
注意,REST API未定义应用ID,插件软件将检查此参数以根据配置管理载荷。
在The Things Stack Web控制台中创建新Webhook集成,请按照以下步骤操作:
!!! info
注意,Authorization头必须使用包含“Bearer”命令的访问令牌进行设置。
作为Webhook模板的一部分,下载API密钥会自动创建,无需进一步配置。
Thinger.io的The Things Stack插件已准备好自动管理向The Things Stack服务器发送下行消息,该系统从设备下行属性(设备配置期间自动生成)中获取数据,并将其作为对系统下一个HTTP请求的响应插入。通过这种方式,只需通过仪表板小部件、Node-RED或直接API集成修改此属性的值,即可创建设备配置和控制流程。
创建新下行流程请确保遵循以下步骤:
之后,插件将执行载荷处理,并在The Things Stack API对服务器的下一个请求中发送响应。可通过访问插件日志(插件>插件配置文件>日志)跟踪此通信。
在Thinger.io中有多种方式查看设备发送的数据。
只要设备通过The Things Stack发送上行消息,原始数据就会在The Things Stack插件配置或自动配置的Thinger.io数据桶中可用,无需额外配置。
不过,建议在Thinger.io中创建仪表板(Dashboard),以更全面地查看数据。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务