incub77 / solis2mqtt

Modbus RTU / RS485 to MQTT bridge for Solis Mini solar inverter.
GNU General Public License v3.0
53 stars 12 forks source link

HA Errors for some registers #11

Open NickSutton opened 1 year ago

NickSutton commented 1 year ago

I'm seeing some HA errors in my logs for registers that don't have the correct Device Class etc. What should I be using where the value is not something that would fit in the device class options?

Here "Battery Status" is either 0 or 1 and doesn't have a unit as set in my register:

- name: battery_status
  description: Battery Status
  unit:
  active: true
  modbus:
    register: 33135
    read_type: register
    number_of_decimals: 0
    function_code: 4
    signed: false
  homeassistant:
    device: number
    min: 0
    max: 1
    step: 1

The above produces the following error in HA:

2022-12-30 22:43:07.186 ERROR (MainThread) [homeassistant.util.logging] Exception in async_discover when dispatching 'mqtt_discovery_new_sensor_mqtt': ({'name': 'Battery Status', 'state_topic': 'solis2mqtt/battery_status', 'unique_id': 'solis2mqtt/battery_status', 'device_class': None, 'state_class': 'measurement', 'unit_of_measurement': None, 'device': {'name': 'solis2mqtt', 'model': 'solis2mqtt', 'manufacturer': 'Ginlong Technologies', 'identifiers': 'solis2mqtt', 'sw_version': 'solis2mqtt 0.7'}, 'platform': 'mqtt'},)
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/mqtt/mixins.py", line 328, in async_discover
config: DiscoveryInfoType = discovery_schema(discovery_payload)
File "/usr/local/lib/python3.10/site-packages/voluptuous/validators.py", line 232, in __call__
return self._exec((Schema(val) for val in self.validators), v)
File "/usr/local/lib/python3.10/site-packages/voluptuous/validators.py", line 355, in _exec
raise e if self.msg is None else AllInvalid(self.msg, path=path)
File "/usr/local/lib/python3.10/site-packages/voluptuous/validators.py", line 351, in _exec
v = func(v)
File "/usr/local/lib/python3.10/site-packages/voluptuous/schema_builder.py", line 272, in __call__
return self._compiled([], data)
File "/usr/local/lib/python3.10/site-packages/voluptuous/schema_builder.py", line 818, in validate_callable
return schema(data)
File "/usr/local/lib/python3.10/site-packages/voluptuous/schema_builder.py", line 272, in __call__
return self._compiled([], data)
File "/usr/local/lib/python3.10/site-packages/voluptuous/schema_builder.py", line 595, in validate_dict
return base_validate(path, iteritems(data), out)
File "/usr/local/lib/python3.10/site-packages/voluptuous/schema_builder.py", line 433, in validate_mapping
raise er.MultipleInvalid(errors)
voluptuous.error.MultipleInvalid: expected SensorDeviceClass or one of 'date', 'duration', 'timestamp', 'apparent_power', 'aqi', 'battery', 'carbon_monoxide', 'carbon_dioxide', 'current', 'distance', 'energy', 'frequency', 'gas', 'humidity', 'illuminance', 'moisture', 'monetary', 'nitrogen_dioxide', 'nitrogen_monoxide', 'nitrous_oxide', 'ozone', 'pm1', 'pm10', 'pm25', 'power_factor', 'power', 'precipitation', 'precipitation_intensity', 'pressure', 'reactive_power', 'signal_strength', 'speed', 'sulphur_dioxide', 'temperature', 'volatile_organic_compounds', 'voltage', 'volume', 'water', 'weight', 'wind_speed' for dictionary value @ data['device_class']

The same is true for "Storage Mode", typically 35 / 33:

# Battery storage mode, 33=self use, 35=timed charge
- name: storage_mode
  description: Storage Mode
  unit:
  active: true
  modbus:
    register: 43110
    read_type: register
    number_of_decimals: 0
    function_code: 3
    signed: false
  homeassistant:
    device: number
    min: 33
    max: 35
    step: 1

Generates error:

2022-12-30 22:43:07.196 ERROR (MainThread) [homeassistant.util.logging] Exception in async_discover when dispatching 'mqtt_discovery_new_sensor_mqtt': ({'name': 'Storage Mode', 'state_topic': 'solis2mqtt/storage_mode', 'unique_id': 'solis2mqtt/storage_mode', 'device_class': None, 'state_class': None, 'unit_of_measurement': None, 'device': {'name': 'solis2mqtt', 'model': 'solis2mqtt', 'manufacturer': 'Ginlong Technologies', 'identifiers': 'solis2mqtt', 'sw_version': 'solis2mqtt 0.7'}, 'platform': 'mqtt'},)
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/mqtt/mixins.py", line 328, in async_discover
config: DiscoveryInfoType = discovery_schema(discovery_payload)
File "/usr/local/lib/python3.10/site-packages/voluptuous/validators.py", line 232, in __call__
return self._exec((Schema(val) for val in self.validators), v)
File "/usr/local/lib/python3.10/site-packages/voluptuous/validators.py", line 355, in _exec
raise e if self.msg is None else AllInvalid(self.msg, path=path)
File "/usr/local/lib/python3.10/site-packages/voluptuous/validators.py", line 351, in _exec
v = func(v)
File "/usr/local/lib/python3.10/site-packages/voluptuous/schema_builder.py", line 272, in __call__
return self._compiled([], data)
File "/usr/local/lib/python3.10/site-packages/voluptuous/schema_builder.py", line 818, in validate_callable
return schema(data)
File "/usr/local/lib/python3.10/site-packages/voluptuous/schema_builder.py", line 272, in __call__
return self._compiled([], data)
File "/usr/local/lib/python3.10/site-packages/voluptuous/schema_builder.py", line 595, in validate_dict
return base_validate(path, iteritems(data), out)
File "/usr/local/lib/python3.10/site-packages/voluptuous/schema_builder.py", line 433, in validate_mapping
raise er.MultipleInvalid(errors)
voluptuous.error.MultipleInvalid: expected SensorDeviceClass or one of 'date', 'duration', 'timestamp', 'apparent_power', 'aqi', 'battery', 'carbon_monoxide', 'carbon_dioxide', 'current', 'distance', 'energy', 'frequency', 'gas', 'humidity', 'illuminance', 'moisture', 'monetary', 'nitrogen_dioxide', 'nitrogen_monoxide', 'nitrous_oxide', 'ozone', 'pm1', 'pm10', 'pm25', 'power_factor', 'power', 'precipitation', 'precipitation_intensity', 'pressure', 'reactive_power', 'signal_strength', 'speed', 'sulphur_dioxide', 'temperature', 'volatile_organic_compounds', 'voltage', 'volume', 'water', 'weight', 'wind_speed' for dictionary value @ data['device_class']

Could anyone advise what changes are needed to the registers to clear the above errors pleasE?