summaryrefslogtreecommitdiff
path: root/src/temphumd.py
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2023-09-27 00:54:57 +0300
committerEvgeny Zinoviev <me@ch1p.io>2023-09-27 00:54:57 +0300
commitd3a295872c49defb55fc8e4e43e55550991e0927 (patch)
treeb9dca15454f9027d5a9dad0d4443a20de04dbc5d /src/temphumd.py
parentb7cbc2571c1870b4582ead45277d0aa7f961bec8 (diff)
parentbdbb296697f55f4c3a07af43c9aaf7a9ea86f3d0 (diff)
Merge branch 'master' of ch1p.io:homekit
Diffstat (limited to 'src/temphumd.py')
-rwxr-xr-xsrc/temphumd.py77
1 files changed, 0 insertions, 77 deletions
diff --git a/src/temphumd.py b/src/temphumd.py
deleted file mode 100755
index f4d1fca..0000000
--- a/src/temphumd.py
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/env python3
-import asyncio
-import json
-import logging
-
-from typing import Optional
-
-from home.config import config
-from home.temphum import SensorType, create_sensor, TempHumSensor
-
-logger = logging.getLogger(__name__)
-sensor: Optional[TempHumSensor] = None
-lock = asyncio.Lock()
-delay = 0.01
-
-
-async def get_measurements():
- async with lock:
- await asyncio.sleep(delay)
-
- temp = sensor.temperature()
- rh = sensor.humidity()
-
- return rh, temp
-
-
-async def handle_client(reader, writer):
- request = None
- while request != 'quit':
- try:
- request = await reader.read(255)
- if request == b'\x04':
- break
- request = request.decode('utf-8').strip()
- except Exception:
- break
-
- if request == 'read':
- try:
- rh, temp = await asyncio.wait_for(get_measurements(), timeout=3)
- data = dict(humidity=rh, temp=temp)
- except asyncio.TimeoutError as e:
- logger.exception(e)
- data = dict(error='i2c call timed out')
- else:
- data = dict(error='invalid request')
-
- writer.write((json.dumps(data) + '\r\n').encode('utf-8'))
- try:
- await writer.drain()
- except ConnectionResetError:
- pass
-
- writer.close()
-
-
-async def run_server(host, port):
- server = await asyncio.start_server(handle_client, host, port)
- async with server:
- logger.info('Server started.')
- await server.serve_forever()
-
-
-if __name__ == '__main__':
- config.load()
-
- if 'measure_delay' in config['sensor']:
- delay = float(config['sensor']['measure_delay'])
-
- sensor = create_sensor(SensorType(config['sensor']['type']),
- int(config['sensor']['bus']))
-
- try:
- host, port = config.get_addr('server.listen')
- asyncio.run(run_server(host, port))
- except KeyboardInterrupt:
- logging.info('Exiting...')