2023.8 Modbus Bridge CycleTimeIsTooShort

Hi,
ich setzte mich gerade mit openems auseinander und wollte das System mal mit meiner PV-Anlage ausprobieren, da ich die Idee dahinter nicht schlecht finde.

Genau zum Monatswechsel habe ich angefangen ein Docker Container für openems zu erstellen.
Gerade gestern habe ich einen neuen Container gebaut und musste festellen, dass die Modbus-Bridge seit 2023.8 nicht mehr funktioniert.

Ich bekomme folgende Fehlermeldung:
State:INFO: CycleTimeIsTooShort

Ich habe die Cycle Time schon auf 10s erhöht,
aber ohne Erfolg.

Mit Version 2023.7 klappt alles wieder.

Irgendwelche Ideen?

Hallo und willkommen in der Community.

tatsächlich haben wir die Modbus-Implementierung gerade komplett überarbeitet, das könnte damit zusammenhängen. Siehe:

Die Änderung ist allerdings ist der Release-Version 2023.8.0 noch nicht enthalten, sondern nur im aktuellen ‘develop’-Zweig und soll dann in 2023.9.0 veröffentlicht werden.

Die Implementierung habe ich eigentlich ausgiebig in der Praxis an meinem eigenen System und mit automatisierten Softwaretests getestet - aber Fehler können natürlich immer passieren.

In der neuen Modbus-Bridge kann eine LogVerbosity konfiguriert werden. Könntest du einmal den Log mit der Einstellung READS_AND_WRITES_DURATION aufzeichnen. Das würde mir helfen und ein mögliches Problem zu identifizieren. Vielen Dank!

Gruß,
Stefan

Hallo,
ich hatte das gleiche Problem auch schon bei 2023.7 (Beaglebone Black), das hängt m.E. mit der “Strategy” in dem PID-Regler im ess.power zusammen.
Da kommt er wohl zu keinem Ende ?
So bekomme ich den Fehler nicht mehr

Kein Problem, mir ist es nur aufgefallen.
Als Programmiere kenne ich das selber und “freue” mich immer über solche Meldungen,
es soll ja überall funktionieren.
Wer kennt es nicht, früher in der Uni “Aber auf meinem Rechner lief es” ;-).
Es kann auch an meinem Container bzw. am OS liegen.

Hostsystem:

System Information
------------------

Raspberry Pi 4 Model B Rev 1.2
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"

Raspberry Pi reference 2022-04-04
Generated using pi-gen, https://github.com/RPi-Distro/pi-gen, 27a8050c3c06e567c794620394a8c2d74262a516, stage2

Linux SmarthomePi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64 GNU/Linux
Revision        : c03112
Model           : Raspberry Pi 4 Model B Rev 1.2
Throttled flag  : throttled=0x0

Log:

[migrations] started
[migrations] no migrations found
usermod: no changes
───────────────────────────────────────
  _____ __ __ _____ _____ _____ _____
 |     |  |  |   __|_   _|     |     |
 |   --|  |  |__   | | | |  |  | | | |
 |_____|_____|_____| |_| |_____|_|_|_|
       _____ __ __ _ __    ____
      | __  |  |  | |  |  |    \
      | __ -|  |  | |  |__|  |  |
      |_____|_____|_|_____|____/

  Based on images from linuxserver.io
───────────────────────────────────────

To support LSIO projects visit:
https://www.linuxserver.io/donate/

───────────────────────────────────────
GID/UID
───────────────────────────────────────

User UID:    911
User GID:    911
───────────────────────────────────────

