【发布时间】:2019-05-31 04:11:06
【问题描述】:
我有一个 python 文件,其中包含 4 个 python 列表,这些列表从连接到 rpi 热点的设备获取基本信息(ip、主机、mac、信号)。我想不断地将这些列表从 Rpi 发送到瓶子服务器,因为这些信息会随着时间的推移而改变(设备断开连接,改变其信号......)。最后,在 HTML 上打印该信息。如何以简单的方式不断发送信息?网络套接字?阿贾克斯?
【问题讨论】:
我有一个 python 文件,其中包含 4 个 python 列表,这些列表从连接到 rpi 热点的设备获取基本信息(ip、主机、mac、信号)。我想不断地将这些列表从 Rpi 发送到瓶子服务器,因为这些信息会随着时间的推移而改变(设备断开连接,改变其信号......)。最后,在 HTML 上打印该信息。如何以简单的方式不断发送信息?网络套接字?阿贾克斯?
【问题讨论】:
您可以在您的 RPI 热点上设置一个 cron 作业,该作业定期执行一个 curl 命令,其中 python 列表的内容为 JSON。您在问题中提到了“python 列表”,如果您只是将数据存储在 .py 文件中,那么我建议您将其写入另一种格式,例如 json。
每分钟从 RPI 设备发送数据
# 1 0 0 0 0 curl -vX POST http://example.com/api/v1/devices -d @devices.json --header "Content-Type: application/json"
然后在你的瓶子文件中有一个接收数据 POST 的方法和另一个可以显示数据 GET 的方法。该示例只是将接收到的数据写入服务器上的一个json文件
from bottle import route, run
import json
@route('/api/v1/devices', method='GET')
def index(name):
with open('data.json') as f:
return json.load(f)
@route('/api/v1/devices', method='POST')
def index(name):
req_data = request.json
with open('data.json', 'r+') as f:
data = json.load(f.read())
# output = {**data, **req_data} # merge dicts
output = data + req_data # merge lists
f.seek(0)
f.write(output)
f.truncate()
return {success: True}
run(host='localhost', port=8080)
注意:我没有测试此代码,它是为了让您了解如何完成您的请求。
【讨论】: