Skip to content

Commit

Permalink
fix: home assistant ws export
Browse files Browse the repository at this point in the history
  • Loading branch information
m4dm4rtig4n committed May 27, 2024
1 parent c8da231 commit c31dfb4
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 7 deletions.
6 changes: 5 additions & 1 deletion src/dependencies.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
"""This module contains dependencies for the application."""

import datetime
import logging
from math import floor
Expand Down Expand Up @@ -224,3 +223,8 @@ def logo(version):
version = f"VERSION : {version}"
logging.info(f'{decor("barcode1")}{version: ^93}{decor("barcode1", reverse=True)}')
separator()

def chunks_list(lst, n):
"""Yield successive n-sized chunks from lst."""
for i in range(0, len(lst), n):
yield lst[i:i + n]
28 changes: 22 additions & 6 deletions src/models/export_home_assistant_ws.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import pytz
import websocket

from dependencies import is_integer, str2bool, truncate
from dependencies import chunks_list, is_integer, str2bool, truncate
from init import CONFIG, DB
from models.export_home_assistant import HomeAssistant
from models.stat import Stat
Expand Down Expand Up @@ -41,6 +41,7 @@ def __init__(self, usage_point_id):
if self.load_config():
if self.connect():
self.mqtt = CONFIG.mqtt_config()
# self.mqtt = False
self.import_data()
else:
logging.critical("La configuration Home Assistant WebSocket est erronée")
Expand Down Expand Up @@ -212,7 +213,6 @@ def import_data(self): # noqa: C901
if "max_date" in self.config:
logging.warning("Max date détectée %s", self.config["max_date"])
begin = datetime.strptime(self.config["max_date"], "%Y-%m-%d")
# begin = datetime.strptime(self.config["max_date"], "%Y-%m-%d").replace(tzinfo=TZ_PARIS)
detail = DB.get_detail_all(begin=begin, usage_point_id=self.usage_point_id, order_dir="desc")
else:
detail = DB.get_detail_all(usage_point_id=self.usage_point_id, order_dir="desc")
Expand Down Expand Up @@ -326,12 +326,14 @@ def import_data(self): # noqa: C901

# CLEAN OLD DATA
if self.purge or self.purge_force:
logging.info(f"Clean old data import In Home Assistant Recorder {self.usage_point_id}")
list_statistic_ids = []
for statistic_id, _ in stats_kwh.items():
list_statistic_ids.append(statistic_id)
self.clear_data(list_statistic_ids)
CONFIG.set("purge", False)


for statistic_id, data in stats_kwh.items():
metadata = {
"has_mean": False,
Expand All @@ -341,10 +343,18 @@ def import_data(self): # noqa: C901
"statistic_id": statistic_id,
"unit_of_measurement": "kWh",
}
chunks = list(zip(*[iter(data["data"].values())] * self.batch_size))


chunks = list(chunks_list(list(data["data"].values()), self.batch_size))
chunks_len = len(chunks)
for i, chunk in enumerate(chunks):
logging.info(f"Envoi des données de conso {data["tag"].upper()} vers Home Assistant {(i+1)}/{chunks_len} ({chunk[0]["start"]} => {chunk[-1]["start"]})")
logging.info("Envoi des données de conso %s vers Home Assistant %s/%s (%s => %s)",
data["tag"].upper(),
i+1,
chunks_len,
chunk[-1]["start"],
chunk[0]["start"]
)
self.send({
"id": self.id,
"type": "recorder/import_statistics",
Expand Down Expand Up @@ -375,10 +385,16 @@ def import_data(self): # noqa: C901
"statistic_id": statistic_id,
"unit_of_measurement": "EURO",
}
chunks = list(zip(*[iter(data["data"].values())] * self.batch_size))
chunks = list(chunks_list(list(data["data"].values()), self.batch_size))
chunks_len = len(chunks)
for i, chunk in enumerate(chunks):
logging.info(f"Envoi des données de coût {data["tag"].upper()} vers Home Assistant {(i+1)}/{chunks_len} ({chunk[0]["start"]} => {chunk[-1]["start"]})")
logging.info("Envoi des données de coût %s vers Home Assistant %s/%s (%s => %s)",
data["tag"].upper(),
i+1,
chunks_len,
chunk[0]["start"],
chunk[-1]["start"]
)
self.send({
"id": self.id,
"type": "recorder/import_statistics",
Expand Down

0 comments on commit c31dfb4

Please sign in to comment.