using keys found in /config/keys
[custom-init] No custom files found, skipping...
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling Java Util Logging API support.
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling SLF4J API support.
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling Apache Commons Logging API support.
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling JULI Logger API support.
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling Avalon Logger API support.
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling JBoss Logging API support.
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling Log4J v1 API support.
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling Log4J v2 API support.
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Initializing Log4j2 using default configuration
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Scanning for classes in '/org/ops4j/pax/logging/log4j2/internal/bridges/' matching criteria annotated with @Plugin
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Scanning for classes in '/org/apache/logging/log4j/layout/template/json/' matching criteria annotated with @Plugin
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Scanning for classes in '/org/apache/logging/log4j/layout/template/json/resolver/' matching criteria annotated with @Plugin
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Scanning for classes in '/org/apache/logging/log4j/layout/template/json/util/' matching criteria annotated with @Plugin
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Log4J2 configured using default configuration.
org.ops4j.pax.logging.pax-logging-log4j2 [org.ops4j.pax.logging.spi.support.EventAdminConfigurationNotifier] INFO : Sending Event Admin notification (configuration successful) to org/ops4j/pax/logging/Configuration
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Log4J2 configured using configuration from passed properties
2023-08-07T00:23:36,848 [ogging])] INFO  [ventAdminConfigurationNotifier] Sending Event Admin notification (configuration successful) to org/ops4j/pax/logging/Configuration
2023-08-07T00:23:37,328 [artLevel] INFO  [backend.application.BackendApp] ==========================================
2023-08-07T00:23:37,330 [artLevel] INFO  [backend.application.BackendApp] OpenEMS Backend version [2023.8.0] started
2023-08-07T00:23:37,332 [artLevel] INFO  [backend.application.BackendApp] ==========================================
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling Java Util Logging API support.
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling SLF4J API support.
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling Apache Commons Logging API support.
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling JULI Logger API support.
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling Avalon Logger API support.
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling JBoss Logging API support.
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling Log4J v1 API support.
org.ops4j.pax.logging.pax-logging-api [org.ops4j.pax.logging.internal.Activator] INFO : Enabling Log4J v2 API support.
2023-08-07T00:23:38,704 [artLevel] INFO  [rg.eclipse.jetty.server.Server] jetty-11.0.13; built: 2022-12-07T20:47:15.149Z; git: a04bd1ccf844cf9bebc12129335d7493111cbff6; jvm 17.0.8+7-alpine-r2
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Initializing Log4j2 using default configuration
2023-08-07T00:23:39,078 [artLevel] INFO  [ession.DefaultSessionIdManager] Session workerName=node0
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Scanning for classes in '/org/ops4j/pax/logging/log4j2/internal/bridges/' matching criteria annotated with @Plugin
2023-08-07T00:23:39,191 [artLevel] INFO  [.server.handler.ContextHandler] Started o.e.j.s.ServletContextHandler@4b8c79e6{/,null,AVAILABLE}
2023-08-07T00:23:39,204 [artLevel] INFO  [rg.eclipse.jetty.server.Server] Started Server@7a8f729e{STARTING}[11.0.13,sto=0] @15418ms
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Scanning for classes in '/org/apache/logging/log4j/layout/template/json/' matching criteria annotated with @Plugin
2023-08-07T00:23:39,438 [artLevel] INFO  [jetty.server.AbstractConnector] Started ServerConnector@581df2d5{HTTP/1.1, (http/1.1)}{0.0.0.0:8079}
2023-08-07T00:23:39,444 [artLevel] INFO  [org.apache.felix.http         ] Started Jetty 11.0.13 at port(s) HTTP:8079 on context path / [minThreads=8,maxThreads=200,acceptors=1,selectors=2]
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Scanning for classes in '/org/apache/logging/log4j/layout/template/json/resolver/' matching criteria annotated with @Plugin
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Scanning for classes in '/org/apache/logging/log4j/layout/template/json/util/' matching criteria annotated with @Plugin
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Log4J2 configured using default configuration.
org.ops4j.pax.logging.pax-logging-log4j2 [org.ops4j.pax.logging.spi.support.EventAdminConfigurationNotifier] INFO : Sending Event Admin notification (configuration successful) to org/ops4j/pax/logging/Configuration
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Log4J2 configured using configuration from passed properties
2023-08-07T00:23:41,048 [ogging])] INFO  [ventAdminConfigurationNotifier] Sending Event Admin notification (configuration successful) to org/ops4j/pax/logging/Configuration
2023-08-07T00:23:41,713 [artLevel] INFO  [onent.AbstractOpenemsComponent] [modbus0] Activate Bridge.Modbus.Tcp
2023-08-07T00:23:42,008 [artLevel] INFO  [onent.AbstractOpenemsComponent] [ctrlDebugLog0] Activate Controller.Debug.Log
2023-08-07T00:23:42,807 [artLevel] INFO  [onent.AbstractOpenemsComponent] [_host] Activate Core.Host
2023-08-07T00:23:42,822 [_host   ] ERROR [ost.NetworkConfigurationWorker] [_host] Unable to persist actual network configuration: Base-Path [/etc/systemd/network] does not exist.
io.openems.common.exceptions.OpenemsException: Base-Path [/etc/systemd/network] does not exist.
        at io.openems.edge.core.host.OperatingSystemDebianSystemd.getNetworkConfiguration(OperatingSystemDebianSystemd.java:64)
        at io.openems.edge.core.host.NetworkConfigurationWorker.forever(NetworkConfigurationWorker.java:34)
        at io.openems.common.worker.AbstractWorker$1.run(AbstractWorker.java:129)
