-
Notifications
You must be signed in to change notification settings - Fork 0
/
decode_test.py
64 lines (57 loc) · 1.99 KB
/
decode_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import serial
import time
ser = serial.Serial('COM3', 9600)
ser.flushInput()
buf = bytearray(17)
while (True):
rx_raw = ser.read(17) #
# print("raw: ")
# print(rx_raw)
# print("\n")
mystring = "";
for c in rx_raw:
mystring = mystring + " " + hex(c)
print("hexed: ")
print(mystring)
print("\n")
while (True):
# rx_raw = ser.read(32)#
rx_raw = ser.read(17) #
# print("raw: ")
# print(rx_raw)
# print("\n")
# mystring = "";
# for c in rx_raw:
# mystring = mystring + " " + hex(c)
# print("hexed: ")
# print(mystring)
# print("\n")
# Convert the hex string to bytes
payload = rx_raw
# Decode the payload in Python
Raw_temperature = (payload[1] << 8) | payload[2]
temperature = Raw_temperature / 100.0
Raw_humidity = (payload[3] << 8) | payload[4]
humidity = Raw_humidity / 100.0
Raw_conductivity = (payload[5] << 8) | payload[6]
conductivity = Raw_conductivity / 100.0
Raw_pHValue = (payload[7] << 8) | payload[8]
pHValue = Raw_pHValue / 100.0
Raw_nitrogen = (payload[9] << 8) | payload[10]
nitrogen = Raw_nitrogen / 100.0
Raw_phosphorus = (payload[11] << 8) | payload[12]
phosphorus = Raw_phosphorus / 100.0
Raw_potassium = (payload[13] << 8) | payload[14]
potassium = Raw_potassium / 100.0
Raw_waterlevel = (payload[15] << 8) | payload[16]
waterlevel = Raw_waterlevel / 100.0
# Print or use the decoded value
print(f'Temperature: {temperature}')
print(f'Humidity: {humidity}')
print(f'Conductivity: {conductivity}')
print(f'pH Value: {pHValue}')
print(f'Nitrogen: {nitrogen}')
print(f'Phosphorus: {phosphorus}')
print(f'Potassium: {potassium}')
print(f'Water Level: {waterlevel}')
print("\n")