34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
from fastapi import FastAPI
|
|
from influxdb_client.client.influxdb_client_async import InfluxDBClientAsync
|
|
from influxdb_client import Point
|
|
from config import *
|
|
|
|
influxdb_client: InfluxDBClientAsync
|
|
|
|
def init_influx(app: FastAPI):
|
|
global influxdb_client
|
|
influxdb_client = InfluxDBClientAsync(
|
|
url=INFLUX_URL,
|
|
token=INFLUX_TOKEN,
|
|
org=INFLUX_ORG,
|
|
)
|
|
return influxdb_client
|
|
|
|
async def get_influxdb_client() -> InfluxDBClientAsync:
|
|
global influxdb_client
|
|
return influxdb_client
|
|
|
|
|
|
async def get_influx_data(client: InfluxDBClientAsync) -> list[dict]:
|
|
query_api = client.query_api()
|
|
query = f'from(bucket: "{INFLUX_BUCKET}") |> range(start: -1h)'
|
|
tables = await query_api.query(query=query, org=INFLUX_ORG)
|
|
records = [
|
|
{"time": record.get_time(), "value": record.get_value(), "field": record.get_field()}
|
|
for table in tables for record in table.records
|
|
]
|
|
return records
|
|
|
|
async def write_influx_data(client: InfluxDBClientAsync, temp:float):
|
|
point = Point("measurement").field("temperature", temp)
|
|
return await client.write_api().write(bucket=INFLUX_BUCKET, record=point) |