2023-08-07T00:23:42,826 [artLevel] INFO  [onent.AbstractOpenemsComponent] [_meta] Activate Core.Meta
2023-08-07T00:23:42,961 [artLevel] INFO  [onent.AbstractOpenemsComponent] [ctrlApiModbusTcp0] Activate Controller.Api.ModbusTcp.ReadWrite
2023-08-07T00:23:43,018 [dbusTcp0] INFO  [s.common.worker.AbstractWorker] [ctrlApiModbusTcp0] Modbus/TCP-Api Read-Write started on port [502] with UnitId [1].
2023-08-07T00:23:43,182 [artLevel] INFO  [onent.AbstractOpenemsComponent] [_power] Activate Ess.Power
2023-08-07T00:23:43,301 [artLevel] INFO  [onent.AbstractOpenemsComponent] [_evcsSlowPowerIncreaseFilter] Activate Evcs.SlowPowerIncreaseFilter
2023-08-07T00:23:44,093 [artLevel] INFO  [onent.AbstractOpenemsComponent] [io0] Activate Simulator.IO.DigitalInputOutput
2023-08-07T00:23:44,098 [artLevel] INFO  [ulatorIoDigitalInputOutputImpl] [io0] Creating simulated DigitalOutput [io0/InputOutput0]
2023-08-07T00:23:44,104 [artLevel] INFO  [ulatorIoDigitalInputOutputImpl] [io0] Creating simulated DigitalOutput [io0/InputOutput1]
2023-08-07T00:23:44,838 [artLevel] INFO  [onent.AbstractOpenemsComponent] [meter0] Activate SolarEdge.Grid-Meter
2023-08-07T00:23:44,898 [artLevel] INFO  [onent.AbstractOpenemsComponent] [pvInverter0] Activate SolarEdge.PV-Inverter
2023-08-07T00:23:45,387 [artLevel] INFO  [rg.eclipse.jetty.server.Server] jetty-11.0.13; built: 2022-12-07T20:47:15.149Z; git: a04bd1ccf844cf9bebc12129335d7493111cbff6; jvm 17.0.8+7-alpine-r2
2023-08-07T00:23:45,588 [artLevel] INFO  [ession.DefaultSessionIdManager] Session workerName=node0
2023-08-07T00:23:45,674 [artLevel] INFO  [.server.handler.ContextHandler] Started o.e.j.s.ServletContextHandler@68d6904f{/,null,AVAILABLE}
2023-08-07T00:23:45,689 [artLevel] INFO  [rg.eclipse.jetty.server.Server] Started Server@6d2a2b46{STARTING}[11.0.13,sto=0] @21903ms
2023-08-07T00:23:45,856 [artLevel] INFO  [jetty.server.AbstractConnector] Started ServerConnector@2f892ad4{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
2023-08-07T00:23:45,863 [artLevel] INFO  [org.apache.felix.http         ] Started Jetty 11.0.13 at port(s) HTTP:8080 on context path / [minThreads=8,maxThreads=200,acceptors=1,selectors=2]
2023-08-07T00:23:46,464 [artLevel] INFO  [onent.AbstractOpenemsComponent] [_componentManager] Activate Core.ComponentManager
2023-08-07T00:23:46,543 [artLevel] INFO  [onent.AbstractOpenemsComponent] [ess0] Activate Simulator.EssSymmetric.Reacting
2023-08-07T00:23:46,576 [artLevel] INFO  [onent.AbstractOpenemsComponent] [ctrlBalancing0] Activate Controller.Symmetric.Balancing
2023-08-07T00:23:46,659 [artLevel] INFO  [onent.AbstractOpenemsComponent] [timeOfUseTariff0] Activate TimeOfUseTariff.Tibber
2023-08-07T00:23:46,697 [artLevel] INFO  [onent.AbstractOpenemsComponent] [scheduler0] Activate Scheduler.AllAlphabetically
2023-08-07T00:23:47,478 [artLevel] INFO  [onent.AbstractOpenemsComponent] [_appManager] Activate Core.AppManager
2023-08-07T00:23:47,641 [artLevel] INFO  [onent.AbstractOpenemsComponent] [_predictorManager] Activate Core.PredictorManager
2023-08-07T00:23:47,682 [artLevel] INFO  [onent.AbstractOpenemsComponent] [_sum] Activate Core.Sum
2023-08-07T00:23:47,777 [artLevel] INFO  [onent.AbstractOpenemsComponent] [_cycle] Activate Core.Cycle
2023-08-07T00:23:47,823 [artLevel] INFO  [onent.AbstractOpenemsComponent] [influx0] Activate Timedata.InfluxDB
2023-08-07T00:23:47,861 [_cycle  ] ERROR [org.apache.felix.eventadmin   ] EventAdmin: Exception during event dispatch [org.osgi.service.event.Event [topic=io/openems/edge/cycle/BEFORE_PROCESS_IMAGE] {} | [io.openems.edge.bridge.modbus.api.BridgeModbus, io.openems.edge.bridge.modbus.api.BridgeModbusTcp, io.openems.edge.common.component.OpenemsComponent, org.osgi.service.event.EventHandler] | Bundle(io.openems.edge.bridge.modbus [24]) | Handler(io.openems.edge.bridge.modbus.BridgeModbusTcpImpl@69b21ca6)]
java.lang.NoClassDefFoundError: io/openems/edge/common/type/Tuple
        at io.openems.edge.bridge.modbus.api.worker.internal.TasksSupplierImpl.lambda$15(TasksSupplierImpl.java:117) ~[?:?]
        at java.util.HashMap.forEach(HashMap.java:1421) ~[?:?]
        at io.openems.edge.bridge.modbus.api.worker.internal.TasksSupplierImpl.getOneLowPriorityReadTask(TasksSupplierImpl.java:114) ~[?:?]
        at io.openems.edge.bridge.modbus.api.worker.internal.TasksSupplierImpl.getCycleTasks(TasksSupplierImpl.java:57) ~[?:?]
        at io.openems.edge.bridge.modbus.api.worker.internal.CycleTasksManager.onBeforeProcessImage(CycleTasksManager.java:90) ~[?:?]
        at io.openems.edge.bridge.modbus.api.worker.ModbusWorker.onBeforeProcessImage(ModbusWorker.java:165) ~[?:?]
        at io.openems.edge.bridge.modbus.api.AbstractModbusBridge.handleEvent(AbstractModbusBridge.java:132) ~[?:?]
        at org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.sendEvent(EventHandlerProxy.java:432) ~[?:?]
        at org.apache.felix.eventadmin.impl.tasks.HandlerTask.runWithoutDenylistTiming(HandlerTask.java:82) ~[?:?]
        at org.apache.felix.eventadmin.impl.tasks.SyncDeliverTasks.execute(SyncDeliverTasks.java:107) ~[?:?]
        at org.apache.felix.eventadmin.impl.handler.EventAdminImpl.sendEvent(EventAdminImpl.java:155) ~[?:?]
        at org.apache.felix.eventadmin.impl.security.EventAdminSecurityDecorator.sendEvent(EventAdminSecurityDecorator.java:96) ~[?:?]
        at io.openems.common.event.EventBuilder.send(EventBuilder.java:68) ~[?:?]
        at io.openems.edge.core.cycle.CycleWorker.forever(CycleWorker.java:50) ~[?:?]
        at io.openems.common.worker.AbstractWorker$1.run(AbstractWorker.java:129) ~[?:?]
Caused by: java.lang.ClassNotFoundException: io.openems.edge.common.type.Tuple not found by io.openems.edge.common [26]
        at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1591) ~[?:?]
        at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) ~[?:?]
        at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]
        at org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1358) ~[?:?]
        at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1612) ~[?:?]
        at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1528) ~[?:?]
        at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) ~[?:?]
        at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]
        ... 15 more
