IoT Studio + LoRa打造“又猛又持久”的智能厕所

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: 为了增加厕所使用效率,减少被味道“熏陶”的等待时间,同时也为了增加厕所的清洁效率,我们决定做一个非侵入式的智能厕所改造方案。它可以通过红外热释电检测每个坑位有没有人,在web/app上实时显示,方便如厕人员查询。

概述

为了增加厕所使用效率,减少被味道“熏陶”的等待时间,同时也为了增加厕所的清洁效率,我们决定做一个非侵入式的智能厕所改造方案。它可以通过红外热释电检测每个坑位有没有人,在web/app上实时显示,方便如厕人员查询。并且可以检测厕所的臭味,达到阈值时通知清洁工进行清扫。
之前的文章里,我们使用了Link Develop平台 + arduino搭建了一个基于wifi连接的智能厕所demo。实际生产过程中,NodeMCU+PIR有耗电比较高,结构不稳定,没有外壳防水等问题。因此如果需要商用化智能厕所的方案,需要一个更稳定的可靠的办法。
目前Link Develop已经升级成为IoT Studio,我们将会用更强大,更方便的开发能力实现LoRa传感器数据上传+存储,以及对应应用的开发等。

架构

1

物料清单

慧联无限LoRa红外传感器
一台能联网的电脑

方法&步骤

步骤一:配置LoRa网关-组网络

前往LinkWAN进行网关配置。
关于LoRa以及LoRaWAN的介绍可以查看这篇文档。如果有需要帮助请私信作者。

我们可以选择从清单上:https://linkmarket.aliyun.com/wan 购买网关自己组网络,或是也可以问问其他阿里云用户,透过分享入网凭证给我们,用上他的网络。

这次我们购买慧联的室内小网关G200,自己组建网络。
2_jpeg

3_jpeg

可以看的到,我们需要插上网线与电源。

然后到Link WAN控制台注册网关
4
5
6

G200回传网默认是DHCP上网配置,如果你是固定IP或PPPoE在依照实际环境调整,方法可以参考G200网关手册

如果一切顺利可以再Link WAN 网关页面显示在线
7

这样就是组好网络了。

分配网络给自己用

网络组好之后,我们要把网络分配给自己用,也可以分配其他人使用,当然被分配的人都必须有阿里云账号
PS. 阿里云园区都有LoRaWAN网络,你可以联系阿里云IoT的同学,分享给你用,这样就不用自己买网关组网了。

分配的方式是透过入网凭证来取得网络使用权利。
首先我们来创建自己的网络凭证
8
9

我们自己要用网,所以就授权给自己
10

成功之后,就会在凭证清单看到了,当然如果是别人授权给你的,也会在此清单看到
11

步骤二:拆封LoRa硬件

从网上购买来的认证过的LoRa传感器,拆出来的时候可以看到后面附了一个16位码的贴纸。这个是节点的DevEUI,在后面的新版硬件中还会加上6位的PINCODE字段。

12

按照说明书,默认是5分钟模式——即收到一次警报之后5分钟之内不会再上传。这跟厕所的使用场景不一致,我们需要调成测试模式——即每次收到警报都会上传。把背部的壳子掰开(不需要螺丝刀)之后,调整跳针针帽位置到ON。

13

然后合上盖子,先不拔掉塑料片。我们需要先在LinkWAN配置LoRa设备信息。

步骤三:在LinkWAN上配置LoRa节点

在步骤一中我们已经把LoRa网关配置完成,获得了GwEUI和JoinEUI,我们只需要填入每个节点的DevEUI和PINCODE即可。

进入LinkWAN平台,首先需要向网关拥有者(即自己)申请一个节点分组(JoinEUI)。
14

按照图示填写即可。

15

添加完成后点击授权即可开通权限。

16
17

然后进入节点分组管理,点击创建分组。

18

需要点击“专用凭证”,然后选择之前“入网开通”申请的凭证。

19

点击完成,即可看到新建的分组,然后点击节点进入管理。

20

选择添加节点。

21

