update
This commit is contained in:
parent
aa476caddb
commit
28a86212f2
3
MQTT.py
3
MQTT.py
|
@ -58,11 +58,10 @@ if __name__ == '__main__':
|
||||||
client.on_message = on_message
|
client.on_message = on_message
|
||||||
# Establish a connection
|
# Establish a connection
|
||||||
# ceshi-mqtt.lihaink.cn
|
# ceshi-mqtt.lihaink.cn
|
||||||
client.connect('192.168.1.27', 1883)
|
client.connect('ceshi-mqtt.lihaink.cn', 1883)
|
||||||
# Publish a message
|
# Publish a message
|
||||||
client.loop_forever()
|
client.loop_forever()
|
||||||
except:
|
except:
|
||||||
print("等待30秒重新连接客户端")
|
|
||||||
time.sleep(30)
|
time.sleep(30)
|
||||||
if times != 0:
|
if times != 0:
|
||||||
times -= 1
|
times -= 1
|
||||||
|
|
2
ceshi.py
2
ceshi.py
|
@ -35,7 +35,7 @@ if __name__ == '__main__':
|
||||||
client.on_connect = on_connect
|
client.on_connect = on_connect
|
||||||
client.on_connect_fail = on_connect_fail
|
client.on_connect_fail = on_connect_fail
|
||||||
# Establish a connection
|
# Establish a connection
|
||||||
client.connect('192.168.1.27', 1883)
|
client.connect('ceshi-mqtt.lihaink.cn', 1883)
|
||||||
# Publish a message
|
# Publish a message
|
||||||
client.loop_forever()
|
client.loop_forever()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
@ -5,7 +5,6 @@ import serial
|
||||||
from api import add
|
from api import add
|
||||||
from db.models.log_data_model import LOT_DATA
|
from db.models.log_data_model import LOT_DATA
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
temp_send = '06 03 01 F4 00 02 85 B2 ' # 温湿度查询指令
|
temp_send = '06 03 01 F4 00 02 85 B2 ' # 温湿度查询指令
|
||||||
co2_send = '06 03 01 F7 00 02 75 B2 ' # 二氧化碳查询指令
|
co2_send = '06 03 01 F7 00 02 75 B2 ' # 二氧化碳查询指令
|
||||||
|
@ -181,24 +180,5 @@ if __name__ == '__main__':
|
||||||
'wind_direction': winddirection_data,
|
'wind_direction': winddirection_data,
|
||||||
'create_time': int(time.time())
|
'create_time': int(time.time())
|
||||||
}
|
}
|
||||||
data = {'ambient_temperature': 1,
|
|
||||||
'ambient_humidity': 1,
|
|
||||||
'carbon_dioxide': 1,
|
|
||||||
'ambient_air_pressure': 1,
|
|
||||||
'ambient_lighting': 1,
|
|
||||||
'soil_moisture': 1,
|
|
||||||
'soil_temperature': 1,
|
|
||||||
'soil_conductivity': 1,
|
|
||||||
'soil_PH': 1,
|
|
||||||
'soil_potassium_phosphate_nitrogen': 1,
|
|
||||||
'soil_potassium_phosphate_phosphorus': 1,
|
|
||||||
'soil_potassium_phosphate_potassium': 1,
|
|
||||||
'rainfall': 1,
|
|
||||||
'wind_speed': 1,
|
|
||||||
'wind_direction': 1,
|
|
||||||
'create_time': int(time.time())
|
|
||||||
}
|
|
||||||
t = LOT_DATA(**data)
|
t = LOT_DATA(**data)
|
||||||
# add(t)
|
add(t)
|
||||||
print(t)
|
|
||||||
time.sleep(1)
|
|
||||||
|
|
|
@ -10,29 +10,183 @@ from db.models.log_data_model import LOT_DATA
|
||||||
|
|
||||||
|
|
||||||
def t():
|
def t():
|
||||||
|
temp_send = '06 03 01 F4 00 02 85 B2 ' # 温湿度查询指令
|
||||||
|
co2_send = '06 03 01 F7 00 02 75 B2 ' # 二氧化碳查询指令
|
||||||
|
pressure_send = '06 03 01 F9 00 02 14 71 ' # 气压查询指令
|
||||||
|
sun_send = '06 03 01 FA 00 02 E4 71 ' # 光照查询指令
|
||||||
|
|
||||||
|
soil_send = '02 03 00 00 00 04 44 3A' # 土壤查询指令
|
||||||
|
danlinjia_send = '02 03 00 04 00 03 44 39' # 氮磷钾查询指令
|
||||||
|
|
||||||
|
rainfall_send = '03 03 00 00 00 01 85 E8' # 雨量查询指令
|
||||||
|
|
||||||
|
windspeed_send = '04 03 00 00 00 02 C4 5E' # 风速查询指令
|
||||||
|
winddirection_send = '05 03 00 00 00 02 C5 8F' # 风向查询指令
|
||||||
|
ser = serial.Serial("/dev/ttyS2", 9600)
|
||||||
|
|
||||||
|
# 发送的数据转为2进制b'\x01\x03\x00\x00\x00\x02\xc4\x0b'
|
||||||
|
temp_send = bytes.fromhex(temp_send)
|
||||||
|
co2_send = bytes.fromhex(co2_send)
|
||||||
|
pressure_send = bytes.fromhex(pressure_send)
|
||||||
|
sun_send = bytes.fromhex(sun_send)
|
||||||
|
soil_send = bytes.fromhex(soil_send)
|
||||||
|
danlinjia_send = bytes.fromhex(danlinjia_send)
|
||||||
|
rainfall_send = bytes.fromhex(rainfall_send)
|
||||||
|
windspeed_send = bytes.fromhex(windspeed_send)
|
||||||
|
winddirection_send = bytes.fromhex(winddirection_send)
|
||||||
while True:
|
while True:
|
||||||
data = {'ambient_temperature': 2,
|
# if ser.is_open:
|
||||||
'ambient_humidity': 2,
|
ser.write(temp_send)
|
||||||
'carbon_dioxide': 2,
|
time.sleep(1)
|
||||||
'ambient_air_pressure': 12,
|
# 获取返回的缓冲data,获取的是buffer_data的长度 9
|
||||||
'ambient_lighting': 12,
|
tempbuffer_data = ser.in_waiting
|
||||||
'soil_moisture': 12,
|
if tempbuffer_data:
|
||||||
'soil_temperature': 12,
|
# 返回的数据为2进制:b'\x01\x03\x04\x01\x08\x022\xfa\xb8'
|
||||||
'soil_conductivity': 12,
|
return_data = ser.read(tempbuffer_data)
|
||||||
'soil_PH': 12,
|
# 二进制转换为16进制:010304010802307b79
|
||||||
'soil_potassium_phosphate_nitrogen': 12,
|
return_data_hex = str(return_data.hex())
|
||||||
'soil_potassium_phosphate_phosphorus': 12,
|
# 对返回的数据进行解析,获取温度和湿度数据
|
||||||
'soil_potassium_phosphate_potassium': 12,
|
airtemp_data = int(return_data_hex[6:10], 16) / 10
|
||||||
'rainfall': 2,
|
airhumi_data = int(return_data_hex[10:14], 16) / 10
|
||||||
'wind_speed': 2,
|
time.sleep(5)
|
||||||
'wind_direction': 2,
|
ser.write(co2_send)
|
||||||
|
time.sleep(1)
|
||||||
|
# 获取返回的缓冲data,获取的是buffer_data的长度 9
|
||||||
|
co2buffer_data = ser.in_waiting
|
||||||
|
if co2buffer_data:
|
||||||
|
return_data = ser.read(co2buffer_data)
|
||||||
|
# 二进制转换为16进制:010304010802307b79
|
||||||
|
return_data_hex = str(return_data.hex())
|
||||||
|
# 对返回的数据进行解析,获取温度和湿度数据
|
||||||
|
co2_data = int(return_data_hex[6:10], 16)
|
||||||
|
time.sleep(5)
|
||||||
|
ser.write(pressure_send)
|
||||||
|
time.sleep(1)
|
||||||
|
# 获取返回的缓冲data,获取的是buffer_data的长度 9
|
||||||
|
pressurebuffer_data = ser.in_waiting
|
||||||
|
if pressurebuffer_data:
|
||||||
|
# 返回的数据为2进制:b'\x01\x03\x04\x01\x08\x022\xfa\xb8'
|
||||||
|
return_data = ser.read(pressurebuffer_data)
|
||||||
|
# 二进制转换为16进制:010304010802307b79
|
||||||
|
return_data_hex = str(return_data.hex())
|
||||||
|
# 对返回的数据进行解析,获取温度和湿度数据
|
||||||
|
pressure_data = int(return_data_hex[6:10], 16) / 10
|
||||||
|
time.sleep(5)
|
||||||
|
ser.write(sun_send)
|
||||||
|
time.sleep(1)
|
||||||
|
# 获取返回的缓冲data,获取的是buffer_data的长度 9
|
||||||
|
sunbuffer_data = ser.in_waiting
|
||||||
|
if sunbuffer_data:
|
||||||
|
# 返回的数据为2进制:b'\x01\x03\x04\x01\x08\x022\xfa\xb8'
|
||||||
|
return_data = ser.read(sunbuffer_data)
|
||||||
|
# 二进制转换为16进制:010304010802307b79
|
||||||
|
return_data_hex = str(return_data.hex())
|
||||||
|
sun_data = int(return_data_hex[6:14], 16)
|
||||||
|
time.sleep(5)
|
||||||
|
# print('send soil directives')
|
||||||
|
ser.write(soil_send)
|
||||||
|
time.sleep(1)
|
||||||
|
# 获取返回的缓冲data,获取的是buffer_data的长度 9
|
||||||
|
soilbuffer_data = ser.in_waiting
|
||||||
|
# print(buffer_data, 'buffer_data')
|
||||||
|
if soilbuffer_data:
|
||||||
|
# 返回的数据为2进制:b'\x01\x03\x04\x01\x08\x022\xfa\xb8'
|
||||||
|
return_data = ser.read(soilbuffer_data)
|
||||||
|
# 二进制转换为16进制:010304010802307b79
|
||||||
|
return_data_hex = str(return_data.hex())
|
||||||
|
# 对返回的数据进行解析,获取温度和湿度数据
|
||||||
|
humidity_data = int(return_data_hex[6:10], 16) / 10
|
||||||
|
temperature_data = int(return_data_hex[10:14], 16) / 10
|
||||||
|
electrical_data = int(return_data_hex[14:18], 16) / 10
|
||||||
|
PH_data = int(return_data_hex[18:22], 16) / 10
|
||||||
|
time.sleep(5)
|
||||||
|
# print('send danlinjia directives')
|
||||||
|
ser.write(danlinjia_send)
|
||||||
|
time.sleep(1)
|
||||||
|
# 获取返回的缓冲data,获取的是buffer_data的长度 9
|
||||||
|
danlinjiabuffer_data = ser.in_waiting
|
||||||
|
# print(buffer_data, 'buffer_data')
|
||||||
|
if danlinjiabuffer_data:
|
||||||
|
# 返回的数据为2进制:b'\x01\x03\x04\x01\x08\x022\xfa\xb8'
|
||||||
|
return_data = ser.read(danlinjiabuffer_data)
|
||||||
|
# print('返回的数据2进制:', return_data)
|
||||||
|
# 二进制转换为16进制:010304010802307b79
|
||||||
|
return_data_hex = str(return_data.hex())
|
||||||
|
# # 对返回的数据进行解析,获取温度和湿度数据
|
||||||
|
dan_data = int(return_data_hex[6:10], 16) / 10
|
||||||
|
lin_data = int(return_data_hex[10:14], 16) / 10
|
||||||
|
jia_data = int(return_data_hex[14:18], 16) / 10
|
||||||
|
time.sleep(5)
|
||||||
|
# print('send rainfall directives')
|
||||||
|
ser.write(rainfall_send)
|
||||||
|
time.sleep(1)
|
||||||
|
# 获取返回的缓冲data,获取的是buffer_data的长度 9
|
||||||
|
rainfallbuffer_data = ser.in_waiting
|
||||||
|
# print(buffer_data, 'buffer_data')
|
||||||
|
if rainfallbuffer_data:
|
||||||
|
# 返回的数据为2进制:b'\x01\x03\x04\x01\x08\x022\xfa\xb8'
|
||||||
|
return_data = ser.read(rainfallbuffer_data)
|
||||||
|
# print('返回的数据2进制:', return_data)
|
||||||
|
# 二进制转换为16进制:010304010802307b79
|
||||||
|
return_data_hex = str(return_data.hex())
|
||||||
|
# print('返回的数据转换为16进制:', return_data_hex)
|
||||||
|
# # 对返回的数据进行解析,获取温度和湿度数据
|
||||||
|
# print("当前雨量值为:", int(return_data_hex[6:10], 16)/10)#单位mm
|
||||||
|
rainfall_data = int(return_data_hex[6:10], 16) / 10
|
||||||
|
time.sleep(5)
|
||||||
|
ser.write(windspeed_send)
|
||||||
|
time.sleep(1)
|
||||||
|
# 获取返回的缓冲data,获取的是buffer_data的长度 9
|
||||||
|
windspeedbuffer_data = ser.in_waiting
|
||||||
|
# print(buffer_data, 'buffer_data')
|
||||||
|
if windspeedbuffer_data:
|
||||||
|
# 返回的数据为2进制:b'\x01\x03\x04\x01\x08\x022\xfa\xb8'
|
||||||
|
return_data = ser.read(windspeedbuffer_data)
|
||||||
|
# print('返回的数据2进制:', return_data)
|
||||||
|
# 二进制转换为16进制:010304010802307b79
|
||||||
|
return_data_hex = str(return_data.hex())
|
||||||
|
# print('返回的数据转换为16进制:', return_data_hex)
|
||||||
|
# print("当前风速为:", int(return_data_hex[6:10], 16)/10)#单位mm
|
||||||
|
speedwind_data = int(return_data_hex[6:10], 16) / 10
|
||||||
|
time.sleep(5)
|
||||||
|
# print('send winddirection directives')
|
||||||
|
ser.write(winddirection_send)
|
||||||
|
time.sleep(1)
|
||||||
|
# 获取返回的缓冲data,获取的是buffer_data的长度 9
|
||||||
|
winddirectionbuffer_data = ser.in_waiting
|
||||||
|
# print(buffer_data, 'buffer_data')
|
||||||
|
if winddirectionbuffer_data:
|
||||||
|
# 返回的数据为2进制:b'\x01\x03\x04\x01\x08\x022\xfa\xb8'
|
||||||
|
return_data = ser.read(winddirectionbuffer_data)
|
||||||
|
# print('返回的数据2进制:', return_data)
|
||||||
|
# 二进制转换为16进制:010304010802307b79
|
||||||
|
return_data_hex = str(return_data.hex())
|
||||||
|
# print('返回的数据转换为16进制:', return_data_hex)
|
||||||
|
# print("当前风向为:", int(return_data_hex[10:14], 16))#单位mm
|
||||||
|
winddirection_data = int(return_data_hex[10:14], 16)
|
||||||
|
time.sleep(5)
|
||||||
|
# print('{"name":"%d","name1":"%d"}', 123,456)
|
||||||
|
# data = [{'ngvhgv': airtemp_data}, {'nvjgvjvj':airhumi_data}]
|
||||||
|
data = {'ambient_temperature': airtemp_data,
|
||||||
|
'ambient_humidity': airhumi_data,
|
||||||
|
'carbon_dioxide': co2_data,
|
||||||
|
'ambient_air_pressure': pressure_data,
|
||||||
|
'ambient_lighting': sun_data,
|
||||||
|
'soil_moisture': humidity_data,
|
||||||
|
'soil_temperature': temperature_data,
|
||||||
|
'soil_conductivity': electrical_data,
|
||||||
|
'soil_PH': PH_data,
|
||||||
|
'soil_potassium_phosphate_nitrogen': dan_data,
|
||||||
|
'soil_potassium_phosphate_phosphorus': lin_data,
|
||||||
|
'soil_potassium_phosphate_potassium': jia_data,
|
||||||
|
'rainfall': rainfall_data,
|
||||||
|
'wind_speed': speedwind_data,
|
||||||
|
'wind_direction': winddirection_data,
|
||||||
'create_time': int(time.time())
|
'create_time': int(time.time())
|
||||||
}
|
}
|
||||||
t = LOT_DATA(**data)
|
t2 = LOT_DATA(**data)
|
||||||
client.publish('demo', payload=json.dumps(data, ensure_ascii=False), qos=0)
|
client.publish('demo', payload=json.dumps(data, ensure_ascii=False), qos=0)
|
||||||
# add(t)
|
add(t2)
|
||||||
print(t)
|
|
||||||
time.sleep(10)
|
|
||||||
|
|
||||||
|
|
||||||
def on_connect(client, userdata, flags, rc):
|
def on_connect(client, userdata, flags, rc):
|
||||||
|
@ -46,6 +200,6 @@ if __name__ == '__main__':
|
||||||
client.on_connect = on_connect
|
client.on_connect = on_connect
|
||||||
# Establish a connection
|
# Establish a connection
|
||||||
# ceshi-mqtt.lihaink.cn
|
# ceshi-mqtt.lihaink.cn
|
||||||
client.connect('192.168.1.27', 1883)
|
client.connect('ceshi-mqtt.lihaink.cn', 1883)
|
||||||
# Publish a message
|
# Publish a message
|
||||||
client.loop_forever()
|
client.loop_forever()
|
||||||
|
|
3
tool.py
3
tool.py
|
@ -62,6 +62,3 @@ def get_record(msg, client):
|
||||||
return
|
return
|
||||||
files = {filename: open(os.path.join(mp4_path, filename), 'rb'), "Content-Type": "application/octet-stream"}
|
files = {filename: open(os.path.join(mp4_path, filename), 'rb'), "Content-Type": "application/octet-stream"}
|
||||||
requests.post("https://shop.lihaink.cn/api/index/upload", files=files)
|
requests.post("https://shop.lihaink.cn/api/index/upload", files=files)
|
||||||
|
|
||||||
def sensor_data_upload(client):
|
|
||||||
p = subprocess.Popen(['/bin/bash update.sh'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
||||||
|
|
Loading…
Reference in New Issue