[ferroamp] Binding for ferroamp 20241125

Changes done in:
ferroamp.properties
FerroampConfiguration.java
FerroampHandler.java
FerroampMqttCommunication.java
README.md
thing-types.xml

Signed-off-by: Örjan Backsell <orjan.backsell@gmail.com>
This commit is contained in:
Örjan Backsell 2024-11-25 18:58:14 +01:00
parent c95df50776
commit e8ee223cb7
6 changed files with 148 additions and 473 deletions

View File

@ -5,7 +5,7 @@ The Ferroamp binding is used to get live data from Ferroamp EnergyHub
The Ferroamp binding is compatible with EnergyHub Wall and EnergyHub XL, and connects to your local EnergyHub via LAN.
Data and commands are received/sent using MQTT where the user connects to the MQTT broker residing on the EnergyHub.
The communication with the broker might take some minute to establish, so Please just be patient. The Thing will be
in state INITIALIZATION during this time and then change to state ONLINE once connection is established.
in state INITIALIZATION and UNKNOWN during this time and then change to state ONLINE once connection is established.
*note* Contact Ferroamp support to enable MQTT in the EnergyHub and to get the Username and Password:
@ -37,8 +37,6 @@ 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 |
| 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 |
## Channels
@ -126,8 +124,8 @@ The following configuration parameters are available.
| 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:Percentage | R | System State of Check | State of the system |
| soh | Number:Percentage | R | System State of Health | |
| 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 |
@ -176,7 +174,7 @@ The following configuration parameters are available.
| 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:Percentage | R | Eso State of Charge | State of Charge for ESO |
| 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 |
@ -186,8 +184,8 @@ The following configuration parameters are available.
| 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:Percentage | R | Esm System State of Health | State of Health for ESM |
| esm-soc | Number:Percentage | R | Esm System State of Charge | State of Charge for ESM |
| 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 |

View File

@ -27,6 +27,4 @@ public class FerroampConfiguration {
public String userName = "";
public String password = "";
public boolean hasBattery = false;
public boolean eso = false;
public boolean esm = false;
}

View File

