]> ToastFreeware Gitweb - toast/airingbutler.git/blobdiff - log_mhz19.py
Add Python script for logging.
[toast/airingbutler.git] / log_mhz19.py
diff --git a/log_mhz19.py b/log_mhz19.py
new file mode 100644 (file)
index 0000000..57140d6
--- /dev/null
@@ -0,0 +1,49 @@
+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()