openshwprojects / OpenBK7231T_App

Open source firmware (Tasmota/Esphome replacement) for BK7231T, BK7231N, BL2028N, T34, XR809, W800/W801, W600/W601, BL602 and LN882H
https://openbekeniot.github.io/webapp/devicesList.html
1.4k stars 245 forks source link

HomeAssistant Discovery / consumption_stats generates error #329

Closed iprak closed 1 year ago

iprak commented 1 year ago

The consumption_stats generates this error at HomeAssistant end

2022-10-24 09:35:07.592 ERROR (MainThread) [homeassistant.util.logging] Exception in async_discover when dispatching 'mqtt_discovery_new_sensor_mqtt': ({'device': {'identifiers': ['enbrighten1_8C000000'], 'name': 'enbrighten1', 'sw_version': '1.0.0', 'manufacturer': 'Beken Corporation', 'model': 'BK7231T', 'configuration_url': 'http://192.168.1.211/index'}, 'name': 'enbrighten1 consumption_stats', 'availability_topic': 'enbrighten1/connected', 'unique_id': 'enbrighten1_8C000000_sensor_5', 'qos': 1, 'device_class': 'None', 'unit_of_measurement': 'Wh', 'state_topic': 'enbrighten1/consumption_stats/get', 'state_class': 'measurement', 'platform': 'mqtt'},)

The call stack mentions this raise er.MultipleInvalid(errors) voluptuous.error.MultipleInvalid: expected SensorDeviceClass or one of 'apparent_power', 'aqi', 'battery', 'carbon_monoxide', 'carbon_dioxide', 'current', 'date', 'distance', 'duration', 'energy', 'frequency', 'gas', 'humidity', 'illuminance', 'moisture', 'monetary', 'nitrogen_dioxide', 'nitrogen_monoxide', 'nitrous_oxide', 'ozone', 'pm1', 'pm10', 'pm25', 'power_factor', 'power', 'pressure', 'reactive_power', 'signal_strength', 'speed', 'sulphur_dioxide', 'temperature', 'timestamp', 'volatile_organic_compounds', 'voltage', 'volume', 'weight' for dictionary value @ data['device_class']

I think this is because None is not a valid device_class. We probably should just not assign it in that case.

296

valeklubomir commented 1 year ago

I expected that None is valid entry for generic sensor. We can leave it empty. Question is if dev_cla is optional or mandatory.

iprak commented 1 year ago

device_class is optional (https://www.home-assistant.io/integrations/sensor.mqtt/). It automatically sets thing like icon in the card. I can see it also being used to present value differently