![](/img/trans.png)
[英]How to communicate between two raspberry pi via Bluetooth and send sensor data from one pi to another?
[英]Send Raspberry pi sensor data to remote elasticsearch via python `request` code
传感器数据 --> Raspberry Pi ---(通过requests
Python 代码发送传感器数据)---> 远程服务器(Elasticsearch)
目标正在通过request
python 模块将接收到的传感器数据发送到 elasticsearch。
问题:当我使用此代码时: data = '{"TempA":"23"}'
, data = '{"TempA":"23"}'
的 post 请求工作和文档正在更新,如下所示:
{"_index":"report","_type":"_doc",{"TempA":"23"}
但是当我将代码更改为: data = {"TempA": mens}
,为了直接获取传感器的值,它不起作用并且弹性搜索的文档不会更新。 (这是我的 python 代码,它从传感器接收数据并将传感器的值放在“mens”中。)
#!/usr/bin/env python3
import time
from SX127x.LoRa import *
from SX127x.board_config import BOARD
import requests
BOARD.setup()
BOARD.reset()
headers = {
'Content-Type': 'application/json',
}
class mylora(LoRa):
def __init__(self, verbose=False):
super(mylora, self).__init__(verbose)
self.set_mode(MODE.SLEEP)
self.set_dio_mapping([0] * 6)
def on_rx_done(self):
self.clear_irq_flags(RxDone=1)
payload = self.read_payload(nocheck=True)
mens=bytes(payload).decode("utf-8",'ignore')
print(mens)
data = {"TempA":mens}
response = requests.post('http://192.168.100.125:9200/report/_doc/customer505', headers=headers, data=data)
time.sleep(2)
self.reset_ptr_rx()
self.set_mode(MODE.RXCONT)
def start(self):
while True:
self.reset_ptr_rx()
self.set_mode(MODE.RXCONT) # Receiver mode
while True:
pass;
感谢您的评论。 经过一番谷歌搜索,我找到了解决方案。 关键点是json=params
和params
而不是data
。 变化如下:
#!/usr/bin/env python3
import time
from SX127x.LoRa import *
from SX127x.board_config import BOARD
import requests
import json
BOARD.setup()
BOARD.reset()
headers = {
'Content-Type': 'application/json',
}
class mylora(LoRa):
def __init__(self, verbose=False):
super(mylora, self).__init__(verbose)
self.set_mode(MODE.SLEEP)
self.set_dio_mapping([0] * 6)
def on_rx_done(self):
self.clear_irq_flags(RxDone=1)
payload = self.read_payload(nocheck=True)
mens=bytes(payload).decode("utf-8",'ignore')
print(mens)
url = 'http://192.168.100.125:9200/report/_doc/customer600'
params = {'soilA': mens, 'customer_id': 'customer600'}
r = requests.post(url, headers=headers, json=params)
time.sleep(2)
self.reset_ptr_rx()
self.set_mode(MODE.RXCONT)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.