From 4dacea107be1eb473e833019acb7a8c70625835f Mon Sep 17 00:00:00 2001 From: "Philipp S." <16479847+nixoso@users.noreply.github.com> Date: Fri, 16 May 2025 09:24:54 +0200 Subject: [PATCH] [fenecon] Provide additional data such as the temperature on the inverter (#18613) * Update / expand the initial user examples (#18600) Signed-off-by: Philipp Schneider --- bundles/org.openhab.binding.fenecon/README.md | 151 +++++++++++++----- .../internal/FeneconBindingConstants.java | 62 ++++++- .../fenecon/internal/FeneconHandler.java | 113 ++++++++++++- .../binding/fenecon/internal/api/Address.java | 86 ++++++++++ .../fenecon/internal/api/AddressChannel.java | 32 ++++ .../internal/api/AddressComponent.java | 32 ++++ .../api/AddressComponentChannelUtil.java | 52 ++++++ .../internal/api/FeneconController.java | 66 ++++++-- .../resources/OH-INF/i18n/fenecon.properties | 46 ++++-- .../resources/OH-INF/thing/thing-types.xml | 116 ++++++++++++-- .../main/resources/OH-INF/update/update.xml | 59 +++++++ .../internal/FeneconBindingConstantsTest.java | 34 +++- .../api/AddressComponentChannelUtilTest.java | 109 +++++++++++++ .../internal/api/AddressComponentTest.java | 54 +++++++ .../fenecon/internal/api/AddressTest.java | 71 ++++++++ 15 files changed, 987 insertions(+), 96 deletions(-) create mode 100644 bundles/org.openhab.binding.fenecon/src/main/java/org/openhab/binding/fenecon/internal/api/Address.java create mode 100644 bundles/org.openhab.binding.fenecon/src/main/java/org/openhab/binding/fenecon/internal/api/AddressChannel.java create mode 100644 bundles/org.openhab.binding.fenecon/src/main/java/org/openhab/binding/fenecon/internal/api/AddressComponent.java create mode 100644 bundles/org.openhab.binding.fenecon/src/main/java/org/openhab/binding/fenecon/internal/api/AddressComponentChannelUtil.java create mode 100644 bundles/org.openhab.binding.fenecon/src/main/resources/OH-INF/update/update.xml create mode 100644 bundles/org.openhab.binding.fenecon/src/test/java/org/openhab/binding/fenecon/internal/api/AddressComponentChannelUtilTest.java create mode 100644 bundles/org.openhab.binding.fenecon/src/test/java/org/openhab/binding/fenecon/internal/api/AddressComponentTest.java create mode 100644 bundles/org.openhab.binding.fenecon/src/test/java/org/openhab/binding/fenecon/internal/api/AddressTest.java diff --git a/bundles/org.openhab.binding.fenecon/README.md b/bundles/org.openhab.binding.fenecon/README.md index 09385b46761..d65073f9ade 100644 --- a/bundles/org.openhab.binding.fenecon/README.md +++ b/bundles/org.openhab.binding.fenecon/README.md @@ -31,32 +31,48 @@ The FENECON Thing only needs to be configured with the `hostname`, all other par The FENECON binding currently only provides access to read out the values from the energy storage system. -| Channel | Type | Read/Write | Description | -|-------------------------------|----------------------|------------|-----------------------------------------------------------------------------| -| state | String | R | FENECON system state: Ok, Info, Warning or Fault | -| last-update | DateTime | R | Last successful update via REST-API from the FENECON system | -| ess-soc | Number:Dimensionless | R | Battery state of charge in percent | -| charger-power | Number:Power | R | Current charger power of energy storage system in watt. | -| discharger-power | Number:Power | R | Current discharger power of energy storage system in watt. | -| emergency-power-mode | Switch | R | Indicates if there is grid power is off and the emergency power mode is on. | -| production-active-power | Number:Power | R | Current active power producer load in watt. | -| production-max-active-power | Number:Power | R | Maximum active production power in watt that was measured. | -| export-to-grid-power | Number:Power | R | Current export power to grid in watt. | -| exported-to-grid-energy | Number:Energy | R | Total energy exported to the grid in watt per hour. | -| consumption-active-power | Number:Power | R | Current active power consumer load in watt. | -| consumption-max-active-power | Number:Power | R | Maximum active consumption power in watt that was measured. | -| consumption-active-power-l1 | Number:Power | R | Current active power consumer load in watt on phase 1. | -| consumption-active-power-l2 | Number:Power | R | Current active power consumer load in watt on phase 2. | -| consumption-active-power-l3 | Number:Power | R | Current active power consumer load in watt on phase 3. | -| import-from-grid-power | Number:Power | R | Current import power from grid in watt. | -| imported-from-grid-energy | Number:Energy | R | Total energy imported from the grid in watt per hour. | +| Channel | Type | Read/Write | Description | +|-------------------------------|----------------------------|------------|--------------------------------------------------------------------------------| +| state | String | R | FENECON system state: Ok, Info, Warning or Fault | +| fems-version | String | R | FENECON energy management system (FEMS) version - e.g 2025.2.3 | +| last-update | DateTime | R | Last successful update via REST-API from the FENECON system | +| ess-soc | Number:Dimensionless | R | Battery state of charge. | +| batt-tower-soh | Number:Dimensionless | R | Battery state of health. | +| charger-power | Number:Power | R | Current charger power of energy storage system. | +| discharger-power | Number:Power | R | Current discharger power of energy storage system. | +| emergency-power-mode | Switch | R | Indicates if there is grid power is off and the emergency power mode is on. | +| production-active-power | Number:Power | R | Current active power producer load. | +| production-max-active-power | Number:Power | R | Maximum active production power that was measured. | +| export-to-grid-power | Number:Power | R | Current export power to grid. | +| exported-to-grid-energy | Number:Energy | R | Total energy exported to the grid. | +| consumption-active-power | Number:Power | R | Current active power consumer load. | +| consumption-max-active-power | Number:Power | R | Maximum active consumption power that was measured. | +| consumption-active-power-l1 | Number:Power | R | Current active power consumer load on phase 1. | +| consumption-active-power-l2 | Number:Power | R | Current active power consumer load on phase 2. | +| consumption-active-power-l3 | Number:Power | R | Current active power consumer load on phase 3. | +| import-from-grid-power | Number:Power | R | Current import power from grid. | +| imported-from-grid-energy | Number:Energy | R | Total energy imported from the grid. | +| inverter-air-temperature | Number:Temperature | R | Air temperature at the inverter. | +| inverter-radiator-temperature | Number:Temperature | R | Radiator temperature of the inverter. | +| bms-pack-temperature | Number:Temperature | R | Temperature in the battery management system (BMS) box. | +| batt-tower-voltage | Number:ElectricPotential | R | Battery voltage of the FENECON energy management system (FEMS). | +| batt-tower-current | Number:ElectricCurrent | R | Battery current of the FENECON energy management system (FEMS). | +| charger0-actual-power | Number:Power | R | Charger actual power on the charger 0 - e.g west roof, if available. | +| charger0-voltage | Number:ElectricPotential | R | Charger voltage on the charger 0 - e.g west roof, if available. | +| charger0-current | Number:ElectricCurrent | R | Charger current on the charger 0 - e.g west roof, if available. | +| charger1-actual-power | Number:Power | R | Charger actual power on the charger 1 - e.g east roof, if available. | +| charger1-voltage | Number:ElectricPotential | R | Charger voltage on the charger 1 - e.g east roof, if available. | +| charger1-current | Number:ElectricCurrent | R | Charger current on the charger 1 - e.g east roof, if available. | +| charger2-actual-power | Number:Power | R | Charger actual power on the charger 2 - e.g south roof, if available. | +| charger2-voltage | Number:ElectricPotential | R | Charger voltage on the charger 2 - e.g south roof, if available. | +| charger2-current | Number:ElectricCurrent | R | Charger current on the charger 2 - e.g south roof, if available. | ## Full Example ### fenecon.things ```java -Thing fenecon:home-device:local "FENECON Home" [hostname="192.168.1.11", refreshInterval=5] +Thing fenecon:home-device:local "FENECON Home" [hostname="192.168.1.11", refreshInterval=30] ``` ### demo.items @@ -66,33 +82,52 @@ Thing fenecon:home-device:local "FENECON Home" [hostname="192.168.1.11", refresh Group Home "MyHome" ["Indoor"] Group GF "GroundFloor" (Home) ["GroundFloor"] // Utility room -Group GF_UtilityRoom "Utility room" (Home, GF) ["Room"] +Group GF_UtilityRoom "Utility room" (GF) ["Room"] Group GF_UtilityRoomSolar "Utility room solar" (GF_UtilityRoom) ["Inverter"] // FENECON items -String EssState (GF_UtilityRoomSolar) ["Status"] {channel="fenecon:home-device:local:state"} -DateTime LastFeneconUpdate