然后在弹窗内输入传感器节点上贴纸的信息。(注:作者的传感器为早期版本,只有DevEUI,PINCODE是自己拿的。目前市面的传感器都有贴上DevEUI和PINCODE信息,如果没有请联系供应商。)

22

添加成功。这样就成功把一个传感器ID授权加入LinkWAN上了。接下来需要前往物联网平台进行节点上云。

23

步骤四:在物联网平台上配置LoRa节点

首先进入物联网平台Link Platform的产品页面。选择新建产品。产品相当于一个类(class),是某一类设备的集合,该类设备具有相同的功能,您可以根据产品批量管理对应设备。

24

新建产品时,要选择透传。

25
26

建立了产品之后,点击“设备管理”前往设备管理页面。然后选择“添加设备”。输入16位DevEUI作为DeviceName(注意要小写)。然后确定。

27
28
29

接下来返回到LinkWAN平台。为刚才的节点分组添加“数据流转”,选择刚才添加的产品。

111

30

这时候可以拔掉塑料片让传感器上电了。可以看到LinkWAN有收到上行日志。

xin1

同时物联网平台的设备也收到了日志。

xin2

接下来就是解析设备上传的信息了。从传感器的说明文件可以得知,传感器上报的是二进制数据。我们如何把二进制数据转化为可以理解的属性名称呢?
下图是厂家提供的传感器的二进制配置文件。

xibn

下图是原始的上行日志。
1111

对这个传感器,“020100”中的第一个BYTE“02”表示协议,“01”对红外传感器表示“有人”,“00”表示传感器状态正常。我们首先需要在产品里定义“有人经过”和“传感器状态”两个功能,用于记录这两个属性。前往产品详情页的“功能定义”tab,点击右下方“自定义功能”的“添加功能”。

1112

然后在弹窗内配置属性,“室内人体探测开关”配置为布尔型,“传感器属性”配置为枚举型。注意要是“读写型”。点击确定添加属性。

1113

最后结果如图。

1114

然后我们需要使用产品定义里的数据解析,把二进制数据自动转化为Alink-JSON格式,以对应上刚才设置的“室内人体探测开关”与“传感器属性”。转化规则可以参考文档。我们这里只放出最后的代码。注意:数据解析需要产品为“未发布”状态。如果已经发布请点击右上角“撤回发布”。

11115

输入如下的解析脚本。

var COMMAND_REPORT = 02;
var COMMAND_SET = 01;
var ALINK_PROP_REPORT_METHOD = 'thing.event.property.post'; //标准ALink JSON格式topic, 设备 上传属性数据到 云端
var ALINK_PROP_SET_METHOD = 'thing.service.property.set';
function rawDataToProtocol(bytes) {
    var uint8Array = new Uint8Array(bytes.length);
    for (var i = 0; i < bytes.length; i++) {
        uint8Array[i] = bytes[i] & 0xff;
    }
    var dataView = new DataView(uint8Array.buffer, 0);
    var jsonMap = new Object();
    var fHead = uint8Array[0]; // 第0个BYTE为上报协议
    if (fHead == COMMAND_REPORT) {
        jsonMap['method'] = ALINK_PROP_REPORT_METHOD; //ALink JSON格式 - 属性上报topic
        jsonMap['version'] = '1.0'; //ALink JSON格式 - 协议版本号固定字段
        jsonMap['id'] = '' + 12345; //ALink JSON格式 - 标示该次请求id值
        var params = {};
        params['IndoorHumanDetectionSwitch'] = uint8Array[1]; //第1个BYTE为传感器读数判断有没有人
        params['SensorProperty'] = uint8Array[2]; //第2个BYTE为传感器本身的状态,对应产品属性中 prop_float
        jsonMap['params'] = params; //ALink JSON格式 - params标准字段
    }
    return jsonMap;
}

然后点击“保存草稿”。之后输入我们的原始数据“020100”进行调试。可以看到右边解析成功了。这时候点击“运行”即可让脚本生效。

111116

在日志里可以看到二进制的020100已经转为{"SensorProperty":0,"IndoorHumanDetectionSwitch":1}了。这样就完成了设备接入。

