AloT 物联网开发实战02 (三)|学习笔记

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 快速学习 AloT 物联网开发实战02 (三)

开发者学堂课程【阿里云 AIoT 物联网开发实战:AloT 物联网开发实战02】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/328/detail/3695


AloT 物联网开发实战02 (三)


3、定义物模型

去平台创建产品,然后给产品定义物模型,

image.png

本次实践只有温度和湿度。

image.png

去注册设备,获取设备身份,用来设备端的开发。

image.png

到物联网平台的控制台可以创建产品,比如家庭温湿度计,选择自定义品类、直连设备 WiFi 的方式  Json,认证方式是密钥,也就是三组,然后点击创建。

image.png

创建完成之后可以看到基础通讯的一些 topic,每个 topic 是做什么用的是上报还是订阅,模型通讯的 topic 都不需要自定义,系统会自动生成的。

image.png

还有一部分企业可能需要自己定一些私有的通讯的 topic,可以在自定义里来添加。

image.png

到功能定义里来生成物模型,点击编辑添加功能。

image.png

添加自定义功能确定,生成属性。

image.png

再完成湿度的定义,点击发布上线。

image.png

拥有模型定义。

image.png

前往设置,添加设备,添加成功。

image.png

可以一键复制设备的三元组。

image.png

4、设备端开发

S8266的板子、传感器再加上光线,成本都很低。

image.png

需要下载一个安装的 ide 的编辑器。下载完之后需要在很重要的扩展版,管理里边添加 url,通过这里可以拉取到 SP8266 的相关的部件。

image.png

配置好之后,在里边的管理输入 ESP866,然后选择2.4.1的固件版本。

image.png

同时还需要去加载一些驱动程序,存放的目录在 libraries,用到了一个 json 的工具,一个加密包,一个加密的算法,以及 PubSub 的一个 MQTT 的实现。注意需要修改 package 报文,keep alive 时间改到300。

image.png

在这之后需要选择 NodeMCU1.0(ESP-12E Module) 模块,波特率选择 115200,port 可以看自己电脑窗口的标识。数据 DHD11传感器的接线接到第七口,ESP8266 的第七线。剩下的一个是 GHD 地线和 VCC 直接接到 3.3V,地线直接接到执行地上就可以,完成了设备硬件的接线。

image.png

看一下开发版,可以修改资源加载的扩展。

image.png

加载成功之后,可以看到 ESP8266的一些模块,选择 NodeMCU 1.0 (ESP-12E Module)

image.png

波特率选最高,选择11520

image.png

Part 不是蓝牙的。

image.png

5、程序开发

Esp8266_loT

finclude <ESP8266WiFi.h>

/*PubSubClient 2.4.0 */

#include <PubSubClient.h>

/*ArduinoJson 5.13.4*/

#include <ArduinoJson.h>

/*DHT sensor library 1.3.0 */

#include “DHT.h"

/*Crypto 0.2.0*/  

#include"SHA256.h"

#define DHTPIN 13//nodeMCU pin

#define DHTTYPE DHT11// Define DHTtype

#define BAUD_RATE 115200

#define DELAY TIME 10*1000 //60s interval between updating data

/*连接您的WIFI SSID和密码 */

#define WIFI SSID "aliyun_iot"  

#define WIFI PASSWD "88888888"  

*设备的三元组信息*/

#define PRODUCT_KEY "a1kRdXDgNOv"  

#define DEVICE NAME "tado"  

#define DEVICE_SECRET "7caf9c4e98fdf8496466a8d8941a321 c"  

#define REGIONID "cn-shanghai"  

/*IoT 物联网平台 Endpoint 域名和端口号 */

#define MOTT SERVER PRODUCT KEY".iot-as-matt"REGION_I D"aliyuncs.com  

#define MOTT_PORT 1883  

#define MQTT_USRNAME DEVICE_NAME“&" PRODUCTKEY  

//用于身份验证的 MOTT_PASSWD 和 CLIENT_ID

#define CONTENT STR FORMAT "clientIdesp8266deviceName" DEVICE NAME "productKey” PRODUCT KEY "timestampyd"  

char CLIENT_ID[80]={'\0'};  

char *MOTT_PASSWD;

/*topic 和 payload*/

#define PROP_POST_TOPICT“/sys/" PRODUCT_KEY"/”DEVICE_ NAME"/thing/event/property/post"

#define BODY_FORMAT"{\"id\":\"123\", \"version\":\"1.0\", \" method\" :\"thing.event .property.post\",\"params\":{\"temperature\":$.1f,\"humidity\”%.if}}”

DHT dhtDHTPINDHTTYPE);  

WiFiClient espClient;

PubSubClient client(espClient);

//set up module like main founction  

void setup()

