diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 4bc4929..f35651d 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -32,7 +32,7 @@ jobs: isort --check-only --profile black . - name: Lint with flake8 run: | - flake8 --ignore=E501 solax tests + flake8 --ignore=E501,E704 solax tests - name: Lint with pylint run: | pylint -d 'C0111' solax tests diff --git a/solax/__init__.py b/solax/__init__.py index 5953b06..6fd9817 100644 --- a/solax/__init__.py +++ b/solax/__init__.py @@ -1,4 +1,5 @@ """Support for Solax inverter via local API.""" + import asyncio import logging diff --git a/solax/inverter.py b/solax/inverter.py index df3042c..5304263 100644 --- a/solax/inverter.py +++ b/solax/inverter.py @@ -106,4 +106,4 @@ def schema(cls) -> vol.Schema: return cls._schema def __str__(self) -> str: - return f"{self.__class__.__name__} :: {self.http_client}" + return f"{self.__class__.__name__}::{self.http_client}" diff --git a/solax/inverters/x1_mini_v34.py b/solax/inverters/x1_mini_v34.py index 5d3b4cf..90906ed 100644 --- a/solax/inverters/x1_mini_v34.py +++ b/solax/inverters/x1_mini_v34.py @@ -27,6 +27,7 @@ class X1MiniV34(Inverter): [vol.Coerce(float)], vol.Any( vol.Length(min=69, max=69), + vol.Length(min=100, max=100), vol.Length(min=200, max=200), ), ) diff --git a/solax/units.py b/solax/units.py index 2ac09b8..f8ca1c3 100644 --- a/solax/units.py +++ b/solax/units.py @@ -1,4 +1,5 @@ """ Units and different measurement types""" + from enum import Enum from typing import NamedTuple, Union diff --git a/solax/utils.py b/solax/utils.py index fcabfb1..f2a884f 100644 --- a/solax/utils.py +++ b/solax/utils.py @@ -10,8 +10,7 @@ class Packer(Protocol): # pragma: no cover data into one raw value """ - def __call__(self, *vals: float) -> float: - ... + def __call__(self, *vals: float) -> float: ... PackerBuilderResult = Tuple[Tuple[int, ...], Packer] @@ -24,8 +23,7 @@ class PackerBuilder(Protocol): # pragma: no cover raw values to be fed to the packer """ - def __call__(self, *indexes: int) -> PackerBuilderResult: - ... + def __call__(self, *indexes: int) -> PackerBuilderResult: ... def __u16_packer(*values: float) -> float: diff --git a/tests/fixtures.py b/tests/fixtures.py index 4868ff7..6df29c1 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -9,6 +9,7 @@ X1_HYBRID_G4_VALUES, X1_MINI_VALUES, X1_MINI_VALUES_V34, + X1_MINI_VALUES_V34_VER3, X1_SMART_VALUES, X1_VALUES, X3_HYBRID_G4_VALUES, @@ -28,6 +29,7 @@ X1_HYBRID_G3_RESPONSE, X1_HYBRID_G4_RESPONSE, X1_MINI_RESPONSE_V34, + X1_MINI_RESPONSE_V34_VER3, X1_SMART_RESPONSE, X3_HYBRID_G3_2X_MPPT_RESPONSE, X3_HYBRID_G3_2X_MPPT_RESPONSE_V34, @@ -238,6 +240,16 @@ def simple_http_fixture(httpserver): headers=None, data=None, ), + InverterUnderTest( + uri="/", + method="POST", + query_string=None, + response=X1_MINI_RESPONSE_V34_VER3, + inverter=inverter.X1MiniV34, + values=X1_MINI_VALUES_V34_VER3, + headers=None, + data="optType=ReadRealTimeData", + ), ] diff --git a/tests/samples/expected_values.py b/tests/samples/expected_values.py index f3d7a05..849bff2 100644 --- a/tests/samples/expected_values.py +++ b/tests/samples/expected_values.py @@ -365,6 +365,26 @@ "Inverter Temperature": 41, } + +X1_MINI_VALUES_V34_VER3 = { + "Network Voltage": 234.8, + "Output Current": 0.7, + "AC Power": 144.0, + "PV1 Voltage": 96.6, + "PV2 Voltage": 0.0, + "PV1 Current": 1.6, + "PV2 Current": 0.0, + "PV1 Power": 154.0, + "PV2 Power": 0.0, + "Grid Frequency": 49.94, + "Total Energy": 6.7, + "Today's Energy": 3.1, + "Total Feed-in Energy": 2.5, + "Total Consumption": 0.0, + "Power Now": 0.0, + "Inverter Temperature": 39.0, +} + X1_SMART_VALUES = { "Network Voltage": 239.6, "Output Current": 12.6, diff --git a/tests/samples/responses.py b/tests/samples/responses.py index ad65b18..04f9a93 100644 --- a/tests/samples/responses.py +++ b/tests/samples/responses.py @@ -441,6 +441,115 @@ "Information": [0.700, 4, "XXXXXXXXXXXXXX", 1, 1.19, 0.00, 1.32, 0.00, 0.00, 1], } +X1_MINI_RESPONSE_V34_VER3 = { + "sn": "XXXXXXXXXX", + "ver": "3.006.04", + "type": 4, + "Data": [ + 2348, + 7, + 144, + 966, + 0, + 16, + 0, + 154, + 0, + 4994, + 2, + 67, + 0, + 31, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 34, + 0, + 25, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 39, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "Information": [1.500, 4, "XXXXXXXXXXXXXX", 8, 2.27, 0.00, 1.43, 0.00, 0.00, 1], +} + X1_SMART_RESPONSE = { "sn": "XXXXXXX", "ver": "2.033.20", diff --git a/verify.sh b/verify.sh index 74e34f1..7ea6cca 100755 --- a/verify.sh +++ b/verify.sh @@ -17,7 +17,7 @@ echo "Running mypy..." mypy --exclude venv . echo "Running flake8..." -flake8 --ignore=E501 solax tests +flake8 --ignore=E501,E704 solax tests echo "Running pylint..." pylint -d 'C0111' solax tests