2023-08-07T00:23:47,911 [artLevel] INFO  [onent.AbstractOpenemsComponent] [ctrlApiWebsocket0] Activate Controller.Api.Websocket
2023-08-07T00:23:47,957 [artLevel] INFO  [socket.AbstractWebsocketServer] [ctrlApiWebsocket0] Starting websocket server [port=8085]
2023-08-07T00:23:48,040 [artLevel] INFO  [onent.AbstractOpenemsComponent] [ctrlApiRest0] Activate Controller.Api.Rest.ReadWrite
2023-08-07T00:23:48,066 [artLevel] INFO  [rg.eclipse.jetty.server.Server] jetty-11.0.13; built: 2022-12-07T20:47:15.149Z; git: a04bd1ccf844cf9bebc12129335d7493111cbff6; jvm 17.0.8+7-alpine-r2
2023-08-07T00:23:48,108 [artLevel] INFO  [jetty.server.AbstractConnector] Started ServerConnector@5702ede8{HTTP/1.1, (http/1.1)}{0.0.0.0:8084}
2023-08-07T00:23:48,111 [artLevel] INFO  [rg.eclipse.jetty.server.Server] Started Server@49a5a44c{STARTING}[11.0.13,sto=0] @24327ms
2023-08-07T00:23:48,113 [artLevel] INFO  [.ControllerApiRestReadOnlyImpl] [ctrlApiRest0] REST-Api Read-Write started on port [8084].
2023-08-07T00:23:48,363 [_cycle  ] WARN  [ms.edge.core.cycle.CycleWorker] [_cycle] Error in Controller [ctrlBalancing0]: Value for Channel [ess0/ActivePower] is invalid.
2023-08-07T00:23:48,413 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] _componentManager[Defective:null[Unsatisfied reference for $000,$003] _sum[Unsatisfied reference for componentManager] timeOfUseTariff0[Unsatisfied reference for componentManager] ctrlApiRest0[Unsatisfied reference for componentManager] _cycle[Unsatisfied reference for componentManager,sumComponent] influx0[Unsatisfied reference for componentManager,cycle] _appManager[Unsatisfied reference for componentManager,componentUtil,csoAppManagerAppHelper] ctrlApiWebsocket0[Unsatisfied reference for componentManager] _predictorManager[Unsatisfied reference for componentManager] scheduler0[Unsatisfied reference for componentManager] ctrlBalancing0[Unsatisfied reference for ess ((&(enabled=true)(!(service.pid=Controller.Symmetric.Balancing.054357bc-b6b5-4efe-b5d7-76e4d992324d))(|(id=ess0))))]|State:FAULT: A configured OpenEMS Component was not activated] _sum[State:Fault Ess SoC:50 %] ess0[SoC:50 %|L:UNDEFINED|Allowed:-13000;13000 W] io0[--] meter0[L:UNDEFINED] modbus0[CycleDelay:0 ms] pvInverter0[L:UNDEFINED]
2023-08-07T00:23:48,887 [_cycle  ] INFO  [ker.internal.CycleTasksManager] State: FINISHED -> WRITE (onExecuteWrite)
2023-08-07T00:23:57,783 [_cycle  ] INFO  [ker.internal.CycleTasksManager] State: WRITE unchanged (in onBeforeProcessImage) Delay [0] CYCLE_TIME_TOO_SHORT
2023-08-07T00:23:57,833 [_cycle  ] WARN  [ms.edge.core.cycle.CycleWorker] [_cycle] Error in Controller [ctrlBalancing0]: Value for Channel [meter0/ActivePower] is invalid.
2023-08-07T00:23:57,843 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] _sum[State:Ok Ess SoC:50 %|L:0 W Consumption:0 W] ctrlBalancing0[State:FAULT: Running the Controller failed] ess0[SoC:50 %|L:0 W|Allowed:-13000;13000 W] io0[--] meter0[L:UNDEFINED] modbus0[CycleDelay:0 ms] pvInverter0[L:UNDEFINED]
2023-08-07T00:23:57,848 [thread-1] INFO  [hared.influxdb.InfluxConnector] [InfluxDB] [monitor] Pool: 0/5, Pending: 0, Completed: 0, Active: 0 Queue:0/1000000
2023-08-07T00:23:57,858 [_cycle  ] INFO  [ker.internal.CycleTasksManager] State: WRITE -> WRITE (onExecuteWrite)
2023-08-07T00:24:07,782 [_cycle  ] INFO  [ker.internal.CycleTasksManager] State: WRITE unchanged (in onBeforeProcessImage) Delay [0] (time is invalid)
2023-08-07T00:24:07,817 [_cycle  ] WARN  [ms.edge.core.cycle.CycleWorker] [_cycle] Error in Controller [ctrlBalancing0]: Value for Channel [meter0/ActivePower] is invalid.
2023-08-07T00:24:07,828 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] _sum[State:Fault Ess SoC:50 %|L:0 W Consumption:0 W] ctrlBalancing0[State:FAULT: Running the Controller failed] ess0[SoC:50 %|L:0 W|Allowed:-13000;13000 W] io0[--] meter0[L:UNDEFINED] modbus0[CycleDelay:0 ms] pvInverter0[L:UNDEFINED]
2023-08-07T00:24:07,841 [_cycle  ] INFO  [ker.internal.CycleTasksManager] State: WRITE -> WRITE (onExecuteWrite)
2023-08-07T00:24:07,852 [thread-1] INFO  [hared.influxdb.InfluxConnector] [InfluxDB] [monitor] Pool: 1/5, Pending: 0, Completed: 0, Active: 1 Queue:0/1000000
2023-08-07T00:24:17,782 [_cycle  ] INFO  [ker.internal.CycleTasksManager] State: WRITE unchanged (in onBeforeProcessImage) Delay [0] (time is invalid)
2023-08-07T00:24:17,819 [_cycle  ] WARN  [ms.edge.core.cycle.CycleWorker] [_cycle] Error in Controller [ctrlBalancing0]: Value for Channel [meter0/ActivePower] is invalid.
2023-08-07T00:24:17,829 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] _sum[State:Fault Ess SoC:50 %|L:0 W Consumption:0 W] ctrlBalancing0[State:FAULT: Running the Controller failed] ess0[SoC:50 %|L:0 W|Allowed:-13000;13000 W] io0[--] meter0[L:UNDEFINED] modbus0[CycleDelay:0 ms] pvInverter0[L:UNDEFINED]