@ -44,9 +44,9 @@ public class FerroampHandler extends BaseThingHandler implements MqttMessageSubs
private final static Logger logger = LoggerFactory.getLogger(FerroampHandler.class);
private @Nullable static MqttBrokerConnection ferroampConnection;
FerroampMqttCommunication ferroampMqttCommunication = new FerroampMqttCommunication(thing);
final FerroampConfiguration ferroampConfig = getConfigAs(FerroampConfiguration.class);
private @Nullable FerroampConfiguration ferroampConfig;
private List<FerroampChannelConfiguration> channelConfigEhub = new ArrayList<>();
private static List<FerroampChannelConfiguration> channelConfigEhub = new ArrayList<>();
private static List<FerroampChannelConfiguration> channelConfigSsoS1 = new ArrayList<>();
private static List<FerroampChannelConfiguration> channelConfigSsoS2 = new ArrayList<>();
private static List<FerroampChannelConfiguration> channelConfigSsoS3 = new ArrayList<>();
@ -55,8 +55,6 @@ public class FerroampHandler extends BaseThingHandler implements MqttMessageSubs
private static List<FerroampChannelConfiguration> channelConfigEsm = new ArrayList<>();
long refreshInterval = 30;
static boolean isEsoAvailable = false;
static boolean isEsmAvailable = false;
public FerroampHandler(Thing thing) {
super(thing);
@ -84,6 +82,8 @@ public class FerroampHandler extends BaseThingHandler implements MqttMessageSubs
@Override
public void initialize() {
// Set configuration parameters
ferroampConfig = getConfigAs(FerroampConfiguration.class);
// Set channel configuration parameters
channelConfigEhub = FerroampChannelConfiguration.getChannelConfigurationEhub();
channelConfigSsoS1 = FerroampChannelConfiguration.getChannelConfigurationSsoS1();
@ -93,32 +93,39 @@ public class FerroampHandler extends BaseThingHandler implements MqttMessageSubs
channelConfigEso = FerroampChannelConfiguration.getChannelConfigurationEso();
channelConfigEsm = FerroampChannelConfiguration.getChannelConfigurationEsm();
final MqttBrokerConnection ferroampConnection = new MqttBrokerConnection(ferroampConfig.hostName,
FerroampBindingConstants.BROKER_PORT, false, false, ferroampConfig.userName);
if (ferroampConfig != null && channelConfigEhub != null && channelConfigSsoS1 != null
&& channelConfigSsoS2 != null && channelConfigSsoS3 != null && channelConfigSsoS4 != null
&& channelConfigEso != null && channelConfigEsm != null) {
scheduler.scheduleWithFixedDelay(this::pollTask, 60, refreshInterval, TimeUnit.SECONDS);
this.setFerroampConnection(ferroampConnection);
final MqttBrokerConnection ferroampConnection = new MqttBrokerConnection(ferroampConfig.hostName,
FerroampBindingConstants.BROKER_PORT, false, false, ferroampConfig.userName);
scheduler.scheduleWithFixedDelay(this::pollTask, 60, refreshInterval, TimeUnit.SECONDS);
this.setFerroampConnection(ferroampConnection);
updateStatus(ThingStatus.UNKNOWN);
} else {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR);
logger.debug("Configuration problems");
}
}
private void pollTask() {
try {
startMqttConnection();
} catch (InterruptedException e) {
logger.debug("Problems with startMqttConnection()");
logger.debug("Not connected to the MqttBroker");
return;
}
Objects.requireNonNull(ferroampConnection, "MqttBrokerConnection ferroampConnection cannot be null");
if (ferroampConnection.connectionState().toString().equals("DISCONNECTED")) {
MqttBrokerConnection ferroampConnection = FerroampHandler.ferroampConnection;
if (ferroampConnection == null || ferroampConnection.connectionState().toString().equals("DISCONNECTED")) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR);
logger.debug("Problem connection to MqttBroker");
}
Objects.requireNonNull(ferroampConnection, "MqttBrokerConnection ferroampConnection cannot be null, ");
if (ferroampConnection.connectionState().toString().equals("CONNECTED")) {
} else if (ferroampConnection.connectionState().toString().equals("CONNECTED")) {
updateStatus(ThingStatus.ONLINE);
try {
channelUpdate();
updateStatus(ThingStatus.ONLINE);
} catch (RuntimeException scheduleWithFixedDelayException) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
scheduleWithFixedDelayException.getClass().getName() + ":"
@ -128,6 +135,7 @@ public class FerroampHandler extends BaseThingHandler implements MqttMessageSubs
}
private void startMqttConnection() throws InterruptedException {
MqttBrokerConnection localSubscribeConnection = FerroampHandler.getFerroampConnection();
Objects.requireNonNull(localSubscribeConnection,
@ -201,27 +209,31 @@ public class FerroampHandler extends BaseThingHandler implements MqttMessageSubs
}
}
if (ferroampConfig.eso == true) {
String[] esoUpdateChannels;
esoUpdateChannels = FerroampMqttCommunication.getEsoChannelUpdateValues();
String[] esoUpdateChannels = new String[11];
esoUpdateChannels = FerroampMqttCommunication.getEsoChannelUpdateValues();
if (esoUpdateChannels.length > 0) {
int channelValuesCounterEso = 0;
for (FerroampChannelConfiguration cConfig : channelConfigEso) {
String esoChannel = cConfig.id;
State esoState = StringType.valueOf(esoUpdateChannels[channelValuesCounterEso]);
updateState(esoChannel, esoState);
channelValuesCounterEso++;
if (esoUpdateChannels.length <= 9) {
for (FerroampChannelConfiguration cConfig : channelConfigEso) {
String esoChannel = cConfig.id;
State esoState = StringType.valueOf(esoUpdateChannels[channelValuesCounterEso]);
updateState(esoChannel, esoState);
channelValuesCounterEso++;
}
}
}
if (ferroampConfig.esm == true) {
String[] esmUpdateChannels;
esmUpdateChannels = FerroampMqttCommunication.getEsmChannelUpdateValues();
String[] esmUpdateChannels = new String[7];
esmUpdateChannels = FerroampMqttCommunication.getEsmChannelUpdateValues();
if (esmUpdateChannels.length > 0) {
int channelValuesCounterEsm = 0;
for (FerroampChannelConfiguration cConfig : channelConfigEsm) {
String esmChannel = cConfig.id;
State esmState = StringType.valueOf(esmUpdateChannels[channelValuesCounterEsm]);
updateState(esmChannel, esmState);
channelValuesCounterEsm++;
if (esmUpdateChannels.length <= 9) {
for (FerroampChannelConfiguration cConfig : channelConfigEsm) {
String esmChannel = cConfig.id;
State esmState = StringType.valueOf(esmUpdateChannels[channelValuesCounterEsm]);
updateState(esmChannel, esmState);
channelValuesCounterEsm++;
}
}
}
}

View File

@ -51,9 +51,6 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
static String ssoS3IdCheck = "";
static String ssoS4IdCheck = "";
static boolean isEsoAvailable = false;
static boolean isEsmAvailable = false;
private final static Logger logger = LoggerFactory.getLogger(FerroampMqttCommunication.class);
public FerroampMqttCommunication(Thing thing) {
@ -690,7 +687,7 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
// 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
String[] esoChannelPostsValue = new String[11]; // Array for ESO, Energy Storage Optimizer ) Posts
JsonObject jsonElementsObjectEso = new Gson().fromJson(new Gson().fromJson(messageJsonEso, JsonObject.class),
JsonObject.class);
@ -699,61 +696,75 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
String jsonElementsStringTemp = "";
Gson gson = new Gson();
// faultcode
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(0)).toString();
if (!jsonElementsObjectEso.isEmpty()) {
// id
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(0)).toString();
GetGeneralValues id = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[0] = id.getVal();
GetGeneralValues faultcode = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[0] = faultcode.getVal();
// ubat
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(1)).toString();
GetGeneralValues ubat = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[1] = ubat.getVal();
// id
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(1)).toString();
GetGeneralValues id = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[1] = id.getVal();
// ibat
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(2)).toString();
GetGeneralValues ibat = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[2] = ibat.getVal();
// ibat
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(2)).toString();
GetGeneralValues ibat = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[2] = ibat.getVal();
// wbatprod
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(3)).toString();
GetGeneralValues wbatprod = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[3] = mJTokWh(jsonStripOneLiners(wbatprod.getVal()));
// ubat
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(3)).toString();
GetGeneralValues ubat = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[3] = ubat.getVal();
// wbatcons
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(4)).toString();
GetGeneralValues wbatcons = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[4] = mJTokWh(jsonStripOneLiners(wbatcons.getVal()));
// relaystatus
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(4)).toString();
GetGeneralValues relaystatus = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[4] = relaystatus.getVal();
// soc
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(5)).toString();
GetGeneralValues soc = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[5] = soc.getVal();
// soc
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(5)).toString();
GetGeneralValues soc = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[5] = soc.getVal();
// relaystatus
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(6)).toString();
GetGeneralValues relaystatus = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[6] = relaystatus.getVal();
// temp
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(6)).toString();
GetGeneralValues temp = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[6] = temp.getVal();
// temp
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(7)).toString();
GetGeneralValues temp = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[7] = temp.getVal();
// wbatprod
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(7)).toString();
GetGeneralValues wbatprod = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[7] = mJTokWh(jsonStripOneLiners(wbatprod.getVal()));
// faultcode
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(8)).toString();
GetGeneralValues faultcode = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[8] = faultcode.getVal();
// udc
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(8)).toString();
GetGeneralValues udc = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[8] = udc.getVal();
// udc
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(9)).toString();
GetGeneralValues udc = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[9] = udc.getVal();
// ts
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(9)).toString();
GetGeneralValues ts = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[9] = ts.getVal();
// ts
jsonElementsStringTemp = jsonElementsObjectEso.get(EsoJsonElements.getJsonElementsEso().get(10)).toString();
GetGeneralValues ts = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esoChannelPostsValue[10] = ts.getVal();
esoChannelsUpdateValues = esoChannelPostsValue;
esoChannelsUpdateValues = esoChannelPostsValue;
} else {
return;
}
}
// Prepare actual Json-topic Esm-message and update values for channels
@ -767,44 +778,51 @@ public class FerroampMqttCommunication implements MqttMessageSubscriber {
String jsonElementsStringTemp = "";
Gson gson = new Gson();
// soc
jsonElementsStringTemp = jsonElementsObjectEsm.get(EsmJsonElements.getJsonElementsEsm().get(0)).toString();
GetGeneralValues soc = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esmChannelPostsValue[0] = soc.getVal();
if (!jsonElementsObjectEsm.isEmpty()) {
// id
jsonElementsStringTemp = jsonElementsObjectEsm.get(EsmJsonElements.getJsonElementsEsm().get(0)).toString();
GetGeneralValues id = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esmChannelPostsValue[0] = id.getVal();
// soh
jsonElementsStringTemp = jsonElementsObjectEsm.get(EsmJsonElements.getJsonElementsEsm().get(1)).toString();
GetGeneralValues soh = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esmChannelPostsValue[1] = soh.getVal();
// soh
jsonElementsStringTemp = jsonElementsObjectEsm.get(EsmJsonElements.getJsonElementsEsm().get(1)).toString();
GetGeneralValues soh = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esmChannelPostsValue[1] = soh.getVal();
// ratedcapacity
jsonElementsStringTemp = jsonElementsObjectEsm.get(EsmJsonElements.getJsonElementsEsm().get(2)).toString();
GetGeneralValues ratedcapacity = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esmChannelPostsValue[2] = ratedcapacity.getVal();
// soc
jsonElementsStringTemp = jsonElementsObjectEsm.get(EsmJsonElements.getJsonElementsEsm().get(2)).toString();
GetGeneralValues soc = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esmChannelPostsValue[2] = soc.getVal();
// id
jsonElementsStringTemp = jsonElementsObjectEsm.get(EsmJsonElements.getJsonElementsEsm().get(3)).toString();
GetGeneralValues id = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esmChannelPostsValue[3] = id.getVal();
// ratedcapacity
jsonElementsStringTemp = jsonElementsObjectEsm.get(EsmJsonElements.getJsonElementsEsm().get(3)).toString();
GetGeneralValues ratedcapacity = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esmChannelPostsValue[3] = ratedcapacity.getVal();
// ratedpower
jsonElementsStringTemp = jsonElementsObjectEsm.get(EsmJsonElements.getJsonElementsEsm().get(4)).toString();
GetGeneralValues ratedpower = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esmChannelPostsValue[4] = ratedpower.getVal();
// ratedpower
jsonElementsStringTemp = jsonElementsObjectEsm.get(EsmJsonElements.getJsonElementsEsm().get(4)).toString();
GetGeneralValues ratedpower = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esmChannelPostsValue[4] = ratedpower.getVal();
// status
jsonElementsStringTemp = jsonElementsObjectEsm.get(EsmJsonElements.getJsonElementsEsm().get(5)).toString();
GetGeneralValues status = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esmChannelPostsValue[5] = status.getVal();
// status
jsonElementsStringTemp = jsonElementsObjectEsm.get(EsmJsonElements.getJsonElementsEsm().get(5)).toString();
GetGeneralValues status = checkNullGeneralValues(
gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esmChannelPostsValue[5] = status.getVal();
// ts
jsonElementsStringTemp = jsonElementsObjectEsm.get(EsmJsonElements.getJsonElementsEsm().get(6)).toString();
GetGeneralValues ts = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esmChannelPostsValue[6] = ts.getVal();
// ts
jsonElementsStringTemp = jsonElementsObjectEsm.get(EsmJsonElements.getJsonElementsEsm().get(6)).toString();
GetGeneralValues ts = checkNullGeneralValues(gson.fromJson(jsonElementsStringTemp, GetGeneralValues.class));
esmChannelPostsValue[6] = ts.getVal();
esmChannelsUpdateValues = esmChannelPostsValue;
esmChannelsUpdateValues = esmChannelPostsValue;
} else {
return;
}
}
public @Nullable static String[] getEhubChannelUpdateValues() {

View File

@ -153,10 +153,6 @@ 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 = Has the system an Esm unit connected?
thing-type.config.ferroamp.energyhub.eso.label = ESO Module Available
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
@ -180,340 +176,3 @@ 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
thing-type.config.ferroamp.energyhub.ssoS1.description = Second SSO Unit Available
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
# channel types
channel-type.ferroamp.dimensionless.label = Dimensionless
# thing types
thing-type.ferroamp.energyhub.channel.esm-rated-power-battery.label = Esm Rated Power of Battery
thing-type.ferroamp.energyhub.channel.esm-total-rated-capacity-all-batteries.label = Esm Rated Capacity
thing-type.ferroamp.energyhub.channel.esm-unique-identifier.label = Esm Unique Identifier
thing-type.ferroamp.energyhub.channel.eso-unique-identifier.label = Eso Unique Identifier
thing-type.ferroamp.energyhub.channel.external-energy-consumed-3p.label = External Energy Consumed 3p
thing-type.ferroamp.energyhub.channel.external-energy-consumed-l1.label = External Energy Consumed L1
thing-type.ferroamp.energyhub.channel.external-energy-consumed-l2.label = External Energy Consumed L2
thing-type.ferroamp.energyhub.channel.external-energy-consumed-l3.label = External Energy Consumed L3
thing-type.ferroamp.energyhub.channel.external-energy-produced-3p.label = External Energy Produced 3p
thing-type.ferroamp.energyhub.channel.external-energy-produced-l1.label = External Energy Produced L1
thing-type.ferroamp.energyhub.channel.external-energy-produced-l2.label = External Energy Produced L2
thing-type.ferroamp.energyhub.channel.external-energy-produced-l3.label = External Energy Produced L3
thing-type.ferroamp.energyhub.channel.inverter-energy-consumed-3p.label = Inverter Energy Consumed 3p
thing-type.ferroamp.energyhub.channel.inverter-energy-produced-3p.label = Inverter Energy Produced 3p
thing-type.ferroamp.energyhub.channel.load-energy-consumed-3p.label = Load Energy Consumed 3p
thing-type.ferroamp.energyhub.channel.load-energy-produced-3p.label = Load Energy Produced 3p
thing-type.ferroamp.energyhub.channel.measured-current-battery.label = Eso Current Measured on Battery Side
thing-type.ferroamp.energyhub.channel.measured-voltage-battery.label = Eso Voltage Measured on Battery Side
thing-type.ferroamp.energyhub.channel.s0-measured-current-pv-string.label = S0 Measured Current on PV String Side
thing-type.ferroamp.energyhub.channel.s0-measured-voltage-pv-string.label = S0 Measured Voltage on PV String Side
thing-type.ferroamp.energyhub.channel.s1-measured-current-pv-string.label = S1 Measured Current on PV String Side
thing-type.ferroamp.energyhub.channel.s1-measured-voltage-pv-string.label = S1 Measured Voltage on PV String Side
thing-type.ferroamp.energyhub.channel.s2-measured-current-pv-string.label = S2 Measured Current on PV String Side
thing-type.ferroamp.energyhub.channel.s2-measured-voltage-pv-string.label = S2 Measured Voltage on PV String Side
thing-type.ferroamp.energyhub.channel.s3-measured-current-pv-string.label = S3 Measured Current on PV String Side
thing-type.ferroamp.energyhub.channel.s3-measured-voltage-pv-string.label = S3 Measured Voltage on PV String Side
thing-type.ferroamp.energyhub.channel.total-rated-capacity-all-batteries.label = Total Rated Capacity of All Batteries
# channel group types
channel-group-type.ferroamp.date-time.label = Date Time
channel-group-type.ferroamp.dimensionless.label = Dimensionless
channel-group-type.ferroamp.electric-current.label = Electric Current
channel-group-type.ferroamp.electric-potential.label = Electrical Potential
channel-group-type.ferroamp.energy.label = Energy
channel-group-type.ferroamp.frequency.label = Frequency
channel-group-type.ferroamp.power.label = Power
channel-group-type.ferroamp.string.label = String
channel-group-type.ferroamp.temperature.label = Temperature
# channel types
channel-type.ferroamp.ehub-gridfreq.label = EHUB, Estimated Grid Frequency
channel-type.ferroamp.ehub-gridfreq.description = Estimated grid frequency
channel-type.ferroamp.ehub-iace-l1.label = EHUB, ACE Equalization L1
channel-type.ferroamp.ehub-iace-l1.description = ACE equalization l1
channel-type.ferroamp.ehub-iace-l2.label = EHUB, ACE Equalization L2
channel-type.ferroamp.ehub-iace-l2.description = ACE equalization l2
channel-type.ferroamp.ehub-iace-l3.label = EHUB, ACE Equalization L3
channel-type.ferroamp.ehub-iace-l3.description = ACE equalization l3
channel-type.ferroamp.ehub-iext-l1.label = EHUB, External/Grid RMS Current L1
channel-type.ferroamp.ehub-iext-l1.description = External/Grid rms current l1
channel-type.ferroamp.ehub-iext-l2.label = EHUB, External/Grid RMS Current L2
channel-type.ferroamp.ehub-iext-l2.description = External/Grid rms current l2
channel-type.ferroamp.ehub-iext-l3.label = EHUB, External/Grid RMS Current L3
channel-type.ferroamp.ehub-iext-l3.description = External/Grid rms current l3
channel-type.ferroamp.ehub-iextd-l1.label = EHUB, External/Grid Reactive Current L1
channel-type.ferroamp.ehub-iextd-l1.description = External/Grid reactive current l1
channel-type.ferroamp.ehub-iextd-l2.label = EHUB, External/Grid Reactive Current L2
channel-type.ferroamp.ehub-iextd-l2.description = External/Grid reactive current l2
channel-type.ferroamp.ehub-iextd-l3.label = EHUB, External/Grid Reactive Current L3
channel-type.ferroamp.ehub-iextd-l3.description = External/Grid reactive current l3
channel-type.ferroamp.ehub-iextq-l1.label = EHUB, External/Grid Active Current L1
channel-type.ferroamp.ehub-iextq-l1.description = External/Grid active current l1
channel-type.ferroamp.ehub-iextq-l2.label = EHUB, External/Grid Active Current L2
channel-type.ferroamp.ehub-iextq-l2.description = External/Grid active current l2
channel-type.ferroamp.ehub-iextq-l3.label = EHUB, External/Grid Active Current L3
channel-type.ferroamp.ehub-iextq-l3.description = External/Grid active current l3
channel-type.ferroamp.ehub-il-l1.label = EHUB, Inverter RMS Current L1
channel-type.ferroamp.ehub-il-l1.description = Inverter rms current l1
channel-type.ferroamp.ehub-il-l2.label = EHUB, Inverter RMS Current L2
channel-type.ferroamp.ehub-il-l2.description = Inverter rms current l2
channel-type.ferroamp.ehub-il-l3.label = EHUB, Inverter RMS Current L3
channel-type.ferroamp.ehub-il-l3.description = Inverter rms current l3
channel-type.ferroamp.ehub-ild-l1.label = EHUB, Inverter Reactive Current L1
channel-type.ferroamp.ehub-ild-l1.description = Inverter reactive current l1
channel-type.ferroamp.ehub-ild-l2.label = EHUB, Inverter Reactive Current L2
channel-type.ferroamp.ehub-ild-l2.description = Inverter reactive current l2
channel-type.ferroamp.ehub-ild-l3.label = EHUB, Inverter Reactive Current L3
channel-type.ferroamp.ehub-ild-l3.description = Inverter reactive current l3
channel-type.ferroamp.ehub-iloadd-l1.label = EHUB, ILoadd L1
channel-type.ferroamp.ehub-iloadd-l2.label = EHUB, ILoadd L2
channel-type.ferroamp.ehub-iloadd-l3.label = EHUB, ILoadd L3
channel-type.ferroamp.ehub-iloadq-l1.label = EHUB, ILoadq L1
channel-type.ferroamp.ehub-iloadq-l2.label = EHUB, ILoadq L2
channel-type.ferroamp.ehub-iloadq-l3.label = EHUB, ILoadq L3
channel-type.ferroamp.ehub-ilq-l1.label = EHUB, Inverter Active Current L1
channel-type.ferroamp.ehub-ilq-l1.description = Inverter active current l1
channel-type.ferroamp.ehub-ilq-l2.label = EHUB, Inverter Active Current L2
channel-type.ferroamp.ehub-ilq-l2.description = Inverter active current l2
channel-type.ferroamp.ehub-ilq-l3.label = EHUB, Inverter Active Current L3
channel-type.ferroamp.ehub-ilq-l3.description = Inverter active current l3
channel-type.ferroamp.ehub-pbat.label = EHUB, Power Batteries
channel-type.ferroamp.ehub-pbat.description = Only sent when system has batteries
channel-type.ferroamp.ehub-pext-l1.label = EHUB, External/Grid Power, Active L1
channel-type.ferroamp.ehub-pext-l1.description = External/Grid power, active l1
channel-type.ferroamp.ehub-pext-l2.label = EHUB, External/Grid Power, Active L2
channel-type.ferroamp.ehub-pext-l2.description = External/Grid power, active l2
channel-type.ferroamp.ehub-pext-l3.label = EHUB, External/Grid Power, Active L3
channel-type.ferroamp.ehub-pext-l3.description = External/Grid power, active l3
channel-type.ferroamp.ehub-pextreactive-l1.label = EHUB, External/Grid Power, Reactive L1
channel-type.ferroamp.ehub-pextreactive-l1.description = External/Grid power, reactive l1
channel-type.ferroamp.ehub-pextreactive-l2.label = EHUB, External/Grid Power, Reactive L2
channel-type.ferroamp.ehub-pextreactive-l2.description = External/Grid power, reactive l2
channel-type.ferroamp.ehub-pextreactive-l3.label = EHUB, External/Grid Power, Reactive L3
channel-type.ferroamp.ehub-pextreactive-l3.description = External/Grid power, reactive l3
channel-type.ferroamp.ehub-pinv-l1.label = EHUB, Inverter Power, Active L1
channel-type.ferroamp.ehub-pinv-l1.description = Inverter power, active l1
channel-type.ferroamp.ehub-pinv-l2.label = EHUB, Inverter Power, Active L2
channel-type.ferroamp.ehub-pinv-l2.description = Inverter power, active l2
channel-type.ferroamp.ehub-pinv-l3.label = EHUB, Inverter Power, Active L3
channel-type.ferroamp.ehub-pinv-l3.description = Inverter power, active l3
channel-type.ferroamp.ehub-pinvreactive-l1.label = EHUB, Inverter Power, Reactive L1
channel-type.ferroamp.ehub-pinvreactive-l1.description = Inverter power, reactive l1
channel-type.ferroamp.ehub-pinvreactive-l2.label = EHUB, Inverter Power, Reactive L2
channel-type.ferroamp.ehub-pinvreactive-l2.description = Inverter power, reactive l2
channel-type.ferroamp.ehub-pinvreactive-l3.label = EHUB, Inverter Power, Reactive L3
channel-type.ferroamp.ehub-pinvreactive-l3.description = Inverter power, reactive l3
channel-type.ferroamp.ehub-pload-l1.label = EHUB, PLoad L1
channel-type.ferroamp.ehub-pload-l2.label = EHUB, PLoad L2
channel-type.ferroamp.ehub-pload-l3.label = EHUB, PLoad L3
channel-type.ferroamp.ehub-ploadreactive-l1.label = EHUB, PLoadReactive L1
channel-type.ferroamp.ehub-ploadreactive-l2.label = EHUB, PLoadReactive L2
channel-type.ferroamp.ehub-ploadreactive-l3.label = EHUB, PLoadReactive L3
channel-type.ferroamp.ehub-ppv.label = EHUB, Power PV
channel-type.ferroamp.ehub-ppv.description = Only sent when system has pv
channel-type.ferroamp.ehub-ratedcap.label = EHUB, Total Rated Capacity Batteries
channel-type.ferroamp.ehub-ratedcap.description = Total rated capacity of all batteries in the system
channel-type.ferroamp.ehub-sext.label = EHUB, Apparent Power
channel-type.ferroamp.ehub-sext.description = Apparent power
channel-type.ferroamp.ehub-soc.label = EHUB, Soc
channel-type.ferroamp.ehub-soc.description = State of charge for the EHUB
channel-type.ferroamp.ehub-soh.label = EHUB, Soh
channel-type.ferroamp.ehub-soh.description = State of health for the EHUB
channel-type.ferroamp.ehub-state.label = EHUB, State Of The System
channel-type.ferroamp.ehub-state.description = State of the system
channel-type.ferroamp.ehub-ts.label = EHUB, Time Stamp
channel-type.ferroamp.ehub-ts.description = Time stamp when message was published
channel-type.ferroamp.ehub-udcneg.label = EHUB, Negativ DC Link Voltage
channel-type.ferroamp.ehub-udcneg.description = Negativ dc link voltage
channel-type.ferroamp.ehub-udcpos.label = EHUB, Positiv DC Link Voltage
channel-type.ferroamp.ehub-udcpos.description = Positiv dc link voltage
channel-type.ferroamp.ehub-ul-l1.label = EHUB, External Voltage L1
channel-type.ferroamp.ehub-ul-l1.description = External voltage l1
channel-type.ferroamp.ehub-ul-l2.label = EHUB, External Voltage L2
channel-type.ferroamp.ehub-ul-l2.description = External voltage l2
channel-type.ferroamp.ehub-ul-l3.label = EHUB, External Voltage L3
channel-type.ferroamp.ehub-ul-l3.description = External voltage l3
channel-type.ferroamp.ehub-wbatprod.label = EHUB, Produced Power Batteries
channel-type.ferroamp.ehub-wbatprod.description = Only sent when system has batteries
channel-type.ferroamp.ehub-wextconsq-l1.label = EHUB, WExtConsq L1
channel-type.ferroamp.ehub-wextconsq-l2.label = EHUB, WExtConsq L2
channel-type.ferroamp.ehub-wextconsq-l3.label = EHUB, WExtConsq L3
channel-type.ferroamp.ehub-wextconsq_3p.label = EHUB, WExtConsq_3p
channel-type.ferroamp.ehub-wextprodq-l1.label = EHUB, WExtProdq L1
channel-type.ferroamp.ehub-wextprodq-l2.label = EHUB, WExtProdq L2
channel-type.ferroamp.ehub-wextprodq-l3.label = EHUB, WExtProdq L3
channel-type.ferroamp.ehub-wextprodq_3p.label = EHUB, WExtProdq_3p
channel-type.ferroamp.ehub-winvconsq-l1.label = EHUB, WInvConsq L1
channel-type.ferroamp.ehub-winvconsq-l2.label = EHUB, WInvConsq L2
channel-type.ferroamp.ehub-winvconsq-l3.label = EHUB, WInvConsq L3
channel-type.ferroamp.ehub-winvconsq_3p.label = EHUB, WInvConsq_3p
channel-type.ferroamp.ehub-winvprodq-l1.label = EHUB, WInvProdq L1
channel-type.ferroamp.ehub-winvprodq-l2.label = EHUB, WInvProdq L2
channel-type.ferroamp.ehub-winvprodq-l3.label = EHUB, WInvProdq L3
channel-type.ferroamp.ehub-winvprodq_3p.label = EHUB, WInvProdq_3p
channel-type.ferroamp.ehub-wloadconsq-l1.label = EHUB, WLoadConsq L1
channel-type.ferroamp.ehub-wloadconsq-l2.label = EHUB, WLoadConsq L2
channel-type.ferroamp.ehub-wloadconsq-l3.label = EHUB, WLoadConsq L3
channel-type.ferroamp.ehub-wloadconsq_3p.label = EHUB, WLoadConsq_3p
channel-type.ferroamp.ehub-wloadprodq-l1.label = EHUB, WLoadProdq L1
channel-type.ferroamp.ehub-wloadprodq-l2.label = EHUB, WLoadProdq L2
channel-type.ferroamp.ehub-wloadprodq-l3.label = EHUB, WLoadProdq L3
channel-type.ferroamp.ehub-wloadprodq_3p.label = EHUB, WLoadProdq_3p
channel-type.ferroamp.ehub-wpbatcons.label = EHUB, Consumed Power Batteries
channel-type.ferroamp.ehub-wpbatcons.description = Only sent when system has batteries
channel-type.ferroamp.ehub-wpv.label = EHUB, PV Power
channel-type.ferroamp.ehub-wpv.description = Only sent when system has pv
channel-type.ferroamp.esm-id.label = ESM, Unique Identifier Of Battery.
channel-type.ferroamp.esm-id.description = Unique identifier of battery. If available, this will be the unique id that the battery reports.
channel-type.ferroamp.esm-rated-capacity.label = ESM, Rated Capacity Of Battery
channel-type.ferroamp.esm-rated-capacity.description = Rated capacity of battery
channel-type.ferroamp.esm-rated-power.label = ESM, Rated Power Of Battery
channel-type.ferroamp.esm-rated-power.description = Rated power of battery
channel-type.ferroamp.esm-soc.label = ESM, Soc
channel-type.ferroamp.esm-soc.description = State of charge for the ESM
channel-type.ferroamp.esm-soh.label = ESM, Soh
channel-type.ferroamp.esm-soh.description = State of health for the ESM
channel-type.ferroamp.esm-status.label = ESM, Battery Status
channel-type.ferroamp.esm-status.description = Dependent on battery manufacturer
channel-type.ferroamp.esm-ts.label = ESM, Time Stamp
channel-type.ferroamp.esm-ts.description = Time stamp when message was published
channel-type.ferroamp.eso-faultcode.label = ESO, Fault Code
channel-type.ferroamp.eso-faultcode.description = See section 4.1.3.1 below for further explanation of fault codes
channel-type.ferroamp.eso-ibat.label = ESO, Current On Battery Side
channel-type.ferroamp.eso-ibat.description = Measured on battery side
channel-type.ferroamp.eso-id.label = ESO, Unique Identifier
channel-type.ferroamp.eso-id.description = Unique identifier
channel-type.ferroamp.eso-relaystatus.label = ESO, Relay Status
channel-type.ferroamp.eso-relaystatus.description = 0 = relay closed, 1 = relay open
channel-type.ferroamp.eso-soc.label = ESO, Soc
channel-type.ferroamp.eso-soc.description = State of charge for ESO
channel-type.ferroamp.eso-temp.label = ESO, Temperature
channel-type.ferroamp.eso-temp.description = Temperature measured inside ESO
channel-type.ferroamp.eso-ts.label = ESO, Time stamp
channel-type.ferroamp.eso-ts.description = Time stamp when message was published
channel-type.ferroamp.eso-ubat.label = ESO, Voltage On Battery Side
channel-type.ferroamp.eso-ubat.description = Measured on battery side
channel-type.ferroamp.eso-udc.label = ESO, DC Link Voltage
channel-type.ferroamp.eso-udc.description = Dc link voltage as measured by ESO
channel-type.ferroamp.eso-wbatprod.label = ESO, Total Energy Produced
channel-type.ferroamp.eso-wbatprod.description = Total energy produced by ESO, i.e total energy discharged
channel-type.ferroamp.eso-wpbatcons.label = ESO, Total Energy Consumed
channel-type.ferroamp.eso-wpbatcons.description = Total energy consumed by ESO, i.e total energy charged
channel-type.ferroamp.request-auto.label = Configure Auto Power
channel-type.ferroamp.request-auto.description = Set auto power
channel-type.ferroamp.request-charge.label = Configure Charge Power
channel-type.ferroamp.request-charge.description = Charge power in watt
channel-type.ferroamp.request-discharge.label = Configure Discharge Power
channel-type.ferroamp.request-discharge.description = Discharge power in watt
channel-type.ferroamp.ssos0-faultcode.label = SSO, String-0, Fault Code
channel-type.ferroamp.ssos0-faultcode.description = 0x00 = OK, For all other values please contact Ferroamp support
channel-type.ferroamp.ssos0-id.label = SSO, String-0, Unique Identifier
channel-type.ferroamp.ssos0-id.description = Unique identifier of SSO
channel-type.ferroamp.ssos0-ipv.label = SSO, String-0, Current On PV String Side
channel-type.ferroamp.ssos0-ipv.description = Measured on pv string side
channel-type.ferroamp.ssos0-relaystatus.label = SSO, String-0, Relay Status
channel-type.ferroamp.ssos0-relaystatus.description = 0 = relay closed (i.e running power), 1 = relay open/disconnected, 2 = precharge
channel-type.ferroamp.ssos0-temp.label = SSO, String-0, Temperature
channel-type.ferroamp.ssos0-temp.description = Temperature measured on pcb of SSO
channel-type.ferroamp.ssos0-ts.label = SSO, String-0, Time Stamp
channel-type.ferroamp.ssos0-ts.description = Time stamp when message was published
channel-type.ferroamp.ssos0-udc.label = SSO, String-0, DC Link Voltage
channel-type.ferroamp.ssos0-udc.description = Dc link voltage as measured by SSO
channel-type.ferroamp.ssos0-upv.label = SSO, String-0, Voltage On PV String Side
channel-type.ferroamp.ssos0-upv.description = Measured on pv string side
channel-type.ferroamp.ssos0-wpv.label = SSO, String-0, Total Energy Produced
channel-type.ferroamp.ssos0-wpv.description = Total energy produced by SSO
channel-type.ferroamp.ssos1-faultcode.label = SSO, String-1, Fault Code
channel-type.ferroamp.ssos1-faultcode.description = 0x00 = OK, For all other values please contact Ferroamp support
channel-type.ferroamp.ssos1-id.label = SSO, String-1, Unique Identifier
channel-type.ferroamp.ssos1-id.description = Unique identifier of SSO
channel-type.ferroamp.ssos1-ipv.label = SSO, String-1, Current On PV String Side
channel-type.ferroamp.ssos1-ipv.description = Measured on pv string side
channel-type.ferroamp.ssos1-relaystatus.label = SSO, String-1, Relay Status
channel-type.ferroamp.ssos1-relaystatus.description = 0 = relay closed (i.e running power), 1 = relay open/disconnected, 2 = precharge
channel-type.ferroamp.ssos1-temp.label = SSO, String-1, Temperature
channel-type.ferroamp.ssos1-temp.description = Temperature measured on pcb of SSO
channel-type.ferroamp.ssos1-ts.label = SSO, String-1, Time Stamp
channel-type.ferroamp.ssos1-ts.description = Time stamp when message was published
channel-type.ferroamp.ssos1-udc.label = SSO, String-1, DC Link Voltage
channel-type.ferroamp.ssos1-udc.description = Dc link voltage as measured by SSO
channel-type.ferroamp.ssos1-upv.label = SSO, String-1, Voltage On PV String Side
channel-type.ferroamp.ssos1-upv.description = Measured on pv string side
channel-type.ferroamp.ssos1-wpv.label = SSO, String-1, Total Energy Produced
channel-type.ferroamp.ssos1-wpv.description = Total energy produced by SSO
channel-type.ferroamp.ssos2-faultcode.label = SSO, String-2, Fault Code
channel-type.ferroamp.ssos2-faultcode.description = 0x00 = OK, For all other values please contact Ferroamp support
channel-type.ferroamp.ssos2-id.label = SSO, String-2, Unique Identifier
channel-type.ferroamp.ssos2-id.description = Unique identifier of SSO
channel-type.ferroamp.ssos2-ipv.label = SSO, String-2, Current On PV String Side
channel-type.ferroamp.ssos2-ipv.description = Measured on pv string side
channel-type.ferroamp.ssos2-relaystatus.label = SSO, String-2, Relay Status
channel-type.ferroamp.ssos2-relaystatus.description = 0 = relay closed (i.e running power), 1 = relay open/disconnected, 2 = precharge
channel-type.ferroamp.ssos2-temp.label = SSO, String-2, Temperature
channel-type.ferroamp.ssos2-temp.description = Temperature measured on pcb of SSO
channel-type.ferroamp.ssos2-ts.label = SSO, String-2, Time Stamp
channel-type.ferroamp.ssos2-ts.description = Time stamp when message was published
channel-type.ferroamp.ssos2-udc.label = SSO, String-2, DC Link Voltage
channel-type.ferroamp.ssos2-udc.description = Dc link voltage as measured by SSO
channel-type.ferroamp.ssos2-upv.label = SSO, String-2, Voltage On PV String Side
channel-type.ferroamp.ssos2-upv.description = Measured on pv string side
channel-type.ferroamp.ssos2-wpv.label = SSO, String-2, Total Energy Produced
channel-type.ferroamp.ssos2-wpv.description = Total energy produced by SSO
channel-type.ferroamp.ssos3-faultcode.label = SSO, String-3, Fault Code
channel-type.ferroamp.ssos3-faultcode.description = 0x00 = OK, For all other values please contact Ferroamp support
channel-type.ferroamp.ssos3-id.label = SSO, String-3, Unique Identifier
channel-type.ferroamp.ssos3-id.description = Unique identifier of SSO
channel-type.ferroamp.ssos3-ipv.label = SSO, String-3, Current On PV String Side
channel-type.ferroamp.ssos3-ipv.description = Measured on pv string side
channel-type.ferroamp.ssos3-relaystatus.label = SSO, String-3, Relay Status
channel-type.ferroamp.ssos3-relaystatus.description = 0 = relay closed (i.e running power), 1 = relay open/disconnected, 2 = precharge
channel-type.ferroamp.ssos3-temp.label = SSO, String-3, Temperature
channel-type.ferroamp.ssos3-temp.description = Temperature measured on pcb of SSO
channel-type.ferroamp.ssos3-ts.label = SSO, String-3, Time Stamp
channel-type.ferroamp.ssos3-ts.description = Time stamp when message was published
channel-type.ferroamp.ssos3-udc.label = SSO, String-3, DC Link Voltage
channel-type.ferroamp.ssos3-udc.description = Dc link voltage as measured by SSO
channel-type.ferroamp.ssos3-upv.label = SSO, String-3, Voltage On PV String Side
channel-type.ferroamp.ssos3-upv.description = Measured on pv string side
channel-type.ferroamp.ssos3-wpv.label = SSO, String-3, Total Energy Produced
channel-type.ferroamp.ssos3-wpv.description = Total energy produced by SSO

View File

@ -461,16 +461,6 @@
<description>Has the system a battery connected?</description>
<default>false</default>
</parameter>
<parameter name="eso" type="boolean" required="false">
<label>ESO Module Available</label>
<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>Has the system an Esm unit connected?</description>
<default>false</default>
</parameter>
</config-description>
</thing-type>