diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..6b76b4f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python Debugger: Current File", + "type": "debugpy", + "request": "launch", + "program": "${file}", + "console": "integratedTerminal" + } + ] +} \ No newline at end of file diff --git a/recorder/notion_handle.py b/recorder/notion_handle.py new file mode 100644 index 0000000..e586000 --- /dev/null +++ b/recorder/notion_handle.py @@ -0,0 +1,33 @@ +import os +from datetime import datetime + +from dotenv import load_dotenv +from notion_client import AsyncClient as Client + + +class NotionClient: + def __init__(self) -> None: + load_dotenv() + self._notion = Client(auth=os.environ["NOTION_TOKEN"]) + self._page_id = "3cf594afd0754497ba0a93b94912b897" + self._table_id = "9828b56c53de46c794673fe1d01ad522" + + async def note(self, now: datetime, status: str) -> None: + formatted_date = now.strftime("%Y-%m-%d") + formatted_time = now.strftime("%H:%M") + await self._notion.blocks.children.append( + block_id=self._table_id, + children=[ + { + "object": "block", + "type": "table_row", + "table_row": { + "cells": [ + [{"type": "text", "text": {"content": formatted_date}}], + [{"type": "text", "text": {"content": formatted_time}}], + [{"type": "text", "text": {"content": status}}], + ], + }, + }, + ], + ) diff --git a/recorder/poo.py b/recorder/poo.py index e136e88..772af0e 100644 --- a/recorder/poo.py +++ b/recorder/poo.py @@ -2,9 +2,12 @@ from datetime import datetime from fastapi_mqtt import FastMQTT, MQTTConfig +from recorder.notion_handle import NotionClient + class PooRecorder: mqtt_config = MQTTConfig(username="mqtt", password="mqtt", reconnect_retries=-1) # noqa: S106 + notion = NotionClient() mqtt = FastMQTT(config=mqtt_config, client_id="poo_recorder") CONFIG_TOPIC = "homeassistant/text/poo_recorder/config" AVAILABILITY_TOPIC = "studiotj/poo_recorder/status" @@ -29,6 +32,7 @@ class PooRecorder: PooRecorder.publish_text(status) now = datetime.now(tz=datetime.now().astimezone().tzinfo) PooRecorder.publish_time(now) + await PooRecorder.notion.note(now, status) @staticmethod @mqtt.on_connect()