Dockerfile:

FROM alpine:latest AS downloader

RUN apk update && apk upgrade

RUN apk add --no-cache \
    git \
    py3-pip \
    openjdk17-jre-headless \
    nodejs \
    npm

RUN pip install --break-system-packages lastversion

RUN npm install -g @angular/cli

RUN git clone -b main https://github.com/OpenEMS/openems.git /src
# Anpassung für das UI auf /websocket
COPY src/ /src

# Selber kompilieren von Edge und Backend
#WORKDIR /src
#RUN ./gradlew buildEdge
#RUN ./gradlew buildBackend

# Selber compilieren von UI
WORKDIR /src/ui
RUN npm install
RUN ng build -c "openems,openems-edge-prod,prod"

# Herunterladen der aktuellsten Version
WORKDIR /ddl
RUN lastversion --assets --filter openems-edge.jar download https://github.com/OpenEMS/openems
RUN lastversion --assets --filter openems-backend.jar download https://github.com/OpenEMS/openems


FROM ghcr.io/linuxserver/baseimage-alpine:edge

RUN apk update && apk upgrade

RUN apk add --no-cache \
    openjdk17-jre-headless \
    nginx \
    openssl

RUN mkdir -p /app/www

WORKDIR /app
COPY --from=downloader /ddl /app
COPY --from=downloader /src/ui/target /app/www
# Kopieren von init Scripten und nginx Konfiguration
COPY root/ /
# Überschreiben von edge und backend für andere Version
#COPY app/ /app

