Skip to content

Commit

Permalink
Merge branch 'squishykid:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
SebStaeubert committed Feb 15, 2024
2 parents 9c90ca5 + ce0732f commit 3e602c8
Show file tree
Hide file tree
Showing 11 changed files with 393 additions and 11 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions solax/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Support for Solax inverter via local API."""

import asyncio
import logging

Expand Down
2 changes: 1 addition & 1 deletion solax/inverter.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
8 changes: 4 additions & 4 deletions solax/inverters/x1_boost.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from solax import utils
from solax.inverter import Inverter, InverterHttpClient, Method, ResponseParser
from solax.units import Total, Units
from solax.utils import div10, div100, to_signed
from solax.utils import div10, div100, pack_u16, to_signed


class X1Boost(Inverter):
Expand Down Expand Up @@ -46,12 +46,12 @@ def response_decoder(cls):
"PV1 Power": (7, Units.W),
"PV2 Power": (8, Units.W),
"AC Frequency": (9, Units.HZ, div100),
"Total Generated Energy": (11, Total(Units.KWH), div10),
"Total Generated Energy": (pack_u16(11, 12), Total(Units.KWH), div10),
"Today's Generated Energy": (13, Total(Units.KWH), div10),
"Inverter Temperature": (39, Units.C),
"Exported Power": (48, Units.W, to_signed),
"Total Export Energy": (50, Total(Units.KWH), div100),
"Total Import Energy": (52, Total(Units.KWH), div100),
"Total Export Energy": (pack_u16(50, 51), Total(Units.KWH), div100),
"Total Import Energy": (pack_u16(52, 53), Total(Units.KWH), div100),
}

@classmethod
Expand Down
1 change: 1 addition & 0 deletions solax/inverters/x1_mini_v34.py
Original file line number Diff line number Diff line change
Expand Up @@ -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),
),
)
Expand Down
1 change: 1 addition & 0 deletions solax/units.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
""" Units and different measurement types"""

from enum import Enum
from typing import NamedTuple, Union

Expand Down
6 changes: 2 additions & 4 deletions solax/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand All @@ -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:
Expand Down
24 changes: 24 additions & 0 deletions tests/fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
from tests.samples.expected_values import (
QVOLTHYBG33P_VALUES,
X1_BOOST_VALUES,
X1_BOOST_VALUES_OVERFLOWN,
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,
Expand All @@ -24,10 +26,12 @@
QVOLTHYBG33P_RESPONSE_V34,
X1_BOOST_AIR_MINI_RESPONSE,
X1_BOOST_RESPONSE,
X1_BOOST_RESPONSE_OVERFLOWN,
X1_HYBRID_G3_2X_MPPT_RESPONSE,
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,
Expand Down Expand Up @@ -128,6 +132,16 @@ def simple_http_fixture(httpserver):
headers=X_FORWARDED_HEADER,
data=None,
),
InverterUnderTest(
uri="/",
method="POST",
query_string="optType=ReadRealTimeData",
response=X1_BOOST_RESPONSE_OVERFLOWN,
inverter=inverter.X1Boost,
values=X1_BOOST_VALUES_OVERFLOWN,
headers=X_FORWARDED_HEADER,
data=None,
),
InverterUnderTest(
uri="/",
method="POST",
Expand Down Expand Up @@ -238,6 +252,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",
),
]


Expand Down
39 changes: 39 additions & 0 deletions tests/samples/expected_values.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -403,6 +423,25 @@
"Total Import Energy": 81.84,
}

X1_BOOST_VALUES_OVERFLOWN = {
"AC Voltage": 237.4,
"AC Output Current": 6.7,
"AC Output Power": 1581,
"PV1 Voltage": 397.3,
"PV2 Voltage": 233.8,
"PV1 Current": 4.1,
"PV2 Current": 5.7,
"PV1 Power": 1628,
"PV2 Power": 1336,
"AC Frequency": 49.96,
"Total Generated Energy": 14055.6,
"Today's Generated Energy": 1.3,
"Inverter Temperature": 36,
"Exported Power": 1444,
"Total Export Energy": 11348.18,
"Total Import Energy": 1850.05,
}

QVOLTHYBG33P_VALUES = {
"Network Voltage Phase 1": 221.4,
"Network Voltage Phase 2": 223.8,
Expand Down
Loading

0 comments on commit 3e602c8

Please sign in to comment.