怎样使用UbiDots连接ESP32并发布多个传感器数据

步骤1:硬件和软件规范
esp32 wifi/ble
无线温湿度传感器
软件规格
arduino ide
第2步:创建俘虏门户
强制门户网站是一个网页,向新连接的用户显示,然后才向他们授予对网络资源的更广泛访问权限。在这里,我们提供三个网页,供您在dhcp和静态ip设置之间进行选择。我们可以通过两种方式为esp定义ip地址。
dhcp ip地址-这是一种动态分配ip地址的方法到设备。 esp的默认ip地址为192.168.4.1
静态ip地址-为我们的网络设备分配一个永久ip地址。为了向设备提供静态ip,我们需要定义ip地址,网关地址和子网掩码。
第一个网页位于192.168.1.77。此处为用户提供了单选按钮,可以在dhcp和静态ip设置之间进行选择。在下一个网页中,我们必须提供ip相关信息以继续进行操作。
html代码
可以在以下位置找到网页的html代码:
您可以使用任何ide或文本编辑器(例如sublime或notepad ++)来制作html网页。
首先创建一个包含两个单选按钮的html网页,以在dhcp和静态之间进行选择ip设置。
现在创建按钮以提交您的回复
为单选按钮命名。
esp web服务器类将使用这些名称作为参数,并使用这些参数获取单选按钮的响应
现在插入“ submit”按钮以将响应发送到设备。网页上,我们有文本框。
在文本框中输入名称值和输入类型,然后在“ submit”中添加提交按钮以提交响应。
创建“ reset” ‘按钮以重置文本字段的内容。
步骤3:提供wi fi和ubidots凭据
主要问题是在管理wifi凭据时发生的。即使我们有wifimulti库,也可以在其中向设备提供多个ssid和密码,然后设备将连接到可用的网络。但是,如果可用网络不在wifimulti列表中,该怎么办。始终刷新 esp32 设备不是一个可靠的解决方案。
为解决此问题,我们托管了一个网页,用户可以在其中提交可用网络的ssid和密码。它的工作方式如下。
该网页托管于用户从强制门户中选择的静态ip或dhcp ip
此网页包含用于输入ssid的文本字段,密码和ubidots令牌id将设备连接到 ubidots 。
在输入字段中输入本地wifi的ssid和密码,然后输入 ubidot 》的令牌id并输入submit
这些凭据将保存在 esp32 的eeprom
60秒后,设备将自动与ap
下次打开设备时,用户无需执行此过程,设备将自动从eeprom中获取用户凭据并继续发布传感器读数到 ubidots 。
步骤4:将传感器读数发布到ubidots
此处我们正在将无线温度和湿度传感器与 esp 32 设备一起使用,以获取温度和h亮度数据。我们正在使用 mqtt 协议将数据发送到ubidots。 mqtt 遵循发布和订阅机制,而不是请求和响应。它比http更快,更可靠。这项工作如下。
我们正在使用任务计划程序来计划任务,例如从传感器中获取数据,发布传感器读数,订阅 mqtt 主题。/li》
首先,包括task scheduler头文件,它是实例并计划任务。
我们已经计划了两个任务,它们涉及两个不同的控制操作。
#define _task_timeout
#include
scheduler ts;
//---------tasks------------//
task tsensor(4 * task_second, task_forever, &tasksensorcallback, &ts, false, null, &tasksensordisable);
task twifi(10* task_second, task_forever, &taskwificallback, &ts, false, null, &taskwifidisable);
任务1用于读取传感器值,该任务运行1秒钟,直到达到10秒超时。
当task1超时时,我们正在连接到本地wifi和 mqtt 代理。
现在已启用任务2并我们将禁用任务1
任务2用于将传感器数据发布到 ubidots mqtt 经纪人,此任务将运行20秒,直到超时20秒
当task2达到超时时,将再次启用任务1,并禁用task2。再次在这里,我们获取更新的值,并且过程继续进行。
读取i2c传感器数据
我们从无线温度和湿度传感器获得29字节的帧。对该框架进行操作以获取实际的温度和湿度数据。
uint8_t data[29];
data[0] = serial1.read();
delay(k);
//chck for start byte
if(data[0]==0x7e)
{
while (!serial1.available());
for ( i = 1; i《 29; i++)
{
data[i] = serial1.read();
delay(1);
}
if(data[15]==0x7f) /////// to check if the recive data is correct
{
if(data[22]==1) //////// make sure the sensor type is correct
{
humidity = ((((data[24]) * 256) + data[25]) /100.0);
humidity /=10.0;
ctempint = (((uint16_t)(data[26])《《8)| data[27]);
ctemp = (float)ctempint /100.0;
ctemp /= 10.0;
ftemp = ctemp * 1.8 + 32;
ftemp /= 10.0;
battery = random(100,327);
voltage = battery/100;
nodeid = data[16];}
连接到ubidots mqtt api
包括用于 mqtt 流程的头文件。
#include
为 mqtt 定义其他变量,例如客户端名称,代理地址,令牌id(我们正在从eeprom中获取令牌id)
#define mqtt_client_name “clientvbshightime123”
char mqttbroker[] = “things.ubidots.com”;
char payload[100];
char topic[150];
//create variable to store token id
string tokenid;
创建变量以存储不同的传感器数据并创建char变量以存储主题
#define variable_label_tempf “tempf” // assing the variable label
#define variable_label_tempc “tempc” // assing the variable label
#define variable_label_bat “bat”
#define variable_label_humid “humid” // assing the variable label
char topic1[100];
char topic2[100];
char topic3[100];
将数据发布到所提到的 mqtt 主题,有效负载将类似于 {“ tempc”: {value:“ tempdata”}}
sprintf(topic1, “%s”,“”);
sprintf(topic1, “%s%s”, “/v1.6/devices/”, device_label);
sprintf(payload, “%s”, “”); // cleans the payload
sprintf(payload, “{”%s“:”, variable_label_tempc); // adds the value
sprintf(payload, “%s{”value“:%s}”, payload, str_ctemp); // adds the value
sprintf(payload, “%s}”, payload); // closes the dictionary brackets
serial.println(payload);
serial.println(client.publish(topic1,payload) ? “published” : “notpublished”);
//do same for other topic as well
client.publish()将数据发布到ubidots。
步骤5:可视化数据
转到ubidots并登录到您的帐户。
从顶部列出的“数据”标签导航到仪表板。
现在单击“ + ”图标以添加然后ew小部件。
从列表中选择一个小部件,然后添加变量和设备。
可以使用不同的小部件在仪表板上显示传感器数据。


Android平台顶级产品推荐,三大热门手机你看中哪款?
美国大学利用智能手机的传感器和加速度计,实现醉酒状态判断
霍尼韦尔(HPS)发布一款新型天然气计量解决方案
iphone系统流畅碾压安卓,直至Android7.0出世
元宇宙的未来走势?听听他们的预判
怎样使用UbiDots连接ESP32并发布多个传感器数据
家庭养老床位的实现:智慧照护系统介绍
介绍几点发光二极管的主要应用
设备电路中地的分类和处理方法
软通动力携手亚马逊云科技,打造制造业厂仓一体化运营方案
6月两款最强835旗舰:努比亚Z17和一加5你更期待谁?
荣耀9i上手评测:“很吓人的技术”加持, 一款如艺术品般的手机
降价是特斯拉的屠龙术,这条龙不是蔚来
国产工控机如何适应不同的温度和环境,该如何维护
水利工程配套水文监测系统解决方案
网络滤波器图
屏下指纹和虹膜识别的博弈及未来发展趋势
HOLTEK新推出HT66L2530A Low Power A/D MCU
回顾英特尔与合作伙伴畅谈安防芯世界的内容和解读
Vroom发布基于虚拟现实技术的汽车展示间