RUN mkdir -p /{config,data,log}


VOLUME /config
VOLUME /data
VOLUME /log

EXPOSE 80 443 8075-8080 8082 8084 8085

Docker Compose:

version: "3.8"

services:
  openems:
    image: openems:latest
    container_name: openems
    hostname: openems
    restart: unless-stopped
    stop_grace_period: 30s
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - /docker/openems_stack/conf:/config:rw
      - /docker/openems_stack/data:/data:rw
      - /docker/openems_stack/log:/log:rw
    networks:
      macvlan-iot:
        ipv4_address: 10.13.12.32
      db:
      mqtt:
      modbus:
      proxy:

networks:
  macvlan-iot:
    external: true
  mqtt:
    external: true
  db:
    external: true
  modbus:
    external: true
  proxy:
    external: true

Ja… ich freue mich sehr über diese Meldung! :wink:


RUN git clone -b main https://github.com/OpenEMS/openems.git /src

Du ziehst dir also immer den Code vom neuesten Release.

Oder verwendest du die heruntergeladene openems-edge.jar?

Ich frage deshalb so genau nach, weil anscheinend die Datei nicht richtig kompiliert wurde. In deiner jar-Datei fehlt die Datei io.openems.edge.common.type.Tuple - die erst vor kurzem dazu gekommen ist. So etwas passiert manchmal, wenn man in Eclipse baut und nach dem git pull vergisst, in Eclipse alles neu zu aktualisieren. In dem Fall empfehle ich immer einmal manuell in der EdgeApp.bndrun zu resolven. Dann sieht man den Fehler sofort.

