我正在一个项目中,我想使用python从连接到RPi 3B+
GPIO引脚的不同传感器发送数据,以收集从传感器发送到引脚的数据并发送POST请求。该信息嵌入到外部HTTP server
中。该HTTP服务器将充当许多其他Pi的控制台。
我遇到的问题是,我无法让HTTP控制服务器来确认如何处理Pi发送的传入POST请求,因此它最终可以输出某种文本,例如“已收到度量”。
我如何做:
这是树莓中的代码。
pi@raspberrypi:~ $ more python_requests_example.py
import requests
payload = {'name' : 'test payload' }
p = requests.post('http://192.168.0.9/index.php', payload)
print(p.status_code)
当我运行它时,代码将输出以下内容:
pi@raspberrypi:~ $ python python_requests_example.py
200
我在HTTP控制服务器上捕获了数据包,看到了POST和200 OK,还看到了嵌入在POST包中的有效负载。 (https://imgur.com/fisVeBH)
我选择不在Pi上安装整个Web服务器(例如LAMP),因为它不会真正使用。
因此,对于由RPi传感器提供的估算数据,我正在使用Python,并且计划是将这些信息发送到HTTP控制服务器。
我也想纯粹使用PHP处理这个POST请求(如果可能或不太难的话)。我还看到我可以将RPi作为json格式发布,我对此没有太多经验,但是如果更好,我可以对其进行更多的挖掘。
如果不清楚,请告诉我,我会尽力补充。
答案 0 :(得分:0)
只需保持此帖子的更新,在浏览下面链接的帖子时,我已经找到了解决方案。
快速解释一下我是如何做到的:
首先,我使用$ _SERVER数组来检测HTTP控制服务器上何时接收到POST请求。然后,我用for u in users_params:
user_id = u['user_id']
if user_id not in users:
users[user_id] = {}
users[user_id][u['param']] = u['value']
# For users with key pairs like
# {5063: {'wk1_d2_survey_1': 768, 'wk3_d1_survey_2': 781 ...}}
读取POST正文的内容,然后将其保存到文本文件(目前),以防止POST正文在页面刷新时丢失。
PHP代码如下所示:
file_get_contents('php://input')