{

Serial.begin(BAUD_RATE;

//initalize DHT sensor  

dht.begin();

//生成身份验证的 MQTT_PASSWD 和 CLIENT_ID

char hashs[32];

char buff[128]={'\0'};

int timestamp=millis);

sprintf(CLIENT_ID,“esp82661securemode=3signmethod=hma csha256timestamp=dtimestamp);

sprintf(buff,CONTENT_STRFORMATtimestamp); I  

SHA256 sha256;

sha256resetHMAC(DEVICE_SECRETstrlen(DEVICESECRET); sha256.update(buff,strlen(buf)):

sha256finalizeHMAc(DEVICE SECRETstrlen(DEVICE SECRET)ha shsstrlen(hashs))

MQTT_PASSWD=hex_to_str(hashssizeof(hashs));

wifiInit();

}

//this runs over and over  

void loop{

// if Read temperature as Fahrenheit then set a parameter(isFahrenheit=true)  

float temperature=dht.readTemperature);  

float humidity=dht.readHumidityO;

// Check if any reads failed and exit early (to try again). if(isnan(temperatureIisnanChumidity)){

Serial.printlnC"read temperature or humidity data error!");

} else {

Serial.print("read temperature:");  

Serial.println(temperature);

Serial.printC"read humidity:");

char jsonBuf[128];

sprintf(jsonBuf,BODY_FORMATtemperaturehumidity);

Serial.printn(jsonBuf);

if(client.connected()){

Boolean d=client.publish(PROP_POST_TOPIC,jisonBuf);

Seciot,printCpublish;1=成功,0 -失败,云端返回Code="); Serialprintin(d);}}

client.loop();

//wait for delay time before attempting to post again delay(DELAY_TIME);

}

void wifiIntto)

{

WiFi.mode(WIFI_STA);

WiFi.begin(WIFI_SSID,WIFI_PASSWD );

while(WiFi.status()!=WL_CONNECTED)

{

delay(1000)

Serial.printinC“WiFi not Connect");

}

Serial.println("Connected to AP);  

Serial.println("IP address:");

Serial.println(WiFi.localIPO());

/*连接 WiFi 之后,连接 MQTT 服务器*/

client.setServerMQTT_SERVERMOTT_PORT) client.setCallback(callback);

mqttCheckConnect());

}

void callback(char *topic, byte *payload, unsigned int length)

Serial,printC"Message arrived ["); ‘

Seriolprint(topic);

Serial.print("]“);

payload[Length]='\@';

Serial.pmntlnchar)payload)

}

void mattCheckConnect()

{

while(!client.connected())

{

Serial.printlnC"Connecting to MQTT Server...");  

Serial.printlnMOTT PASSWD);  

Serial.printin(CLIENT_ID):

if(client.connectCCLIENT_IDMQTT_USRNAMEMQTT_PASSWD)

{

Serialprintln("MQTT Connected!");

}

Else

{

Serial.printC"MQTT Connect err:");  

Serial.println(client.state());

}

先引入 esp8266 的 wifi 环境,PubSub 是用来做 MQTT 的通讯,

是一个 json 格式化保存的发送,DHT.h 是温湿度传感器,#include"SHA256.h" 是用来做签名的加密算法。efine DHTPIN 13是对应的第七的开发板端口的 PIN 码,#define BAUD_RATE 115200 是传出的波特率,#define DELAY TIME 10*100 数据采集的延时 10s,#define WIFI SSID "aliyun_iot" #define WIFI PASSWD "88888888"  wifi 的账号密码,PRODUCT KEY".iot-as-matt"REGION_I D"aliyuncs.com 通过开发文档看到 server 拼接方式,端口1883, "clientIdesp8266deviceName" DEVICE NAME "productKey” PRODUCT KEY "timestampyd"  连接字符串用来签名模板,最终会把 DEVICE NAME、PRODUCT KEY 替换掉,“/sys/" PRODUCT_KEY"/”DEVICE_ NAME "/thing/ event/property/post" 上报的 topic 报文,\"id\":\"123\", \"version\":\"1.0\", \" method\" :\"thing.event .property.post \",\"params\":{\"temperature\":$.1f,\"humidity\”%.if}}”有温度和湿度两个值会被替换掉。

