Releases: OpenEMS/openems
2025.1.0
Release Highlights
-
Implement Long Short-Term Memory (LSTM) predictor by awesome @Bishalghimire1997 in #2721
- The Long Short-Term Memory (LSTM) model is a type of recurrent neural network (RNN) that is particularly well-suited for time series prediction tasks, including consumption and production power predictions, due to its ability to capture dependencies and patterns over time. https://en.wikipedia.org/wiki/Long_short-term_memory[More details on LSTM]
- This application is used for predicting consumption power values.
-
Update to Java 21 by superhero @da-Kai in #2890
- We will start 2025 with an update to latest LTS version Java 21, released on 19th September 2023 (https://en.wikipedia.org/wiki/Java_version_history#Release_table).
-
TimeOfUseTariff: further improvements and support for EVCS optimization by @sfeilmeier in #2947
- See Community post for details: https://community.openems.io/t/time-of-use-charge-electric-vehicle/4961
Details
Common/General
- Update Debian File to Java 21 by @Sn0w3y in #2921
- Fix Deprecated Warnings for Compatibility with Java 21 by @Sn0w3y in #2922
- Update chart.adoc Link for GitHub Code by @Sn0w3y in #2910
OpenEMS Edge
- FEMS Backports 2024-12-10 in #2916
- ENTSO-E: added preferred resolution config
- ModbusTcpApi: fix updating ModbusRecordTable
- Clears ModbusList on initializing => components, that are removed in the modbus component_ids cant be accessed by qmodmaster anymore.
- Fixed ModbusComponents getting actually removed out of array => resulted in write commands not being executed after esscluster change
- High Prio because this bug could lead to serious problems on our systems, especially on Industrial systems.
- ToU: resolution property addition in ENTSO-E App + fix ENTSO-E timing
- Added resolution property to be able to be configurable through APP.
- Fixed the ENTSO-E Bug where prices are mismatched by 15 mins.
- Prediction ValueRange: fix possible NPE if value is null
- In my refactoring of the Prediction class I missed handling of a situation where a NullPointerException could happen.
- This leads to the problem that - if no local historic values are existing, e.g. after system outage or at IBN, the prediction fails with a NullPointerException.
- Time-of-Use-Tariff: apply ESS_MAX_SOC in Run-State
- Unfortunately this had been lost during splitting of Optimizer and ToU-Controller
- Also increasing the value to 94 % to take into account larger storage systems
- EVCS Mennekes Read Only implementation
- Mennekes Implementation from OpenEMS PR #2082
- Added App for Mennekes
- Added new App Category for Read Only Evcs
- Added Read only to mennekes config
- Core: add Greece to safety country list
- Backport GoodWe Grid.Meter fix; relates to #2895
- FEMS Backports 2024-12-18 in #2932
- EVCS Api State: remove CHARGING_FINISHED, i.e. "Car is full"
- Removed "CHARGING_FINISHED" from Status in evcs.api
- Fix for every part where CHARGING_FINISHED was referenced
- Fix CI Build: remove OCPP dependency javax.xml.soap
- Edge: Mennekes Occupied Check
- Added Check if ActivePower is present when mapping the OcppStatus 1 of the Mennekes Register 104.
- Controller.Ess.EmergencyCapacityReserve: recharge from grid
- Config setting + channel in Meta Component
- new state for in satemachine of emergencyreservesoc
- change logic of statehandlers to include new state
- EVCS Api State: remove CHARGING_FINISHED, i.e. "Car is full"
OpenEMS UI
- Websocket: WSS instead of WS if page is accessed via HTTPS by @helgeklein in #2937
- Fix Filter Style after Migration to Angular 19 by @Sn0w3y in #2934
- Fix Style of Level ion-select after Upgrade to Angular 19 by @Sn0w3y in #2933
- FEMS Backports 2024-12-10 in #2916
- dynamic scaling for charts and start scales at least at 0
- Redoing feature that yAxis scale has dynamic scale and didnt have to start at 0
- adjust server not accessible page for local monitoring
- Adjusting server not accessible page for local monitoring,
- update last updated timestamp for empty edge
- Updating
lastUpdated
timestamp even if edge config is empty,_sum/State
still exists
- Updating
- show absolute value for grid current value in modal
- Use absolute value for grid modal current, text on the current value shows state
grid-feed-in
orgrid-buy
- Use absolute value for grid modal current, text on the current value shows state
- Offline-Page Translations
- ToU chart bugfix regarding dynamic scaling
- Darkmode
- some color changes were done for both light and dark mode
- dynamic scaling for charts and start scales at least at 0
- FEMS Backports 2024-12-18 in #2932
- Add Custom Min Value for Y-Axis in Charts to enhance schedule display
- dark mode improvements
- replace legacy percentagebar
- delete unused old systemupdate component
- change header title color
- Emergency Reserve with Charge-from-Grid
Version Upgrades
- Build(deps): Bump the ngx-formly group in /ui with 2 updates by @dependabot in #2889
- Build(deps): Bump the capacitor group in /ui with 7 updates by @dependabot in #2888
- Build(deps-dev): Bump the eslint group across 1 directory with 2 updates by @dependabot in #2886
- Build(deps): Bump chartjs-plugin-zoom from 2.0.1 to 2.2.0 in /ui by @dependabot in #2905
- Build(deps): Bump chart.js from 4.4.6 to 4.4.7 in /ui by @dependabot in #2904
- Build(deps-dev): Bump @typescript-eslint/types from 8.16.0 to 8.17.0 in /ui in the eslint group by @dependabot in #2902
- Build(deps): Bump org.jetbrains.kotlin:kotlin-osgi-bundle from 2.0.21 to 2.1.0 in /cnf by @dependabot in #2900
- Build(deps): Bump org.jsoup:jsoup from 1.18.1 to 1.18.3 in /cnf by @dependabot in #2897
- Build(deps): Bump io.reactivex.rxjava3:rxjava from 3.1.9 to 3.1.10 in /cnf by @dependabot in #2898
- Build(deps): Bump biz.aQute.bnd:biz.aQute.bnd.gradle from 7.0.0 to 7.1.0 in /cnf by @dependabot in #2899
- Build(deps): Bump org.ops4j.pax.logging:pax-logging-log4j2 from 2.2.1 to 2.2.7 in /cnf by @dependabot in #2915
- Build(deps-dev): Bump the eslint group in /ui with 3 updates by @dependabot in #2919
- Build(deps): Bump de.bytefish:pgbulkinsert from 8.1.4 to 8.1.5 in /cnf by @dependabot in #2924
- Build(deps): Bump fr.turri:aXMLRPC from 1.14.0 to 1.15.0 in /cnf by @dependabot in #2925
- Build(deps): Bump com.google.guava:guava from 33.3.1-jre to 33.4.0-jre in /cnf by @dependabot in #2927
- Build(deps): Bump io.jenetics:jenetics from 7.2.0 to 8.1.0 in /cnf by @dependabot in #2795
- Bump net.java.dev.jna:jna from 5.15.0 to 5.16.0 in /cnf by @dependabot in #2939
- Bump fr.turri:aXMLRPC from 1.15.0 to 1.16.0 in /cnf by @dependabot in #2940
- Bump org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm from 1.9.0 to 1.10.1 in /cnf by @dependabot in #2938
- Bump @typescript-eslint/types from 8.18.1 to 8.19.0 in /ui in the eslint group across 1 directory by @dependabot in #2948
- Bump @ngx-translate/core from 16.0.3 to 16.0.4 in /ui by @dependabot in #2945
- Bump capacitor-blob-writer from 1.1.18 to 1.1.19 in /ui by @dependabot in #2944
- Bump @schematics/angular from 19.0.5 to 19.0.6 in /ui by @dependabot in #2943
- Bump the angular group across 1 directory with 3 updates by @dependabot in #2942
New Contributors
- @Bishalghimire1997 made their first contribution in #2721
- @helgeklein made their first contribution in #2937
Full Changelog: 2024.12.0...2025.1.0
2024.12.0
Details
Common/General
- Update postinst by @Sn0w3y in #2862
- FEMS Backports 2024-11-19 in #2882
- Update Gradle to 8.11
- Update codecov settings by @da-Kai in #2891
OpenEMS Edge
- FEMS Backports 2024-11-19 in #2882
- Backend Api Controller: randomize sending aggregated data
- distribute sending data over (almost) whole 5 minutes to have not all data at once in the backend
- added sparate executor for aggregated tasks
- use single created "now" timestamp
- add randomiser for sending aggregated tasks between 0sec - 270sec
- Home 6, 10 & 15: Apps
- RabotCharge: authenticate via OAuth credentials
- updated price retrieving
- use oauth client for credentials
- only zipcode needed for local prices
- AppCenter: use new modbus portName for new hardware (Home 20 & 30 & Gen2 & Commercial 92)
- Preparation for new OpenEMS Hardware
- use new modbus port for new hardware
- AppCenter: add 14a for home gen2 (6 & 10 & 15 kw) and commercial
- Update 14a Controller in Scheduler to be at the top
- 1added Setting to enable 14a in Commercial 92 & Home Gen 2 Apps
- GoodWe: add NA-protection property
- The hardware block at the goodwe responsible for three functions needs to be enabled/disabled if at least one of this external limitation function is needed.
- Functions of Register 47010 (DRED_REMOTE_SHUTDOWN_RCR_FUNCTIONS_ENABLE)
- DRED
- Remote Shutdown (NA-Schutz)
- RCR (Rundsteuerempfänger)
- AppCenter: Renamed gen2 Home Apps
- AppCenter: disallow EMS IP in AppCenter IP-Address input
- new standard prop "excludingIp" in common props of apps
- Formly builder gets all IPs via new Request and builds a RegEx using those ips
- formly builder is then set as a validator
- json rpc request that gets all ip addresses of the system
- Time-of-use-Tariff: integrate ESS-Limiter §14a EnWG Controller
- Remove static config in ToU-Controller; instead apply Limiter.RESTRICTED_MODE of referenced
ControllerEssLimiter14a
- Fix Limiter Channel type to BOOLEAN
- Remove static config in ToU-Controller; instead apply Limiter.RESTRICTED_MODE of referenced
- ModbusUtils : Extension to read element once using FC4 function code
- the "readElementsOnce" was designed to use FC3. Some modbus devices require FC4 instead. This change now requires explicit definition of the
FunctionCode
.
- the "readElementsOnce" was designed to use FC3. Some modbus devices require FC4 instead. This change now requires explicit definition of the
- Prediction & TimeOfUseTariff: improve
- Extract common methods to an abstract QuarterlyValues class
- Make sure ZonedDateTime
isEqual()
method is used to retrieve values. Before the ZoneId would make a difference (see new test in DummyPredictorManagerTest.java) - Use Guavas ImmutableSortedMap which does not anymore allow
null
values
- Backend Api Controller: randomize sending aggregated data
- Feature/Dummy MacOS Support by @thomasjbhayes in #2884
- Fix EssDcCharger nature on modbus by @simon-lgb in #2892
- FEMS Backports 2024-12-01 by @sfeilmeier in #2894
- Carlo Gavazzi Meter: fix scaling and extended DummyModbusBridge testing
- Fixes scaling of Carlo Gavazzi meter
- Currently the current is way too high (x100)
- Added JUnit tests
- BMW Battery: backports of improvements.
- Meter : Implementation of Simens Sicam meter
- Time-of-Use-Tariff & EnergyScheduler V2 improvements
- Allow managed consumption in EnergyFlow
- Fix postprocessing
- Move version and risk-level to EnergyScheduler
- Implement Codec for Jenetics
- Prepare attachments to OneSimulationContext
- Optimizer: improve thread interrupt
- Rework InitialPopulation to use int[][] instead of Chromosome
- Fix immediate reaction to configuration change events
- Prepare integration of EVCS
- Carlo Gavazzi Meter: fix scaling and extended DummyModbusBridge testing
OpenEMS UI
- FEMS Backports 2024-11-19 in #2882
- UI: restructure test env
- restructure test env to be suited for ibn unittests
TestingUtils.mergeSetup
makes setting up effective test environments easier
- UI: adjust app reload behaviour
- Replacing time of use title with Cent instead of cent per kWh
- UI: introduce first lazy loaded module "Changelog"
- try angular 18 feature of standalone lazy loaded components
- -> ref -> reduces init bundle size
- decrease size of init app bundle
- Fetched on app init
- Resources for changelog now only fetched if route got activated
- try angular 18 feature of standalone lazy loaded components
- UI: Currency label based on "Core.Meta" instead of edge id
- Time-of-Use-Tariff history: apply rounding to state
- Apply rounding of decimal values to states
- UI: fix duplicated appearance of apps when key is redeemed
- Currently incompatible apps are shown multiple times when a key is redeemed
- This is due to an already filled array getting filled again.
- To prevent this, the array is cleared out before the apps are getting shown.
- UI: evcs activePower is used if needed
- utils class for evcs
- static method that checks which channelId has to be read for the power value of the evcs
- history and live widget of evcs use static method
- UI: fix wrong display yAxis tick in heatingElement and changelog translation
- Fix translations in changelogmodule
- Fix last yAxis tick to be a number instead of
kW
in heating element history
- UI: make changelog scrollable again
changelog
was not scrollable
- UI: Time-of-use: Change visibility of datasets and fix yAxis title
- Change ordering of datasets, that
GridBuy
is at the forefront - fix y Axis title to display
Cent
instead ofkW
- fix scaling issues with null values caused by
GridBuy
dataset
- Change ordering of datasets, that
- UI: restructure test env
- Fix ChpSoc style by @da-Kai in #2885
- FEMS Backports 2024-12-01 in #2894
- Use dataService subcribe for energymonitor channels
- Replace energymonitor
currentData
subscribe with dataService subscribe
- Replace energymonitor
- Add eslint rule for file naming conventions
- Adding eslint rule for
kebab-case
file naming convention, turned tooff
regarding too many changes needed
- Adding eslint rule for
- Adjust live reload behavior
- Adjust pull to refresh, to be more appearant and give user feedback if live data is still up to date -> didnt update in
20
seconds - make banner sticky
- Adjust pull to refresh, to be more appearant and give user feedback if live data is still up to date -> didnt update in
- AppCenter: added uninstallation confirm button
- added confirmation button when deinstalling an app
- Use dataService subcribe for energymonitor channels
Version Upgrades
- Build(deps): Bump the bouncycastle group in /cnf with 2 updates by @dependabot in #2867
- Build(deps-dev): Bump the eslint group across 1 directory with 2 updates by @dependabot in #2865
- Build(deps): Bump uuid from 10.0.0 to 11.0.2 in /ui by @dependabot in #2861
- Build(deps): Bump com.zaxxer:HikariCP from 6.0.0 to 6.1.0 in /cnf by @dependabot in #2872
- Build(deps): Bump the angular group across 1 directory with 3 updates by @dependabot in #2878
- Build(deps): Bump com.zaxxer:HikariCP from 6.1.0 to 6.2.1 in /cnf by @dependabot in #2877
- Build(deps): Bump codecov/codecov-action from 4 to 5 in /.github/workflows by @dependabot in #2875
New Contributors
- @thomasjbhayes made their first contribution in #2884
- @simon-lgb made their first contribution in #2892
Full Changelog: 2024.11.0...2024.12.0
2024.11.0
Release Highlights
- Improved Excel Export in #2846
- FFR: Fast Frequency Response Controller in #2835
- Improved State-Machine for Energy Storage Systems; this includes downgrading many FAULT states to WARNING! in #2835
- Modbus-Bridge: fix seldom but critical race condition in #2835
- HardyBarth Wallbox: full refactoring based on HTTP-Bridge in #2846
- EVCS implements ElectricityMeter; includes per-phase measuring of charging power and configurable PhaseRotation in #2835
- Improvements to JUnit test framework + possibility to test raw modbus reads in #2846 and #2863
- First iteration of new Energy Scheduler for time-of-use tariffs in #2789
- New channel
_host/OsVersion
: read os version as string in #2863 - Time-of-use-Tariff: new provider Swisspower; improvements to ENTSO-E in #2839 and #2863
- Lots of UI bugfixes and improvements
Details
Common/General
- Add docker deploy documentation by @da-Kai in #2829
- Add hint to README to fix an error with building a Docker image by @j-eissler in #2833
- FEMS Backports 2024-10-19 in #2846
- Update gradle to 8.10.2
- Update Checkstyle to 10.18.2 by @sfeilmeier in #2847
- HardyBarth Wallbox: full refactoring, using HTTP-Bridge
OpenEMS Backend
- FEMS Backports 2024-10-11 in #2835
- WsData:
- reduce logging noise
- Instead of
[ctrlBackend0] [BackendApi.WsData []] Unable to send message:
- Only:
[ctrlBackend0] Unable to send message:
- Extend payload from 100 to 200 chars
- WsData:
- FEMS Backports 2024-10-19 in #2846
- Extend export to Excel file
- Added detailed data for the excel export of historic data
- Extend export to Excel file
OpenEMS Edge
- FEMS Backports 2024-10-11 in #2835
- FFR: Fast Frequency Response Controller
- Includes:
-
- Fast Frequency request controller.
-
- Junit test cases.
-
- Step Response Tester changes in the simulated meter. To test FFR with the simulator meter's frequency.
- EVCS HardyBarth: set "No meter values available" as WARN + translate
- Changed StateChannel "METER_NOT_AVAILABE" of the HardyBarth component to level WARNING
- Added translation files for bundle and channel
- Batteries/Battery-Inverters: downgrade FAULT states to WARNING
- Downgrade of all possible FAULT states to WARNING states
- Whenever one of these states would be true, the EssGeneric will stop the battery and the inverter. If this is necessary, it must be specifically mentioned and the state should have a proper description of the fault.
- EVCS KEBA: downgrade fault for Dip Switch 2.6, because it is now used for §14a
- ModbusBridge: invalidate Elements on removeProtocol()
- Invalidate (i.e. set UNDEFINED/null) Elements on
removeProtocol()
- JUnit test shows behaviour. REGISTER_100 is null after
removeProtocol()
- Invalidate (i.e. set UNDEFINED/null) Elements on
- ModbusTcpApi: improvements
- Fixes error taking alias (of ess) instead of Component ID. This will fix dynamically generating channel addresses.
- ActivePowerLimit and ReactivePowerLimit result in NaN if null
- Improved reusability of code through methods
- Removed constant strings
- KACO Battery Inverter: fix state transition ERROR to UNDEFINED, Frequency channel
- Return from Error Handling to Undefined
- Fix Hz channel name
- Updates for FENECON Home battery
- Adjust modbus task priority level
- Reduce number of tasks
- Improve stopping process
- Improve contains task check in Modbus Bridge
- EVCS: Hystereses with info in UI
- Hystereses for Charging stations two config values are now shown in the ui for the evcs controller
- Generic-ESS state machine improvement
- The main approach is to have a statemachine which can be run all our current systems and avoiding retry start process.
- Related to any 'Error Handling' topic should be improved or implemented seperately and required a defined generic 'Error handling' concept, which can be applied for all systems.
- Instead of maximum start or stop time attempts, starting or stopping timeouts are taken care of and shown in UI as an failure. By doing this, its aimed to let the service or engineers to analyze the failure, and forbid to harm the battery by taking an action without know-how knowledge.
- KACO BatteryInverter: component activate improvements + ModbusSlave
- Removed second activate annotation
- always set configuration in activate
- EssPower: handle Exceptions in handleEvent()
- Fix critical race condition in Modbus Bridge
- Modbus-Bridge: fix criticial race condition! If ON_EXECUTE_WRITE was called before ON_BEFORE_PROCESS_IMAGE, the forever()-loop could get stuck forever, because
cycleTasks
was never initialized. - A usual cycle looks like this: ON_BEFORE_PROCESS_IMAGE -> other events -> ON_EXEUCTE_WRITE -> long wait -> ON_BEFORE_PROCESS_IMAGE -> ...
- The time between ON_BEFORE_PROCESS_IMAGE and ON_EXEUCTE_WRITE is typically very short, especially before all Controllers are activated. This applies for the time when usually a Modbus Bridge gets activated, because this happens before all Devices and Controllers. As a result it was very unlikely, that Modbus-Bridge would receive ON_EXEUCTE_WRITE before ON_BEFORE_PROCESS_IMAGE. During activating and modifying of many components at the same time after initial setup (IBN via App Center) it seems it was much more likely for this race condition to happen.
- In this very unlikely case, unfortunately the
CycleTasksManager
would get stuck, as can be seen in this log:
- Modbus-Bridge: fix criticial race condition! If ON_EXECUTE_WRITE was called before ON_BEFORE_PROCESS_IMAGE, the forever()-loop could get stuck forever, because
- FFR: Fast Frequency Response Controller
[modbus1] State: FINISHED -> WRITE (onExecuteWrite)
[modbus1] WRITE -> WRITE (onExecuteWrite)
[modbus1] WRITE unchanged (in onBeforeProcessImage) Delay [0] (time is invalid)
[modbus1] WRITE -> WRITE (onExecuteWrite)
[modbus1] WRITE unchanged (in onBeforeProcessImage) Delay [0] (time is invalid)
...
- This problem was solved by initializing `this.cycleTasks` from `tasksSupplier`.
- New behaviour is proven to work in `CycleTasksManagerTest.java`, `testExecuteWriteBeforeNextProcessImage()` which would fail with previous code.
- Modbus-Bridge:
- ignore events before activate
- renew logging to show Component-ID everywhere
- RRD4j: reduce log warnings; remove stacktrace; add channelAddress
- EnergyScheduler:
- remove unnecessary log message
- add log verbosity
- cleanup config
- AbstractWorker:
- synchronized activate/modified code
- before calling activate twice would result in an error
- it's still not possible to stop and restart a worker (e.g. when enabling/disabling a component that uses a worker)
- AbstractOpenemsModbusComponent:
- combine common code of activate() and modified()
- removeProtocol and retryModbusCommunication are handled internally by ModbusBridge
- fix modbusReference in modified()
- Home Battery:
- wait for activate to set hardware type default
- ComponentManager is required; otherwise ClockProvider is null during init
- Ess.Power:
- fix ArrayIndexOutOfBoundsException
- fix ConcurrentModificationException when ESS are added/removed
- GoodWe Battery-Inverter: fix handleEvent called before activate. Possible NPE.
- GridOptimized charge requires a production power to run properly
- Avoid exception and inform user about unexpected behaviour of controller
- FEMS Backports 2024-10-19 in #2846
- EVCS HardyBarth: communicate via HTTP-Bridge
- Implemented BridgeHttp in Impl of HardyBarthEvcs
- All Api Calls now flow through that Bridge
- Api Calls (esp. setHeartBeat that previously was synchronous) are now asynchronous
- Add JUnit tests
- EVCS: implement ElectricityMeter
- Migrate all EVCS to ElectricityMeter Nature
- Add
DeprecatedEvcs
Nature to mark EVCS that have to be migrated and still support old Channels ChargePower and ActiveConsumptionEnergy - Implement generic
evaluatePhaseCount()
method - Implement configurable PhaseRotation in configuration and Apps (copied and adjusted from #2047)
- Fix AbstractManagedEvcs deactivate()
- Sum: do not ignore ExtremeEverValues in EdgeConfig
- Java JUnit tests: improve framework + cleanup
- Improve OpenEMS JUnit test framework
- Apply best practices to JUnit tests
- EVCS HardyBarth: communicate via HTTP-Bridge
- Energy Scheduler by @sfeilmeier in #2789
- Introduce generically usable EnergyScheduleHandler (ESH) for executing energy simulations and applying schedules
- Provide nice debugLog output and channel "SimulationsPerQuarter" to detect performance issues
- Use Cache for cost of Genotypes
- Add config property "Version" to be able to switch between old (only ESS, but fast and well tested) and new (generic ESH but slower) implementation.
- Attention: be sure to set EnergyScheduler (
Core.Energy
) andController.Ess.Time-Of-Use-Tariff
to the same Version!
- Attention: be sure to set EnergyScheduler (
- Introduce new implementation of
EnergyFlow
that uses linear constraint validation and optimization - Implement ESHs for
Controller.Ess.Time-Of-Use-Tariff
,- `Controller.E...
- Introduce generically usable EnergyScheduleHandler (ESH) for executing energy simulations and applying schedules
2024.10.0
Last month we attended the OpenEMS Hackathon 2024 in Osnabrück, Germany, at Slashwhy. See the recording on YouTube for details: https://www.youtube.com/watch?v=9FWw0lQY4jc
Details
Upcoming PRs
- Brand new 7-step advanced tutorial in #2791 and #2792
- LSTM predictor in #2721
- Energy Scheduler: refactored time-of-use tariff and energy schedule AI optimizer #2789
Common/General
- Update contributing guidelines by @da-Kai in #2780
- Fix various typos by @luzpaz in #2730
- Codecov: Set flags and components by @da-Kai in #2810
OpenEMS Edge
- FEMS Backports 2024-09 in #2788
- AppCenter: handle hardware specifics via hardware Apps
- AppCenter: App for Phoenix Contact Meter EEM-MB370-24DC
- AppCenter: App for PqPlus Meter UMD96 & UMD97
- Channels: allow translatable Channel descriptions
- Controller.Api.ModbusTcp.ReadWrite: UI live and historic view
- GoodWe: fix StateRegisters
- Simulated Predictor
OpenEMS UI
- add @Stylistic to style rules by @miettal in #2779
- FEMS Backports 2024-09 in #2788
- track connection State & add backend not accessible info
Version Upgrades
- Build(deps): Bump org.dhatim:fastexcel from 0.18.1 to 0.18.2 in /cnf by @dependabot in #2772
- Build(deps): Bump org.apache.felix:org.apache.felix.http.jetty from 5.1.24 to 5.1.26 in /cnf by @dependabot in #2798
- Build(deps): Bump net.java.dev.jna:jna from 5.14.0 to 5.15.0 in /cnf by @dependabot in #2799
- Build(deps): Bump org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm from 1.8.1 to 1.9.0 in /cnf by @dependabot in #2796
- Build(deps): Bump com.squareup.okio:okio-jvm from 3.9.0 to 3.9.1 in /cnf by @dependabot in #2797
- Build(deps): Bump org.apache.felix:org.apache.felix.webconsole from 5.0.6 to 5.0.8 in /cnf by @dependabot in #2818
- Build(deps): Bump com.google.guava:guava from 33.3.0-jre to 33.3.1-jre in /cnf by @dependabot in #2815
- Build(deps): Bump the fastexcel group across 1 directory with 2 updates by @dependabot in #2816
- Build(deps): Bump com.zaxxer:HikariCP from 5.1.0 to 6.0.0 in /cnf by @dependabot in #2817
- Build(deps): Bump swiper from 11.1.11 to 11.1.14 in /ui by @dependabot in #2802
- Build(deps): Bump @capacitor-community/file-opener from 6.0.0 to 6.0.1 in /ui by @dependabot in #2787
- Build(deps): Bump serve-static and express in /ui by @dependabot in #2805
- Build(deps): Bump vite and @angular-devkit/build-angular in /ui by @dependabot in #2808
- Build(deps-dev): Bump the eslint group across 1 directory with 3 updates by @dependabot in #2812
- Build(deps): Bump @angular/common from 18.0.5 to 18.2.5 in /ui in the angular group across 1 directory by @dependabot in #2811
Full Changelog: 2024.9.0...2024.10.0
2024.9.0
Common/General
- Docs: use openems.io-theme repository in openems by @saeedniko in #2754
- Docs: fix build by @da-Kai in #2759
- Docs: fix docs by @Sn0w3y in #2752
OpenEMS Edge
- FEMS-Backports 2024-08 in #2740
- BatteryProtection: actually apply soc-limit
- FEMS-Backports 2024-08 (2) by in #2771
- Rrd4j: Fix query for custom range
- fix start for timeranges with not the first day of the month
- fix readonly only worked with debugmode
- GridOptimizedCharge: avoid fail state in OFF
- Rrd4j: Fix query for custom range
OpenEMS UI
- FEMS-Backports 2024-08 in #2740
- Fix wrong displayed unit in energy chart for
Soc
- Extend subnavigation for consumption, production and grid history
- Add total phases to subnavigation in consumption and production history
- split charts
- Add lastMessage to offline information
- Fix "prod" build
- Fix unit in asymmetric voltagecurrent chart
- Fix wrong displayed unit for current in voltage/current chart
- Realign xAxisLabels
- Fixing xAxis labels in all not refactored charts
- Fix channels error while on same dashboard
- /channels: If you want to see the same dashboard for another fems and just replace the femsNumber in url, creates Errors
- Fix wrong displayed unit in energy chart for
- Apply formatting by @sfeilmeier in #2742
- AppCenter Index: Refresh after install/delete of an App by @DerStoecki in #2533
- Fix for Configuration & Status not populated Fully by @Sn0w3y in #2738
- Fix percentagebar svg by @da-Kai in #2732
- FEMS-Backports 2024-08 (2) by in #2771
- Fix sum chart in consumption history
- Wrong variable used in consumption detail html
- Add routing guards for settings
- Introduction of Routing Guards
- Not visible routes could be accessed through manually going there
- Adding edge role check before accessing this route
- Center refresher-spinner
- Center refresh-content-spinner
- Migration to angular 18
- Update Angular, Zone.js, Typescript
- ESlint: no-multiple-empty-lines
- Fix tooltip afterTitle display bug
- Enforce double quotes
- Enforce usage of double quotes
- prohibit single quotes
- backticks are still usable -> ref
- Add exhaustive switch eslint rule
- Add eslint rule
switch-exhaustiveness-check
- Add eslint rule
- App: Update android api due to googles new policy
- Updating android api level due to googles new policy, enforcing
ANDROID_API_LEVEL=34
to be minimum version
- Updating android api level due to googles new policy, enforcing
- Build android app
- Add CI pipeline for building Android apps
- Reduce history queries & overloading of chartData
- If a history chart takes too long to load and the user switches the timerange, the old timerange will be shown instead of the actual one (at least for a few seconds, until the new chart is finished)
- Replace
setCurrentComponent
withgetCurrentEdge
- setCurrentComponent is already deprecated and shouldnt be used anymore
- Unify fixDigitalOutput & singlethreshold history (#1315)
- Unify and refactor all FixDigitalOutputControllers and SingleThresholds in one widget in history
- Refactoring them and using the new
CumulatedLevelActiveTime
-Channel
- Fix TimeOfUseTariff powerSocChart
- Fix
TypeError: this.options.plugins is undefined
- Fix
- Fix sum chart in consumption history
Version Upgrades
- Build(deps): Bump swiper from 11.1.8 to 11.1.9 in /ui by @dependabot in #2734
- Build(deps): Bump org.jetbrains.kotlin:kotlin-osgi-bundle from 2.0.0 to 2.0.20 in /cnf by @dependabot in #2758
- Build(deps): Bump io.reactivex.rxjava3:rxjava from 3.1.8 to 3.1.9 in /cnf by @dependabot in #2753
- Build(deps): Bump com.influxdb:influxdb-client-core from 7.1.0 to 7.2.0 in /cnf by @dependabot in #2744
- Build(deps): Bump @capacitor/core from 5.7.7 to 5.7.8 in /ui by @dependabot in #2741
- Build(deps): Bump @capacitor/ios from 5.7.7 to 5.7.8 in /ui by @dependabot in #2748
- Build(deps): Bump @capacitor/android from 5.7.7 to 5.7.8 in /ui by @dependabot in #2749
- Build(deps-dev): Bump @capacitor/cli from 6.1.1 to 6.1.2 in /ui by @dependabot in #2750
- Build(deps-dev): Bump axios from 1.6.8 to 1.7.5 in /ui by @dependabot in #2760
- Build(deps): Bump webpack and @angular-devkit/build-angular in /ui by @dependabot in #2761
- Build(deps): Bump org.postgresql:postgresql from 42.7.3 to 42.7.4 in /cnf by @dependabot in #2762
- Build(deps): Bump org.owasp.encoder:encoder from 1.2.3 to 1.3.1 in /cnf by @dependabot in #2763
- Build(deps): Bump com.google.guava:guava from 33.2.1-jre to 33.3.0-jre in /cnf by @dependabot in #2764
- Build(deps-dev): Bump the eslint group in /ui with 2 updates by @dependabot in #2767
- Build(deps): Bump swiper from 11.1.9 to 11.1.11 in /ui by @dependabot in #2768
- Build(deps): Bump chart.js from 4.4.3 to 4.4.4 in /ui by @dependabot in #2769
- Dependabot is now configured to create joint PRs for similar packages
Full Changelog: 2024.8.0...2024.9.0
2024.8.0
Release Highlights
- Backend performance improvements
- Controller and UI for "dimming" of an energy storage system according to German law §14a EnWG
- Lots of code quality improvements in UI
- Not yet in this release, but in the final review: Long short term memory (LSTM) prediction models for Time series Data by @Bishalghimire1997 and @pooran-c
Details
Common/General
- Correct references to build.adoc by @HarmOtten in #1150
- Update build actions by @da-Kai in #2697
- FEMS Backports 2024-07 in #2727
- Gradle: automate version update for android build.gradle
Controller.Ess.Limiter14a
: Edge Controller and UI visualization for "dimming" according to German law §14a EnWG
OpenEMS Backend
- FEMS Backports 2024-07 in #2727
- Performance optimizations
- Drop PerMessageDeflate because it has bad effects on performance with a high number of connected Edges
- Add a copy of Draft6455 which does not throw an exception internally
- Reduce Exceptions
- OnOpen: no unnecessary parsing of handshake + do not throw Exception
- Parse JsonrpcMessage inside Executor Thread
- sendMessage by default never throws Exception
- use StringBuilders where feasible
- throw the same Exception for all disposed requests in WsData
- InfluxDB: remove filter for sunspec channels
- Metadata: add handling of "ems type"
- Aggregated Influx: add channels for ctrlEssLimiter14a0
- Cleanup logs:
- "No measurement provided for zoneId"
- "Channels missing in Current-Data "
- WsData:
- handle failed send message
- set WsData.WebSocket via constructor
- Change debugLog interval to 5 seconds
- Replace run() with standard method names
- Add internal WebsocketPerformanceTestApp
- Drop now unused Websocket DebugMode
- Performance optimizations
- Backend Metadata: reuse getPageDevice method for MetadataFile and MetadataDummy by @sfeilmeier in #2728
OpenEMS Edge
- Unit Tests: Add test case for alphabetical scheduler by @parapluplu in #2698
- SimulatorApp: fix bug related to creation of Ess.Power component by @parapluplu in #2722
- Fix documentation for allowed charge power of managed symmetric ess by @parapluplu in #2714
- FEMS Backports 2024-07 in #2727
- Home Battery:
- fix calculation of number of towers
- handle tower exceptionally not 0/null for some bms versions
- downgrade uncritical states to INFO
- Battery-Protection: add SoC-to-Percent characteristics & implement for FENECON Home Battery
- KACO Battery-Inverter: optimize state machine handling
- MR Gridcon: move obsolete bundle to archive
- Translation keys for timedata category
- Home Battery:
OpenEMS UI
- fix: resolve ts-strict and angular compatibility by @miettal in #2687
- fix: decrease using type of any to get typing benefit by @miettal in #2704
- fix: add type to test code by @miettal in #2702
- fix: add null type to null initialization variables by @miettal in #2701
- fix: add types to edgeconfig.ts by @miettal in #2699
- FEMS Backports 2024-07 in #2727
- Fix Nullpointer thrown through chart.js after failed query.
- Apparently chartjs not having completely rendered datasets and property borderColor was missing
- Extend vscode extensions with 18n ally
- add
i18n ally
to vscode extensions
- add
- Fix ChartJs yAxis scaling for only 0 values in data series
- Chartjs y-axis Scaling for only null or/and 0 values in data series results in doing negative and positive scaling
- Add missing redirect after token expired
- Token expired, old route got reloaded, no redirection to
/login
- Token expired, old route got reloaded, no redirection to
- Add Power-Assistant
- Add Power-Assistant to UI Settings
- Show relevant channels for power constraints; sorted by Scheduler
- Cleanup Settings + separate ADMIN widgets
- Add subnavigation to consumption history
- restructured overdue shared folder
- added current and voltage chart (only visible for Role.INSTALLER to consumption and production history
- added subnavigation to consumption history
- Add missing module for angular date picker
- Add missing import for pickdatepopovercomponent, unittest will follow soon
- Fix live modal visualization of meters
- Add Unittest for angular-my-date-picker
- Testing if button click is opening calendar or rather if this component exists in the DOM after button click
- Move Helpbutton to its right module
- Prepare platform check to login page
- Fix other consumption calculation
- Adding unittest for calculation of other consumption
- Fixing wrong calculation of other consumption for multiple evcs and consumptionMeters
- Refactor gridOptimizedCharge history
- Replace global role with edge role check
- /settings: replacing check for global Role with edge Role
- Add unittest for role in /settings
- Live-EnergyMonitor: use new sum Max/Min ESS DischargePower channels
- refactor variables and methods in right order
- Refactors every variable and method to member-ordering rule.
- See: [https://typescript-eslint.io/rules/member-ordering/]
- Fix Nullpointer thrown through chart.js after failed query.
Version Upgrades
- Bump peaceiris/actions-gh-pages from 3 to 4 in /.github/workflows by @dependabot in #2690
- Bump docker/build-push-action from 5 to 6 in /.github/workflows by @dependabot in #2689
- Build(deps): Bump org.apache.felix:org.apache.felix.webconsole from 5.0.4 to 5.0.6 in /cnf by @dependabot in #2713
- Build(deps): Bump de.bytefish:pgbulkinsert from 8.1.3 to 8.1.4 in /cnf by @dependabot in #2712
- Build(deps): Bump org.jsoup:jsoup from 1.17.2 to 1.18.1 in /cnf by @dependabot in #2711
- Build(deps): Bump org.apache.felix:org.apache.felix.http.jetty from 5.1.22 to 5.1.24 in /cnf by @dependabot in #2710
- Build(deps): Bump swiper from 11.1.4 to 11.1.5 in /ui by @dependabot in #2709
- Build(deps): Bump @ngx-formly/ionic from 6.3.5 to 6.3.6 in /ui by @dependabot in #2708
- Build(deps): Bump capacitor-blob-writer from 1.1.16 to 1.1.17 in /ui by @dependabot in #2707
- Build(deps): Bump @capacitor/core from 5.2.3 to 5.7.6 in /ui by @dependabot in #2695
- Build(deps-dev): Bump @capacitor/cli from 5.2.3 to 6.1.0 in /ui by @dependabot in #2696
- Build(deps-dev): Bump @capacitor/cli from 6.1.0 to 6.1.1 in /ui by @dependabot in #2720
- Build(deps): Bump @capacitor/ios from 5.2.3 to 5.7.7 in /ui by @dependabot in #2719
- Build(deps): Bump compare-versions from 6.1.0 to 6.1.1 in /ui by @dependabot in #2718
- Build(deps): Bump @capacitor/core from 5.7.6 to 5.7.7 in /ui by @dependabot in #2716
- Build(deps): Bump swiper from 11.1.5 to 11.1.8 in /ui by @dependabot in #2726
- Update Gradle to 8.9 by @sfeilmeier in #2706
- Build(deps-dev): Bump @stylistic/eslint-plugin from 2.3.0 to 2.4.0 in /ui by @dependabot in #2725
- Build(deps): Bump org.dhatim:fastexcel from 0.18.0 to 0.18.1 in /cnf by @dependabot in #2724
- Build(deps): Bump @capacitor/android from 5.2.3 to 5.7.7 in /ui by @dependabot in #2717
New Contributors
- @HarmOtten made their first contribution in #1150
- @JonasE99 made their first contribution in #2727
- @johannk24 made their first contribution in #2727
- @fabian94533 made their first contribution in #2727
Full Changelog: 2024.7.0...2024.8.0
2024.7.0
Release Highlights
- New Time-of-Use tariff implementations for Stadtwerk Haßfurt and Groupe-E
- Backend performance improvements, e.g. by reducing size of EdgeConfig
- New Edge2Edge Meter
- New Shelly compatibilities
- New implementation of Samsung SDI energy storage system
- UI: improved multi-step navigation in footer
- Continuous improvement of code quality with Codecov and ESlint
Details
Common/General
- FEMS Backports 2023-06 in #2664
- EdgeConfig: remove Channels
- Normal EdgeConfig does not contain Channels anymore
- Added separate Requests to get channels for:
- Component Status View
- Component Channels View
- Subscribe only needed Channels in Soltaro ServiceAssistent
- Get Channel Units for variable channel for singlethreshold history & live
- Get DigitalInputChannels with separate request and fixed subscription
- EdgeConfig: remove Channels
- Implement Codecov by @da-Kai in #2685 and #2693
- CI: Update docs build by @da-Kai in #2686
- Update github-actions using dependabot by @da-Kai in #2688
- FEMS Backports 2024-06 (2) in #2692
- Prepare build for native Android App
- Tools: add internal tool to convert between JSONRPC and XLSX
- EdgeConfig: remove unused factories & properties
- Removed unused factories & factory properties from EdgeConfig
- Added separate request to get all factories and properties for component update / installation
- Debian package: implement apt purge
- CI: Improve java build
OpenEMS Backend
- FEMS Backports 2023-06 in #2664
- Remove edges from authenticate
- FEMS Backports 2024-06 (2) in #2692
- Add logging for certain commands
- Improve Metadata Odoo performance
- Improve Postgres performance
- reduce update time from 120 to 30 seconds
- fix Sum-State update bug
- InfluxDB:
- extract channel filter to separate class; add unit tests
- add configurable channel blacklist
- improve FieldTypeConflictHandler; add unit tests
- StringUtils: drop matchesIntegerPattern and matchesFloatPattern; replace with Guava
- ThreadPoolUtils: fix possible NullPointerException
OpenEMS Edge
- FEMS Backports 2023-06 in #2664
- Hardy Barth: correct Phase URL mapping
- Wrong mapping of Phase 3 current
- BridgeHttp: added support for http code & message
- added support for http code & message
- changed DelayTimeProvider to also be able to handle errors and success responses
- improved testing
- added common class HttpStatus with all official Http status codes as constants
- added lazy endpoint construction to define unique params for each call
- Time-of-Use Tariff Stadtwerk Haßfurt implementation
- Time-of-Use Tariff Groupe-E implementation
- Added new provider Groupe-E.
- Added new currency CHF (Swiss francs) to the list of currencies in core meta.
- Moved the exchangerate API to Utils so it is common for both ENTSO-E and Groupe-E providers.
- Hardy Barth: correct Phase URL mapping
- Implement a new Edge2Edge Meter by @Sn0w3y in #2621
- InfluxDB Edge Timedata: handle persistence priority by @DerWahreKlinki in #2663
- Controller.Api.MQTT: reconnect on connection failure by @Sn0w3y in #2602
- Implement Samsung SDI ESS System (legacy) by @Sn0w3y in #2638
- Implement ShellyPro3Em by @Sn0w3y in #2567
- Implement ShellyPlus1PM by @Sn0w3y in #2571
- Implement Shelly 3 Pro Relais-"Board" by @Sn0w3y in #2572
- FEMS Backports 2024-06 (2) in #2692
- SymmetricEss: add Min-/MaxCellVoltage-/Temperature channels to modbus slave table
- Added the following register to the Modbus slave table
- MIN_CELL_VOLTAGE
- MAX_CELL_VOLTAGE
- MIN_CELL_TEMPERATURE
- MAX_CELL_TEMPERATURE
- HeatingElement: added JUnit test
- Apps for DiscovergyMeter and TimeInfluxDb
- SunSpec: set persistence priority VERY_LOW
- Replace StringUtils.matches*Pattern
- SymmetricEss: add Min-/MaxCellVoltage-/Temperature channels to modbus slave table
OpenEMS UI
- Fix docker ui builds by @da-Kai in #2662
- FEMS Backports 2023-06 in #2664
- Added metric field in 'Network configuration'
- fix tab title
- setting web-app tab title to
environment.edgeShortName
- setting web-app tab title to
- Split user and company related information
- Splitting user and company related data, only user data is editable, non company assigned users are still seeing the same and are able to change all userInformation
- set secure=https property in Cookie
- this fixes an issue where a token value could be exposed when redirecting from http to https
- Adding stylistic eslint plugin by @miettal in #2671
- Fix ion-row css-syntax-error by @Sn0w3y in #2628
- Improve select channels view by @Sn0w3y in #2599
- Fix: remove ts-strict-ignore for env files and add typing by @miettal in #2683
- Update eslint rules and refactoring types. by @miettal in #2676
- FEMS Backports 2024-06 (2) in #2692
- Add footer subnavigation
- New subnavigation in /history/production
- Allow SNAPSHOT update for OWNER/INSTALLER
- Remove special handling for SNAPSHOT versions in update handler
- Add loading screen during authentication
- Introduction of loading screen, shown during authentification process
- Skip "Login"-screen if a valid authentication token exists
- Fix error messages shown in status.component
- fix display of error message in status.component, was showing property channels as well
- Channels fix setting values
- Bug: "Cannot read properties of undefined (reading 'componentId')" when setting a value in the channels view
- Add footer subnavigation
Version Upgrades
- Bump com.google.guava:guava from 33.2.0-jre to 33.2.1-jre in /cnf by @dependabot in #2661
- Bump org.apache.felix:org.apache.felix.http.jetty from 5.1.14 to 5.1.16 in /cnf by @dependabot in #2669
- Bump org.apache.felix:org.apache.felix.scr from 2.2.10 to 2.2.12 in /cnf by @dependabot in #2668
- Bump swiper from 11.1.1 to 11.1.4 in /ui by @dependabot in #2659
- Bump typescript-strict-plugin from 2.4.3 to 2.4.4 in /ui by @dependabot in #2665
- Bump @ngx-formly/ionic from 6.3.0 to 6.3.4 in /ui by @dependabot in #2667
- Bump uuid from 9.0.1 to 10.0.0 in /ui by @dependabot in #2666
- Bump braces from 3.0.2 to 3.0.3 in /ui by @dependabot in #2670
- Bump chart.js from 4.4.2 to 4.4.3 in /ui by @dependabot in #2643
- Bump org.apache.felix:org.apache.felix.http.jetty from 5.1.16 to 5.1.20 in /cnf by @dependabot in #2673
- Bump @stylistic/eslint-plugin from 2.1.0 to 2.2.1 in /ui by @dependabot in #2674
- Bump @types/uuid from 9.0.8 to 10.0.0 in /ui by @dependabot in #2682
- Bump @stylistic/eslint-plugin from 2.2.1 to 2.2.2 in /ui by @dependabot in #2681
- Bump @ngx-formly/ionic from 6.3.4 to 6.3.5 in /ui by @dependabot in #2680
- Bump org.apache.felix:org.apache.felix.http.jetty from 5.1.20 to 5.1.22 in /cnf by @dependabot in #2679
- Bump org.apache.felix:org.apache.felix.webconsole from 5.0.2 to 5.0.4 in /cnf by @dependabot in #2678
Full Changelog: 2024.6.0...2024.7.0
2024.6.0
Release Highlights
- Time-Of-Use-Tariff: implement rabot.charge in #2656
- Improvements to Modbus-SunSpec compatibility in #2656
Details
Common/General
- Generate jacoco xml report by @parapluplu in #2652
- FEMS Backports 2023-05 in #2656
- Adding fix messages for retrofit bnd
- Update Debian settings
- Do not install man-pages, locales, docs
- CI: Improve gradle scripts
- fix: ./gradlew buildEdge error by @katsuya in #2651
- Gradle: update to version 8.8 by @sfeilmeier in #2657
OpenEMS Backend
- FEMS Backports 2023-05 in #2656
- Send ON_SET_SUM_STATE Event only on change (#1195)
- b2bwebsocket: fix tests
- Gradle builds end with a warning:
Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
- This is due to this error
- Gradle builds end with a warning:
> Task :io.openems.backend.b2bwebsocket:test No test executed. This behavior has been deprecated. This will fail with an error in Gradle 9.0. There are test sources present but no test was executed. Please check your test configuration. Consult the upgrading giude for further information: https://docs.gradle.org/8.7/userguide/upgrading_version_8.html#test_task_fail_on_no_test_executed
- Alerting: fix NPE, general improvements
- make local variables final
- remove
public
from interface methods - add null check to
Message.compareTo
OpenEMS Edge
- FEMS Backports 2023-05 in #2656
- TimeOfUseTariff rabot.charge implementation
- Battery improvements
- Adds
DC_MIN_VOLTAGE
andDC_MAX_VOLTAGE
to BatteryInverter; implemented in KACO. - Adds ESS-Protection on Generic-ESS
- Adds Voltage Regulation in ESS
- Adds
- Modbus/SunSpec: implement BitWords
- Refactor SunSpecCodeGenerator
- Handle
BITFIELD16
andBITFIELD32
properly - Allow overriding BITFIELD mapping, e.g. for "Vendor defined events"
- ESS Power Solver: improve KEEPING_ALL_EQUAL strategy
- Add
OPTIMIZE_BY_KEEPING_ALL_NEAR_EQUAL
strategy; automatically applied as fallback toOPTIMIZE_BY_KEEPING_ALL_EQUAL
.
- Add
- Systemd-Networkd: parse [Gateway] in [Route] block
- GoodWe: fix sorting of diagnostic bit registers
- Power Solver: OPTIMIZE_BY_KEEPING_ALL_NEAR_EQUAL
- GoodWe: fix impossible high Battery Power values
- FENECON Home Battery add stop functionality
- STOP Home battery on very low cell voltage. Adds Channels:
- LOW_MIN_VOLTAGE_WARNING: Low min voltage warning | Niedriger Ladezustand der Batterie, da die Batterie nicht durch den Wechselrichter beladen werden kann. Ohne Beladung schaltet sich die Batterie demnächst ab, um sich selbst zu schützen
- LOW_MIN_VOLTAGE_FAULT: Low min voltage fault | Niedriger Ladezustand. Die Batterie schaltet sich demnächst ab, um sich selbst zu schützen
- LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED: Low min voltage fault - Battery stopped | Batterie wurde wegen zu niedrigem Ladezustand abgeschaltet. Bitte kontaktieren Sie Ihren Installateur
- STOP Home battery on very low cell voltage. Adds Channels:
- Weidmüller IO: fix reading of CurrentModuleList
- Fixed hidden ClassCastException in
readCurrentModuleList()
- Fixed hidden ClassCastException in
- Refactored Shelly 2.5 to use HttpBridge by @Sn0w3y in #2573
OpenEMS UI
- FEMS Backports 2023-05 in #2656
- add notification infrastructure
- add warning for systemupdate
- Confirmation alert for systemupdate
- Standardizing alert for update and EMS restart
- adjust translations of alert
- Adjust translations of confirmation alert of system update
- improve systemLog
- Adding searchbar to be able to filter systemlog (case-insensitive)
- Adding debug level filter
- Enable Copying of systemlog
- Improved filter for Non condensed output -> splitting debugLog string if line-breaks provided
- add toggle to reconfigure condensedOutput
- fix duplicate legend item generation for same aliases
- Extend Eslint
- Extend EsLint to make implementing lifecycle interfaces mandatory
- Hide Menu in login page
Version Upgrades
- Bump com.google.guava:guava from 33.1.0-jre to 33.2.0-jre in /cnf by @dependabot in #2632
- Bump org.apache.felix:org.apache.felix.http.jetty from 5.1.10 to 5.1.12 in /cnf by @dependabot in #2631
- Bump @ngx-translate/core from 14.0.0 to 15.0.0 in /ui by @dependabot in #2626
- Bump typescript-strict-plugin from 2.4.1 to 2.4.3 in /ui by @dependabot in #2634
- Bump ejs from 3.1.9 to 3.1.10 in /ui by @dependabot in #2629
- Bump vite and @angular-devkit/build-angular in /ui by @dependabot in #2624
- Bump eslint-plugin-unused-imports from 3.1.0 to 3.2.0 in /ui by @dependabot in #2633
- Update dependencies: influx, kotlin, gson by @dependabot in #2647
- Bump org.apache.felix:org.apache.felix.http.jetty from 5.1.12 to 5.1.14 in /cnf by @dependabot in #2654
- Bump org.jetbrains.kotlin:kotlin-osgi-bundle from 1.9.24 to 2.0.0 in /cnf by @dependabot in #2653
New Contributors
- @Bishalghimire1997 made their first contribution in #2656
- @manojniit made their first contribution in #2656
- @saeedniko made their first contribution in #2656
- @parapluplu made their first contribution in #2652
- @katsuya made their first contribution in #2651
Full Changelog: 2024.5.0...2024.6.0
2024.5.0
Release Highlights
- New implementations
- Shelly Plus Plug S by @Sn0w3y in #2529
- Eastron SDM120 Meter by @fanass-dev in #2554
- UI: optional strict mode for improved code quality in #2623
- WebSocket: improved communication performance by @miettal in #2616
Details
Common/General
- Docs: update implementing a device by @Sn0w3y in #2601
- WebSocket: enable permessage-deflate to communication by @miettal in #2616
- Apply Eclipse Format & Organize Imports; fix resource leak by @Sn0w3y in #2617
- Refactor RPC handling by @michaelgrill in #2610
- FEMS Backports 2023-04 in #2623
- Change Unit
EUROS_PER_MEGAWATT_HOUR
toMONEY_PER_MEGAWATT_HOUR
- Prepare-commit: add UI build+test to script
- "Coding Guidelines" should also cover UI development (https://openems.github.io/openems.io/openems/latest/contribute/coding-guidelines.html#_openems_edge_backend)
- CI: Update node to v20 LTS
- Change Unit
OpenEMS Backend
- FEMS Backports 2023-04 in #2623
- Add API for Simulation-Engine Component
- In future this should be used for scenario simulations, like what would have been the benefit of using an additional battery module
- Add API for Simulation-Engine Component
OpenEMS Edge
- MQTT API Controller: add optional config parameter to specify a topic prefix by @samuelBloch in #2553
- SunSpec: Channel values synchronized by @tsicking in #2609
- Implement new Shelly Plus Plug S by @Sn0w3y in #2529
- Updates Microcare / Eastron and Implements Meter SDM120 by @Sn0w3y in #2554
- FEMS Backports 2023-04 in #2623
-
Modbus-Bridge:
- Improve SunSpec handling for SMA PV-Inverter: certain versions do not provide END_OF_MAP but throw ILLEGAL_ADDRESS_EXCEPTION instead, causing the previous SunSpec implementation to get stuck while parsing
- Remove unnecessary
throws OpenemsException
andtry...catch
in certain places (defineModbusProtocol()
,new ModbusProtocol()
,addTask()
,...) - Optionally provide
ExecuteState
of an entire ModbusTask; this allows for more fine-grained evaluation of read errors
-
Switch to updated
readElementOnce
and/or improve brevity ofCompletableFuture
by usingthenCompose
instead ofthenAccept
in... -
RRD4j: correctly postprocess queried data
- fix querying data with different resolution than 5 Minutes
-
Time-of-Use: split Optimizer and Controller
- Introduce new Bundles for
Energy
andEnergy API
- Time-of-Use-Controller and EnergyScheduler are still tightly coupled for now, as this is an ongoing refactoring. Eventually they should only communicate via
EnergySchedulable
- Move Optimizer (i.e. all Jenetics related code) to
Energy
- New Channel
_sum/GridBuyPrice
- UI: show data in [kW] and cleanup code
- Tibber: Homes-Filter could not be unset
- Introduce new Bundles for
-
KACO Blueplanet Gridsave BatteryInverter: state-machine improvement
- Update Kaco Blueplanet Gridsave state-machine
- Add grid disconnection failure state channel
- Replace
MAX_START_ATTEMPTS
withMAX_START_TIMEOUT
-
GoodWe
- Optionally show values per MPPT; not per String
- GoodWeChargerTwoStringImpl was used to represent one string from a GoodWe MPPT tracker that is responsible for two strings (GoodWe ET-Systems).
- Possible values given by GoodWe are: MPPT Current, MPPT Power, String Current, String Voltage
- As the current values of one string are incorrect (so far DSP-Version 12, ARM-Version 27) the power cannot be calculated as expected.
- A new Component GoodWeChargerMpptTwoStringImpl is mirroring the GoodWe values to get the important values from: MPPT Current, MPPT Power, String Voltage (One of the two strings)
- Update BMS Registers ChargeMaxVoltage & DischargeMinVoltage
- Set ChargeMaxVoltage & DischargeMinVoltage
- Handle inverter specific behaviour on empty/full battery
- Optionally show values per MPPT; not per String
-
OpenEMS UI
- Center Text in Footer by @Sn0w3y in #2594
- FEMS Backports 2023-04 in #2623
- Add optional strict mode
- Another step towards strict mode in UI
- Add
typescript-strict-plugin
-> https://github.com/allegro/typescript-strict-plugin - Add
tsc
andtsc-strict
to CI build - Add
// @ts-strict-ignore
comment in non-compliant code files
- Update to Angular Version 16.
- Replacing kekeh/angular-mydatepicker with its fork nodro7/angular-mydatepicker
- Revert calculating stepSize for charts
- Removing stepSize calculation due to chartjs breaking style in some circumstances
- keeping max ticks limit at 6
- Change resolution from 20 to 15 minutes
- Remove dead link from ChpSoc (BHKW) Widget in history
- Settings|Channels: fix Persistence Priority warning
- Warning for persistencePriority lower than backends global priority, was also shown for equals
- Hide FooterComponent for history Children due to overlapping on different heights
- Footercomponent overlapping content.
- Chartjs -> responsive charts approach of setting fixed height is causing the problem,
onZoom
event doesnt resize the charts canvas and chart canvas gets moved down into the footer
- Footer: fix esLint autofix mistake; hide for history detail views
- Revert adding detail navigation to production history (this is a planned feature that was accidentially merged)
- Fix Page count of edges pagination on initial search
- Add optional strict mode
Version Upgrades
- Bump com.squareup.retrofit2:retrofit from 2.10.0 to 2.11.0 in /cnf by @dependabot in #2606
- Bump org.dhatim:fastexcel from 0.17.0 to 0.18.0 in /cnf by @dependabot in #2620
- Bump org.apache.felix:org.apache.felix.webconsole from 5.0.0 to 5.0.2 in /cnf by @dependabot in #2619
Full Changelog: 2024.4.0...2024.5.0
2024.4.0
Release Highlights
- Official Docker containers: https://hub.docker.com/u/openems. Thanks @da-Kai!
- Significant improvements to ESS Time-of-Use-Tariff-Controller by @sfeilmeier
Details
Common/General
- CI: Update actions by @da-Kai in #2570
- Update coding-guidelines.adoc by @Sn0w3y in #2576
- Docker Workflow by @da-Kai in #2568
- Fix docker workflows Failing by @da-Kai in #2591
- Update gradle to 8.7 by @sfeilmeier in #2590
- Gitpod: add names+descriptions to ports by @sfeilmeier in #2600
OpenEMS Backend
- Bugfix: Alerting: periodic onSetSumState doesn't override SumStateSchedule by @DerStoecki in #2561
- FEMS Backports 2023-03 by @sfeilmeier, @venu-sagar, @lukasrgr, @michaelgrill, @da-Kai, @huseyinsaht, @hydroid7, @sebastianasen, @AnasShetla, @mlang97 in #2593
- General performance improvements
OpenEMS Edge
- Janitza UMG 511: fix inverted active power by @tsicking in #2587
- FEMS Backports 2023-03 by @sfeilmeier, @venu-sagar, @lukasrgr, @michaelgrill, @da-Kai, @huseyinsaht, @hydroid7, @sebastianasen, @AnasShetla, @mlang97 in #2593
- Improvements to ESS Time-of-Use-Tariff-Controller
- Optionally show Grid-Buy in UI forecast and history chart (in a third y-axis)
- Improve calculation of charge power in CHARGE_GRID mode
- More and smarter Genotypes in initialPopulation
- Improved error handling
- New EnergyFlow calculation + fix previsou calculation bugs
- Be default always apply §14a EnWG limit of 4.2 kW (configurable)
- Optionally show Grid-Buy in UI forecast and history chart (in a third y-axis)
- Tibber: implement handling for rate limit (HTTP code 429), differentiate warnings based on HTTP status codes
- AppCenter Tibber: Access Token will be displayed as "xxx" if set, hide "homes" filter and improve description
- AppCenter: add fixStateOfCharge App
- AppCenter: Add definition to set min Role to delete an App & validation
- AppCenter: Add popover to notify about unused keys
- FENECON Home Battery: improve calculation for number of towers
- Edge/UI: add persistencePriority to EdgeConfig + warning in
/channels
- Improve Controller ESS Cycle: fix Standby Time
- GoodWe: Disable ShadowManagement
- HeatingElement: Changed Persistence Priority for LEVEL to HIGH
- Improvements to ESS Time-of-Use-Tariff-Controller
OpenEMS UI
- Install/Update Component filter to lower case by @DerStoecki in #2531
- Update user.component.html to handle "null" cases by @Sn0w3y in #2527
- modal-line element INPUT with optional unit by @JosefRick in #2489
- Add japanese language support by @miettal in #2538
- Fix Translations by @Sn0w3y in #2595
- add eslint:recommended and plugin:@typescript-eslint/recommended by @miettal in #2577
- FEMS Backports 2023-03 by @sfeilmeier, @venu-sagar, @lukasrgr, @michaelgrill, @da-Kai, @huseyinsaht, @hydroid7, @sebastianasen, @AnasShetla, @mlang97 in #2593
- Improvements to ESS Time-of-Use-Tariff-Controller
- Optionally show Grid-Buy in UI forecast and history chart (in a third y-axis)
- Change chartjs resolution for mobile view
- Implement system reboot in new maintenance view (/system)
- Edge/UI: add persistencePriority to EdgeConfig + warning in
/channels
- Extend unittest for pickdatepopover
- EVCS: fix possible NPE
- Add footer for EMS-Nr., installed version and comment
- add
edgeShortName
to browser title
- Improvements to ESS Time-of-Use-Tariff-Controller
Version Upgrades
- Bump org.apache.felix:org.apache.felix.http.jetty from 5.1.8 to 5.1.10 in /cnf by @dependabot in #2564
- Bump org.jetbrains.kotlin:kotlin-osgi-bundle from 1.9.22 to 1.9.23 in /cnf by @dependabot in #2574
- Bump com.ghgande:j2mod from 3.2.0 to 3.2.1 in /cnf by @dependabot in #2575
- Bump com.squareup.okio:okio-jvm from 3.8.0 to 3.9.0 in /cnf by @dependabot in #2585
- Bump de.bytefish:pgbulkinsert from 8.1.2 to 8.1.3 in /cnf by @dependabot in #2582
- Bump com.google.guava:guava from 33.0.0-jre to 33.1.0-jre in /cnf by @dependabot in #2579
- Bump org.postgresql:postgresql from 42.7.2 to 42.7.3 in /cnf by @dependabot in #2580
- Bump d3 from 7.8.5 to 7.9.0 in /ui by @dependabot in #2586
Full Changelog: 2024.3.0...2024.4.0