[ferroamp] Binding for ferroamp 20241107

Changes done in:
EhubJsonElements.java
EsmJsonElements.java
EsoJsonElements.java
ferroamp.properties
FerroampBindingConstants.java
FerroampChannelConfiguration.java
FerroampConfiguration.java
FerroampHandler.java
FerroampMqttCommunication.java
SsoJsonElements.java
thing-types.xml

Signed-off-by: Örjan Backsell <orjan.backsell@gmail.com>
This commit is contained in:
Örjan Backsell 2024-11-07 17:27:03 +01:00
parent a68234a31c
commit 2cd249119a
12 changed files with 604 additions and 668 deletions

View File

@ -1,4 +1,4 @@
## Ferroamp Binding
# Ferroamp Binding
The Ferroamp binding is used to get live data from Ferroamp EnergyHub
@ -7,16 +7,19 @@ Data and commands are received/sent using MQTT where the user connects to the MQ
*note* Contact Ferroamp support to enable MQTT in the EnergyHub and to get the Username and Password:
https://ferroamp.com/om-ferroamp/
<https://ferroamp.com/om-ferroamp/>
Every Sso has a unique serial number which is marked on the side of the SSO unit. Ex. PS00990-A04-S20120476.
This number is to identify the respective Sso Pv-string.
## Supported Things
The binding retrieves data from the different parts of the Ferroamp EnergyHub such as:
- `ehub`: EnergyHub Wall and EnergyHub XL.
- `sso`: Solar string optimizer.
- `eso`: Bidirectional DC/DC converter for connection of battery.
- `esm`: Energy Storage Module.
- `sso` : Solar string optimizer.
- `eso` : Bidirectional DC/DC converter for connection of battery.
- `esm` : Energy Storage Module.
## Discovery
@ -32,178 +35,170 @@ The following configuration parameters are available.
| userName | text | Username to access the device | N/A | yes | no |
| password | text | Password to access the device | N/A | yes | no |
| hasBattery | boolean | Has the system a battery connected? | N/A | no | yes |
| ssoS0 | boolean | Has the system, the 1'st Sso Pv-string connected? | N/A | no | no |
| ssoS1 | boolean | Has the system, the 2'nd Sso Pv-string connected? | N/A | no | no |
| ssoS2 | boolean | Has the system, the 3'rd Sso Pv-string connected? | N/A | no | no |
| ssoS3 | boolean | Has the system, the 4'th Sso Pv-string connected? | N/A | no | no |
| eso | boolean | Has the system an Eso unit connected? | N/A | no | no |
| esm | boolean | Has the system an Esm unit connected? | N/A | no | no |
| The unique serial number is marked on the side of the SSO unit. Ex. PS00990-A04-S20120476
## Channels
| Channel Type ID | Item Type | Read/Write | Label | Description
|----------------------------------------------------------------------------------------------------------------------------------------------
| grid-frequency | Number:Frequency | R | Estimated Grid Frequency | Estimated Grid Frequency |
| ace-current-l1 | Number:ElectricCurrent | R | ACE Current L1 | Adaptive Current Equalization (ACE) equalization current set-points in Amps root mean square (Arms) |
| ace-current-l2 | Number:ElectricCurrent | R | ACE Current L2 | Adaptive Current Equalization (ACE) equalization current set-points in Amps root mean square (Arms) |
| ace-current-l3 | Number:ElectricCurrent | R | ACE Current L3 | Adaptive Current Equalization (ACE) equalization current set-points in Amps root mean square (Arms) |
| external-voltage-l1 | Number:ElectricPotential | R | External Voltage L1 | External voltage |
| external-voltage-l2 | Number:ElectricPotential | R | External Voltage L2 | External voltage |
| external-voltage-l3 | Number:ElectricPotential | R | External Voltage L3 | External voltage |
| inverter-rms-current-l1 | Number:ElectricCurrent | R | Inverter RMS Current L1 | Inverter RMS current |
| inverter-rms-current-l2 | Number:ElectricCurrent | R | Inverter RMS Current L2 | Inverter RMS current |
| inverter-rms-current-l3 | Number:ElectricCurrent | R | Inverter RMS Current L3 | Inverter RMS current |
| inverter-current-reactive-l1 | Number:ElectricCurrent | R | Inverter Current Reactive L1 | Inverter reactive current |
| inverter-current-reactive-l2 | Number:ElectricCurrent | R | Inverter Current Reactive L2 | Inverter reactive current |
| inverter-current-reactive-l3 | Number:ElectricCurrent | R | Inverter Current Reactive L3 | Inverter reactive current |
| inverter-current-active-l1 | Number:ElectricCurrent | R | Inverter Active current L1 | Inverter active current |
| inverter-current-active-l2 | Number:ElectricCurrent | R | Inverter Active current L1 | Inverter active current |
| inverter-current-active-l3 | Number:ElectricCurrent | R | Inverter Active current L1 | Inverter active current |
| grid-current-l1 | Number:ElectricCurrent | R | Grid Current L1 | Grid RMS current |
| grid-current-l2 | Number:ElectricCurrent | R | Grid Current L2 | Grid RMS current |
| grid-current-l3 | Number:ElectricCurrent | R | Grid Current L3 | Grid RMS current |
| grid-current-reactive-l1 | Number:ElectricCurrent | R | Grid Current Reactive L1 | Grid current reactive |
| grid-current-reactive-l2 | Number:ElectricCurrent | R | Grid Current Reactive L2 | Grid current reactive |
| grid-current-reactive-l3 | Number:ElectricCurrent | R | Grid Current Reactive L3 | Grid current reactive |
| grid-current-active-l1 | Number:ElectricCurrent | R | Grid Current Active L1 | Grid current active |
| grid-current-active-l2 | Number:ElectricCurrent | R | Grid Current Active L2 | Grid current active |
| grid-current-active-l3 | Number:ElectricCurrent | R | Grid Current Active L3 | Grid current active |
| inverter-reactive-current-l1 | Number:ElectricCurrent | R | Inverter Reactive Current L1 |
| inverter-reactive-current-l2 | Number:ElectricCurrent | R | Inverter Reactive Current L2 |
| inverter-reactive-current-l3 | Number:ElectricCurrent | R | Inverter Reactive Current L3 |
| inverter-load-l1 | Number:ElectricCurrent | R | Inverter Load L1 |
| inverter-load-l2 | Number:ElectricCurrent | R | Inverter Load L2 |
| inverter-load-l3 | Number:ElectricCurrent | R | Inverter Load L3 |
| apparent-power | Number:Energy | R | Apparent Power | Apparent power
| grid-power-active-l1 | Number:Power | R | Grid Power Active L1 | Grid power, active |
| grid-power-active-l2 | Number:Power | R | Grid Power Active L2 | Grid power, active |
| grid-power-active-l3 | Number:Power | R | Grid Power Active L3 | Grid power, active |
| grid-power-reactive-l1 | Number:Power | R | Grid Power Reactive L1 | Grid power, reactive |
| grid-power-reactive-l2 | Number:Power | R | Grid Power Reactive L2 | Grid power, reactive |
| grid-power-reactive-l3 | Number:Power | R | Grid Power Reactive L3 | Grid power, reactive |
| inverter-power-active-l1 | Number:Power | R | Inverter Power Active L1 | Inverter power, active |
| inverter-power-active-l2 | Number:Power | R | Inverter Power Active L2 | Inverter power, active |
| inverter-power-active-l3 | Number:Power | R | Inverter Power Active L3 | Inverter power, active |
| inverter-power-reactive-l1 | Number:Power | R | Inverter Power Reactive L1 | Inverter power, reactive |
| inverter-power-reactive-l1 | Number:Power | R | Inverter Power Reactive L2 | Inverter power, reactive |
| inverter-power-reactive-l1 | Number:Power | R | Inverter Power Reactive L3 | Inverter power, reactive |
| consumption-power-l1 | Number:Power | R | Consumption Power L1 |
| consumption-power-l2 | Number:Power | R | Consumption Power L2 |
| consumption-power-l3 | Number:Power | R | Consumption Power L3 |
| consumption-power-reactive-l1 | Number:Power | R | Consumption Power Reactive L1 |
| consumption-power-reactive-l2 | Number:Power | R | Consumption Power Reactive L2 |
| consumption-power-reactive-l3 | Number:Power | R | Consumption Power Reactive L3 |
| solar-pv | Number:Power | R | Solar Power | Only sent when system has PV |
| positive-dc-link-voltage | Number:ElectricPotential | R | Positiv DC Link Voltage | Positiv DC link voltage |
| negative-dc-link-voltage | Number:ElectricPotential | R | Negative DC Link Voltage | Negative DC link voltage |
| grid-energy-produced-l1 | Number:Energy | R | Grid Energy Produced L1 |
| grid-energy-produced-l2 | Number:Energy | R | Grid Energy Produced L2 |
| grid-energy-produced-l3 | Number:Energy | R | Grid Energy Produced L3 |
| grid-energy-consumed-l1 | Number:Energy | R | Grid Energy Consumed L1 |
| grid-energy-consumed-l2 | Number:Energy | R | Grid Energy Consumed L2 |
| grid-energy-consumed-l3 | Number:Energy | R | Grid Energy Consumed L3 |
| inverter-energy-produced-l1 | Number:Energy | R | Inverter Energy Produced L1 |
| inverter-energy-produced-l2 | Number:Energy | R | Inverter Energy Produced L2 |
| inverter-energy-produced-l3 | Number:Energy | R | Inverter Energy Produced L3 |
| inverter-energy-consumed-l1 | Number:ElectricCurrent | R | Inverter Energy Consumed L1 |
| inverter-energy-consumed-l2 | Number:ElectricCurrent | R | Inverter Energy Consumed L2 |
| inverter-energy-consumed-l3 | Number:ElectricCurrent | R | Inverter Energy Consumed L3 |
| load-energy-produced-l1 | Number:Energy | R | Load Energy Produced L1 |
| load-energy-produced-l2 | Number:Energy | R | Load Energy Produced L2 |
| load-energy-produced-l3 | Number:Energy | R | Load Energy Produced L3 |
| load-energy-consumed-l1 | Number:Energy | R | Load Energy Consumed L1 |
| load-energy-consumed-l2 | Number:Energy | R | Load Energy Consumed L2 |
| load-energy-consumed-l3 | Number:Energy | R | Load Energy Consumed L3 |
| total-grid-energy-produced | Number:Energy | R | Total produced grid energy |
| total-grid-energy-consumed | Number:Energy | R | Total consumed grid energy |
| total-inverter-energy-produced | Number:Energy | R | Total produced inverter energy |
| total-inverter-energy-consumed | Number:Energy | R | Total consumed inverter energy |
| total-load-energy-produced | Number:Energy | R | Total produced load energy |
| total-load-energy-consumed | Number:Energy | R | Total consumed load energy |
| total-solar-energy | Number:Energy | R | Total Solar Energy | Only sent when system has PV |
| state | String | R | State of the System |
| timestamp | DateTime | R | Time Stamp When Message was Published | Time stamp when message was published |
| battery-energy-produced | Number:Energy | R | Battery Energy Produced | Only sent when system has batteries |
| battery-energy-consumed | Number:Energy | R | Battery Energy Consumed | Only sent when system has batteries |
| soc | Number:Dimensionless | R | System State of Check | State of the system |
| soh | Number:Dimensionless | R | System State of Health |
| power-battery | Number:Power | R | Battery Power | Only sent when system has batteries |
| total-capacity-batteries | Number:Energy | R | Total Rated Capacity of All Batteries |
| Channel Type ID | Item Type | Read/Write | Label | Description |
|--------------------------------------------------------------------|------------|------------------------------------------|------------------------------------------------------------------------------------------------------|
| grid-frequency | Number:Frequency | R | Grid Frequency | Grid frequency |
| ace-current-l1 | Number:ElectricCurrent | R | ACE Current L1 | Adaptive Current Equalization (ACE) equalization current set-points in Amps root mean square (Arms) |
| ace-current-l2 | Number:ElectricCurrent | R | ACE Current L2 | Adaptive Current Equalization (ACE) equalization current set-points in Amps root mean square (Arms) |
| ace-current-l3 | Number:ElectricCurrent | R | ACE Current L3 | Adaptive Current Equalization (ACE) equalization current set-points in Amps root mean square (Arms) |
| grid-voltage-l1 | Number:ElectricPotential | R | Grid Voltage L1 | Grid voltage |
| grid-voltage-l2 | Number:ElectricPotential | R | Grid Voltage L2 | Grid voltage |
| grid-voltage-l3 | Number:ElectricPotential | R | Grid Voltage L3 | Grid voltage |
| inverter-rms-current-l1 | Number:ElectricCurrent | R | Inverter RMS Current L1 | Inverter RMS current |
| inverter-rms-current-l2 | Number:ElectricCurrent | R | Inverter RMS Current L2 | Inverter RMS current |
| inverter-rms-current-l3 | Number:ElectricCurrent | R | Inverter RMS Current L3 | Inverter RMS current |
| inverter-reactive-current-l1 | Number:ElectricCurrent | R | Inverter Reactive Current L1 | Inverter reactive current |
| inverter-reactive-current-l2 | Number:ElectricCurrent | R | Inverter Reactive Current L2 | Inverter reactive current |
| inverter-reactive-current-l3 | Number:ElectricCurrent | R | Inverter Reactive Current L3 | Inverter reactive current |
| inverter-active-current-l1 | Number:ElectricCurrent | R | Inverter Active current L1 | Inverter active current |
| inverter-active-current-l2 | Number:ElectricCurrent | R | Inverter Active current L2 | Inverter active current |
| inverter-active-current-l3 | Number:ElectricCurrent | R | Inverter Active current L3 | Inverter active current |
| grid-current-l1 | Number:ElectricCurrent | R | Grid Current L1 | Grid RMS current |
| grid-current-l2 | Number:ElectricCurrent | R | Grid Current L2 | Grid RMS current |
| grid-current-l3 | Number:ElectricCurrent | R | Grid Current L3 | Grid RMS current |
| grid-reactive-current-l1 | Number:ElectricCurrent | R | Grid Reactive Current L1 | Grid reactive current |
| grid-reactive-current-l2 | Number:ElectricCurrent | R | Grid Reactive Current L2 | Grid reactive current |
| grid-reactive-current-l3 | Number:ElectricCurrent | R | Grid Reactive Current L3 | Grid reactive current |
| grid-active-current-l1 | Number:ElectricCurrent | R | Grid Active Current L1 | Grid active current |
| grid-active-current-l2 | Number:ElectricCurrent | R | Grid Active Current L2 | Grid active current |
| grid-active-current-l3 | Number:ElectricCurrent | R | Grid Active Current L3 | Grid active current |
| inverter-load-reactive-current-l1 | Number:ElectricCurrent | R | Inverter Load Reactive Current L1 | |
| inverter-load-reactive-current-l2 | Number:ElectricCurrent | R | Inverter Load Reactive Current L2 | |
| inverter-load-reactive-current-l3 | Number:ElectricCurrent | R | Inverter Load Reactive Current L3 | |
| inverter-load-active-current-l1 | Number:ElectricCurrent | R | Inverter Load Active Current L1 | |
| inverter-load-active-current-l2 | Number:ElectricCurrent | R | Inverter Load Active Current L2 | |
| inverter-load-active-current-l3 | Number:ElectricCurrent | R | Inverter Load Active Current L3 | |
| apparent-power | Number:Energy | R | Apparent Power | Apparent power |
| grid-power-active-l1 | Number:Power | R | Grid Power Active L1 | Grid power, active |
| grid-power-active-l2 | Number:Power | R | Grid Power Active L2 | Grid power, active |
| grid-power-active-l3 | Number:Power | R | Grid Power Active L3 | Grid power, active |
| grid-power-reactive-l1 | Number:Power | R | Grid Power Reactive L1 | Grid power, reactive |
| grid-power-reactive-l2 | Number:Power | R | Grid Power Reactive L2 | Grid power, reactive |
| grid-power-reactive-l3 | Number:Power | R | Grid Power Reactive L3 | Grid power, reactive |
| inverter-power-active-l1 | Number:Power | R | Inverter Power Active L1 | Inverter power, active |
| inverter-power-active-l2 | Number:Power | R | Inverter Power Active L2 | Inverter power, active |
| inverter-power-active-l3 | Number:Power | R | Inverter Power Active L3 | Inverter power, active |
| inverter-power-reactive-l1 | Number:Power | R | Inverter Power Reactive L1 | Inverter power, reactive |
| inverter-power-reactive-l1 | Number:Power | R | Inverter Power Reactive L2 | Inverter power, reactive |
| inverter-power-reactive-l1 | Number:Power | R | Inverter Power Reactive L3 | Inverter power, reactive |
| consumption-power-l1 | Number:Power | R | Consumption Power L1 | |
| consumption-power-l2 | Number:Power | R | Consumption Power L2 | |
| consumption-power-l3 | Number:Power | R | Consumption Power L3 | |
| consumption-power-reactive-l1 | Number:Power | R | Consumption Power Reactive L1 | |
| consumption-power-reactive-l2 | Number:Power | R | Consumption Power Reactive L2 | |
| consumption-power-reactive-l3 | Number:Power | R | Consumption Power Reactive L3 | |
| solar-pv | Number:Power | R | Solar Power | Only sent when system has PV |
| positive-dc-link-voltage | Number:ElectricPotential | R | Positiv DC Link Voltage | Positiv DC link voltage |
| negative-dc-link-voltage | Number:ElectricPotential | R | Negative DC Link Voltage | Negative DC link voltage |
| grid-energy-produced-l1 | Number:Energy | R | Grid Energy Produced L1 | |
| grid-energy-produced-l2 | Number:Energy | R | Grid Energy Produced L2 | |
| grid-energy-produced-l3 | Number:Energy | R | Grid Energy Produced L3 | |
| grid-energy-consumed-l1 | Number:Energy | R | Grid Energy Consumed L1 | |
| grid-energy-consumed-l2 | Number:Energy | R | Grid Energy Consumed L2 | |
| grid-energy-consumed-l3 | Number:Energy | R | Grid Energy Consumed L3 | |
| inverter-energy-produced-l1 | Number:Energy | R | Inverter Energy Produced L1 | |
| inverter-energy-produced-l2 | Number:Energy | R | Inverter Energy Produced L2 | |
| inverter-energy-produced-l3 | Number:Energy | R | Inverter Energy Produced L3 | |
| inverter-energy-consumed-l1 | Number:ElectricCurrent | R | Inverter Energy Consumed L1 | |
| inverter-energy-consumed-l2 | Number:ElectricCurrent | R | Inverter Energy Consumed L2 | |
| inverter-energy-consumed-l3 | Number:ElectricCurrent | R | Inverter Energy Consumed L3 | |
| load-energy-produced-l1 | Number:Energy | R | Load Energy Produced L1 | |
| load-energy-produced-l2 | Number:Energy | R | Load Energy Produced L2 | |
| load-energy-produced-l3 | Number:Energy | R | Load Energy Produced L3 | |
| load-energy-consumed-l1 | Number:Energy | R | Load Energy Consumed L1 | |
| load-energy-consumed-l2 | Number:Energy | R | Load Energy Consumed L2 | |
| load-energy-consumed-l3 | Number:Energy | R | Load Energy Consumed L3 | |
| grid-energy-produced-total | Number:Energy | R | Grid Energy Produced Total | |
| grid-energy-consumed-total | Number:Energy | R | Grid Energy Consumed Total | |
| inverter-energy-produced-total | Number:Energy | R | Inverter Energy Produced Total | |
| inverter-energy-consumed-total | Number:Energy | R | Inverter Energy Consumed Total | |
| load-energy-produced-total | Number:Energy | R | Load Energy Produced Total | |
| load-energy-consumed-total | Number:Energy | R | Load Energy Consumed Total | |
| total-solar-energy | Number:Energy | R | Total Solar Energy | Only sent when system has PV |
| state | String | R | State of the System | |
| timestamp | DateTime | R | Time Stamp | Time stamp when message was published |
| battery-energy-produced | Number:Energy | R | Battery Energy Produced | Only sent when system has batteries |
| battery-energy-consumed | Number:Energy | R | Battery Energy Consumed | Only sent when system has batteries |
| soc | Number:Dimensionless | R | System State of Check | State of the system |
| soh | Number:Dimensionless | R | System State of Health | |
| power-battery | Number:Power | R | Battery Power | Only sent when system has batteries |
| total-capacity-batteries | Number:Energy | R | Total Capacity Batteries | Total rated capacity of all batteries |
| s0-id | String | R | S0 ID | Unique identifier of SSO-0 |
| s0-pv-voltage | Number:ElectricPotential | R | S0 Measured Voltage on PV String Side | Measured on PV string side |
| s0-pv-current | Number:ElectricCurrent | R | S0 Measured Current on PV String Side | Measured on PV string side |
| s0-total-solar-energy | Number:Energy | R | S0 Total Solar Energy | Total energy produced by SSO-0 |
| s0-relay-status | Contact | R | S0 Relay Status | 0 = relay closed (i.e running power), 1 = relay open/disconnected, 2 = precharge |
| s0-temperature | Number:Temperature | R | S0 Temperature Measured on PCB | Temperature Measured on PCB |
| s0-fault-code | String | R | S0 FaultCode | 0x00 = OK. For all other values Please contact Ferroamp support |
| s0-dc-link-voltage | Number:ElectricPotential | R | S0 DC Link Voltage | DC link voltage as measured by SSO-0 |
| s0-timestamp | DateTime | R | S0 Time Stamp When Message was Published | Time stamp when message was published |
|
| s1-id | String | R | S1 ID | Unique identifier of SSO-1 |
| s1-pv-voltage | Number:ElectricPotential | R | S1 easured Voltage on PV String Side | Measured on PV string side |
| s1-pv-current | Number:ElectricCurrent | R | S1 Measured Current on PV String Side | Measured on PV string side |
| s1-total-solar-energy | Number:Energy | R | S1 Total Solar Energy | Total energy produced by SSO-1 |
| s1-relay-status | Contact | R | S1 Relay Status | 0 = relay closed (i.e running power), 1 = relay open/disconnected, 2 = precharge |
| s1-temperature | Number:Temperature | R | S1 Temperature Measured on PCB | Temperature Measured on PCB |
| s1-fault-code | String | R | S1 FaultCode | 0x00 = OK. For all other values Please contact Ferroamp support |
| s1-dc-link-voltage | Number:ElectricPotential | R | S1 DC Link Voltage | DC link voltage as measured by SSO-1 |
| s1-timestamp | DateTime | R | S1 Time Stamp When Message was Published | Time stamp when message was published |
|
| s1-id | String | R | S1 ID | Unique identifier of SSO-1 |
| s1-pv-voltage | Number:ElectricPotential | R | S1 Voltage on PV String Side | Measured on PV string side |
| s1-pv-current | Number:ElectricCurrent | R | S1 Current on PV String Side | Measured on PV string side |
| s1-total-solar-energy | Number:Energy | R | S1 Total Solar Energy | Total energy produced by SSO-1 |
| s1-relay-status | Contact | R | S1 Relay Status | 0 = relay closed (i.e running power), 1 = relay open/disconnected, 2 = precharge |
| s1-temperature | Number:Temperature | R | S1 Temperature on PCB | Temperature Measured on PCB |
| s1-fault-code | String | R | S1 FaultCode | 0x00 = OK. For all other values Please contact Ferroamp support |
| s1-dc-link-voltage | Number:ElectricPotential | R | S1 DC Link Voltage | DC link voltage as measured by SSO-1 |
| s1-timestamp | DateTime | R | S1 Time Stamp | Time stamp when message was published |
| s2-id | String | R | S2 ID | Unique identifier of SSO-2 |
| s2-pv-voltage | Number:ElectricPotential | R | S2 Voltage on PV String Side | Measured on PV string side |
| s2-pv-current | Number:ElectricCurrent | R | S2 Current on PV String Side | Measured on PV string side |
| s2-total-solar-energy | Number:Energy | R | S2 Total Solar Energy | Total energy produced by SSO-2 |
| s2-relay-status | Contact | R | S2 Relay Status | 0 = relay closed (i.e running power), 1 = relay open/disconnected, 2 = precharge |
| s2-temperature | Number:Temperature | R | S2 Temperature on PCB | Temperature Measured on PCB |
| s2-fault-code | String | R | S2 FaultCode | 0x00 = OK. For all other values Please contact Ferroamp support |
| s2-dc-link-voltage | Number:ElectricPotential | R | S2 DC Link Voltage | DC link voltage as measured by SSO-2 |
| s2-timestamp | DateTime | R | S2 Time Stamp | Time stamp when message was published |
| s2-id | String | R | S2 ID | Unique identifier of SSO-2 |
| s2-pv-voltage | Number:ElectricPotential | R | S2 Measured Voltage on PV String Side | Measured on PV string side |
| s2-pv-current | Number:ElectricCurrent | R | S2 Measured Current on PV String Side | Measured on PV string side |
| s2-total-solar-energy | Number:Energy | R | S2 Total Solar Energy | Total energy produced by SSO-2 |
| s2-relay-status | Contact | R | S2 Relay Status | 0 = relay closed (i.e running power), 1 = relay open/disconnected, 2 = precharge |
| s2-temperature | Number:Temperature | R | S2 Temperature Measured on PCB | Temperature Measured on PCB |
| s2-fault-code | String | R | S2 FaultCode | 0x00 = OK. For all other values Please contact Ferroamp support |
| s2-dc-link-voltage | Number:ElectricPotential | R | S2 DC Link Voltage | DC link voltage as measured by SSO-2 |
| s2-timestamp | DateTime | R | S2 Time Stamp When Message was Published | Time stamp when message was published |
|
| s3-id | String | R | S3 ID | Unique identifier of SSO-3 |
| s3-pv-voltage | Number:ElectricPotential | R | S3 Voltage on PV String Side | Measured on PV string side |
| s3-pv-current | Number:ElectricCurrent | R | S3 Current on PV String Side | Measured on PV string side |
| s3-total-solar-energy | Number:Energy | R | S3 Total Solar Energy | Total energy produced by SSO-3 |
| s3-relay-status | Contact | R | S3 Relay Status | 0 = relay closed (i.e running power), 1 = relay open/disconnected, 2 = precharge |
| s3-temperature | Number:Temperature | R | S3 Temperature on PCB | Temperature Measured on PCB |
| s3-fault-code | String | R | S3 FaultCode | 0x00 = OK. For all other values Please contact Ferroamp support |
| s3-dc-link-voltage | Number:ElectricPotential | R | S3 DC Link Voltage | DC link voltage as measured by SSO-3 |
| s3-timestamp | DateTime | R | S3 Time Stamp | Time stamp when message was published |
| s3-id | String | R | S3 ID | Unique identifier of SSO-3 |
| s3-pv-voltage | Number:ElectricPotential | R | S3 Measured Voltage on PV String Side | Measured on PV string side |
| s3-pv-current | Number:ElectricCurrent | R | S3 Measured Current on PV String Side | Measured on PV string side |
| s3-total-solar-energy | Number:Energy | R | S3 Total Solar Energy | Total energy produced by SSO-3 |
| s3-relay-status | Contact | R | S3 Relay Status | 0 = relay closed (i.e running power), 1 = relay open/disconnected, 2 = precharge |
| s3-temperature | Number:Temperature | R | S3 Temperature Measured on PCB | Temperature Measured on PCB |
| s3-fault-code | String | R | S3 FaultCode | 0x00 = OK. For all other values Please contact Ferroamp support |
| s3-dc-link-voltage | Number:ElectricPotential | R | S3 DC Link Voltage | DC link voltage as measured by SSO-3 |
| s3-timestamp | DateTime | R | S3 Time Stamp When Message was Published | Time stamp when message was published |
|
| s4-id | String | R | S4 ID | Unique identifier of SSO-4 |
| s4-pv-voltage | Number:ElectricPotential | R | S4 Voltage on PV String Side | Measured on PV string side |
| s4-pv-current | Number:ElectricCurrent | R | S4 Current on PV String Side | Measured on PV string side |
| s4-total-solar-energy | Number:Energy | R | S4 Total Solar Energy | Total energy produced by SSO-4 |
| s4-relay-status | Contact | R | S4 Relay Status | 0 = relay closed (i.e running power), 1 = relay open/disconnected, 2 = precharge |
| s4-temperature | Number:Temperature | R | S4 Temperature on PCB | Temperature Measured on PCB |
| s4-fault-code | String | R | S4 FaultCode | 0x00 = OK. For all other values Please contact Ferroamp support |
| s4-dc-link-voltage | Number:ElectricPotential | R | S4 DC Link Voltage | DC link voltage as measured by SSO-4 |
| s4-timestamp | DateTime | R | S4 Time Stamp | Time stamp when message was published |
| eso-id | String | R | Eso Unique Identifier | Unique identifier |
| eso-voltage-battery | Number:ElectricPotential | R | Eso Voltage Measured on Battery Side | Measured on battery side |
| eso-current-battery | Number:ElectricCurrent | R | Eso Current Measured on Battery Side | Measured on battery side |
| eso-battery-energy-produced | Number:Energy | R | Eso Battery Energy Produced | Total energy produced by ESO, i.e total energy charged |
| eso-battery-energy-consumed | Number:Energy | R | Eso Battery Energy Consumed | Total energy consumed by ESO, i.e total energy discharged |
| eso-soc | Number:Dimensionless | R | Eso State of Charge | State of Charge for ESO |
| eso-relay-status | Contact | R | Eso Relay Status | 0 = relay closed, 1 = relay open |
| eso-temperature | Number:Temperature | R | Eso Temperature Measured on PCB | Measured inside ESO |
| eso-fault-code | String | R | Eso FaultCode | See section 4.1.3.1 in Ferroamp-External-API-specifikation |
| eso-battery-energy-produced | Number:Energy | R | Eso Battery Energy Produced | Total energy produced by ESO, i.e total energy charged |
| eso-dc-link-voltage | Number:ElectricPotential | R | Eso Dc Link Voltage | DC link voltage as measured by ESO |
| eso-timestamp | DateTime | R | Eso Time Stamp When Message was Published| Time stamp when message was published |
| eso-id | String | R | Eso Unique Identifier | Unique identifier of ESO |
| eso-voltage-battery | Number:ElectricPotential | R | Eso Voltage on Battery Side | Measured on battery side |
| eso-current-battery | Number:ElectricCurrent | R | Eso Current on Battery Side | Measured on battery side |
| eso-battery-energy-produced | Number:Energy | R | Eso Battery Energy Produced | Total energy produced by ESO, i.e total energy charged |
| eso-battery-energy-consumed | Number:Energy | R | Eso Battery Energy Consumed | Total energy consumed by ESO, i.e total energy discharged |
| eso-soc | Number:Dimensionless | R | Eso State of Charge | State of Charge for ESO |
| eso-relay-status | Contact | R | Eso Relay Status | 0 = relay closed, 1 = relay open |
| eso-temperature | Number:Temperature | R | Eso Temperature on PCB | Measured inside ESO |
| eso-fault-code | String | R | Eso FaultCode | See section 4.1.3.1 in Ferroamp-External-API-specifikation |
| eso-battery-energy-produced | Number:Energy | R | Eso Battery Energy Produced | Total energy produced by ESO, i.e total energy charged |
| eso-dc-link-voltage | Number:ElectricPotential | R | Eso Dc Link Voltage | DC link voltage as measured by ESO |
| eso-timestamp | DateTime | R | Eso Time Stamp | Time stamp when message was published |
| esm-id | String | R | Esm Unique Identifier | Unique identifier of battery. If available, this will be the unique id that the battery reports.|
| esm-soh | Number:Dimensionless | R | Esm System State of Health | State of Health for ESM |
| esm-soc | Number:Dimensionless | R | Esm System State of Charge | State of Charge for ESM |
| esm-total-capacity | Number:Energy | R | Esm Rated Capacity | Rated capacity of all batteries |
| esm-power-battery | Number:Power | R | Esm Rated power of battery | Rated power of battery |
| esm-status | String | R | Esm Status | Dependent on battery manufacturer |
| esm-timestamp | DateTime | R | Esm Time Stamp When Message was Published| Time stamp when message was published |
| esm-id | String | R | Esm Unique Identifier | Unique identifier of battery. If available, this will be the unique id that the battery reports |
| esm-soh | Number:Dimensionless | R | Esm System State of Health | State of Health for ESM |
| esm-soc | Number:Dimensionless | R | Esm System State of Charge | State of Charge for ESM |
| esm-total-capacity | Number:Energy | R | Esm Rated Capacity | Rated capacity of all batteries |
| esm-power-battery | Number:Power | R | Esm Rated Power of Battery | Rated power of battery |
| esm-status | String | R | Esm Status | Dependent on battery manufacturer |
| esm-timestamp | DateTime | R | Esm Time Stamp | Time stamp when message was published |
The following channels are available for `Ferroamp` EnergyHub configuration. Please, see Ferroamp documentation for more details.
| Channel Type ID | Item Type | Read/Write | Description |
|---------------------------------------------------|------------|-------------------------------------------------------------------------|
| request-charge | String | W | Set charge power, value in Watt |
| request-discharge | String | W | Set discharge power, value in Watt |
| request-auto | String | W | Set auto power. Returning control of batteries to system, value as auto.|
| Channel Type ID | Item Type | Read/Write | Description |
|----------------------|----------------------------|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| request-charge | String | W | Set charge power, value in Watt |
| request-discharge | String | W | Set discharge power, value in Watt |
| request-auto | String | W | Set auto power. Returning control of batteries to system, value as auto
# Full Example
@ -222,7 +217,6 @@ Thing ferroamp:energyhub:myenergyhub [ hostName="energyhub-ip", userName="myUser
```
## `demo.items` Example
```java

View File

@ -18,7 +18,7 @@ import java.util.List;
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
* The {@link EhubParameters} is responsible for all parameters regarded to EHUB
* The {@link EhubParameters1} is responsible for all parameters regarded to EHUB
*
* @author Örjan Backsell - Initial contribution
*

View File

@ -19,7 +19,7 @@ import java.util.List;
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
* The {@link EhubParameters} is responsible for all parameters regarded to EHUB
* The {@link EhubParameters1} is responsible for all parameters regarded to EHUB
*
* @author Örjan Backsell - Initial contribution
*

View File

@ -18,7 +18,7 @@ import java.util.List;
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
* The {@link EhubParameters} is responsible for all parameters regarded to EHUB
* The {@link EhubParameters1} is responsible for all parameters regarded to EHUB
*
* @author Örjan Backsell - Initial contribution
*

View File

@ -53,33 +53,33 @@ public class FerroampBindingConstants {
public static final String CHANNEL_ACECURRENTL1 = "ace-current-l1";
public static final String CHANNEL_ACECURRENTL2 = "ace-current-l2";
public static final String CHANNEL_ACECURRENTL3 = "ace-current-l3";
public static final String CHANNEL_EXTERNALVOLTAGEL1 = "external-voltage-l1";
public static final String CHANNEL_EXTERNALVOLTAGEL2 = "external-voltage-l2";
public static final String CHANNEL_EXTERNALVOLTAGEL3 = "external-voltage-l3";
public static final String CHANNEL_GRIDVOLTAGEL1 = "grid-voltage-l1";
public static final String CHANNEL_GRIDVOLTAGEL2 = "grid-voltage-l2";
public static final String CHANNEL_GRIDVOLTAGEL3 = "grid-voltage-l3";
public static final String CHANNEL_INVERTERRMSCURRENTL1 = "inverter-rms-current-l1";
public static final String CHANNEL_INVERTERRMSCURRENTL2 = "inverter-rms-current-l2";
public static final String CHANNEL_INVERTERRMSCURRENTL3 = "inverter-rms-current-l3";
public static final String CHANNEL_INVERTERCURRENTREACTIVEL1 = "inverter-current-reactive-l1";
public static final String CHANNEL_INVERTERCURRENTREACTIVEL2 = "inverter-current-reactive-l2";
public static final String CHANNEL_INVERTERCURRENTREACTIVEL3 = "inverter-current-reactive-l3";
public static final String CHANNEL_INVERTERCURRENTACTIVEL1 = "inverter-current-active-l1";
public static final String CHANNEL_INVERTERCURRENTACTIVEL2 = "inverter-current-active-l2";
public static final String CHANNEL_INVERTERCURRENTACTIVEL3 = "inverter-current-active-l3";
public static final String CHANNEL_GRIDCURRENTL1 = "grid-current-l1";
public static final String CHANNEL_GRIDCURRENTL2 = "grid-current-l2";
public static final String CHANNEL_GRIDCURRENTL3 = "grid-current-l3";
public static final String CHANNEL_GRIDCURRENTREACTIVEL1 = "grid-current-reactive-l1";
public static final String CHANNEL_GRIDCURRENTREACTIVEL2 = "grid-current-reactive-l2";
public static final String CHANNEL_GRIDCURRENTREACTIVEL3 = "grid-current-reactive-l3";
public static final String CHANNEL_GRIDCURRENTACTIVEL1 = "grid-current-active-l1";
public static final String CHANNEL_GRIDCURRENTACTIVEL2 = "grid-current-active-l2";
public static final String CHANNEL_GRIDCURRENTACTIVEL3 = "grid-current-active-l3";
public static final String CHANNEL_INVERTERREACTIVECURRENTL1 = "inverter-reactive-current-l1";
public static final String CHANNEL_INVERTERREACTIVECURRENTL2 = "inverter-reactive-current-l2";
public static final String CHANNEL_INVERTERREACTIVECURRENTL3 = "inverter-reactive-current-l3";
public static final String CHANNEL_INVERTERLOADL1 = "inverter-load-l1";
public static final String CHANNEL_INVERTERLOADL2 = "inverter-load-l2";
public static final String CHANNEL_INVERTERLOADL3 = "inverter-load-l3";
public static final String CHANNEL_INVERTERACTIVECURRENTL1 = "inverter-active-current-l1";
public static final String CHANNEL_INVERTERACTIVECURRENTL2 = "inverter-active-current-l2";
public static final String CHANNEL_INVERTERACTIVECURRENTL3 = "inverter-active-current-l3";
public static final String CHANNEL_GRIDCURRENTL1 = "grid-current-l1";
public static final String CHANNEL_GRIDCURRENTL2 = "grid-current-l2";
public static final String CHANNEL_GRIDCURRENTL3 = "grid-current-l3";
public static final String CHANNEL_GRIDREACTIVECURRENTL1 = "grid-reactive-current-l1";
public static final String CHANNEL_GRIDREACTIVECURRENTL2 = "grid-reactive-current-l2";
public static final String CHANNEL_GRIDREACTIVECURRENTL3 = "grid-reactive-current-l3";
public static final String CHANNEL_GRIDACTIVECURRENTL1 = "grid-active-current-l1";
public static final String CHANNEL_GRIDACTIVECURRENTL2 = "grid-active-current-l2";
public static final String CHANNEL_GRIDACTIVECURRENTL3 = "grid-active-current-l3";
public static final String CHANNEL_INVERTERLOADREACTIVECURRENTL1 = "inverter-load-reactive-current-l1";
public static final String CHANNEL_INVERTERLOADREACTIVECURRENTL2 = "inverter-load-reactive-current-l2";
public static final String CHANNEL_INVERTERLOADREACTIVECURRENTL3 = "inverter-load-reactive-current-l3";
public static final String CHANNEL_INVERTERLOADACTIVECURRENTL1 = "inverter-load-active-current-l1";
public static final String CHANNEL_INVERTERLOADACTIVECURRENTL2 = "inverter-load-active-current-l2";
public static final String CHANNEL_INVERTERLOADACTIVECURRENTL3 = "inverter-load-active-current-l3";
public static final String CHANNEL_APPARENTPOWER = "apparent-power";
public static final String CHANNEL_GRIDPOWERACTIVEL1 = "grid-power-active-l1";
public static final String CHANNEL_GRIDPOWERACTIVEL2 = "grid-power-active-l2";
@ -139,15 +139,6 @@ public class FerroampBindingConstants {
public static final String CHANNEL_TOTALCAPACITYBATTERIES = "total-capacity-batteries";
// List of SSO Channel ids
public static final String CHANNEL_S0ID = "s0-id";
public static final String CHANNEL_S0PVVOLTAGE = "s0-pv-voltage";
public static final String CHANNEL_S0PVCURRENT = "s0-pv-current";
public static final String CHANNEL_S0TOTALSOLARENERGY = "s0-total-solar-energy";
public static final String CHANNEL_S0RELAYSTATUS = "s0-relay-status";
public static final String CHANNEL_S0TEMPERATURE = "s0-temperature";
public static final String CHANNEL_S0FAULTCODE = "s0-fault-code";
public static final String CHANNEL_S0DCLINKVOLTAGE = "s0-dc-link-voltage";
public static final String CHANNEL_S0TIMESTAMP = "s0-timestamp";
public static final String CHANNEL_S1ID = "s1-id";
public static final String CHANNEL_S1PVVOLTAGE = "s1-pv-voltage";
public static final String CHANNEL_S1PVCURRENT = "s1-pv-current";
@ -175,6 +166,15 @@ public class FerroampBindingConstants {
public static final String CHANNEL_S3FAULTCODE = "s3-fault-code";
public static final String CHANNEL_S3DCLINKVOLTAGE = "s3-dc-link-voltage";
public static final String CHANNEL_S3TIMESTAMP = "s3-timestamp";
public static final String CHANNEL_S4ID = "s4-id";
public static final String CHANNEL_S4PVVOLTAGE = "s4-pv-voltage";
public static final String CHANNEL_S4PVCURRENT = "s4-pv-current";
public static final String CHANNEL_S4TOTALSOLARENERGY = "s4-total-solar-energy";
public static final String CHANNEL_S4RELAYSTATUS = "s4-relay-status";
public static final String CHANNEL_S4TEMPERATURE = "s4-temperature";
public static final String CHANNEL_S4FAULTCODE = "s4-fault-code";
public static final String CHANNEL_S4DCLINKVOLTAGE = "s4-dc-link-voltage";
public static final String CHANNEL_S4TIMESTAMP = "s4-timestamp";
// List of ESO Channel ids
public static final String CHANNEL_ESOID = "eso-id";
@ -202,7 +202,6 @@ public class FerroampBindingConstants {
public static final String CHANNEL_REQUESTCHARGE = "request-charge";
public static final String CHANNEL_REQUESTDISCHARGE = "request-discharge";
public static final String CHANNEL_AUTO = "request-auto";
public static final String CHANNEL_REQUESTEXTAPIVERSION = "request-extapi-version";
public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_ENERGYHUB);
}

View File

@ -48,11 +48,11 @@ public class FerroampChannelConfiguration {
channelConfigurationEhub
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_ACECURRENTL3, Units.AMPERE));
channelConfigurationEhub
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_EXTERNALVOLTAGEL1, Units.VOLT));
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDVOLTAGEL1, Units.VOLT));
channelConfigurationEhub
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_EXTERNALVOLTAGEL2, Units.VOLT));
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDVOLTAGEL2, Units.VOLT));
channelConfigurationEhub
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_EXTERNALVOLTAGEL3, Units.VOLT));
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDVOLTAGEL3, Units.VOLT));
channelConfigurationEhub.add(
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_INVERTERRMSCURRENTL1, Units.AMPERE));
channelConfigurationEhub.add(
@ -60,17 +60,17 @@ public class FerroampChannelConfiguration {
channelConfigurationEhub.add(
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_INVERTERRMSCURRENTL3, Units.AMPERE));
channelConfigurationEhub.add(new FerroampChannelConfiguration(
FerroampBindingConstants.CHANNEL_INVERTERCURRENTREACTIVEL1, Units.AMPERE));
FerroampBindingConstants.CHANNEL_INVERTERREACTIVECURRENTL1, Units.AMPERE));
channelConfigurationEhub.add(new FerroampChannelConfiguration(
FerroampBindingConstants.CHANNEL_INVERTERCURRENTREACTIVEL2, Units.AMPERE));
FerroampBindingConstants.CHANNEL_INVERTERREACTIVECURRENTL2, Units.AMPERE));
channelConfigurationEhub.add(new FerroampChannelConfiguration(
FerroampBindingConstants.CHANNEL_INVERTERCURRENTREACTIVEL3, Units.AMPERE));
FerroampBindingConstants.CHANNEL_INVERTERREACTIVECURRENTL3, Units.AMPERE));
channelConfigurationEhub.add(new FerroampChannelConfiguration(
FerroampBindingConstants.CHANNEL_INVERTERCURRENTACTIVEL1, Units.AMPERE));
FerroampBindingConstants.CHANNEL_INVERTERACTIVECURRENTL1, Units.AMPERE));
channelConfigurationEhub.add(new FerroampChannelConfiguration(
FerroampBindingConstants.CHANNEL_INVERTERCURRENTACTIVEL2, Units.AMPERE));
FerroampBindingConstants.CHANNEL_INVERTERACTIVECURRENTL2, Units.AMPERE));
channelConfigurationEhub.add(new FerroampChannelConfiguration(
FerroampBindingConstants.CHANNEL_INVERTERCURRENTACTIVEL3, Units.AMPERE));
FerroampBindingConstants.CHANNEL_INVERTERACTIVECURRENTL3, Units.AMPERE));
channelConfigurationEhub
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDCURRENTL1, Units.AMPERE));
channelConfigurationEhub
@ -78,29 +78,29 @@ public class FerroampChannelConfiguration {
channelConfigurationEhub
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDCURRENTL3, Units.AMPERE));
channelConfigurationEhub.add(
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDCURRENTREACTIVEL1, Units.AMPERE));
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDREACTIVECURRENTL1, Units.AMPERE));
channelConfigurationEhub.add(
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDCURRENTREACTIVEL2, Units.AMPERE));
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDREACTIVECURRENTL2, Units.AMPERE));
channelConfigurationEhub.add(
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDCURRENTREACTIVEL3, Units.AMPERE));
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDREACTIVECURRENTL3, Units.AMPERE));
channelConfigurationEhub.add(
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDCURRENTACTIVEL1, Units.AMPERE));
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDACTIVECURRENTL1, Units.AMPERE));
channelConfigurationEhub.add(
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDCURRENTACTIVEL2, Units.AMPERE));
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDACTIVECURRENTL2, Units.AMPERE));
channelConfigurationEhub.add(
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDCURRENTACTIVEL3, Units.AMPERE));
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_GRIDACTIVECURRENTL3, Units.AMPERE));
channelConfigurationEhub.add(new FerroampChannelConfiguration(
FerroampBindingConstants.CHANNEL_INVERTERREACTIVECURRENTL1, Units.AMPERE));
FerroampBindingConstants.CHANNEL_INVERTERLOADREACTIVECURRENTL1, Units.AMPERE));
channelConfigurationEhub.add(new FerroampChannelConfiguration(
FerroampBindingConstants.CHANNEL_INVERTERREACTIVECURRENTL2, Units.AMPERE));
FerroampBindingConstants.CHANNEL_INVERTERLOADREACTIVECURRENTL2, Units.AMPERE));
channelConfigurationEhub.add(new FerroampChannelConfiguration(
FerroampBindingConstants.CHANNEL_INVERTERREACTIVECURRENTL3, Units.AMPERE));
channelConfigurationEhub
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_INVERTERLOADL1, Units.AMPERE));
channelConfigurationEhub
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_INVERTERLOADL2, Units.AMPERE));
channelConfigurationEhub
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_INVERTERLOADL3, Units.AMPERE));
FerroampBindingConstants.CHANNEL_INVERTERLOADREACTIVECURRENTL3, Units.AMPERE));
channelConfigurationEhub.add(new FerroampChannelConfiguration(
FerroampBindingConstants.CHANNEL_INVERTERLOADACTIVECURRENTL1, Units.AMPERE));
channelConfigurationEhub.add(new FerroampChannelConfiguration(
FerroampBindingConstants.CHANNEL_INVERTERLOADACTIVECURRENTL2, Units.AMPERE));
channelConfigurationEhub.add(new FerroampChannelConfiguration(
FerroampBindingConstants.CHANNEL_INVERTERLOADACTIVECURRENTL3, Units.AMPERE));
channelConfigurationEhub.add(
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_APPARENTPOWER, Units.VOLT_AMPERE));
channelConfigurationEhub.add(
@ -214,29 +214,6 @@ public class FerroampChannelConfiguration {
return channelConfigurationEhub;
}
public static List<FerroampChannelConfiguration> getChannelConfigurationSsoS0() {
final List<FerroampChannelConfiguration> channelConfigurationSsoS0 = new ArrayList<>();
channelConfigurationSsoS0
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S0ID, Units.ONE));
channelConfigurationSsoS0
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S0PVVOLTAGE, Units.VOLT));
channelConfigurationSsoS0
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S0PVCURRENT, Units.AMPERE));
channelConfigurationSsoS0
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S0TOTALSOLARENERGY, Units.WATT));
channelConfigurationSsoS0
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S0RELAYSTATUS, Units.ONE));
channelConfigurationSsoS0
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S0TEMPERATURE, Units.ONE));
channelConfigurationSsoS0
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S0FAULTCODE, Units.ONE));
channelConfigurationSsoS0
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S0DCLINKVOLTAGE, Units.VOLT));
channelConfigurationSsoS0
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S0TIMESTAMP, Units.ONE));
return channelConfigurationSsoS0;
}
public static List<FerroampChannelConfiguration> getChannelConfigurationSsoS1() {
final List<FerroampChannelConfiguration> channelConfigurationSsoS1 = new ArrayList<>();
channelConfigurationSsoS1
@ -306,6 +283,29 @@ public class FerroampChannelConfiguration {
return channelConfigurationSsoS3;
}
public static List<FerroampChannelConfiguration> getChannelConfigurationSsoS4() {
final List<FerroampChannelConfiguration> channelConfigurationSsoS4 = new ArrayList<>();
channelConfigurationSsoS4
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S4ID, Units.ONE));
channelConfigurationSsoS4
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S4PVVOLTAGE, Units.VOLT));
channelConfigurationSsoS4
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S4PVCURRENT, Units.AMPERE));
channelConfigurationSsoS4
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S4TOTALSOLARENERGY, Units.WATT));
channelConfigurationSsoS4
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S4RELAYSTATUS, Units.ONE));
channelConfigurationSsoS4
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S4TEMPERATURE, Units.ONE));
channelConfigurationSsoS4
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S4FAULTCODE, Units.ONE));
channelConfigurationSsoS4
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S4DCLINKVOLTAGE, Units.VOLT));
channelConfigurationSsoS4
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_S4TIMESTAMP, Units.ONE));
return channelConfigurationSsoS4;
}
public static List<FerroampChannelConfiguration> getChannelConfigurationEso() {
final List<FerroampChannelConfiguration> channelConfigurationEso = new ArrayList<>();
channelConfigurationEso
@ -360,8 +360,6 @@ public class FerroampChannelConfiguration {
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_REQUESTDISCHARGE, Units.ONE));
channelConfigurationRequest
.add(new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_AUTO, Units.ONE));
channelConfigurationRequest.add(
new FerroampChannelConfiguration(FerroampBindingConstants.CHANNEL_REQUESTEXTAPIVERSION, Units.ONE));
return channelConfigurationRequest;
}
}