1117

步骤五:在IoT Studio上配置智能厕所看板

IoT Studio(原Link Develop)是阿里云针对物联网场景提供的生产力工具,可覆盖各个物联网行业核心应用场景,解决物联网开发领域开发链路长、技术栈复杂、协同成本高、方案移植困难的问题。入口在物联网平台的“开发服务”项。

我们首先需要建立一个项目,以项目维度管理我们的智能厕所应用。

1118

创建项目之后可以看到右边栏多了一项“SmartToilet”,点击查看进入项目详情。然后在项目概览页点击右上角导入产品,把刚才创建的产品导入到项目内。

1119

然后在左侧栏点击“推荐”下的“Web可视化开发”,点击“新建应用”进入Web可视化开发工作台,然后选择空白模板进行新建。

122

进入编辑中,可以改变背景色,添加标题文字等。对最重要的厕所占位状态,可以理解为一个“有人”、“没人”的指示灯,因此把指示灯组件放入画布中。并配置数据源。

1111111

配置数据源时,选择产品,关联的设备,以及关联的布尔型属性。点击“验证数据格式”获得通过,之后点击确定完成配置。配置之后可以通过上传图片等修改指示灯开关状态的样式。

22222

点击预览,完成整个Web应用的链路调试。

2

假设有7个坑位,只需要重复上述步骤即可(可以使用上传excel格式批量添加设备)。另外GUI配置的部分与之前的版本操作一致,在此不再赘述。最终效果图如图。

3

步骤六:在IoT Studio上配置智能厕所状态推送&转储

服务开发(原服务编排)可以通过可视化拖拽的方式快速完成所需业务逻辑的设计,例如:设备联动、可视化搭建数据联动、云服务连接、API 生成、数据处理与转储,生成 App 的后端服务。在本文中,我们要使用服务开发完成智能厕所坑位状态的推送,以及把厕所使用状况转储到表格存储Table Store上。

首先新建一个服务——从项目概览页点击“推荐”下的“服务开发”,点击“新建服务”即进入服务开发工作台的新建页面。选择空白模板进行新建。

4

我们首先把厕所的占用时间推送到钉钉机器人上。首先配置一个“设备触发”节点作为输入,选择之前创建的产品,然后选择“所有设备”以监听所有设备上报的信息。最后选择监听“属性上报”。之后配置一个钉钉机器人节点作为消息推送节点。

5

然后在要推送的钉钉群内添加机器人,获得webhook,如下图所示。具体原理可以参考这篇文档,在此不再赘述。

6

配置webhook以后可以配置推送的信息。钉钉机器人节点目前支持多种消息推送类型,并且支持动态调用设备数据,具体原理可以参考这篇文档。以后也会陆续推出教程教学如何玩转钉钉机器人节点。

11

框内配置项如下:

{
  "msgtype": "text", 
  "text": {
    "content":"在{{query.props.IndoorHumanDetectionSwitch.time}}时候有{{query.props.IndoorHumanDetectionSwitch.value}}人进坑!"
 }, 
  "at": {
      "isAtAll": true
  }
}

配置完成之后,可以点击“部署”对服务进行部署。之后点击“启动”让服务生效。如果设备已经上线,则可以直接看到机器人的消息推送。如图所示。这样就能实现厕所使用状态的实时推送了。

12
13

如果需要把厕所的使用状况使用TableStore,云数据库MySQL等云产品存储起来,可以使用存储节点。

22

最终结果如图:

55
56

总结

1548668580713_0cebdab1_7c27_4471_8727_4fe037f6f401_jpeg

Link Develop升级为IoT Studio之后,提供了支撑商业化物联网应用的更强大的能力。如果有任何使用的问题欢迎扫码加群。

1548665562241_e4c2a7c3_2e3f_4bde_8f25_f1fa1492136b

