diff --git a/solax/inverter.py b/solax/inverter.py index 8abe642..8f24814 100644 --- a/solax/inverter.py +++ b/solax/inverter.py @@ -91,7 +91,7 @@ def sensor_map(cls) -> Dict[str, Tuple[int, Measurement]]: for name, mapping in cls.response_decoder().items(): unit = Measurement(Units.NONE) - (idx, unit_or_measurement, *_) = mapping + idx, unit_or_measurement, *_ = mapping if isinstance(unit_or_measurement, Units): unit = Measurement(unit_or_measurement) diff --git a/solax/inverters/x1_g4_series.py b/solax/inverters/x1_g4_series.py index 62e6248..1e4f733 100644 --- a/solax/inverters/x1_g4_series.py +++ b/solax/inverters/x1_g4_series.py @@ -26,7 +26,13 @@ class X1G4Series(Inverter): ): str, vol.Required("ver"): str, vol.Required("data"): vol.Schema( - vol.All([vol.Coerce(float)], vol.Length(min=100, max=100)) + vol.All( + [vol.Coerce(float)], + vol.Any( + vol.Length(min=100, max=100), + vol.Length(min=300, max=300), + ), + ) ), vol.Required("information"): vol.Schema( vol.All(vol.Length(min=10, max=10)) diff --git a/solax/response_parser.py b/solax/response_parser.py index cbccbdd..6665bd4 100644 --- a/solax/response_parser.py +++ b/solax/response_parser.py @@ -46,7 +46,7 @@ def serial_number(self): _KEY_TYPE = "type" -GenericResponseSchema = vol.All( +GENERIC_RESPONSE_SCHEMA = vol.All( vol.Schema({vol.Required(_KEY_SERIAL): str}, extra=vol.ALLOW_EXTRA), vol.Any( vol.Schema({vol.Required(_KEY_VERSION): str}, extra=vol.ALLOW_EXTRA), @@ -77,7 +77,7 @@ def __init__( dongle_serial_number_getter: Callable[[Dict[str, Any]], Optional[str]], inverter_serial_number_getter: Callable[[Dict[str, Any]], Optional[str]], ) -> None: - self.schema = vol.And(GenericResponseSchema, schema) + self.schema = vol.And(GENERIC_RESPONSE_SCHEMA, schema) self.response_decoder = decoder self.dongle_serial_number_getter = dongle_serial_number_getter self.inverter_serial_number_getter = inverter_serial_number_getter @@ -95,7 +95,7 @@ def _postprocess_gen( Return map of functions to be applied to each sensor value """ for name, mapping in self.response_decoder.items(): - (_, _, *processors) = mapping + _, _, *processors = mapping for processor in processors: yield name, processor