EMQX Cloud 自定义函数实现多种 IoT 数据形式的灵活转化

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 全托管MQTT云服务EMQX Cloud新推出自定义函数功能:可根据用户自定义的脚本对设备上报的数据进行预处理,帮助便捷实现数据格式统一。

物联网场景中,各类设备终端的种类繁杂,所使用的通信协议各异,从而使得应用层的数据格式也各不相同。为了帮助用户实现统一数据格式,EMQX Cloud 最近推出了自定义函数功能:根据用户自定义的脚本对设备上报的数据进行预处理,并将脚本返回的任意符合用户使用场景需求类型的数据流流转至消息订阅方。

这一功能可用于多种设备端上报数据预处理场景,如将指定范围内的数据进行数据持久化,或是将非标准格式数据处理为符合应用标准的格式,以便应用层直接使用等。在之前的文章中,我们以数据编解码、格式处理与业务告警等场景为例,向大家介绍了自定义函数是如何在具体业务场景中发挥价值的。

在本篇文章中,我们将对这一功能的使用操作进行详细讲解,帮助大家更好地在实际项目中快速使用。

自定义函数流程 图1.png

开通自定义函数

自定义函数功能为 EMQX Cloud 增值服务,目前仅在专业版提供,且用户需要创建在阿里云(张家口之外的地区)的专业版部署开通该增值服务。

您可以通过以下两个入口开通自定义函数。

方式一:登录 EMQX Cloud 控制台,在顶部菜单栏点击「增值服务」,找到自定义函数,点击「开通服务」,并在提示弹框中点击确认。

开通自定义函数 图2.png

方式二:在部署详情页面的左侧菜单栏找到「自定义函数」并点击「开通服务」,并在提示弹框中点击确认。

开通自定义函数 图3.png

选择您需要开通自定义函数服务的部署(注:仅阿里云专业版非张家港区域部署可开通)

选择您需要开通自定义函数服务的部署 图4.png

在完成服务开通流程后, 等待约 2-3 分钟即可开通配置成功。

等待约 2-3 分钟即可开通配置成功 图5.png

计费说明

自定义函数服务主要通过函数的调用次数来计算费用,计费规则如下:

  1. 创建函数不收取任何费用,一个部署下可以创建最多 20 个函数。
  2. 成功创建的函数将在数据集成的规则当中被引用和调用,每成功调用一次计入一次调用次数。
  3. 每一个创建了函数计算的部署,每月都将获得 5 万次的免费调用次数,免费调用次数将在每月初更新
  4. 当月的免费调用次数用完之后,将会以 ¥0.03 / 万次的价格在帐户余额中扣取,费用可以在满 1 万次的时间点小时账单中查看到。
  5. 调用次数将会在每月底进行重置,不足 1 万次以 1 万次计价。

计费示例:

某用户当月调用次数为 506,500 次,扣除免费的 5 万次调用次数,付费调用次数为 456,500 次,前 450,000 次计费为 45 * ¥ 0.03 = ¥ 1.35 收费,最后的 6500 次由于不足 1 万次,将在月底以 1 万次的价格(0.03)进行结算,所以当月的总费用为 ¥ 1.38。

使用自定义函数

功能开通成功后,您可以通过下列流程配置使用自定义函数。

1、点击「新建」,创建函数,并设置自定义函数数据转化规则。

创建函数 图6.png

2、输入函数名称,该名称将在之后创建的规则中被引用,一旦创建后,该名称将不可修改。

输入函数名称 图7.png

3、在脚本输入框中输入 JS 脚本函数

  • 脚本函数的入口函数名称为 codec,入口函数名称不能改变
  • 输入参数为 payload,在规则中调用函数时候输入的参数;
  • codec 函数中需要返回函数运算之后的值,无 return 值将无法通过测试;
  • 脚本执行时间不能超过 3 秒,否则将无法通过验证,不建议在脚本中编写高耗时的操作;
  • 自定义函数支持 ECMAScript 5.1 及部分 ECMAScript 6 的语法,请参考以下 ES6 方法箭头函数

    • Promise
    • 解构符
    • Class
    • 模版符号

