From dd9ee96396def330c2258a071be473b845cb5054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Ole=20Hu=CC=88bner?= Date: Sat, 2 Sep 2023 22:39:52 +0200 Subject: [PATCH 1/2] feature: restructured Datapoints --- DataPoints.py | 24 +++++++++++++++ pulse.py | 81 +++++++++++++++++---------------------------------- 2 files changed, 51 insertions(+), 54 deletions(-) create mode 100644 DataPoints.py diff --git a/DataPoints.py b/DataPoints.py new file mode 100644 index 0000000..55d1a4e --- /dev/null +++ b/DataPoints.py @@ -0,0 +1,24 @@ +from influxdb_client import Point +class Pulse: + label = str(__name__).lower() + def __init__(self,data): + measurement = data['liveMeasurement'] + timestamp = measurement['timestamp'] + power = measurement['power'] + cost = measurement.get('accumulatedCost',None) + lastMeterConsumption = measurement['lastMeterConsumption'] + tags = {self.label: ""} + fields = { + "power": float(power), + "lastMeterConsumption": float(lastMeterConsumption) + } + if cost is not None: + fields.update({'accumulatedCost':cost}) + self.datapoint = {"fields": fields, + "tags": tags, + "measurement": "pulse", + "time": timestamp + } + def get_datapoint(self): + return Point(measurement_name=str(self.label)).from_dict(self.datapoint) + diff --git a/pulse.py b/pulse.py index 3461cb7..95d6698 100644 --- a/pulse.py +++ b/pulse.py @@ -1,86 +1,59 @@ -#!/usr/bin/python3 # -*- coding: utf-8 -*- import os -import time +import random -from dateutil.parser import parse - - -print("tibber_v001") import tibber.const import asyncio import aiohttp import tibber -# settings from EnvionmentValue +from influxdb_client import InfluxDBClient +from influxdb_client.client.write_api import SYNCHRONOUS +from DataPoints import Pulse + TOKEN=os.getenv('TOKEN', '') TIBBERTOKEN=os.getenv('TIBBERTOKEN', '') URL = os.getenv('URL',"" ) BUCKET = os.getenv('BUCKET',"tibber" ) ORG = os.getenv('ORG',"Default" ) -from influxdb_client import InfluxDBClient, Point -from influxdb_client.client.write_api import SYNCHRONOUS - -bucket = "Default" +__version__ = "v0.0.2" +print(f"tibber_{__version__}") client = InfluxDBClient(url=URL, token=TOKEN, org=ORG) write_api = client.write_api(write_options=SYNCHRONOUS) query_api = client.query_api() -def _callback(pkg): +def _incoming(pkg): try: data = pkg.get("data") if data is None: - return - lm=data.get("liveMeasurement") - print(lm) - write_to_db(data) - return lm - except Exception as e: - raise e - - -def write_to_db(data,bucket = BUCKET): - - measurement = data['liveMeasurement'] - timestamp = measurement['timestamp'] - power = measurement['power'] - lastMeterConsumption = measurement['lastMeterConsumption'] - - tags = {"adress":""} - fields = { - "power": float(power), - "lastMeterConsumption": float(lastMeterConsumption) - } - datapoint = {"fields": fields, - "tags": tags, - "measurement": "pulse", - time: timestamp - - } - p = Point(measurement_name="pulse").from_dict(datapoint) - write_api.write(record=p, bucket=bucket) - - - - + exit(1) + p = Pulse(data).get_datapoint() + write_api.write(record=p, bucket=BUCKET) + print(p) + return True + except: + exit(1) async def run(): async with aiohttp.ClientSession() as session: + if session.closed: + print("session closed") + exit(1) tibber_connection = tibber.Tibber(TIBBERTOKEN, websession=session, user_agent="python") await tibber_connection.update_info() home = tibber_connection.get_homes()[0] try: - await home.rt_subscribe(_callback) - except: - raise Exception("Session gone") + await home.rt_subscribe(_incoming) + + except: + exit(1) + + while 1: + await asyncio.sleep(5) + - while True: - await asyncio.sleep(4) loop = asyncio.get_event_loop() -try: - loop.run_until_complete(run()) -except: - exit(1) \ No newline at end of file +loop.run_until_complete(run()) From 8c45fe8e1fb30a7ce0e4e1b2ea8b2a50dbd71b02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Ole=20Hu=CC=88bner?= Date: Sat, 2 Sep 2023 22:44:58 +0200 Subject: [PATCH 2/2] fix: Dockerfile --- .dockerignore | 5 +++++ Dockerfile | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..dad98ae --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +dev.env +auth.env +notes +.gitignore +.github \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 717c72a..3c2824d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ ADD requirenments.txt / RUN pip3 install -r /requirenments.txt # Environment ENV PYTHONIOENCODING=utf-8 -ADD pulse.py / +ADD . / # Chmod RUN chmod 755 /pulse.py