Imeon-Energy b51bb668c6
Add imeon inverter integration (#130958)
* Initial commit prototype with empty inverters

* Use modern methods and global variable for character strings

* Platform that get the value of the meter in an entity

* Add check if inverter already configured

* Add tests for config_flow

* Update "imeon_inverter_api" in manifest.json

* Update "imeon_inverter_api" in requirements_all.txt

* Remove async_setup, clean comments, use of const PLATFORM

* Use of global variable and remove configuration of device name

* Use of entry.data instead of user_input variable

* Remove services.yaml

* No quality scale

* Use of common string

* Add sensors, use of EntityDescription and '_attr_device_info'

* Remove name from config_flow tests

* Use sentence case and change integration from hub to device

* Check connection before add platform in config_flow

* Use of _async_setup and minor changes

* Improve sensor description

* Add quality_scale.yaml

* Update the quality_scale.json

* Add tests for host invalid, route invalid, exception and invalid auth

* Type more precisely 'DataUpdateCoordinator'

* Don't use 'self.data' directly in coordinator and minor corrections

* Complete full quality_scale.yaml

* Use of fixtures in the tests

* Add snapshot tests for sensors

* Refactor the try except and use serial as unique id

* Change API version

* Add test for sensor

* Mock the api to generate the snapshot

* New type for async_add_entries

* Except timeout error for get_serial

* Add test for get_serial timeout error

* Move store data out of the try

* Use sentence case

* Use of fixtures

* Use separates fixtures

* Mock the api

* Put sensors fake data in json fixture file

* Use of a const interval, remove except timeout, enhance lisibility

* Try to use same fixture in test_config_flow

* Try use same fixture for all mock of inverter

* Modify the fixture in the context manager, correct the tests

* Fixture return mock.__aenter__ directly

* Adjust code clarity

* Bring all tests to either ABORT or CREATE_ENTRY

* Make the try except more concise

* Synthetize exception tests into one

* Add code clarity

* Nitpick with the tests

* Use unique id sensor

* Log an error on unknown error

* Remove useless comments, disable always_update and better use of timeout

* Adjust units, set the model and software version

* Set full name for Battery SOC and use ip instead of url

* Use of host instead of IP

* Fix the unit of economy factor

* Reduce mornitoring data display precision and update snapshots

* Remove unused variable HUBs

* Fix device info

* Set address label 'Host or IP'

* Fix the config_flow tests

* Re evaluate the quality_scale

* Use of 'host' instead of 'address'

* Make inverter discoverable by ssdp

* Add test ssdp configuration already exist

* Add exemption in quality scale

* Test abort ssdp if serial is unknown

* Handle update error

* Raise other exceptions

* Handle ClientError and ValueError from the api

* Update homeassistant/components/imeon_inverter/quality_scale.yaml

---------

Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-04-10 08:25:35 +02:00

409 lines
11 KiB
Python
Generated

"""Automatically generated file.
To update, run python3 -m script.hassfest
"""
SSDP = {
"arcam_fmj": [
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
"manufacturer": "ARCAM",
},
],
"axis": [
{
"manufacturer": "AXIS",
},
],
"braviatv": [
{
"manufacturer": "Sony Corporation",
"st": "urn:schemas-sony-com:service:ScalarWebAPI:1",
},
],
"control4": [
{
"st": "c4:director",
},
],
"deconz": [
{
"manufacturer": "Royal Philips Electronics",
"manufacturerURL": "http://www.dresden-elektronik.de",
},
],
"denonavr": [
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
"manufacturer": "Denon",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
"manufacturer": "DENON",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
"manufacturer": "DENON PROFESSIONAL",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
"manufacturer": "Marantz",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaServer:1",
"manufacturer": "Denon",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaServer:1",
"manufacturer": "DENON",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaServer:1",
"manufacturer": "DENON PROFESSIONAL",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaServer:1",
"manufacturer": "Marantz",
},
{
"deviceType": "urn:schemas-denon-com:device:AiosDevice:1",
"manufacturer": "Denon",
},
{
"deviceType": "urn:schemas-denon-com:device:AiosDevice:1",
"manufacturer": "DENON",
},
{
"deviceType": "urn:schemas-denon-com:device:AiosDevice:1",
"manufacturer": "DENON PROFESSIONAL",
},
{
"deviceType": "urn:schemas-denon-com:device:AiosDevice:1",
"manufacturer": "Marantz",
},
],
"directv": [
{
"deviceType": "urn:schemas-upnp-org:device:MediaServer:1",
"manufacturer": "DIRECTV",
},
],
"dlna_dmr": [
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
"st": "urn:schemas-upnp-org:device:MediaRenderer:1",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:2",
"st": "urn:schemas-upnp-org:device:MediaRenderer:2",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:3",
"st": "urn:schemas-upnp-org:device:MediaRenderer:3",
},
],
"dlna_dms": [
{
"deviceType": "urn:schemas-upnp-org:device:MediaServer:1",
"st": "urn:schemas-upnp-org:device:MediaServer:1",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaServer:2",
"st": "urn:schemas-upnp-org:device:MediaServer:2",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaServer:3",
"st": "urn:schemas-upnp-org:device:MediaServer:3",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaServer:4",
"st": "urn:schemas-upnp-org:device:MediaServer:4",
},
],
"fritz": [
{
"st": "urn:schemas-upnp-org:device:fritzbox:1",
},
],
"fritzbox": [
{
"st": "urn:schemas-upnp-org:device:fritzbox:1",
},
],
"frontier_silicon": [
{
"st": "urn:schemas-frontier-silicon-com:undok:fsapi:1",
},
],
"harmony": [
{
"deviceType": "urn:myharmony-com:device:harmony:1",
"manufacturer": "Logitech",
},
],
"heos": [
{
"st": "urn:schemas-denon-com:device:ACT-Denon:1",
},
],
"huawei_lte": [
{
"deviceType": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
"manufacturer": "Huawei",
},
{
"deviceType": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
"manufacturer": "Huawei Technologies Co., Ltd.",
},
{
"deviceType": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
"manufacturer": "SOYEA TECHNOLOGY CO., LTD.",
},
],
"hyperion": [
{
"manufacturer": "Hyperion Open Source Ambient Lighting",
"st": "urn:hyperion-project.org:device:basic:1",
},
],
"imeon_inverter": [
{
"deviceType": "urn:schemas-upnp-org:device:Basic:1",
"manufacturer": "IMEON",
"st": "upnp:rootdevice",
},
],
"isy994": [
{
"deviceType": "urn:udi-com:device:X_Insteon_Lighting_Device:1",
"manufacturer": "Universal Devices Inc.",
},
],
"kaleidescape": [
{
"deviceType": "schemas-upnp-org:device:Basic:1",
"manufacturer": "Kaleidescape, Inc.",
},
],
"keenetic_ndms2": [
{
"deviceType": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
"manufacturer": "Keenetic Ltd.",
},
{
"deviceType": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
"manufacturer": "ZyXEL Communications Corp.",
},
],
"konnected": [
{
"manufacturer": "konnected.io",
},
],
"lametric": [
{
"deviceType": "urn:schemas-upnp-org:device:LaMetric:1",
},
],
"nanoleaf": [
{
"st": "Nanoleaf_aurora:light",
},
{
"st": "nanoleaf:nl29",
},
{
"st": "nanoleaf:nl42",
},
{
"st": "nanoleaf:nl52",
},
{
"st": "nanoleaf:nl69",
},
{
"st": "inanoleaf:nl81",
},
],
"netgear": [
{
"deviceType": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
"manufacturer": "NETGEAR, Inc.",
},
],
"octoprint": [
{
"deviceType": "urn:schemas-upnp-org:device:Basic:1",
"manufacturer": "The OctoPrint Project",
},
],
"onkyo": [
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
"manufacturer": "ONKYO",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:2",
"manufacturer": "ONKYO",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:3",
"manufacturer": "ONKYO",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
"manufacturer": "Onkyo & Pioneer Corporation",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:2",
"manufacturer": "Onkyo & Pioneer Corporation",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:3",
"manufacturer": "Onkyo & Pioneer Corporation",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
"manufacturer": "Pioneer",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:2",
"manufacturer": "Pioneer",
},
{
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:3",
"manufacturer": "Pioneer",
},
],
"openhome": [
{
"st": "urn:av-openhome-org:service:Product:1",
},
{
"st": "urn:av-openhome-org:service:Product:2",
},
{
"st": "urn:av-openhome-org:service:Product:3",
},
{
"st": "urn:av-openhome-org:service:Product:4",
},
],
"roku": [
{
"deviceType": "urn:roku-com:device:player:1-0",
"manufacturer": "Roku",
"st": "roku:ecp",
},
],
"samsungtv": [
{
"st": "urn:samsung.com:device:RemoteControlReceiver:1",
},
{
"st": "urn:samsung.com:service:MainTVAgent2:1",
},
{
"manufacturer": "Samsung",
"st": "urn:schemas-upnp-org:service:RenderingControl:1",
},
{
"manufacturer": "Samsung Electronics",
"st": "urn:schemas-upnp-org:service:RenderingControl:1",
},
],
"songpal": [
{
"manufacturer": "Sony Corporation",
"st": "urn:schemas-sony-com:service:ScalarWebAPI:1",
},
],
"sonos": [
{
"st": "urn:schemas-upnp-org:device:ZonePlayer:1",
},
],
"syncthru": [
{
"deviceType": "urn:schemas-upnp-org:device:Printer:1",
"manufacturer": "Samsung Electronics",
},
],
"synology_dsm": [
{
"deviceType": "urn:schemas-upnp-org:device:Basic:1",
"manufacturer": "Synology",
},
],
"unifi": [
{
"manufacturer": "Ubiquiti Networks",
"modelDescription": "UniFi Dream Machine",
},
{
"manufacturer": "Ubiquiti Networks",
"modelDescription": "UniFi Dream Machine Pro",
},
{
"manufacturer": "Ubiquiti Networks",
"modelDescription": "UniFi Dream Machine SE",
},
{
"manufacturer": "Ubiquiti Networks",
"modelDescription": "UniFi Dream Machine Pro Max",
},
],
"unifiprotect": [
{
"manufacturer": "Ubiquiti Networks",
"modelDescription": "UniFi Dream Machine",
},
{
"manufacturer": "Ubiquiti Networks",
"modelDescription": "UniFi Dream Machine Pro",
},
{
"manufacturer": "Ubiquiti Networks",
"modelDescription": "UniFi Dream Machine SE",
},
{
"manufacturer": "Ubiquiti Networks",
"modelDescription": "UniFi Dream Machine Pro Max",
},
],
"upnp": [
{
"st": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
},
{
"st": "urn:schemas-upnp-org:device:InternetGatewayDevice:2",
},
{
"nt": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
},
{
"nt": "urn:schemas-upnp-org:device:InternetGatewayDevice:2",
},
],
"webostv": [
{
"st": "urn:lge-com:service:webos-second-screen:1",
},
],
"wemo": [
{
"manufacturer": "Belkin International Inc.",
},
],
"wilight": [
{
"manufacturer": "All Automacao Ltda",
},
],
"yamaha_musiccast": [
{
"manufacturer": "Yamaha Corporation",
},
],
}