* Backport code from #86386
* Add tests
* Remove local dev change
* Implement device class validation based on unit
* Swap sensor and externalsensor classes (based on importance)
* Use translations for external sensor entities
* Re-add meter identifier as sensor for external devices
* Add migration for Gas identifier
* Rename HomeWizardExternalIdentifierSensorEntity class
* Fix all existing tests
* Reimplement tests for extenal devices with smapshots
* Remove non-used 'None' type in unit
* Add migration test
* Clean up parameterize
* Add test to fix last coverage issue
* Fix non-frozen mypy issue
* Set device name via added EntityDescription field
* Remove device key translations for external sensors,
* Bring back translation keys
* Set device unique_id as serial number
* Remove meter identifier sensor
* Simplify external device initialization
* Adjust tests
* Remove unused gas_meter_id migration
* Remove external_devices redaction
* Remove old gas meter id sensor after migration
* Trigger reauth flow when HomeWizard API was disabled
* Add tests for reauth flow
* Fix typo in test
* Add parallel updates constant
* Improve error message when device in unreachable during config
* Set quality scale
* Remove quality scale
* Throw error instead of abort when setup fails
* Adjust test for new setup behaviour
* Trigger reauth flow when API is disabled and continue retrying
* Reload entry and raise AuthFailed during init
* Abort running config flow
* Listen for coordinator updates to trigger reload
* Use build-in backoff system
* Fix failing test
* Test reauth flow is active after disable-api init
* Test reauth flow removal
* Update requirement
* Remove aiohwenergy and use python-homewizard-energy
* Update test to work with python-homewizard-energy
* Bumb python-homewizard-energy to 1.0.3
* Use helper for setup and unload
* Set mutable object in __init__
* Move logic out of try..except
* Print stack trace on error in config flow
* Don't catch broad except in update_coordinator, already handled
* Fix typo
* Combine available with super.available()
* Fix issues with config_flow test
* Test coordiantor indirectly
* Test coordinator by moving time forward
* set utcnow beforehand and increase timedelta
* Roll back f658749
* Rolled back the rollback and fixed timing
* Move setting time after adding to hass