34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
import argparse
|
|
from serial import Serial # pip install pyserial
|
|
from pythonosc import udp_client #pip install python-osc
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--ip", default="127.0.0.1", help="The ip of the OSC server")
|
|
parser.add_argument("--port", type=int, default=7331, help="The port the OSC server is listening on")
|
|
parser.add_argument("--serial", default="/dev/ttyUSB0", help="The usb serial converter port")
|
|
args = parser.parse_args()
|
|
|
|
client = udp_client.SimpleUDPClient(args.ip, args.port)
|
|
|
|
ser = Serial(args.serial, 9600, timeout=1)
|
|
|
|
ser.write(b'M 6\n') # set output data mode
|
|
ser.write(b'K 1\n') # set cozir into streaming mode
|
|
|
|
while True:
|
|
|
|
#read data from serial port
|
|
serread = ser.readline()
|
|
|
|
#if there is smth do smth
|
|
if len(serread) >= 1:
|
|
datastring = serread.decode("utf-8").rstrip('\n').rstrip('\r')
|
|
#print(datastring)
|
|
data=datastring.split(' ')
|
|
print(data)
|
|
|
|
if len(data)==9:
|
|
client.send_message('cozir/humidity', int(data[2])/10.0)
|
|
client.send_message('cozir/temperature', (int(data[4])-1000)/10.0)
|
|
client.send_message('cozir/co2filtered', int(data[6]))
|
|
client.send_message('cozir/co2raw', int(data[8])) |