View File

@ -27,10 +27,6 @@ public class FerroampConfiguration {
public String userName = "";
public String password = "";
public boolean hasBattery;
public boolean ssoS0;
public boolean ssoS1;
public boolean ssoS2;
public boolean ssoS3;
public boolean eso;
public boolean esm;
}

View File

@ -41,16 +41,15 @@ import org.slf4j.LoggerFactory;
@NonNullByDefault
public class FerroampHandler extends BaseThingHandler implements MqttMessageSubscriber {
private final static Logger logger = LoggerFactory.getLogger(FerroampHandler.class);
private static @Nullable FerroampConfiguration ferroampConfig;
private @Nullable static MqttBrokerConnection ferroampConnection;
FerroampMqttCommunication ferroampMqttCommunication = new FerroampMqttCommunication(thing);
final FerroampConfiguration ferroampConfig = getConfigAs(FerroampConfiguration.class);
private List<FerroampChannelConfiguration> channelConfigEhub = new ArrayList<>();
private static List<FerroampChannelConfiguration> channelConfigSsoS0 = new ArrayList<>();
private static List<FerroampChannelConfiguration> channelConfigSsoS1 = new ArrayList<>();
private static List<FerroampChannelConfiguration> channelConfigSsoS2 = new ArrayList<>();
private static List<FerroampChannelConfiguration> channelConfigSsoS3 = new ArrayList<>();
private static List<FerroampChannelConfiguration> channelConfigSsoS4 = new ArrayList<>();
private static List<FerroampChannelConfiguration> channelConfigEso = new ArrayList<>();
private static List<FerroampChannelConfiguration> channelConfigEsm = new ArrayList<>();
@ -66,79 +65,64 @@ public class FerroampHandler extends BaseThingHandler implements MqttMessageSubs
public void handleCommand(ChannelUID channelUID, Command command) {
String transId = UUID.randomUUID().toString();
String valueConfiguration = command.toString();
if (FerroampBindingConstants.CHANNEL_REQUESTCHARGE.equals(channelUID.getId())) {
String requestCmdJsonCharge = "{\"" + "transId" + "\":\"" + transId
+ "\",\"cmd\":{\"name\":\"charge\",\"arg\":\"" + valueConfiguration + "\"}}";
sendMQTT(requestCmdJsonCharge);
FerroampMqttCommunication.sendMQTT(requestCmdJsonCharge, ferroampConfig);
}
if (FerroampBindingConstants.CHANNEL_REQUESTDISCHARGE.equals(channelUID.getId())) {
String requestCmdJsonDisCharge = "{\"" + "transId" + "\":\"" + transId
+ "\",\"cmd\":{\"name\":\"discharge\",\"arg\":\"" + valueConfiguration + "\"}}";
sendMQTT(requestCmdJsonDisCharge);
FerroampMqttCommunication.sendMQTT(requestCmdJsonDisCharge, ferroampConfig);
}
if (FerroampBindingConstants.CHANNEL_AUTO.equals(channelUID.getId())) {
String requestCmdJsonAuto = "{\"" + "transId" + "\":\"" + transId + "\",\"cmd\":{\"name\":\"auto\"}}";
sendMQTT(requestCmdJsonAuto);
FerroampMqttCommunication.sendMQTT(requestCmdJsonAuto, ferroampConfig);
}
}
@SuppressWarnings("null")
@Override
public void initialize() {
// Set channel configuration parameters
channelConfigEhub = FerroampChannelConfiguration.getChannelConfigurationEhub();
channelConfigSsoS0 = FerroampChannelConfiguration.getChannelConfigurationSsoS0();
channelConfigSsoS1 = FerroampChannelConfiguration.getChannelConfigurationSsoS1();
channelConfigSsoS2 = FerroampChannelConfiguration.getChannelConfigurationSsoS2();
channelConfigSsoS3 = FerroampChannelConfiguration.getChannelConfigurationSsoS3();
channelConfigSsoS4 = FerroampChannelConfiguration.getChannelConfigurationSsoS4();
channelConfigEso = FerroampChannelConfiguration.getChannelConfigurationEso();
channelConfigEsm = FerroampChannelConfiguration.getChannelConfigurationEsm();
ferroampConfig = getConfigAs(FerroampConfiguration.class);
@SuppressWarnings("null")
final MqttBrokerConnection ferroampConnection = new MqttBrokerConnection(ferroampConfig.hostName,
FerroampBindingConstants.BROKER_PORT, false, false, ferroampConfig.userName);
updateStatus(ThingStatus.UNKNOWN);
scheduler.execute(() -> {
boolean thingReachable = true;
if (thingReachable) {
updateStatus(ThingStatus.ONLINE);
try {
startMqttConnection();
} catch (InterruptedException e) {
logger.debug("Connection to MqttBroker disturbed during configuration");
}
} else {
updateStatus(ThingStatus.OFFLINE);
thingReachable = false;
try {
startMqttConnection();
} catch (InterruptedException e) {
logger.debug("Faulty startMqttConnection()");
}
});
// Start channel-update as configured
scheduler.scheduleWithFixedDelay(() -> {
if (getFerroampConnection().connectionState().toString().equals("DISCONNECTED")) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR);
logger.debug("Problem connection to MqttBroker");
} else {
try {
channelUpdate();
updateStatus(ThingStatus.ONLINE);
} catch (RuntimeException scheduleWithFixedDelayException) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
scheduleWithFixedDelayException.getClass().getName() + ":"
+ scheduleWithFixedDelayException.getMessage());
}
}
}, 60, refreshInterval, TimeUnit.SECONDS);
scheduler.scheduleWithFixedDelay(this::pollTask, 60, refreshInterval, TimeUnit.SECONDS);
this.setFerroampConnection(ferroampConnection);
}
private void pollTask() {
if (getFerroampConnection().connectionState().toString().equals("DISCONNECTED")) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR);
logger.debug("Problem connection to MqttBroker");
} else {
try {
channelUpdate();
updateStatus(ThingStatus.ONLINE);
} catch (RuntimeException scheduleWithFixedDelayException) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
scheduleWithFixedDelayException.getClass().getName() + ":"
+ scheduleWithFixedDelayException.getMessage());
}
}
}
private void startMqttConnection() throws InterruptedException {
try {
TimeUnit.SECONDS.sleep(10);
@ -151,7 +135,6 @@ public class FerroampHandler extends BaseThingHandler implements MqttMessageSubs
ferroampMqttCommunication.getMQTT("esmTopic", ferroampConfig);
}
@SuppressWarnings("null")
private void channelUpdate() {
String[] ehubUpdateChannels;
ehubUpdateChannels = FerroampMqttCommunication.getEhubChannelUpdateValues();
@ -163,59 +146,51 @@ public class FerroampHandler extends BaseThingHandler implements MqttMessageSubs
channelValuesCounterEhub++;
}
if (ferroampConfig.ssoS0 == true) {
String[] ssoS0UpdateChannels = new String[9];
ssoS0UpdateChannels = FerroampMqttCommunication.getSsoS0ChannelUpdateValues();
int channelValuesCounterSsoS0 = 0;
if (ssoS0UpdateChannels.length <= 9) {
for (FerroampChannelConfiguration cConfig : channelConfigSsoS0) {
String ssoS0Channel = cConfig.id;
State ssoS0State = StringType.valueOf(ssoS0UpdateChannels[channelValuesCounterSsoS0]);
updateState(ssoS0Channel, ssoS0State);
channelValuesCounterSsoS0++;
}
String[] ssoS1UpdateChannels = new String[9];
ssoS1UpdateChannels = FerroampMqttCommunication.getSsoS1ChannelUpdateValues();
int channelValuesCounterSsoS1 = 0;
if (ssoS1UpdateChannels.length <= 9) {
for (FerroampChannelConfiguration cConfig : channelConfigSsoS1) {
String ssoS1Channel = cConfig.id;
State ssoS1State = StringType.valueOf(ssoS1UpdateChannels[channelValuesCounterSsoS1]);
updateState(ssoS1Channel, ssoS1State);
channelValuesCounterSsoS1++;
}
}
if (ferroampConfig.ssoS1 == true) {
String[] ssoS1UpdateChannels = new String[9];
ssoS1UpdateChannels = FerroampMqttCommunication.getSsoS1ChannelUpdateValues();
int channelValuesCounterSsoS1 = 0;
if (ssoS1UpdateChannels.length <= 9) {
for (FerroampChannelConfiguration cConfig : channelConfigSsoS1) {
String ssoS1Channel = cConfig.id;
State ssoS1State = StringType.valueOf(ssoS1UpdateChannels[channelValuesCounterSsoS1]);
updateState(ssoS1Channel, ssoS1State);
channelValuesCounterSsoS1++;
}
String[] ssoS2UpdateChannels = new String[9];
ssoS2UpdateChannels = FerroampMqttCommunication.getSsoS2ChannelUpdateValues();
int channelValuesCounterSsoS2 = 0;
if (ssoS2UpdateChannels.length <= 9) {
for (FerroampChannelConfiguration cConfig : channelConfigSsoS2) {
String ssoS2Channel = cConfig.id;
State ssoS2State = StringType.valueOf(ssoS2UpdateChannels[channelValuesCounterSsoS2]);
updateState(ssoS2Channel, ssoS2State);
channelValuesCounterSsoS2++;
}
}
if (ferroampConfig.ssoS2 == true) {
String[] ssoS2UpdateChannels = new String[9];
ssoS2UpdateChannels = FerroampMqttCommunication.getSsoS2ChannelUpdateValues();
int channelValuesCounterSsoS2 = 0;
if (ssoS2UpdateChannels.length <= 9) {
for (FerroampChannelConfiguration cConfig : channelConfigSsoS2) {
String ssoS2Channel = cConfig.id;
State ssoS2State = StringType.valueOf(ssoS2UpdateChannels[channelValuesCounterSsoS2]);
updateState(ssoS2Channel, ssoS2State);
channelValuesCounterSsoS2++;
}
String[] ssoS3UpdateChannels = new String[9];
ssoS3UpdateChannels = FerroampMqttCommunication.getSsoS3ChannelUpdateValues();
int channelValuesCounterSsoS3 = 0;
if (ssoS3UpdateChannels.length <= 9) {
for (FerroampChannelConfiguration cConfig : channelConfigSsoS3) {
String ssoS3Channel = cConfig.id;
State ssoS3State = StringType.valueOf(ssoS3UpdateChannels[channelValuesCounterSsoS3]);
updateState(ssoS3Channel, ssoS3State);
channelValuesCounterSsoS3++;
}
}
if (ferroampConfig.ssoS3 == true) {
String[] ssoS3UpdateChannels = new String[9];
ssoS3UpdateChannels = FerroampMqttCommunication.getSsoS3ChannelUpdateValues();
int channelValuesCounterSsoS3 = 0;
if (ssoS3UpdateChannels.length <= 9) {
for (FerroampChannelConfiguration cConfig : channelConfigSsoS3) {
String ssoS3Channel = cConfig.id;
State ssoS3State = StringType.valueOf(ssoS3UpdateChannels[channelValuesCounterSsoS3]);
updateState(ssoS3Channel, ssoS3State);
channelValuesCounterSsoS3++;
}
String[] ssoS4UpdateChannels = new String[9];
ssoS4UpdateChannels = FerroampMqttCommunication.getSsoS4ChannelUpdateValues();
int channelValuesCounterSsoS4 = 0;
if (ssoS4UpdateChannels.length <= 9) {
for (FerroampChannelConfiguration cConfig : channelConfigSsoS4) {
String ssoS4Channel = cConfig.id;
State ssoS4State = StringType.valueOf(ssoS4UpdateChannels[channelValuesCounterSsoS4]);
updateState(ssoS4Channel, ssoS4State);
channelValuesCounterSsoS4++;
}
}
@ -244,18 +219,6 @@ public class FerroampHandler extends BaseThingHandler implements MqttMessageSubs
}
}
// Handles request topic
@SuppressWarnings("null")
private void sendMQTT(String payload) {
MqttBrokerConnection localConfigurationConnection = getFerroampConnection();
localConfigurationConnection.start();
localConfigurationConnection.setCredentials(ferroampConfig.userName, ferroampConfig.password);
if (localConfigurationConnection != null) {
localConfigurationConnection.publish(FerroampBindingConstants.REQUEST_TOPIC, payload.getBytes(), 1, false);
}
}
// Capture actual Json-topic message
@Override
public void processMessage(String topic, byte[] payload) {
@ -273,14 +236,4 @@ public class FerroampHandler extends BaseThingHandler implements MqttMessageSubs
public void setFerroampConnection(@Nullable MqttBrokerConnection ferroampConnection) {
FerroampHandler.ferroampConnection = ferroampConnection;
}
@SuppressWarnings({ "null" })
public static boolean gethasBattery() {
try {
return ferroampConfig.hasBattery;
} catch (Exception e) {
logger.debug("Failed at check of configuration-parameter, hasBattery");
}
return ferroampConfig.hasBattery;
}
}

View File

@ -13,7 +13,6 @@
package org.openhab.binding.ferroamp.internal;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeUnit;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.binding.ferroamp.dto.GetGeneralLx;
@ -37,22 +36,19 @@ import com.google.gson.JsonObject;
public class FerroampMqttCommunication implements MqttMessageSubscriber {
private @Nullable FerroampConfiguration ferroampConfig;
private @Nullable static MqttBrokerConnection ferroampConnection;
static String[] ehubChannelsUpdateValues;
static String[] ssoS0ChannelsUpdateValues;
static String[] ssoS1ChannelsUpdateValues;
static String[] ssoS2ChannelsUpdateValues;
static String[] ssoS3ChannelsUpdateValues;
static String[] ssoS4ChannelsUpdateValues;
static String[] esoChannelsUpdateValues;
static String[] esmChannelsUpdateValues;
static boolean isSsoChecked = false;
static String ssoS0IdCheck = "";
static String ssoS1IdCheck = "";
static String ssoS2IdCheck = "";
static String ssoS3IdCheck = "";
static String ssoS4IdCheck = "";
static boolean isEsoAvailable = false;
static boolean isEsmAvailable = false;
@ -64,29 +60,20 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
}
// Handles request topic
@SuppressWarnings("null")
void sendMQTT(String payload) {
MqttBrokerConnection localConfigurationConnection = ferroampConnection;
if (FerroampHandler.getFerroampConnection() == null) {
try {
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e) {
logger.debug("Failed during waiting for connection to setup");
}
}
static void sendMQTT(String payload, FerroampConfiguration ferroampConfig) {
MqttBrokerConnection localConfigurationConnection = FerroampHandler.getFerroampConnection();
localConfigurationConnection.start();
localConfigurationConnection.setCredentials(ferroampConfig.userName, ferroampConfig.password);
if (localConfigurationConnection != null) {
localConfigurationConnection.publish(FerroampBindingConstants.REQUEST_TOPIC, payload.getBytes(), 1, false);
}
localConfigurationConnection.publish(FerroampBindingConstants.REQUEST_TOPIC, payload.getBytes(), 1, false);
}
// Handles respective topic type
@SuppressWarnings("null")
void getMQTT(String topic, FerroampConfiguration ferroampConfig) throws InterruptedException {
void getMQTT(String topic, FerroampConfiguration ferroampConfig) {
MqttBrokerConnection localSubscribeConnection = FerroampHandler.getFerroampConnection();
localSubscribeConnection.start();
localSubscribeConnection.setCredentials(ferroampConfig.userName, ferroampConfig.password);
@ -121,12 +108,14 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
}
}
@SuppressWarnings("null")
// @SuppressWarnings("null")
// Prepare actual Json-topic Ehub-message and update values for channels
void processIncomingJsonMessageEhub(String topic, String messageJsonEhub) {
String[] ehubChannelPostsValue = new String[86]; // Array for EHUB (Energy Hub) Posts
JsonObject jsonElementsObject = new Gson().fromJson(new Gson().fromJson(messageJsonEhub, JsonObject.class),
JsonObject.class);
String jsonElementsStringTemp = "";
Gson gson = new Gson();
@ -352,41 +341,41 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
}
// Prepare actual Json-topic Sso-messages and update values for channels
@SuppressWarnings("null")
// @SuppressWarnings("null")
void processIncomingJsonMessageSso(String topic, String messageJsonSso) {
String[] ssoS0ChannelPostsValue = new String[9]; // Array for SSOS0 ( Solar String Optimizer ) Posts
String[] ssoS1ChannelPostsValue = new String[9]; // Array for SSOS1 ( Solar String Optimizer ) Posts
String[] ssoS2ChannelPostsValue = new String[9]; // Array for SSOS2 ( Solar String Optimizer ) Posts
String[] ssoS3ChannelPostsValue = new String[9]; // Array for SSOS3 ( Solar String Optimizer ) Posts
String[] ssoS4ChannelPostsValue = new String[9]; // Array for SSOS4 ( Solar String Optimizer ) Posts
String jsonElementsStringTempS0 = "";
String jsonElementsStringTempS1 = "";
String jsonElementsStringTempS2 = "";
String jsonElementsStringTempS3 = "";
String jsonElementsStringTempS4 = "";
Gson gson = new Gson();
JsonObject jsonElementsObjectSsoS0 = new Gson().fromJson(new Gson().fromJson(messageJsonSso, JsonObject.class),
JsonObject jsonElementsObjectSsoS1 = new Gson().fromJson(new Gson().fromJson(messageJsonSso, JsonObject.class),
JsonObject.class);
jsonElementsStringTempS0 = jsonElementsObjectSsoS0.get(SsoJsonElements.getJsonElementsSso().get(0)).toString();
GetGeneralValues idS0 = gson.fromJson(jsonElementsStringTempS0, GetGeneralValues.class);
GetGeneralValues idSso = gson.fromJson(jsonElementsStringTempS0, GetGeneralValues.class);
jsonElementsStringTempS1 = jsonElementsObjectSsoS1.get(SsoJsonElements.getJsonElementsSso().get(0)).toString();
GetGeneralValues idS1 = gson.fromJson(jsonElementsStringTempS1, GetGeneralValues.class);
GetGeneralValues idSso = gson.fromJson(jsonElementsStringTempS1, GetGeneralValues.class);
if (isSsoChecked == false) {
if (ssoS0IdCheck.isEmpty() && ssoS1IdCheck.isEmpty() && ssoS2IdCheck.isEmpty() && ssoS3IdCheck.isEmpty()) {
ssoS0IdCheck = idSso.getVal();
if (ssoS1IdCheck.isEmpty() && ssoS2IdCheck.isEmpty() && ssoS3IdCheck.isEmpty() && ssoS4IdCheck.isEmpty()) {
ssoS1IdCheck = idSso.getVal();
} else {
if (!ssoS0IdCheck.isEmpty() && ssoS1IdCheck.isEmpty() && ssoS2IdCheck.isEmpty()
&& ssoS3IdCheck.isEmpty()) {
ssoS1IdCheck = idSso.getVal();
if (!ssoS1IdCheck.isEmpty() && ssoS2IdCheck.isEmpty() && ssoS3IdCheck.isEmpty()
&& ssoS4IdCheck.isEmpty()) {
ssoS2IdCheck = idSso.getVal();
// isSsoChecked = true;
} else {
if (!ssoS0IdCheck.isEmpty() && !ssoS1IdCheck.isEmpty() && ssoS2IdCheck.isEmpty()
&& ssoS3IdCheck.isEmpty()) {
ssoS2IdCheck = idSso.getVal();
if (!ssoS1IdCheck.isEmpty() && !ssoS2IdCheck.isEmpty() && ssoS3IdCheck.isEmpty()
&& ssoS4IdCheck.isEmpty()) {
ssoS3IdCheck = idSso.getVal();
} else {
if (!ssoS0IdCheck.isEmpty() && !ssoS1IdCheck.isEmpty() && !ssoS2IdCheck.isEmpty()
&& ssoS3IdCheck.isEmpty()) {
ssoS3IdCheck = idSso.getVal();
if (!ssoS1IdCheck.isEmpty() && !ssoS2IdCheck.isEmpty() && !ssoS3IdCheck.isEmpty()
&& ssoS4IdCheck.isEmpty()) {
ssoS4IdCheck = idSso.getVal();
isSsoChecked = true;
}
}
@ -394,69 +383,6 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
}
}
if (idS0.getVal().equals(ssoS0IdCheck)) {
// id
jsonElementsStringTempS0 = jsonElementsObjectSsoS0.get(SsoJsonElements.getJsonElementsSso().get(0))
.toString();
idS0 = gson.fromJson(jsonElementsStringTempS0, GetGeneralValues.class);
ssoS0ChannelPostsValue[0] = idS0.getVal();
// upv
jsonElementsStringTempS0 = jsonElementsObjectSsoS0.get(SsoJsonElements.getJsonElementsSso().get(1))
.toString();
GetGeneralValues upvS0 = gson.fromJson(jsonElementsStringTempS0, GetGeneralValues.class);
ssoS0ChannelPostsValue[1] = upvS0.getVal();
// ipv
jsonElementsStringTempS0 = jsonElementsObjectSsoS0.get(SsoJsonElements.getJsonElementsSso().get(2))
.toString();
GetGeneralValues ipvS0 = gson.fromJson(jsonElementsStringTempS0, GetGeneralValues.class);
ssoS0ChannelPostsValue[2] = ipvS0.getVal();
// wpv
jsonElementsStringTempS0 = jsonElementsObjectSsoS0.get(SsoJsonElements.getJsonElementsSso().get(3))
.toString();
GetGeneralValues wpvS0 = gson.fromJson(jsonElementsStringTempS0, GetGeneralValues.class);
ssoS0ChannelPostsValue[3] = mJTokWh(jsonStripOneLiners(wpvS0.getVal()));
// relaystatus
jsonElementsStringTempS0 = jsonElementsObjectSsoS0.get(SsoJsonElements.getJsonElementsSso().get(4))
.toString();
GetGeneralValues relaystatusS0 = gson.fromJson(jsonElementsStringTempS0, GetGeneralValues.class);
ssoS0ChannelPostsValue[4] = relaystatusS0.getVal();
// temp
jsonElementsStringTempS0 = jsonElementsObjectSsoS0.get(SsoJsonElements.getJsonElementsSso().get(5))
.toString();
GetGeneralValues tempS0 = gson.fromJson(jsonElementsStringTempS0, GetGeneralValues.class);
ssoS0ChannelPostsValue[5] = tempS0.getVal();
// faultcode
jsonElementsStringTempS0 = jsonElementsObjectSsoS0.get(SsoJsonElements.getJsonElementsSso().get(6))
.toString();
GetGeneralValues faultcodeS0 = gson.fromJson(jsonElementsStringTempS0, GetGeneralValues.class);
ssoS0ChannelPostsValue[6] = faultcodeS0.getVal();
// udc
jsonElementsStringTempS0 = jsonElementsObjectSsoS0.get(SsoJsonElements.getJsonElementsSso().get(7))
.toString();
GetGeneralValues udcS0 = gson.fromJson(jsonElementsStringTempS0, GetGeneralValues.class);
ssoS0ChannelPostsValue[7] = udcS0.getVal();
// ts
jsonElementsStringTempS0 = jsonElementsObjectSsoS0.get(SsoJsonElements.getJsonElementsSso().get(8))
.toString();
GetGeneralValues tsS0 = gson.fromJson(jsonElementsStringTempS0, GetGeneralValues.class);
ssoS0ChannelPostsValue[8] = tsS0.getVal();
ssoS0ChannelsUpdateValues = ssoS0ChannelPostsValue;
}
JsonObject jsonElementsObjectSsoS1 = new Gson().fromJson(new Gson().fromJson(messageJsonSso, JsonObject.class),
JsonObject.class);
jsonElementsStringTempS1 = jsonElementsObjectSsoS1.get(SsoJsonElements.getJsonElementsSso().get(0)).toString();
GetGeneralValues idS1 = gson.fromJson(jsonElementsStringTempS1, GetGeneralValues.class);
if (idS1.getVal().equals(ssoS1IdCheck)) {
// id
jsonElementsStringTempS1 = jsonElementsObjectSsoS1.get(SsoJsonElements.getJsonElementsSso().get(0))
@ -503,8 +429,8 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
// udc
jsonElementsStringTempS1 = jsonElementsObjectSsoS1.get(SsoJsonElements.getJsonElementsSso().get(7))
.toString();
GetGeneralValues udc = gson.fromJson(jsonElementsStringTempS1, GetGeneralValues.class);
ssoS1ChannelPostsValue[7] = udc.getVal();
GetGeneralValues udcS1 = gson.fromJson(jsonElementsStringTempS1, GetGeneralValues.class);
ssoS1ChannelPostsValue[7] = udcS1.getVal();
// ts
jsonElementsStringTempS1 = jsonElementsObjectSsoS1.get(SsoJsonElements.getJsonElementsSso().get(8))
@ -566,8 +492,8 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
// udc
jsonElementsStringTempS2 = jsonElementsObjectSsoS2.get(SsoJsonElements.getJsonElementsSso().get(7))
.toString();
GetGeneralValues udcS2 = gson.fromJson(jsonElementsStringTempS2, GetGeneralValues.class);
ssoS2ChannelPostsValue[7] = udcS2.getVal();
GetGeneralValues udc = gson.fromJson(jsonElementsStringTempS2, GetGeneralValues.class);
ssoS2ChannelPostsValue[7] = udc.getVal();
// ts
jsonElementsStringTempS2 = jsonElementsObjectSsoS2.get(SsoJsonElements.getJsonElementsSso().get(8))
@ -623,8 +549,8 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
// faultcode
jsonElementsStringTempS3 = jsonElementsObjectSsoS3.get(SsoJsonElements.getJsonElementsSso().get(6))
.toString();
GetGeneralValues faultcode = gson.fromJson(jsonElementsStringTempS3, GetGeneralValues.class);
ssoS3ChannelPostsValue[6] = faultcode.getVal();
GetGeneralValues faultcodeS3 = gson.fromJson(jsonElementsStringTempS3, GetGeneralValues.class);
ssoS3ChannelPostsValue[6] = faultcodeS3.getVal();
// udc
jsonElementsStringTempS3 = jsonElementsObjectSsoS3.get(SsoJsonElements.getJsonElementsSso().get(7))
@ -640,9 +566,72 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
ssoS3ChannelsUpdateValues = ssoS3ChannelPostsValue;
}
JsonObject jsonElementsObjectSsoS4 = new Gson().fromJson(new Gson().fromJson(messageJsonSso, JsonObject.class),
JsonObject.class);
jsonElementsStringTempS4 = jsonElementsObjectSsoS4.get(SsoJsonElements.getJsonElementsSso().get(0)).toString();
GetGeneralValues idS4 = gson.fromJson(jsonElementsStringTempS4, GetGeneralValues.class);
if (idS4.getVal().equals(ssoS4IdCheck)) {
// id
jsonElementsStringTempS4 = jsonElementsObjectSsoS4.get(SsoJsonElements.getJsonElementsSso().get(0))
.toString();
idS4 = gson.fromJson(jsonElementsStringTempS4, GetGeneralValues.class);
ssoS4ChannelPostsValue[0] = idS4.getVal();
// upv
jsonElementsStringTempS4 = jsonElementsObjectSsoS4.get(SsoJsonElements.getJsonElementsSso().get(1))
.toString();
GetGeneralValues upvS4 = gson.fromJson(jsonElementsStringTempS4, GetGeneralValues.class);
ssoS4ChannelPostsValue[1] = upvS4.getVal();
// ipv
jsonElementsStringTempS4 = jsonElementsObjectSsoS4.get(SsoJsonElements.getJsonElementsSso().get(2))
.toString();
GetGeneralValues ipvS4 = gson.fromJson(jsonElementsStringTempS4, GetGeneralValues.class);
ssoS4ChannelPostsValue[2] = ipvS4.getVal();
// wpv
jsonElementsStringTempS4 = jsonElementsObjectSsoS4.get(SsoJsonElements.getJsonElementsSso().get(3))
.toString();
GetGeneralValues wpvS4 = gson.fromJson(jsonElementsStringTempS4, GetGeneralValues.class);
ssoS4ChannelPostsValue[3] = mJTokWh(jsonStripOneLiners(wpvS4.getVal()));
// relaystatus
jsonElementsStringTempS4 = jsonElementsObjectSsoS4.get(SsoJsonElements.getJsonElementsSso().get(4))
.toString();
GetGeneralValues relaystatusS4 = gson.fromJson(jsonElementsStringTempS4, GetGeneralValues.class);
ssoS4ChannelPostsValue[4] = relaystatusS4.getVal();
// temp
jsonElementsStringTempS4 = jsonElementsObjectSsoS4.get(SsoJsonElements.getJsonElementsSso().get(5))
.toString();
GetGeneralValues tempS4 = gson.fromJson(jsonElementsStringTempS4, GetGeneralValues.class);
ssoS4ChannelPostsValue[5] = tempS4.getVal();
// faultcode
jsonElementsStringTempS4 = jsonElementsObjectSsoS4.get(SsoJsonElements.getJsonElementsSso().get(6))
.toString();
GetGeneralValues faultcode = gson.fromJson(jsonElementsStringTempS4, GetGeneralValues.class);
ssoS4ChannelPostsValue[6] = faultcode.getVal();
// udc
jsonElementsStringTempS4 = jsonElementsObjectSsoS4.get(SsoJsonElements.getJsonElementsSso().get(7))
.toString();
GetGeneralValues udcS4 = gson.fromJson(jsonElementsStringTempS4, GetGeneralValues.class);
ssoS4ChannelPostsValue[7] = udcS4.getVal();
// ts
jsonElementsStringTempS4 = jsonElementsObjectSsoS4.get(SsoJsonElements.getJsonElementsSso().get(8))
.toString();
GetGeneralValues tsS4 = gson.fromJson(jsonElementsStringTempS4, GetGeneralValues.class);
ssoS4ChannelPostsValue[8] = tsS4.getVal();
ssoS4ChannelsUpdateValues = ssoS4ChannelPostsValue;
}
}
@SuppressWarnings("null")
// @SuppressWarnings("null")
// Prepare actual Json-topic Eso-message and update values for channels
void processIncomingJsonMessageEso(String topic, String messageJsonEso) {
String[] esoChannelPostsValue = new String[10]; // Array for ESO, Energy Storage Optimizer ) Posts
@ -704,7 +693,7 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
esoChannelsUpdateValues = esoChannelPostsValue;
}
@SuppressWarnings("null")
// @SuppressWarnings("null")
// Prepare actual Json-topic Esm-message and update values for channels
void processIncomingJsonMessageEsm(String topic, String messageJsonEsm) {
String[] esmChannelPostsValue = new String[7]; // Array for ESM, Energy Storage Module ) Posts
@ -760,15 +749,6 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
return ehubChannelsUpdateValues;
}
public @Nullable static String[] getSsoS0ChannelUpdateValues() {
try {
return ssoS0ChannelsUpdateValues;
} catch (Exception e) {
logger.debug("Failed at update of SsoS0 channel values");
}
return ssoS0ChannelsUpdateValues;
}
public @Nullable static String[] getSsoS1ChannelUpdateValues() {
try {
return ssoS1ChannelsUpdateValues;
@ -796,6 +776,15 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
return ssoS3ChannelsUpdateValues;
}
public @Nullable static String[] getSsoS4ChannelUpdateValues() {
try {
return ssoS4ChannelsUpdateValues;
} catch (Exception e) {
logger.debug("Failed at update of SsoS4 channel values");
}
return ssoS4ChannelsUpdateValues;
}
public @Nullable static String[] getEsoChannelUpdateValues() {
try {
return esoChannelsUpdateValues;

View File

@ -18,7 +18,7 @@ import java.util.List;
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
* The {@link EhubParameters} is responsible for all parameters regarded to EHUB
* The {@link EhubParameters1} is responsible for all parameters regarded to EHUB
*
* @author Örjan Backsell - Initial contribution
*

View File

@ -5,7 +5,7 @@ addon.ferroamp.description = This is the binding for Ferroamp EnergyHub.
# thing types
thing-type.ferroamp.energyhub.label = Ferroamp Binding Thing
thing-type.ferroamp.energyhub.label = EnergyHub
thing-type.ferroamp.energyhub.description = Provides information from Ferroamp EnergyHub
thing-type.ferroamp.energyhub.channel.ace-current-l1.label = ACE Current L1
thing-type.ferroamp.energyhub.channel.ace-current-l2.label = ACE Current L2
@ -28,59 +28,59 @@ thing-type.ferroamp.energyhub.channel.esm-timestamp.label = Esm Time Stamp When
thing-type.ferroamp.energyhub.channel.esm-total-capacity.label = Esm Rated Capacity
thing-type.ferroamp.energyhub.channel.eso-battery-energy-consumed.label = Eso Battery Energy Consumed
thing-type.ferroamp.energyhub.channel.eso-battery-energy-produced.label = Eso Battery Energy Produced
thing-type.ferroamp.energyhub.channel.eso-current-battery.label = Eso Current Measured on Battery Side
thing-type.ferroamp.energyhub.channel.eso-current-battery.label = Eso Current on Battery Side
thing-type.ferroamp.energyhub.channel.eso-dc-link-voltage.label = Eso DC Link Voltage
thing-type.ferroamp.energyhub.channel.eso-fault-code.label = Eso FaultCode
thing-type.ferroamp.energyhub.channel.eso-id.label = Eso Unique Identifier
thing-type.ferroamp.energyhub.channel.eso-relay-status.label = Eso RelayStatus
thing-type.ferroamp.energyhub.channel.eso-soc.label = Eso State of Charge
thing-type.ferroamp.energyhub.channel.eso-temperature.label = ESO Temperature Measured on PCB
thing-type.ferroamp.energyhub.channel.eso-temperature.label = ESO Temperature on PCB
thing-type.ferroamp.energyhub.channel.eso-timestamp.label = Eso Time Stamp When Message was Published
thing-type.ferroamp.energyhub.channel.eso-voltage-battery.label = Eso Voltage Measured on Battery Side
thing-type.ferroamp.energyhub.channel.external-voltage-l1.label = External Voltage L1
thing-type.ferroamp.energyhub.channel.external-voltage-l2.label = External Voltage L2
thing-type.ferroamp.energyhub.channel.external-voltage-l3.label = External Voltage L3
thing-type.ferroamp.energyhub.channel.grid-current-active-l1.label = Grid Current Active L1
thing-type.ferroamp.energyhub.channel.grid-current-active-l2.label = Grid Current Active L2
thing-type.ferroamp.energyhub.channel.grid-current-active-l3.label = Grid Current Active L3
thing-type.ferroamp.energyhub.channel.eso-voltage-battery.label = Eso Voltage on Battery Side
thing-type.ferroamp.energyhub.channel.grid-active-current-l1.label = Grid Active Current L1
thing-type.ferroamp.energyhub.channel.grid-active-current-l2.label = Grid Active Current L2
thing-type.ferroamp.energyhub.channel.grid-active-current-l3.label = Grid Active Current L3
thing-type.ferroamp.energyhub.channel.grid-current-l1.label = Grid Current L1
thing-type.ferroamp.energyhub.channel.grid-current-l2.label = Grid Current L2
thing-type.ferroamp.energyhub.channel.grid-current-l3.label = Grid Current L3
thing-type.ferroamp.energyhub.channel.grid-current-reactive-l1.label = Grid Reactive Current L1
thing-type.ferroamp.energyhub.channel.grid-current-reactive-l2.label = Grid Reactive Current L2
thing-type.ferroamp.energyhub.channel.grid-current-reactive-l3.label = Grid Reactive Current L3
thing-type.ferroamp.energyhub.channel.grid-energy-consumed-l1.label = Grid Energy Consumed L1
thing-type.ferroamp.energyhub.channel.grid-energy-consumed-l2.label = Grid Energy Consumed L2
thing-type.ferroamp.energyhub.channel.grid-energy-consumed-l3.label = Grid Energy Consumed L3
thing-type.ferroamp.energyhub.channel.grid-energy-consumed-total.label = Total Consumed Grid Energy
thing-type.ferroamp.energyhub.channel.grid-energy-consumed-total.label = Grid Energy Consumed Total
thing-type.ferroamp.energyhub.channel.grid-energy-produced-l1.label = Grid Energy Produced L1
thing-type.ferroamp.energyhub.channel.grid-energy-produced-l2.label = Grid Energy Produced L2
thing-type.ferroamp.energyhub.channel.grid-energy-produced-l3.label = Grid Energy Produced L3
thing-type.ferroamp.energyhub.channel.grid-energy-produced-total.label = Total Produced Grid Energy
thing-type.ferroamp.energyhub.channel.grid-frequency.label = Estimated Grid Frequency
thing-type.ferroamp.energyhub.channel.grid-energy-produced-total.label = Grid Energy Produced Total
thing-type.ferroamp.energyhub.channel.grid-frequency.label = Grid Frequency
thing-type.ferroamp.energyhub.channel.grid-power-active-l1.label = Grid Power Active L1
thing-type.ferroamp.energyhub.channel.grid-power-active-l2.label = Grid Power Active L2
thing-type.ferroamp.energyhub.channel.grid-power-active-l3.label = Grid Power Active L3
thing-type.ferroamp.energyhub.channel.grid-power-reactive-l1.label = Grid Power Reactive L1
thing-type.ferroamp.energyhub.channel.grid-power-reactive-l2.label = Grid Power Reactive L2
thing-type.ferroamp.energyhub.channel.grid-power-reactive-l3.label = Grid Power Reactive L3
thing-type.ferroamp.energyhub.channel.inverter-current-active-l1.label = Inverter Active Current L1
thing-type.ferroamp.energyhub.channel.inverter-current-active-l2.label = Inverter Active Current L2
thing-type.ferroamp.energyhub.channel.inverter-current-active-l3.label = Inverter Active Current L3
thing-type.ferroamp.energyhub.channel.inverter-current-reactive-l1.label = Inverter Reactive Current L1
thing-type.ferroamp.energyhub.channel.inverter-current-reactive-l2.label = Inverter Reactive Current L2
thing-type.ferroamp.energyhub.channel.inverter-current-reactive-l3.label = Inverter Reactive Current L3
thing-type.ferroamp.energyhub.channel.grid-reactive-current-l1.label = Grid Reactive Current L1
thing-type.ferroamp.energyhub.channel.grid-reactive-current-l2.label = Grid Reactive Current L2
thing-type.ferroamp.energyhub.channel.grid-reactive-current-l3.label = Grid Reactive Current L3
thing-type.ferroamp.energyhub.channel.grid-voltage-l1.label = Grid Voltage L1
thing-type.ferroamp.energyhub.channel.grid-voltage-l2.label = Grid Voltage L2
thing-type.ferroamp.energyhub.channel.grid-voltage-l3.label = Grid Voltage L3
thing-type.ferroamp.energyhub.channel.inverter-active-current-l1.label = Inverter Active Current L1
thing-type.ferroamp.energyhub.channel.inverter-active-current-l2.label = Inverter Active Current L2
thing-type.ferroamp.energyhub.channel.inverter-active-current-l3.label = Inverter Active Current L3
thing-type.ferroamp.energyhub.channel.inverter-energy-consumed-l1.label = Inverter Energy Consumed L1
thing-type.ferroamp.energyhub.channel.inverter-energy-consumed-l2.label = Inverter Energy Consumed L2
thing-type.ferroamp.energyhub.channel.inverter-energy-consumed-l3.label = Inverter Energy Consumed L3
thing-type.ferroamp.energyhub.channel.inverter-energy-consumed-total.label = Total Consumed Inverter Energy
thing-type.ferroamp.energyhub.channel.inverter-energy-consumed-total.label = Inverter Energy Consumed Total
thing-type.ferroamp.energyhub.channel.inverter-energy-produced-l1.label = Inverter Energy Produced L1
thing-type.ferroamp.energyhub.channel.inverter-energy-produced-l2.label = Inverter Energy Produced L2
thing-type.ferroamp.energyhub.channel.inverter-energy-produced-l3.label = Inverter Energy Produced L3
thing-type.ferroamp.energyhub.channel.inverter-energy-produced-total.label = Total Produced Inverter Energy
thing-type.ferroamp.energyhub.channel.inverter-load-l1.label = Inverter Load L1
thing-type.ferroamp.energyhub.channel.inverter-load-l2.label = Inverter Load L2
thing-type.ferroamp.energyhub.channel.inverter-load-l3.label = Inverter Load L3
thing-type.ferroamp.energyhub.channel.inverter-energy-produced-total.label = Inverter Energy Produced Total
thing-type.ferroamp.energyhub.channel.inverter-load-active-current-l1.label = Inverter Load Active Current L1
thing-type.ferroamp.energyhub.channel.inverter-load-active-current-l2.label = Inverter Load Active Current L2
thing-type.ferroamp.energyhub.channel.inverter-load-active-current-l3.label = Inverter Load Active Current L3
thing-type.ferroamp.energyhub.channel.inverter-load-reactive-current-l1.label = Inverter Load Reactive Current L1
thing-type.ferroamp.energyhub.channel.inverter-load-reactive-current-l2.label = Inverter Load Reactive Current L2
thing-type.ferroamp.energyhub.channel.inverter-load-reactive-current-l3.label = Inverter Load Reactive Current L3
thing-type.ferroamp.energyhub.channel.inverter-power-active-l1.label = Inverter Power Active L1
thing-type.ferroamp.energyhub.channel.inverter-power-active-l2.label = Inverter Power Active L2
thing-type.ferroamp.energyhub.channel.inverter-power-active-l3.label = Inverter Power Active L3
@ -96,54 +96,53 @@ thing-type.ferroamp.energyhub.channel.inverter-rms-current-l3.label = Inverter R
thing-type.ferroamp.energyhub.channel.load-energy-consumed-l1.label = Load Energy Consumed L1
thing-type.ferroamp.energyhub.channel.load-energy-consumed-l2.label = Load Energy Consumed L2
thing-type.ferroamp.energyhub.channel.load-energy-consumed-l3.label = Load Energy Consumed L3
thing-type.ferroamp.energyhub.channel.load-energy-consumed-total.label = Total Consumed Load Energy
thing-type.ferroamp.energyhub.channel.load-energy-consumed-total.label = Load Energy Consumed Total
thing-type.ferroamp.energyhub.channel.load-energy-produced-l1.label = Load Energy Produced L1
thing-type.ferroamp.energyhub.channel.load-energy-produced-l2.label = Load Energy Produced L2
thing-type.ferroamp.energyhub.channel.load-energy-produced-l3.label = Load Energy Produced L3
thing-type.ferroamp.energyhub.channel.load-energy-produced-total.label = Total Produced Load Energy
thing-type.ferroamp.energyhub.channel.load-energy-produced-total.label = Load Energy Produced Total
thing-type.ferroamp.energyhub.channel.negative-dc-link-voltage.label = Negative DC Link Voltage
thing-type.ferroamp.energyhub.channel.positive-dc-link-voltage.label = Positive DC Link Voltage
thing-type.ferroamp.energyhub.channel.power-battery.label = Battery Power
thing-type.ferroamp.energyhub.channel.request-auto.label = RequestAuto
thing-type.ferroamp.energyhub.channel.request-charge.label = RequestCharge
thing-type.ferroamp.energyhub.channel.request-discharge.label = RequestDischarge
thing-type.ferroamp.energyhub.channel.request-extapi-version.label = RequestExtapiVersion
thing-type.ferroamp.energyhub.channel.s0-dc-link-voltage.label = S0 DC Link Voltage
thing-type.ferroamp.energyhub.channel.s0-fault-code.label = S0 FaultCode
thing-type.ferroamp.energyhub.channel.s0-id.label = S0 ID
thing-type.ferroamp.energyhub.channel.s0-pv-current.label = S0 Measured Current on PV String Side
thing-type.ferroamp.energyhub.channel.s0-pv-voltage.label = S0 Measured Voltage on PV String Side
thing-type.ferroamp.energyhub.channel.s0-relay-status.label = S0 RelayStatus
thing-type.ferroamp.energyhub.channel.s0-temperature.label = S0 Temperature Measured on PCB
thing-type.ferroamp.energyhub.channel.s0-timestamp.label = S0 Time Stamp When Message was Published
thing-type.ferroamp.energyhub.channel.s0-total-solar-energy.label = S0 Total Solar Energy
thing-type.ferroamp.energyhub.channel.s1-dc-link-voltage.label = S1 DC Link Voltage
thing-type.ferroamp.energyhub.channel.s1-fault-code.label = S1 FaultCode
thing-type.ferroamp.energyhub.channel.s1-id.label = S1 ID
thing-type.ferroamp.energyhub.channel.s1-pv-current.label = S1 Measured Current on PV String Side
thing-type.ferroamp.energyhub.channel.s1-pv-voltage.label = S1 Measured Voltage on PV String Side
thing-type.ferroamp.energyhub.channel.s1-pv-current.label = S1 Current on PV String Side
thing-type.ferroamp.energyhub.channel.s1-pv-voltage.label = S1 Voltage on PV String Side
thing-type.ferroamp.energyhub.channel.s1-relay-status.label = S1 RelayStatus
thing-type.ferroamp.energyhub.channel.s1-temperature.label = S1 Temperature Measured on PCB
thing-type.ferroamp.energyhub.channel.s1-temperature.label = S1 Temperature on PCB
thing-type.ferroamp.energyhub.channel.s1-timestamp.label = S1 Time Stamp When Message was Published
thing-type.ferroamp.energyhub.channel.s1-total-solar-energy.label = S1 Total Solar Energy
thing-type.ferroamp.energyhub.channel.s2-dc-link-voltage.label = S2 DC Link Voltage
thing-type.ferroamp.energyhub.channel.s2-fault-code.label = S2 FaultCode
thing-type.ferroamp.energyhub.channel.s2-id.label = S2 ID
thing-type.ferroamp.energyhub.channel.s2-pv-current.label = S2 Measured Current on PV String Side
thing-type.ferroamp.energyhub.channel.s2-pv-voltage.label = S2 Measured Voltage on PV String Side
thing-type.ferroamp.energyhub.channel.s2-pv-current.label = S2 Current on PV String Side
thing-type.ferroamp.energyhub.channel.s2-pv-voltage.label = S2 Voltage on PV String Side
thing-type.ferroamp.energyhub.channel.s2-relay-status.label = S2 RelayStatus
thing-type.ferroamp.energyhub.channel.s2-temperature.label = S2 Temperature Measured on PCB
thing-type.ferroamp.energyhub.channel.s2-temperature.label = S2 Temperature on PCB
thing-type.ferroamp.energyhub.channel.s2-timestamp.label = S2 Time Stamp When Message was Published
thing-type.ferroamp.energyhub.channel.s2-total-solar-energy.label = S2 Total Solar Energy
thing-type.ferroamp.energyhub.channel.s3-dc-link-voltage.label = S3 DC Link Voltage
thing-type.ferroamp.energyhub.channel.s3-fault-code.label = S3 FaultCode
thing-type.ferroamp.energyhub.channel.s3-id.label = S3 ID
thing-type.ferroamp.energyhub.channel.s3-pv-current.label = S3 Measured Current on PV String Side
thing-type.ferroamp.energyhub.channel.s3-pv-voltage.label = S3 Measured Voltage on PV String Side
thing-type.ferroamp.energyhub.channel.s3-pv-current.label = S3 Current on PV String Side
thing-type.ferroamp.energyhub.channel.s3-pv-voltage.label = S3 Voltage on PV String Side
thing-type.ferroamp.energyhub.channel.s3-relay-status.label = S3 RelayStatus
thing-type.ferroamp.energyhub.channel.s3-temperature.label = S3 Temperature Measured on PCB
thing-type.ferroamp.energyhub.channel.s3-temperature.label = S3 Temperature on PCB
thing-type.ferroamp.energyhub.channel.s3-timestamp.label = S3 Time Stamp When Message was Published
thing-type.ferroamp.energyhub.channel.s3-total-solar-energy.label = S3 Total Solar Energy
thing-type.ferroamp.energyhub.channel.s4-dc-link-voltage.label = S4 DC Link Voltage
thing-type.ferroamp.energyhub.channel.s4-fault-code.label = S4 FaultCode
thing-type.ferroamp.energyhub.channel.s4-id.label = S4 ID
thing-type.ferroamp.energyhub.channel.s4-pv-current.label = S4 Current on PV String Side
thing-type.ferroamp.energyhub.channel.s4-pv-voltage.label = S4 Voltage on PV String Side
thing-type.ferroamp.energyhub.channel.s4-relay-status.label = S4 RelayStatus
thing-type.ferroamp.energyhub.channel.s4-temperature.label = S4 Temperature on PCB
thing-type.ferroamp.energyhub.channel.s4-timestamp.label = S4 Time Stamp When Message was Published
thing-type.ferroamp.energyhub.channel.s4-total-solar-energy.label = S4 Total Solar Energy
thing-type.ferroamp.energyhub.channel.soc.label = System State of Charge
thing-type.ferroamp.energyhub.channel.soh.label = System State of Health
thing-type.ferroamp.energyhub.channel.solar-pv.label = Solar Power
@ -155,15 +154,62 @@ thing-type.ferroamp.energyhub.channel.total-solar-energy.label = Total Solar Ene
# thing types config
thing-type.config.ferroamp.energyhub.esm.label = ESM Module Available
thing-type.config.ferroamp.energyhub.esm.description = ESM Module Available
thing-type.config.ferroamp.energyhub.esm.description = Has the system an Esm unit connected?
thing-type.config.ferroamp.energyhub.eso.label = ESO Module Available
thing-type.config.ferroamp.energyhub.eso.description = ESO Module Available
thing-type.config.ferroamp.energyhub.hasBattery.label = Battery Capable
thing-type.config.ferroamp.energyhub.hasBattery.description = Ehub type, with/without battery
thing-type.config.ferroamp.energyhub.eso.description = Has the system an Eso unit connected?
thing-type.config.ferroamp.energyhub.hasBattery.label = Battery Available
thing-type.config.ferroamp.energyhub.hasBattery.description = Has the system a battery connected?
thing-type.config.ferroamp.energyhub.hostName.label = Hostname
thing-type.config.ferroamp.energyhub.hostName.description = Hostname or IP address of the device
thing-type.config.ferroamp.energyhub.password.label = Password
thing-type.config.ferroamp.energyhub.password.description = Password to access the device
thing-type.config.ferroamp.energyhub.userName.label = Username
thing-type.config.ferroamp.energyhub.userName.description = Username to access the device
# channel types
channel-type.ferroamp.date-time.label = Date Time
channel-type.ferroamp.date-time.state.pattern = %1$tc
channel-type.ferroamp.electric-current.label = Electric Current
channel-type.ferroamp.electric-potential.label = Electrical Potential
channel-type.ferroamp.energy.label = Energy
channel-type.ferroamp.frequency.label = Frequency
channel-type.ferroamp.percentage.label = Percentage
channel-type.ferroamp.power.label = Power
channel-type.ferroamp.request.label = String
channel-type.ferroamp.request.description = Used for control of system
channel-type.ferroamp.string.label = String
channel-type.ferroamp.temperature.label = Temperature
# thing types
thing-type.ferroamp.energyhub.channel.grid-current-active-l1.label = Grid Current Active L1
thing-type.ferroamp.energyhub.channel.grid-current-active-l2.label = Grid Current Active L2
thing-type.ferroamp.energyhub.channel.grid-current-active-l3.label = Grid Current Active L3
thing-type.ferroamp.energyhub.channel.grid-current-reactive-l1.label = Grid Reactive Current L1
thing-type.ferroamp.energyhub.channel.grid-current-reactive-l2.label = Grid Reactive Current L2
thing-type.ferroamp.energyhub.channel.grid-current-reactive-l3.label = Grid Reactive Current L3
thing-type.ferroamp.energyhub.channel.inverter-current-active-l1.label = Inverter Active Current L1
thing-type.ferroamp.energyhub.channel.inverter-current-active-l2.label = Inverter Active Current L2
thing-type.ferroamp.energyhub.channel.inverter-current-active-l3.label = Inverter Active Current L3
thing-type.ferroamp.energyhub.channel.inverter-current-reactive-l1.label = Inverter Reactive Current L1
thing-type.ferroamp.energyhub.channel.inverter-current-reactive-l2.label = Inverter Reactive Current L2
thing-type.ferroamp.energyhub.channel.inverter-current-reactive-l3.label = Inverter Reactive Current L3
thing-type.ferroamp.energyhub.channel.inverter-load-l1.label = Inverter Load L1
thing-type.ferroamp.energyhub.channel.inverter-load-l2.label = Inverter Load L2
thing-type.ferroamp.energyhub.channel.inverter-load-l3.label = Inverter Load L3
thing-type.ferroamp.energyhub.channel.s0-dc-link-voltage.label = S0 DC Link Voltage
thing-type.ferroamp.energyhub.channel.s0-fault-code.label = S0 FaultCode
thing-type.ferroamp.energyhub.channel.s0-id.label = S0 ID
thing-type.ferroamp.energyhub.channel.s0-pv-current.label = S0 Measured Current on PV String Side
thing-type.ferroamp.energyhub.channel.s0-pv-voltage.label = S0 Measured Voltage on PV String Side
thing-type.ferroamp.energyhub.channel.s0-relay-status.label = S0 RelayStatus
thing-type.ferroamp.energyhub.channel.s0-temperature.label = S0 Temperature Measured on PCB
thing-type.ferroamp.energyhub.channel.s0-timestamp.label = S0 Time Stamp When Message was Published
thing-type.ferroamp.energyhub.channel.s0-total-solar-energy.label = S0 Total Solar Energy
# thing types config
thing-type.config.ferroamp.energyhub.ssoS0.label = SSO String S0 Available
thing-type.config.ferroamp.energyhub.ssoS0.description = First SSO Unit Available
thing-type.config.ferroamp.energyhub.ssoS1.label = SSO String S1 Available
@ -172,24 +218,10 @@ thing-type.config.ferroamp.energyhub.ssoS2.label = SSO String S2 Available
thing-type.config.ferroamp.energyhub.ssoS2.description = Third SSO Unit Available
thing-type.config.ferroamp.energyhub.ssoS3.label = SSO String S3 Available
thing-type.config.ferroamp.energyhub.ssoS3.description = Fourth SSO Unit Available
thing-type.config.ferroamp.energyhub.userName.label = Username
thing-type.config.ferroamp.energyhub.userName.description = Username to access the device
# channel types
channel-type.ferroamp.date-time.label = Date Time
channel-type.ferroamp.dimensionless.label = Dimensionless
channel-type.ferroamp.electric-current.label = Electric Current
channel-type.ferroamp.electric-potential.label = Electrical Potential
channel-type.ferroamp.energy.label = Energy
channel-type.ferroamp.frequency.label = Frequency
channel-type.ferroamp.power.label = Power
channel-type.ferroamp.request-extapiversion.label = Request-ExtapiVersion
channel-type.ferroamp.request-extapiversion.description = Returns Extapi Version
channel-type.ferroamp.request.label = String
channel-type.ferroamp.request.description = Used for control of system
channel-type.ferroamp.string.label = String
channel-type.ferroamp.temperature.label = Temperature
# thing types

View File

@ -5,12 +5,12 @@
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<thing-type id="energyhub">
<label>Ferroamp Binding Thing</label>
<label>EnergyHub</label>
<description>Provides information from Ferroamp EnergyHub</description>
<channels>
<channel id="grid-frequency" typeId="frequency">
<label>Estimated Grid Frequency</label>
<label>Grid Frequency</label>
</channel>
<channel id="ace-current-l1" typeId="electric-current">
<label>ACE Current L1</label>
@ -21,14 +21,14 @@
<channel id="ace-current-l3" typeId="electric-current">
<label>ACE Current L3</label>
</channel>
<channel id="external-voltage-l1" typeId="electric-potential">
<label>External Voltage L1</label>
<channel id="grid-voltage-l1" typeId="electric-potential">
<label>Grid Voltage L1</label>
</channel>
<channel id="external-voltage-l2" typeId="electric-potential">
<label>External Voltage L2</label>
<channel id="grid-voltage-l2" typeId="electric-potential">
<label>Grid Voltage L2</label>
</channel>
<channel id="external-voltage-l3" typeId="electric-potential">
<label>External Voltage L3</label>
<channel id="grid-voltage-l3" typeId="electric-potential">
<label>Grid Voltage L3</label>
</channel>
<channel id="inverter-rms-current-l1" typeId="electric-current">
<label>Inverter RMS Current L1</label>
@ -39,22 +39,22 @@
<channel id="inverter-rms-current-l3" typeId="electric-current">
<label>Inverter RMS Current L3</label>
</channel>
<channel id="inverter-current-reactive-l1" typeId="electric-current">
<channel id="inverter-reactive-current-l1" typeId="electric-current">
<label>Inverter Reactive Current L1</label>
</channel>
<channel id="inverter-current-reactive-l2" typeId="electric-current">
<channel id="inverter-reactive-current-l2" typeId="electric-current">
<label>Inverter Reactive Current L2</label>
</channel>
<channel id="inverter-current-reactive-l3" typeId="electric-current">
<channel id="inverter-reactive-current-l3" typeId="electric-current">
<label>Inverter Reactive Current L3</label>
</channel>
<channel id="inverter-current-active-l1" typeId="electric-current">
<channel id="inverter-active-current-l1" typeId="electric-current">
<label>Inverter Active Current L1</label>
</channel>
<channel id="inverter-current-active-l2" typeId="electric-current">
<channel id="inverter-active-current-l2" typeId="electric-current">
<label>Inverter Active Current L2</label>
</channel>
<channel id="inverter-current-active-l3" typeId="electric-current">
<channel id="inverter-active-current-l3" typeId="electric-current">
<label>Inverter Active Current L3</label>
</channel>
<channel id="grid-current-l1" typeId="electric-current">
@ -66,41 +66,41 @@
<channel id="grid-current-l3" typeId="electric-current">
<label>Grid Current L3</label>
</channel>
<channel id="grid-current-reactive-l1" typeId="electric-current">
<channel id="grid-reactive-current-l1" typeId="electric-current">
<label>Grid Reactive Current L1</label>
</channel>
<channel id="grid-current-reactive-l2" typeId="electric-current">
<channel id="grid-reactive-current-l2" typeId="electric-current">
<label>Grid Reactive Current L2</label>
</channel>
<channel id="grid-current-reactive-l3" typeId="electric-current">
<channel id="grid-reactive-current-l3" typeId="electric-current">
<label>Grid Reactive Current L3</label>
</channel>
<channel id="grid-current-active-l1" typeId="electric-current">
<label>Grid Current Active L1</label>
<channel id="grid-active-current-l1" typeId="electric-current">
<label>Grid Active Current L1</label>
</channel>
<channel id="grid-current-active-l2" typeId="electric-current">
<label>Grid Current Active L2</label>
<channel id="grid-active-current-l2" typeId="electric-current">
<label>Grid Active Current L2</label>
</channel>
<channel id="grid-current-active-l3" typeId="electric-current">
<label>Grid Current Active L3</label>
<channel id="grid-active-current-l3" typeId="electric-current">
<label>Grid Active Current L3</label>
</channel>
<channel id="inverter-reactive-current-l1" typeId="electric-current">
<label>Inverter Reactive Current L1</label>
<channel id="inverter-load-reactive-current-l1" typeId="electric-current">
<label>Inverter Load Reactive Current L1</label>
</channel>
<channel id="inverter-reactive-current-l2" typeId="electric-current">
<label>Inverter Reactive Current L2</label>
<channel id="inverter-load-reactive-current-l2" typeId="electric-current">
<label>Inverter Load Reactive Current L2</label>
</channel>
<channel id="inverter-reactive-current-l3" typeId="electric-current">
<label>Inverter Reactive Current L3</label>
<channel id="inverter-load-reactive-current-l3" typeId="electric-current">
<label>Inverter Load Reactive Current L3</label>
</channel>
<channel id="inverter-load-l1" typeId="electric-current">
<label>Inverter Load L1</label>
<channel id="inverter-load-active-current-l1" typeId="electric-current">
<label>Inverter Load Active Current L1</label>
</channel>
<channel id="inverter-load-l2" typeId="electric-current">
<label>Inverter Load L2</label>
<channel id="inverter-load-active-current-l2" typeId="electric-current">
<label>Inverter Load Active Current L2</label>
</channel>
<channel id="inverter-load-l3" typeId="electric-current">
<label>Inverter Load L3</label>
<channel id="inverter-load-active-current-l3" typeId="electric-current">
<label>Inverter Load Active Current L3</label>
</channel>
<channel id="apparent-power" typeId="energy">
<label>Apparent Power</label>
@ -223,22 +223,22 @@
<label>Load Energy Consumed L3</label>
</channel>
<channel id="grid-energy-produced-total" typeId="energy">
<label>Total Produced Grid Energy</label>
<label>Grid Energy Produced Total</label>
</channel>
<channel id="grid-energy-consumed-total" typeId="energy">
<label>Total Consumed Grid Energy</label>
<label>Grid Energy Consumed Total</label>
</channel>
<channel id="inverter-energy-produced-total" typeId="energy">
<label>Total Produced Inverter Energy</label>
<label>Inverter Energy Produced Total</label>
</channel>
<channel id="inverter-energy-consumed-total" typeId="energy">
<label>Total Consumed Inverter Energy</label>
<label>Inverter Energy Consumed Total</label>
</channel>
<channel id="load-energy-produced-total" typeId="energy">
<label>Total Produced Load Energy</label>
<label>Load Energy Produced Total</label>
</channel>
<channel id="load-energy-consumed-total" typeId="energy">
<label>Total Consumed Load Energy</label>
<label>Load Energy Consumed Total</label>
</channel>
<channel id="total-solar-energy" typeId="power">
<label>Total Solar Energy</label>
@ -255,10 +255,10 @@
<channel id="battery-energy-consumed" typeId="energy">
<label>Battery Energy Consumed</label>
</channel>
<channel id="soc" typeId="dimensionless">
<channel id="soc" typeId="percentage">
<label>System State of Charge</label>
</channel>
<channel id="soh" typeId="dimensionless">
<channel id="soh" typeId="percentage">
<label>System State of Health</label>
</channel>
<channel id="power-battery" typeId="power">
@ -267,41 +267,14 @@
<channel id="total-capacity-batteries" typeId="energy">
<label>Total Rated Capacity of All Batteries</label>
</channel>
<channel id="s0-id" typeId="string">
<label>S0 ID</label>
</channel>
<channel id="s0-pv-voltage" typeId="electric-potential">
<label>S0 Measured Voltage on PV String Side</label>
</channel>
<channel id="s0-pv-current" typeId="electric-current">
<label>S0 Measured Current on PV String Side</label>
</channel>
<channel id="s0-total-solar-energy" typeId="energy">
<label>S0 Total Solar Energy</label>
</channel>
<channel id="s0-relay-status" typeId="string">
<label>S0 RelayStatus</label>
</channel>
<channel id="s0-temperature" typeId="temperature">
<label>S0 Temperature Measured on PCB</label>
</channel>
<channel id="s0-fault-code" typeId="string">
<label>S0 FaultCode</label>
</channel>
<channel id="s0-dc-link-voltage" typeId="electric-potential">
<label>S0 DC Link Voltage</label>
</channel>
<channel id="s0-timestamp" typeId="date-time">
<label>S0 Time Stamp When Message was Published</label>
</channel>
<channel id="s1-id" typeId="string">
<label>S1 ID</label>
</channel>
<channel id="s1-pv-voltage" typeId="electric-potential">
<label>S1 Measured Voltage on PV String Side</label>
<label>S1 Voltage on PV String Side</label>
</channel>
<channel id="s1-pv-current" typeId="electric-current">
<label>S1 Measured Current on PV String Side</label>
<label>S1 Current on PV String Side</label>
</channel>
<channel id="s1-total-solar-energy" typeId="energy">
<label>S1 Total Solar Energy</label>
@ -310,7 +283,7 @@
<label>S1 RelayStatus</label>
</channel>
<channel id="s1-temperature" typeId="temperature">
<label>S1 Temperature Measured on PCB</label>
<label>S1 Temperature on PCB</label>
</channel>
<channel id="s1-fault-code" typeId="string">
<label>S1 FaultCode</label>
@ -325,10 +298,10 @@
<label>S2 ID</label>
</channel>
<channel id="s2-pv-voltage" typeId="electric-potential">
<label>S2 Measured Voltage on PV String Side</label>
<label>S2 Voltage on PV String Side</label>
</channel>
<channel id="s2-pv-current" typeId="electric-current">
<label>S2 Measured Current on PV String Side</label>
<label>S2 Current on PV String Side</label>
</channel>
<channel id="s2-total-solar-energy" typeId="energy">
<label>S2 Total Solar Energy</label>
@ -337,7 +310,7 @@
<label>S2 RelayStatus</label>
</channel>
<channel id="s2-temperature" typeId="temperature">
<label>S2 Temperature Measured on PCB</label>
<label>S2 Temperature on PCB</label>
</channel>
<channel id="s2-fault-code" typeId="string">
<label>S2 FaultCode</label>
@ -352,10 +325,10 @@
<label>S3 ID</label>
</channel>
<channel id="s3-pv-voltage" typeId="electric-potential">
<label>S3 Measured Voltage on PV String Side</label>
<label>S3 Voltage on PV String Side</label>
</channel>
<channel id="s3-pv-current" typeId="electric-current">
<label>S3 Measured Current on PV String Side</label>
<label>S3 Current on PV String Side</label>
</channel>
<channel id="s3-total-solar-energy" typeId="energy">
<label>S3 Total Solar Energy</label>
@ -364,7 +337,7 @@
<label>S3 RelayStatus</label>
</channel>
<channel id="s3-temperature" typeId="temperature">
<label>S3 Temperature Measured on PCB</label>
<label>S3 Temperature on PCB</label>
</channel>
<channel id="s3-fault-code" typeId="string">
<label>S3 FaultCode</label>
@ -375,14 +348,41 @@
<channel id="s3-timestamp" typeId="date-time">
<label>S3 Time Stamp When Message was Published</label>
</channel>
<channel id="s4-id" typeId="string">
<label>S4 ID</label>
</channel>
<channel id="s4-pv-voltage" typeId="electric-potential">
<label>S4 Voltage on PV String Side</label>
</channel>
<channel id="s4-pv-current" typeId="electric-current">
<label>S4 Current on PV String Side</label>
</channel>
<channel id="s4-total-solar-energy" typeId="energy">
<label>S4 Total Solar Energy</label>
</channel>
<channel id="s4-relay-status" typeId="string">
<label>S4 RelayStatus</label>
</channel>
<channel id="s4-temperature" typeId="temperature">
<label>S4 Temperature on PCB</label>
</channel>
<channel id="s4-fault-code" typeId="string">
<label>S4 FaultCode</label>
</channel>
<channel id="s4-dc-link-voltage" typeId="electric-potential">
<label>S4 DC Link Voltage</label>
</channel>
<channel id="s4-timestamp" typeId="date-time">
<label>S4 Time Stamp When Message was Published</label>
</channel>
<channel id="eso-id" typeId="string">
<label>Eso Unique Identifier</label>
</channel>
<channel id="eso-voltage-battery" typeId="electric-potential">
<label>Eso Voltage Measured on Battery Side</label>
<label>Eso Voltage on Battery Side</label>
</channel>
<channel id="eso-current-battery" typeId="electric-current">
<label>Eso Current Measured on Battery Side</label>
<label>Eso Current on Battery Side</label>
</channel>
<channel id="eso-battery-energy-produced" typeId="energy">
<label>Eso Battery Energy Produced</label>
@ -390,14 +390,14 @@
<channel id="eso-battery-energy-consumed" typeId="energy">
<label>Eso Battery Energy Consumed</label>
</channel>
<channel id="eso-soc" typeId="dimensionless">
<channel id="eso-soc" typeId="percentage">
<label>Eso State of Charge</label>
</channel>
<channel id="eso-relay-status" typeId="string">
<label>Eso RelayStatus</label>
</channel>
<channel id="eso-temperature" typeId="temperature">
<label>ESO Temperature Measured on PCB</label>
<label>ESO Temperature on PCB</label>
</channel>
<channel id="eso-fault-code" typeId="string">
<label>Eso FaultCode</label>
@ -411,10 +411,10 @@
<channel id="esm-id" typeId="string">
<label>Esm Unique Identifier</label>
</channel>
<channel id="esm-soh" typeId="dimensionless">
<channel id="esm-soh" typeId="percentage">
<label>Esm System State of Health</label>
</channel>
<channel id="esm-soc" typeId="dimensionless">
<channel id="esm-soc" typeId="percentage">
<label>Esm System State of Charge</label>
</channel>
<channel id="esm-total-capacity" typeId="energy">
@ -438,9 +438,6 @@
<channel id="request-auto" typeId="request">
<label>RequestAuto</label>
</channel>
<channel id="request-extapi-version" typeId="request-extapiversion">
<label>RequestExtapiVersion</label>
</channel>
</channels>
<config-description>
@ -460,33 +457,19 @@
<description>Password to access the device</description>
</parameter>
<parameter name="hasBattery" type="boolean" required="false">
<label>Battery Capable</label>
<description>Ehub type, with/without battery</description>
<label>Battery Available</label>
<description>Has the system a battery connected?</description>
<default>false</default>
</parameter>
<parameter name="ssoS0" type="boolean" required="false">
<label>SSO String S0 Available</label>
<description>First SSO Unit Available </description>
</parameter>
<parameter name="ssoS1" type="boolean" required="false">
<label>SSO String S1 Available</label>
<description>Second SSO Unit Available</description>
</parameter>
<parameter name="ssoS2" type="boolean" required="false">
<label>SSO String S2 Available</label>
<description>Third SSO Unit Available</description>
</parameter>
<parameter name="ssoS3" type="boolean" required="false">
<label>SSO String S3 Available</label>
<description>Fourth SSO Unit Available</description>
</parameter>
<parameter name="eso" type="boolean" required="false">
<label>ESO Module Available</label>
<description>ESO Module Available</description>
<description>Has the system an Eso unit connected?</description>
<default>false</default>
</parameter>
<parameter name="esm" type="boolean" required="false">
<label>ESM Module Available</label>
<description>ESM Module Available</description>
<description>Has the system an Esm unit connected?</description>
<default>false</default>
</parameter>
</config-description>
</thing-type>
@ -516,7 +499,7 @@
<item-type>DateTime</item-type>
<label>Date Time</label>
<category>Energy</category>
<state readOnly="true" pattern="%.2f %unit%"/>
<state readOnly="true" pattern="%1$tc"/>
</channel-type>
<channel-type id="electric-potential">
@ -533,9 +516,9 @@
<state readOnly="true" pattern="%.2f %unit%"/>
</channel-type>
<channel-type id="dimensionless">
<item-type>Number:Dimensionless</item-type>
<label>Dimensionless</label>
<channel-type id="percentage">
<item-type unitHint="%">Number:Dimensionless</item-type>
<label>Percentage</label>
<category>Energy</category>
<state readOnly="true" pattern="%.2f %unit%"/>
</channel-type>
@ -562,12 +545,4 @@
<state readOnly="false"/>
</channel-type>
<channel-type id="request-extapiversion">
<item-type>String</item-type>
<label>Request-ExtapiVersion</label>
<description>Returns Extapi Version</description>
<category>Energy</category>
<state readOnly="true"/>
</channel-type>
</thing:thing-descriptions>