赞
踩
介绍
测试使用的是一个集成esp - wroom -32模块的开发板:FireBeetle ESP32。代码开发是在MicroPython IDE uPyCraft上完成的。
本文旨在介绍如何在ESP32上运行的Websocket服务器上接收和解析JSON消息。我们将以Arduino内核作为编程框架。
文中对Websocket服务器的操作代码将会以先前的教程内容为基础。本教程介绍了如何安装Arduino库文件以及Python模块,其中Arduino库文件是操作Websocket服务器所必需的文件,而Python模块是测试本文中创建的客户端所必需的模块。
另外,此教程还介绍了JSON解析功能,叙述了如何安装Arduino代码所需的JSON解析库文件。
Python客户端代码
在代码的开始部分,我们将导入websocket模块,以便能够访问连接ESP32 Websocket服务器所需的所有函数。
[mw_shl_code=applescript,true]1 import websocket[/mw_shl_code]
我们还将导入JSON模块,以便能够将Python字典(Python语言的基本数据结构之一)转换为JSON字符串。
[mw_shl_code=applescript,true]1 import json[/mw_shl_code]
接下来,我们将创建一个WebSocket类对象,利用它连接服务器并与服务器交换数据的方法。
[mw_shl_code=applescript,true]1 ws = websocket.WebSocket()[/mw_shl_code]
为了连接ESP32 websocket服务器,我们调用了该对象的connect方法,将目标服务器作为其传递参数,输入格式为“ws:// {ESP32 IP} /”,其中,{ESP32 IP} 表示WiFi网络中分配给ESP32的本地IP地址。
请注意,我们将在Arduino代码中打印出ESP32在网络中的IP地址,所以现在您可以先虚拟一个IP地址并在稍后进行更改。
[mw_shl_code=applescript,true]
1 ws.connect("ws://192.168.1.78/")[/mw_shl_code]
现在,我们将创建一个Python字典,它的某些“键-值”对用于表示传感器的测量值。请注意,这只是一个用作测试目的的数据结构,在实际应用中,ESP32可以充当网关,它可以从底层传感器接收数据,对数据进行处理并将处理结果发送到云端。
[mw_shl_code=applescript,true]myDict = {"sensor": "temperature", "identifier":"SENS123456789", "value":10, "timestamp": "20/10/2017 10:10:25"}[/mw_shl_code]
然后,我们将通过调用WebSocket对象的send方法把数据发送至Websocket服务器。此方法的输入参数是我们需要发送的数据。
在此示例中,需要发送的数据为JSON字符串,它用于表示先前声明的Python字典。为了将字典转换为JSON字符串,我们需要调用JSON模块的dumps函数,将字典数据作为该函数的输入参数。
[mw_shl_code=applescript,true]1 ws.send(json.dumps(myDict))[/mw_shl_code]
在此之后,我们将通过调用WebSocker对象的recv方法来获取服务器响应结果并将其打印出来。
[mw_shl_code=applescript,true]result = ws.recv()
print(result)[/mw_shl_code]
最后,我们将通过调用该对象的close方法来关闭服务器连接。
[mw_shl_code=applescript,true]ws.close()[/mw_shl_code]
完整的Python代码如下所示。
[mw_shl_code=applescript,true]
import websocket
import json
ws = websocket.WebSocket()
ws.connect("ws://192.168.1.78/")
myDict = {"sensor": "temperature", "identifier":"SENS123456789", "value":10, "timestamp": "20/10/2017 10:10:25"}
ws.send(json.dumps(myDict))
result = ws.recv()
print(result)
ws.close()[/mw_shl_code]
Arduino代码
引用的库文件及全
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。