目录
相关文章
|
4月前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
112 1
|
3月前
|
物联网 Linux C#
一键掌控未来!用 Uno Platform 打造跨平台 IoT 应用,轻松连接你的智能设备,让生活更智能!
微软的开源跨平台框架 Uno Platform 支持使用 C# 和 XAML 一次性编写代码并部署至多个平台,如 Windows、macOS、Linux、WebAssembly 及 iOS/Android,这使其成为 IoT 设备开发的理想选择。本文通过创建控制网络 LED 灯的应用,详细介绍了 Uno Platform 的环境搭建及 MQTT 客户端配置过程,实现了 LED 状态订阅与控制指令发送功能。该案例展示了 Uno Platform 在 IoT 领域的潜力及其跨平台优势,未来可扩展至更多设备类型,构建智能家居系统。
298 58
|
1月前
|
存储 JSON 运维
智能物联网平台:Azure IoT Hub在设备管理中的实践
【10月更文挑战第26天】随着物联网技术的发展,Azure IoT Hub成为企业管理和连接数百万台设备的强大平台。本文介绍Azure IoT Hub的设备管理功能,包括设备注册、设备孪生、直接方法和监控诊断,并通过示例代码展示其应用。
42 4
|
2月前
|
物联网 Linux Android开发
一键掌控未来!用 Uno Platform 打造跨平台 IoT 应用,轻松连接你的智能设备,让生活更智能!
本文通过具体案例介绍了如何使用微软的开源框架 Uno Platform 实现与 IoT 设备的集成。Uno Platform 支持一次编写、多平台部署,适用于 Windows、macOS、Linux、WebAssembly 及 iOS/Android。本例创建了一个控制网络 LED 灯的应用,详细说明了环境搭建、MQTT 客户端配置、主题订阅及控制指令发送等步骤。该案例展示了 Uno Platform 在 IoT 领域的潜力及其跨平台优势,未来可扩展至更多设备类型,构建智能家居系统。
78 0
|
3月前
|
传感器 监控 安全
物联网通信的基石:LoRa、Sigfox与NB-IoT详解
物联网通信的基石:LoRa、Sigfox与NB-IoT详解
349 0
|
5月前
|
传感器 供应链 物联网
ERP系统与物联网(IoT)集成:实现智能化业务管理
【7月更文挑战第29天】 ERP系统与物联网(IoT)集成:实现智能化业务管理
381 0
|
7月前
|
传感器 物联网 大数据
物联网(IoT)技术与应用:塑造未来的智能化生活
【5月更文挑战第1天】物联网(IoT)技术整合传感器、嵌入式系统、云计算与大数据,连接智能设备,重塑生活与工作方式。应用涵盖智能家居、工业自动化、农业、智能城市及医疗健康,提升效率与便利性。然而,数据安全、设备兼容性及网络基础设施仍是挑战。随着5G和AI进步,IoT将在更多领域发挥潜力,驱动社会智能化转型,需关注技术挑战并加强创新。
|
7月前
|
安全 物联网 智能硬件
低功耗广域网的代表主要有LORA和NB-IOT和TPUNB
本文对比介绍了三种低功耗广域网技术——LoRa、NB-IoT和TPUNB。LoRa利用扩频技术实现远距离、低功耗通信,适用于智能城市和环境监测。NB-IoT基于蜂窝网络,提供广覆盖和长电池寿命,常用于智能电表和智能停车。TPUNB是技象科技的自主LPWAN技术,具备高安全性和抗干扰性,适用于智慧城市和工业物联网。这些技术各有优势,满足不同场景需求,推动了物联网的发展。
347 1
|
传感器 监控 数据可视化
IoT Studio 物联网可视化应用搭建开发实践
阿里云 IoT Studio 物联网可视化应用搭建开发实践
23652 4
IoT Studio 物联网可视化应用搭建开发实践
|
传感器 存储 运维
IoT Studio场景最佳实践
本次物联网场景最佳实践我们用六合一传感器(温度、湿度、二氧化碳、PM2.5、PM10、甲醛)实现家庭环境数据实时采集,通过家中Wi-Fi上报到阿里云IoT物联网平台,借助IoT Studio低代码工具搭建可视化大屏,实时监控家中环境指标变化。
730 0
IoT Studio场景最佳实践