Skip to content

Commit

Permalink
Merge pull request #29 from EuleMitKeule/develop
Browse files Browse the repository at this point in the history
fix: home assistant dependency issues
  • Loading branch information
EuleMitKeule authored May 4, 2023
2 parents efb4b94 + ae5eefc commit 33516ac
Show file tree
Hide file tree
Showing 8 changed files with 98 additions and 14 deletions.
File renamed without changes.
4 changes: 1 addition & 3 deletions custom_components/estimenergy_integration/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@
from homeassistant.data_entry_flow import FlowResult
import voluptuous as vol

from estimenergy.const import DEFAULT_HOST, DEFAULT_PORT

from .const import CONF_HOST, CONF_PORT, DOMAIN
from .const import CONF_HOST, CONF_PORT, DEFAULT_HOST, DEFAULT_PORT, DOMAIN


class EstimEnergyConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
Expand Down
91 changes: 91 additions & 0 deletions custom_components/estimenergy_integration/const.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,99 @@
"""Constants for EstimEnergy"""
from enum import Enum

from homeassistant.const import Platform

PLATFORM = Platform.SENSOR
DOMAIN = "estimenergy_integration"

CONF_HOST = "host"
CONF_PORT = "port"

DEFAULT_HOST = "localhost"
DEFAULT_PORT = 12321


class MetricPeriod(Enum):
DAY = ("day", "Daily")
MONTH = ("month", "Monthly")
YEAR = ("year", "Yearly")
TOTAL = ("total", "Total")


class MetricType(Enum):
COST = ("cost", "Cost")
COST_DIFFERENCE = ("cost_difference", "Cost Difference")
ENERGY = ("energy", "Energy")
ACCURACY = ("accuracy", "Accuracy")
POWER = ("power", "Power")


class Metric:
def __init__(
self,
metric_type: MetricType,
metric_period: MetricPeriod,
is_predicted: bool,
is_raw: bool,
):
self.metric_type = metric_type
self.metric_period = metric_period
self.is_predicted = is_predicted
self.is_raw = is_raw

@property
def key(self) -> str:
return f"{self.metric_type.value[0]}{'_predicted' if self.is_predicted else ''}{'_raw' if self.is_raw else ''}"

@property
def metric_key(self) -> str:
return f"estimenergy_{self.metric_period.value[0]}_{self.metric_type.value[0]}{'_predicted' if self.is_predicted else ''}{'_raw' if self.is_raw else ''}"

@property
def friendly_name(self) -> str:
return f"{self.metric_period.value[1]} {self.metric_type.value[1]} {'(Predicted)' if self.is_predicted else ''} {'(Raw)' if self.is_raw else ''}"

def __eq__(self, __value: object) -> bool:
if isinstance(__value, Metric):
return (
self.metric_type == __value.metric_type
and self.metric_period == __value.metric_period
and self.is_predicted == __value.is_predicted
and self.is_raw == __value.is_raw
)
return False

def __hash__(self) -> int:
return hash(
(self.metric_type, self.metric_period, self.is_predicted, self.is_raw)
)


METRICS = [
Metric(MetricType.ENERGY, MetricPeriod.DAY, False, False),
Metric(MetricType.ENERGY, MetricPeriod.MONTH, False, False),
Metric(MetricType.ENERGY, MetricPeriod.YEAR, False, False),
Metric(MetricType.ENERGY, MetricPeriod.TOTAL, False, False),
Metric(MetricType.ENERGY, MetricPeriod.MONTH, True, False),
Metric(MetricType.ENERGY, MetricPeriod.YEAR, True, False),
Metric(MetricType.ENERGY, MetricPeriod.MONTH, True, True),
Metric(MetricType.ENERGY, MetricPeriod.YEAR, True, True),
Metric(MetricType.COST, MetricPeriod.DAY, False, False),
Metric(MetricType.COST, MetricPeriod.MONTH, False, False),
Metric(MetricType.COST, MetricPeriod.YEAR, False, False),
Metric(MetricType.COST, MetricPeriod.TOTAL, False, False),
Metric(MetricType.COST, MetricPeriod.MONTH, True, False),
Metric(MetricType.COST, MetricPeriod.YEAR, True, False),
Metric(MetricType.COST, MetricPeriod.MONTH, True, True),
Metric(MetricType.COST, MetricPeriod.YEAR, True, True),
Metric(MetricType.COST_DIFFERENCE, MetricPeriod.DAY, False, False),
Metric(MetricType.COST_DIFFERENCE, MetricPeriod.MONTH, False, False),
Metric(MetricType.COST_DIFFERENCE, MetricPeriod.YEAR, False, False),
Metric(MetricType.COST_DIFFERENCE, MetricPeriod.MONTH, True, False),
Metric(MetricType.COST_DIFFERENCE, MetricPeriod.YEAR, True, False),
Metric(MetricType.COST_DIFFERENCE, MetricPeriod.MONTH, True, True),
Metric(MetricType.COST_DIFFERENCE, MetricPeriod.YEAR, True, True),
Metric(MetricType.ACCURACY, MetricPeriod.DAY, False, False),
Metric(MetricType.ACCURACY, MetricPeriod.MONTH, False, False),
Metric(MetricType.ACCURACY, MetricPeriod.YEAR, False, False),
]
4 changes: 2 additions & 2 deletions custom_components/estimenergy_integration/coordinator.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from prometheus_client.parser import text_string_to_metric_families

from estimenergy.client import EstimEnergyClient
from estimenergy.const import METRICS, Metric
from .client import EstimEnergyClient
from .const import METRICS, Metric

_LOGGER = logging.getLogger(__name__)

Expand Down
2 changes: 1 addition & 1 deletion custom_components/estimenergy_integration/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"documentation": "https://github.com/EuleMitKeule/EstimEnergy",
"iot_class": "local_polling",
"issue_tracker": "https://github.com/EuleMitKeule/EstimEnergy/issues",
"requirements": ["estimenergy>=2.0"],
"requirements": ["requests", "prometheus_client"],
"version": "0.0.1"
}
6 changes: 2 additions & 4 deletions custom_components/estimenergy_integration/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,8 @@
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity

from estimenergy.client import EstimEnergyClient
from estimenergy.const import METRICS, Metric, MetricPeriod, MetricType

from .const import CONF_HOST, CONF_PORT
from .client import EstimEnergyClient
from .const import CONF_HOST, CONF_PORT, METRICS, Metric, MetricPeriod, MetricType
from .coordinator import EstimEnergyCoordinator

_LOGGER = logging.getLogger(__name__)
Expand Down
1 change: 0 additions & 1 deletion estimenergy/client/__init__.py

This file was deleted.

4 changes: 1 addition & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,20 +36,18 @@ vcs = "git"
style = "semver"

[tool.poetry.dependencies]
python = "^3.9"
python = "^3.10"
uvicorn = {extras = ["standard"], version = "~0.20.0"}
fastapi = "~0.92.0"
fastapi-crudrouter = "~0.8.6"
aioesphomeapi = "13.7.2"
tortoise_orm = "~0.19.3"
requests = "~2.28.2"
prometheus_client = "~0.16.0"
prometheus-fastapi-instrumentator = "~5.10.0"
python-dotenv = "~0.21.1"
PyYAML = "~6.0"
types-requests = "^2.28.11.17"
types-pyyaml = "^6.0.12.9"
pydantic-settings-yaml = "^0.1.1"
influxdb-client = {extras = ["async"], version = "^1.36.1"}
sqlmodel = "^0.0.8"
psycopg2-binary = "^2.9.6"
Expand Down

0 comments on commit 33516ac

Please sign in to comment.