[英]Send Raspberry pi sensor data to remote elasticsearch via python `request` code
Sensor Data --> Raspberry Pi --- (send sensors data via requests
Python Code) ---> remote server (Elasticsearch)传感器数据 --> Raspberry Pi ---(通过
requests
Python 代码发送传感器数据)---> 远程服务器(Elasticsearch)
Target is sending received sensor data to elasticsearch via request
python module.目标正在通过
request
python 模块将接收到的传感器数据发送到 elasticsearch。
Question: When I use this code: data = '{"TempA":"23"}'
, the post request work and document of elasticsearch is being updated as shown below:问题:当我使用此代码时:
data = '{"TempA":"23"}'
, data = '{"TempA":"23"}'
的 post 请求工作和文档正在更新,如下所示:
{"_index":"report","_type":"_doc",{"TempA":"23"}
But when I changed the code to: data = {"TempA": mens}
, to get value of sensor directly, it does not work and document of elasticsearch does not update.但是当我将代码更改为:
data = {"TempA": mens}
,为了直接获取传感器的值,它不起作用并且弹性搜索的文档不会更新。 (This is my python code which receives data from sensor and put the value of sensor in "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;
Thanks for comments.感谢您的评论。 After some googling, I found the solution.
经过一番谷歌搜索,我找到了解决方案。 The key point was
json=params
and params
instead of data
.关键点是
json=params
和params
而不是data
。 Changes are as below:变化如下:
#!/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.