Ansonsten gefällt mir die Docker-Compose file gut. Die könnten wir mal als Vorlage für ein offizielles Docker-Release nehmen…

Gruß,
Stefan

Ich ziehe mir die aktuelle Version wegen des UI,
da ihr nicht immer eine Release Version vom UI anbietet und diese auch leicht verändert werden muss (websocket).

Leider hat die Kompilierung von edge und backend beim erstellen des Docker Containers nicht funktioniert. Deshalb auch aus kommentiert.

#RUN ./gradlew buildEdge
#RUN ./gradlew buildBackend

Aktuell beziehe ich die Version 2023.8 direkt vom GitHub Release per lastversion.

Ich kann auch die restlichen Files für den Container gerne bereit stellen.

Hi, ich habe heute meine Dockerfiles soweit umgebaut,
das sie nun auch endlich die Datei selber compilieren kann.

Dabei bin ich auch durch den Quellcode gegangen und musst festellen,
dass im main Branch die Tupel.java fehlt.
Da muss irgendwas schief gelaufen sein.

Wenn die Datein die ihr per github Release bereitstellt, über den main Branch gebaut wurden,
sind diese fehlerhaft.

Kann ich bestätigen, Tuple.java ist nicht im branch 2023.8 enthalten.
Ich habe das Ganze als ZIP runtergeladen.
Und da die in Tuple.java enthaltene Funktion “Tuple” hier im Sourcecode verwendet wird :

  • ./io.openems.edge.ess.core/generated/io.openems.edge.ess.core.jar
  • ./io.openems.edge.ess.core/src/io/openems/edge/ess/core/power/solver/PowerTuple.java
  • ./io.openems.edge.ess.core/src/io/openems/edge/ess/core/power/Solver.java
  • ./io.openems.edge.ess.core/src/io/openems/edge/ess/core/power/data/InverterPrecision.java
    erklärt das auch warum ich im “ESS Power” die Strategy auf ‘None’ setzen mußte, um den “CycleTimeIsTooShort” Fehler wegzubekommen.
    Ich habe mir jetzt Tuple.java aus dem development branch geholt und bei mir lokal reinkopiert, Jetzt läuft das Ganze auch mit Strategy im “ESS Power” und ohne den Fehler.
    Gruß,
    Thomas

Hallo zusammen,

danke für die Rückmeldungen. Das Problem war, dass unsere Github Workflows nicht mehr ordentlich funktioniert hatten und deshalb wohl ein fehlerhaftes Release 2023.8.0 durchgerutscht ist. Der Fehler ist zwischenzeitlich behoben:

Gruß,
Stefan