4、选择 payload 输入类型,目前自定义函数支持 3 种数据类型的输入:Byte、JSON、字符串。

选择 payload 输入类型 图8.png

5、新建成功后,可按照函数名称、状态搜索找到设置好的自定义函数,可进行修改、删除操作。
查看自定义函数 图9.png

6、调用函数

函数定义完成后,您可在数据集成的规则中进行调用。

如果需要快速验证自定义函数脚本是否成功配置,您可以通过新建空动作调用定义好的函数。

7、检查错误日志

您可以在日志模块中筛选自定义函数相关的错误日志进行查看,根据错误日志提示快速定位自定义函数配置的错误并解决问题。

检查错误日志 图10.png

结语

通过本文,用户可以使用自定义函数这一最新功能实现满足自身需求的物联网数据格式转换,更加轻松地为上层应用提供数据支持。目前自定义函数功能已开放免费试用,我们期待您的反馈!

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/emqx-cloud-custom-functions

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
16天前
|
数据采集 监控 物联网
一些常用的 Salesforce IoT Cloud 中间件工具
以下是一些常用的Salesforce IoT Cloud中间件工具
|
16天前
|
缓存 供应链 物联网
如何将 Salesforce IoT Cloud 与其他系统集成
Salesforce IoT Cloud 可通过其开放的 API 和集成云平台轻松与外部系统集成,实现数据交换和流程自动化,支持多种协议和标准,帮助企业构建智能物联网应用。
|
16天前
|
传感器 监控 物联网
什么是 Salesforce IoT Cloud
Salesforce IoT Cloud 是一款由 Salesforce 提供的物联网平台,能够连接和管理各种设备数据,通过分析实时数据流,帮助企业及时响应客户的需求和问题,优化业务流程,提升客户体验。
|
4月前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
111 1
|
消息中间件 传感器 监控
IoT企业物联网平台,数据服务开发实战
IoT企业物联网平台开发实战
433 0
|
4月前
|
存储 传感器 监控
理解并利用物联网(IoT)数据的技术探索
【8月更文挑战第11天】物联网数据是数字化转型的重要资源。通过深入理解物联网数据的特性和价值,并采取有效的收集、处理和分析策略,我们可以更好地利用这些数据为企业决策提供支持、优化运营效率、创造新的商业模式并推动数字化转型的深入发展。
|
6月前
|
机器学习/深度学习 传感器 算法
物联网(IoT)数据与机器学习的结合
【6月更文挑战第6天】物联网和机器学习加速融合,驱动数据收集与智能分析。通过机器学习算法处理 IoT 数据,实现智能家居、工业生产的智能化。示例代码展示如何用线性回归预测温度。结合带来的优势包括实时监测、预警、资源优化,但也面临数据质量、隐私安全、算法选择等挑战。未来需强化技术创新,应对挑战,推动社会智能化发展。
177 0
|
传感器 监控 数据可视化
手把手教你用IoT设备监控家庭环境数据
本实验带您体验如何通过六合一传感器(温度、湿度、二氧化碳、PM2.5、PM10、甲醛)实现家庭环境数据实时采集,并搭建可视化大屏实时监控。
|
数据采集 小程序 前端开发
IoT小程序在展示中央空调采集数据和实时运行状态上的应用
IoT小程序框架在跨系统平台(AliOS Things、Ubuntu、Linux、MacOS、Window等)方面提供了非常优秀的基础能力,应用的更新升级提供了多种方式,在实际业务开发过程中可以灵活选择。IoT小程序框架通过JSAPI提供了调用系统底层应用的能力,同时提供了自定义JSAPI扩展封装的方法,这样就足够业务开发通过自定义的方式满足特殊的业务需求。 IoT小程序在前端框架能力、应用框架能力、图形框架能力都进行了适配和优化。那么接下来,我们按照其官方步骤搭建开发环境,然后结合中央空调数据采集和状态显示的实际应用场景开发物联网小程序应用。
23909 63
IoT小程序在展示中央空调采集数据和实时运行状态上的应用
|
监控 物联网 机器人
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。