void setup()
{
Serial.begin(115200);
+ Serial.println("CO2,temp");
mhz19.begin(rx_pin, tx_pin);
}
{
measurement_t m = mhz19.getMeasurement();
- Serial.print("co2: ");
- Serial.println(m.co2_ppm);
- Serial.print("temp: ");
+ Serial.print(m.co2_ppm);
+ Serial.print(",");
Serial.println(m.temperature);
delay(500);
--- /dev/null
+import argparse
+import asyncio
+import logging
+
+import serial_asyncio # pyserial-asyncio Debian: python3-serial-asyncio
+
+
+log = logging.getLogger(__name__)
+
+
+class LineBuffer:
+ def __init__(self):
+ self.buffer = ''
+
+ def write(self, data: bytes):
+ self.buffer += data.decode()
+
+
+class Receiver(asyncio.Protocol):
+ def __init__(self):
+ self.transport = None
+
+ def connection_made(self, transport):
+ self.transport = transport
+ log.debug('port opened')
+
+ def data_received(self, data):
+ data = data.decode()
+ print(data, end='')
+
+ def connection_lost(self, exc):
+ log.debug('port closed')
+ self.transport.loop.stop()
+
+
+def main():
+ parser = argparse.ArgumentParser('Logs CO2 and temperature from MH-Z19B sensor.')
+ parser.add_argument('--device', '-d', default='/dev/ttyACM0', help='Device where Arduino is connected to')
+ args = parser.parse_args()
+ logging.basicConfig(level=logging.INFO, format='%(asctime)-15s %(message)s')
+ loop = asyncio.get_event_loop()
+ coro = serial_asyncio.create_serial_connection(loop, Receiver, args.device, baudrate=115200)
+ loop.run_until_complete(coro)
+ loop.run_forever()
+ loop.close()
+
+
+if __name__ == '__main__':
+ main()