thinger/sigfox-plugin
此插件是用于优化使用Sigfox HTTP回调功能的接口,提供轻松将这些设备与Thinger.io平台集成的功能,例如自动设备和存储配置以及上行和下行云处理。
payload_raw或payload_fields。payload_raw或payload_fields。为更好地理解以下部分,此处介绍一些基本的Sigfox概念:
!!! info
了解如何配置Sigfox回调以将数据发送到Thinger.io平台,请参见**此处**
本节介绍可用于配置Sigfox插件的不同界面。
通过此插件集成的每个Sigfox“设备类型”,都应在Thinger.io插件中定义一个新配置文件,其标识符与Sigfox平台中定义的相同。请注意,以此方式定义的每个Sigfox设备类型都允许自定义该类设备的插件行为。
可根据需要创建任意数量的设备类型配置文件。要配置新配置文件,只需从设备类型下拉列表中选择ID,然后导航到其他插件部分。
!!! warning
设备类型的标识符必须与Sigfox云中定义的完全相同。
上行行为允许配置插件在收到来自Sigfox的新信息时的反应方式。
可配置的参数如下:
本节可配置载荷处理器,用于转换Sigfox上行消息中的原始数据,或Thinger.io平台发送到Sigfox云的下行消息中的载荷。
界面提供NodeJS代码编辑器,可定义uplink(上行)和downlink(下行)处理器。还可通过提供uplink和downlink的示例输入数据来测试代码。
以下是上行和下行方法的详细说明。
=== "上行"
当设备通过网络发送新消息时,将调用上行方法。根据Sigfox网络中的配置,此函数可接收两种不同的输入: * **Base64字符串**:如果Sigfox设备类型定义了自定义载荷格式,此方法将接收base64编码的原始载荷。此时,需要编写函数将此base64数据转换为JSON对象。 * **JSON对象**:此方法的输出必须始终是包含平台所需信息的JSON对象。以下是将base64数据转换为包含从二进制数据解析的`temperature`(温度)和`humidity`(湿度)的JSON对象的上行方法示例。 ```javascript /* 将base64载荷转换为Thinger.io可使用的JSON对象 */ module.exports.uplink = function(payload){ const buffer = Buffer.from(payload.data, 'hex'); payload.temperature = buffer.readInt16LE(0)/100.0; payload.humidity = buffer.readInt16LE(2)/100.0; return payload; }; ``` !!! info 上行方法必须始终返回JSON对象。
=== "下行"
仅当Sigfox设备向Sigfox云上送双向消息时,才会调用下行方法。此时,Thinger.io服务器将响应包含十六进制编码的自定义下行载荷的回调消息。有关更多详细信息,请参见以下部分。 此函数接收的输入取决于通过REST API调用插件的方式: * **JSON对象**:如果对定义了`downlink`属性的Thinger.io设备执行下行调用(如果在插件中配置了“初始化下行数据”,则会自动初始化该属性),此方法将接收该属性的JSON内容。通常包含用户友好的设备配置,后续需编码为base64二进制。 * **JSON对象**:如果插件下行请求的POST调用中包含JSON载荷,则此函数将接收该载荷而非设备`downlink`属性中的内容。 此方法的输出将是发送到Sigfox网络的**Base64字符串**格式的二进制信息。 !!! warning 处理下行载荷时,“初始化下行数据”参数必须初始化为任意数据,否则下行载荷处理将失败。 以下是将JSON设备配置转换为Sigfox所需base64的下行方法示例: ```javascript /* 将包含设备配置的JSON对象转换为Sigfox云所需的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('hex'); }; ```
!!! info
使用界面测试器可检查代码是否正确处理载荷。
在Thinger.io插件准备好接收数据后,下一步是配置Sigfox后端以推送消息。此过程可通过插件设置菜单的“Sigfox集成”部分简化,该部分自动生成HTTP查询和授权令牌,需将其包含在Sigfox回调管理器中:
请注意,Sigfox云提供三种不同的API,具体取决于要创建的交互类型,Thinger.io平台支持所有这些API:上行、高级数据和下行回调类型。每个回调配置可针对单个设备或属于同一设备类型的所有设备创建。
创建新回调时需配置以下参数:
此回调配置是最常见的,仅以单向方式将设备数据发送到Thinger.io,用于存储、聚合和显示。
此回调配置允许检索其他信息,例如地理位置以及从接收消息的不同基站提取的基础设施元数据。但使用此回调需要约30秒的延迟。
最后,选择DATA/BIDIR回调,可将上行消息发送到Thinger.io平台,并等待下行消息发送到设备,以进行配置或远程控制。下行消息载荷的配置可在Thinger.io平台的Sigfox插件回调配置部分完成,或在设备仪表板中修改各个设备的下行属性:
!!! tip
必须在回调载荷中发送设备信息。其他可选值包括从Sigfox提取的信号或位置信息。 ```json { "device" : "{device}", "snr" : {snr}, "rssi" : {rssi}, "station": "{station}", "latitude": {lat}, "longitude": {lng}, "temperature" : {customData#temp}, "humidity" : {customData#hum} } ```
恭喜!现在您可以将所有Sigfox设备的数据检索到Thinger.io平台,并利用其所有管理、分析和展示功能,以简单方式创建出色的IoT项目。以下是Thinger.io针对Sigfox设备的一些基本功能:
由于这些设备并非实时连接到平台,长期监控其运行状态(尤其是在大型设备网络中)较为困难。但通过插件回调配置菜单中的“设备连接超时”功能,可设置超时时间,通过设备仪表板中的“设备状态”了解设备是否在规定时间内发送数据,或是否因故障停止工作。
还可从设备列表中检查大量设备的状态,但请注意,此页面不显示实时数据,需刷新以获取当前状态。
Thinger.io最常用的功能之一是数据桶,可轻松存储大量数据。通过此新插件与Sigfox的集成,可在载荷处理后存储数据,而非原始或受限格式。
数据存储在数据桶后,可通过下载CSV格式的数据点、创建小部件在可自定义仪表板中展示数据,并轻松与同事或客户共享。
Thinger.io是一个大型技术和平台生态系统的一部分,可帮助您从数据中获取最大价值。因此,我们提供了端点工具,允许将任何设备的数据转发到第三方平台,并使用其他互联网服务(如发送电子邮件、***消息、将数据转储到Google表格等几乎所有互联网服务)。
在Thinger.io,我们持续扩展平台与技术的集成能力,以最简单的方式创建更高级的IoT项目。我们提供其他插件(如NodeRED),可通过几乎无限的方式处理IoT数据,例如创建数据警报、地理围栏、报告等。
本节描述上行数据流的工作方式,从Sigfox网络中的源头到Thinger.io中的最终目的地。
以下小节描述图中所示元素。
当Sigfox收到任何设备的消息时,会自动检查其配置的集成,以转发收到的信息。此插件通过HTTP集成,因此Sigfox网络会在收到新消息时向Thinger.io插件发出HTTP请求。
Thinger.io插件以JSON格式接收来自Sigfox网络的数据。回调包含多个信息字段,例如app_id、dev_id、downlink_url、metadata,或LoRa设备发送的实际载荷信息(payload_fields或payload_raw字段,取决于Sigfox应用中配置的载荷格式)。
以下是插件收到的原始信息示例:
javascript{ "temperature" : {customData#temp}, "humidity" : {customData#hum}, "data" : {data} }
插件收到此信息后,会进行处理以在Thinger.io中执行以下操作:
dev_id字段自动配置新设备及其关联的数据桶。此插件允许配置自定义代码处理传入数据。Sigfox设备发送的信息通常编码为小型二进制载荷,为最小化传输时间,不能直接用于展示(不应包含标签、JSON、ASCII文本等)。因此,需要在云端的某个环节处理设备发送的数据。
如有必要,此插件还允许创建自定义解码器。使用Thinger.io载荷处理的优势(如需要)在于,它使用NodeJS运行时而非纯JavaScript,因此可使用Buffer等NodeJS模块,简化处理函数的编写。
在内部,载荷处理器在插件中配置后会预编译,并使用从Sigfox接收的载荷数据执行。此函数的输出(如果执行)随后传输到下一步,即设备回调。
此插件的最后一步是调用Thinger.io中的设备回调。该插件将新的Sigfox设备自动配置为HTTP设备。Thinger.io中的HTTP设备是可通过REST API方法推送数据的通用设备。Thinger.io负责接收输入数据并执行不同的可配置操作,例如将设备状态更改为已连接/已断开连接;将提供的数据写入配置的数据桶;通过端点将此信息发送到其他服务;将提供的信息存储为设备属性;或从设备属性返回数据。
在这种情况下,插件通过REST接口与平台交互,推送从Sigfox接收并经自定义上行方法处理的数据。默认情况下,插件初始化HTTP设备以写入自动创建的关联数据桶。因此,Sigfox设备发送的每条消息最终都会写入特定的数据桶。如下图所示:
完成设备回调后,设备将显示为已连接状态,并在配置的情况下显示其位置。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务