DHT dhtDHTPINDHTTYPE); 初始化传感器的驱动,PubSubClient client(espClient); PubSub 的初始化,Serial.begin(BAUD_RATE;

//initalize DHT sensor dht.begin(); 设置波特率传感器启动,有了连接的身份信息,先把 wifi 连接上,整体运行之后每隔十秒去读取传感器的温湿度,如果温湿度正常就会发起网络端的上报。client.publish(PROP_POST_TOPIC,jisonBuf);publish 的一个结果,1代表成功,0代表失败,完成了设备端的编码。

当完成程序编码之后可以把开发板通过 usb 接口连到电脑上,通过收录工具的来进行程序的一个收录。点击收录同时开启监视器。

可以看到在物联网平台上,设备状态属于离线。先进行程序的收录,目前已经在通过串口来收录,目前完成了30%多。

image.png

收录完成之后,可以看到程序连接 WiFi 接入点,然后发起阿里云 MQTT 的连接,刷新一下控制台看到当前的设备也仍处于在线状态。数据为55和24,也是上报的数据。

image.png

设备上报的数据27和85。下一个十秒的时候数据采集失败,数据采集失败也很常见。

image.png

下一个十秒看到传感器成功地采集到了一个新的数据,26度、71湿度值,控制台实时的更新了一条数据。

image.png

下一个十秒数据采集失败。再一个十秒数据更新为26度、63,26度、61,26度、59,因为不哈气所以数据值一直下降。

image.png

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
测试技术 网络安全 数据安全/隐私保护
【Docker项目实战】使用Docker部署Mininote轻量级笔记工具
【4月更文挑战第7天】使用Docker部署Mininote轻量级笔记工具
903 2
|
6月前
|
移动开发 前端开发 JavaScript
|
7月前
|
关系型数据库 数据库 文件存储
告别数字麻木,重拾消费感知:ezBookkeeping —— 您的轻量自托管记账伴侣
在数字支付时代,金钱变得抽象,ezBookkeeping 让消费重新可感。这款开源、自托管的轻量记账工具,支持 Docker 部署,兼顾隐私与易用,助你找回对支出的真实掌控,适合树莓派到 NAS 各类设备。
909 0
告别数字麻木,重拾消费感知:ezBookkeeping —— 您的轻量自托管记账伴侣
|
存储 网络安全 PHP
在阿里云服务器上如何搭建网站,网址怎么建站图文教程详解案例及步骤.
做好一个网站不仅需要我们对站点装修及内容发布,也需要我们学会对网站运营,如进行站长推送,将我们内容快速推送到各大搜索平台,有效的让用户能搜索到我们内容,或者需要在谷歌推广就必须对网站添加SSL证书,这样搜索域名的时候搜索框不会出现<不安全>字符在域名前面,以及运行网站要懂运维,出现BUG时要去及时解决查找原因.自始至终自身要不断学习网络相关知识,遇到问题方能迎刃而解. 本文结束,如还有不懂的同学可联系作者,倾力而为,祝您成功!
2659 75
|
物联网
(手把手)在华为云、阿里云搭建自己的物联网MQTT消息服务器,免费IOT平台
本文介绍如何在阿里云搭建自己的物联网MQTT消息服务器,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
3963 42
|
监控 安全 物联网
阿里云mqtt简介和使用流程
本文介绍了阿里云MQTT的准备工作、简介和使用流程。首先,用户需要注册阿里云账号并完成实名认证。接着,通过阿里云物联网平台创建产品和设备,获取连接所需的Broker Address、Port、Username和Password。然后,使用MQTT客户端(如MQTTX)配置这些信息进行连接,并激活设备。最后,创建并订阅/发布自定义Topic,实现设备间的通信。阿里云MQTT是一个适用于物联网设备的轻量级通信协议,提供高并发、高可靠性的服务,广泛应用于各种物联网场景。
阿里云mqtt简介和使用流程
|
12月前
|
数据安全/隐私保护
小红书自动评论软件,小红书评论回复脚本,autojs框架分享
该脚本主要实现以下功能模块: 关键词触发机制
EMQ
|
Linux 网络性能优化 数据安全/隐私保护
MQTT 5.0 报文解析 01:CONNECT 与 CONNACK
如果我们想要使用 MQTT 进行通信,第一步必然是建立一个 MQTT 连接,而建立 MQTT 连接需要用到两个控制报文,它们分别是 CONNECT 报文与 CONNACK 报文。CONNECT 报文是客户端与服务端建立网络连接后,向服务端发送的第一个控制报文,用来发起连接请求。服务端将返回 CONNACK 报文告知客户端连接结果。
EMQ
2138 117
MQTT 5.0 报文解析 01:CONNECT 与 CONNACK
|
前端开发 安全 UED
React 文件预览组件:File Preview
在现代Web应用中,文件上传和预览功能至关重要。本文基于React库,详细介绍如何构建文件预览组件,涵盖文件选择器、图片预览、文件大小限制及多种文件类型支持。通过实际代码示例,解析常见问题如跨域请求、文件路径处理和状态管理,并提供解决方案。帮助开发者提升用户体验,减少误操作。
1073 2
|
Java API 开发工具
【Android】安Android Studio环境搭建注意点
【Android】安Android Studio环境搭建注意点
448 1

相关产品

  • 物联网平台