[senechome] issue #10679: Extend with additional channels; refactor and various improvements (#10687)

* [senechome] Extend with additional channels; refactor; improve error handling (#10679). Merged PR 9535 (rename batteryState to system state)

- charge/discharge energy/current/voltage/min/maxCellVoltage/load cycles per battery pack
- current/power/voltage per MPP
- liveHouseConsumption/livePowerGenerator
- battery,case,MCU temperature
- wallbox1: state, charging power/current, liveEnergy
- improve error handling, catch malformed JSON exception to prevent crashing the binding
- merged PR: 9535 (rename batteryState to systemState)
- renamed SenecHomeLimitation to SenecHomePower and added more channels
- refactored SenecHomeHandler to reduce code duplication (added some nice helper methods)

Signed-off-by: Erwin Guib <eguib@web.de>
This commit is contained in:
eguib
2021-05-29 14:29:20 +02:00
committed by GitHub
parent 04507d98fc
commit 3875d2aca5
18 changed files with 1227 additions and 290 deletions

View File

@@ -11,8 +11,13 @@ Examples: Lights, pool filters, wash machines, ...
| Thing type id | Name |
|----------------------|-----------------------------------------------|
| senechome | Senec Home Lithium Battery, V2.0, V2.1 and V3 |
| senechome | Senec Home Lithium Battery, V2.0, V2.1, V3 and V3duo |
**Note:** Not all channels are available for all Senec Home types. E.g.
* only V3, V3duo have a power generator and thus MPPs (V3 has 2 MPP, V3duo has 3 MPP)
* not equipped battery packs will return 0 for all ...Pack channels
* currently channels for the first wallbox are implemented (senec could handle 4 wallboxes)
## Thing Configuration
@@ -34,12 +39,23 @@ The property `limitationTresholdValue` is used as threshold for channel `powerLi
|-----------------------|-----------|--------------------------------------------------------------------------|
| powerLimitation | percent | How much is your pv generator limited (0% if not limited anyway) |
| powerLimitationState | ON/OFF | Power limitation active (based on configuration) |
| currentMPP1 | ampere | PV generator current on MPP1 |
| currentMPP2 | ampere | PV generator current on MPP2 |
| currentMPP3 | ampere | PV generator current on MPP3 |
| powerMPP1 | watt | PV generator power on MPP1 |
| powerMPP2 | watt | PV generator power on MPP2 |
| powerMPP3 | watt | PV generator power on MPP3 |
| voltageMPP1 | volt | PV generator voltage on MPP1 |
| voltageMPP2 | volt | PV generator voltage on MPP2 |
| voltageMPP3 | volt | PV generator voltage on MPP3 |
| houseConsumption | watt | Current power consumption of your house/living |
| energyProduction | watt | Energy generated by your pv / inverter |
| batteryPower | watt | Energy processed by batterie itself, for example while charging |
| batteryPower | watt | Energy processed by battery negative discharge, positive charge |
| batteryCurrent | ampere | Battery current negative discharge, positive charge |
| batteryVoltage | volt | Battery Voltage |
| batteryFuelCharge | percent | Fuel charge of your battery (0 - 100%) |
| batteryState | | Text describing current action of battery (e.g. CHARGE) |
| batteryStateValue | | Value describing current action of battery (e.g. 14) |
| systemState | | Text describing current action of the senec home system (e.g. CHARGE) |
| systemStateValue | | Value describing current action of the senec home system (e.g. 14) |
| gridPower | watt | Grid power level, negative for supply, positive values for drawing power |
| gridPowerDraw | watt | Absolute power level of power draw, zero while supplying |
| gridPowerSupply | watt | Absolute power level of power supply, zero while drawing |
@@ -53,11 +69,50 @@ The property `limitationTresholdValue` is used as threshold for channel `powerLi
| gridVoltagePhase2 | volt | Grid voltage on Phase 2 |
| gridVoltagePhase3 | volt | Grid voltage on Phase 3 |
| gridFrequency | hertz | Grid frequency |
| SenecBatteryVoltage | volt | Battery Voltage |
| SenecLiveBatCharge | watt hour | Live Bat Charge |
| SenecLiveBatDischarge | watt hour | Live Bat Discharge |
| SenecLiveGridImport | watt hour | Live Grid Import |
| SenecLiveGridExport | watt hour | Live Grid Export |
| liveBatCharge | kilo watt hour | Live Total Bat Charge |
| liveBatDischarge | kilo watt hour | Live Total Bat Discharge |
| liveGridImport | kilo watt hour | Live Total Grid Import |
| liveGridExport | kilo watt hour | Live Total Grid Export |
| liveHouseConsumption | kilo watt hour | Live Total House Consumption (without WB) |
| livePowerGenerator | kilo watt hour | Live Total PV generator generated energy |
| liveEnergyWallbox1 | kilo watt hour | Live Total Wallbox 1 charged energy |
| chargedEnergyPack1 | kilo watt hour | total charged energy battery pack 1 |
| chargedEnergyPack2 | kilo watt hour | total charged energy battery pack 2 |
| chargedEnergyPack3 | kilo watt hour | total charged energy battery pack 3 |
| chargedEnergyPack4 | kilo watt hour | total charged energy battery pack 4 |
| dischargedEnergyPack1 | kilo watt hour | total discharged energy battery pack 1 |
| dischargedEnergyPack2 | kilo watt hour | total discharged energy battery pack 2 |
| dischargedEnergyPack3 | kilo watt hour | total discharged energy battery pack 3 |
| dischargedEnergyPack4 | kilo watt hour | total discharged energy battery pack 4 |
| cyclesPack1 | | battery charge/discharge cycles pack 1 |
| cyclesPack2 | | battery charge/discharge cycles pack 2 |
| cyclesPack3 | | battery charge/discharge cycles pack 3 |
| cyclesPack4 | | battery charge/discharge cycles pack 4 |
| currentPack1 | ampere | battery current pack 1 |
| currentPack2 | ampere | battery current pack 2 |
| currentPack3 | ampere | battery current pack 3 |
| currentPack4 | ampere | battery current pack 4 |
| voltagePack1 | volt | battery voltage pack 1 |
| voltagePack2 | volt | battery voltage pack 2 |
| voltagePack3 | volt | battery voltage pack 3 |
| voltagePack4 | volt | battery voltage pack 4 |
| maxCellVoltagePack1 | volt | maximum cell voltage battery pack 1 |
| maxCellVoltagePack2 | volt | maximum cell voltage battery pack 2 |
| maxCellVoltagePack3 | volt | maximum cell voltage battery pack 3 |
| maxCellVoltagePack4 | volt | maximum cell voltage battery pack 4 |
| minCellVoltagePack1 | volt | minimum cell voltage battery pack 1 |
| minCellVoltagePack2 | volt | minimum cell voltage battery pack 2 |
| minCellVoltagePack3 | volt | minimum cell voltage battery pack 3 |
| minCellVoltagePack4 | volt | minimum cell voltage battery pack 4 |
| batteryTemperature | celsius | battery temperature (maximum of all battery packs) |
| caseTemperature | celsius | case temperature |
| mcuTemperature | celsius | MCU (main control unit) temperature |
| wallbox1State | | Wallbox 1 state as Text (e.g. Charging) |
| wallbox1StateValue | | Wallbox 1 state as value (e.g. 194) |
| wallbox1ChargingCurrentPhase1 | ampere | Wallbox 1 charging current Phase 1 |
| wallbox1ChargingCurrentPhase2 | ampere | Wallbox 1 charging current Phase 2 |
| wallbox1ChargingCurrentPhase3 | ampere | Wallbox 1 charging current Phase 3 |
| wallbox1ChargingPower | watt | Wallbox 1 charging power |
## Items
@@ -70,8 +125,8 @@ Number SenecHouseConsumption "Current power consumption [%d W]" <e
Number SenecEnergyProduction "Energy generated by pv [%d W]" <energy> { channel="senechome:senechome:pvbattery:energyProduction" }
Number SenecBatteryPower "Energy processed by battery [%d W]" <energy> { channel="senechome:senechome:pvbattery:batteryPower" }
Number SenecBatteryFuelCharge "State of Charge [%d %%]" <batterylevel> { channel="senechome:senechome:pvbattery:batteryFuelCharge" }
String SenecBatteryState "Current action [%s]" <text> { channel="senechome:senechome:pvbattery:batteryState" }
Number SenecBatteryStateValue "Current action [%d]" <text> { channel="senechome:senechome:pvbattery:batteryStateValue" }
String SenecSystemState "Current system state [%s]" <text> { channel="senechome:senechome:pvbattery:systemState" }
Number SenecSystemStateValue "Current system state [%d]" <text> { channel="senechome:senechome:pvbattery:systemStateValue" }
Number SenecGridPower "Grid power level [%d W]" <energy> { channel="senechome:senechome:pvbattery:gridPower" }
Number SenecGridPowerDraw "Power draw from grid [%d W]" <energy> { channel="senechome:senechome:pvbattery:gridPowerDraw" }
Number SenecGridPowerSupply "Power supply to grid [%d W]" <energy> { channel="senechome:senechome:pvbattery:gridPowerSupply" }
@@ -105,8 +160,8 @@ Text label="Power Grid"{
Default item=SenecEnergyProduction
Default item=SenecBatteryPower
Default item=SenecBatteryFuelCharge
Default item=SenecBatteryState
Default item=SenecBatteryStateValue
Default item=SenecSystemState
Default item=SenecSystemStateValue
Default item=SenecGridPower
Default item=SenecGridPowerDraw
Default item=SenecGridPowerSupply