Rest/JSON App Unstimmigkeiten

Hallo,
auch wenn ich ein FEMS (Version 2022.10.1) habe, hoffe ich, hier eine Antwort zu bekommen.
Bei der Abfrage meines Fenecon Home über Rest/JSON bekomme ich Werte, die nicht stimmen können.
Z.B. erhalte ich beim Kanal “battery0”:

{
        "address": "battery0/Tower0Module3Cell010Temperature",
        "type": "INTEGER",
        "accessMode": "RO",
        "text": "",
        "unit": "dC",
        "value": 3307
    },
    {
        "address": "battery0/Tower0Module3Cell000Temperature",
        "type": "INTEGER",
        "accessMode": "RO",
        "text": "",
        "unit": "dC",
        "value": 240
    },
    {
        "address": "battery0/Tower0Module0Cell005Temperature",
        "type": "INTEGER",
        "accessMode": "RO",
        "text": "",
        "unit": "dC",
        "value": 0
    },

Der Temperatur-Wert von Cell010 (3307) sieht für mich eher nach einer Spannung aus und bei Cell005 wird gar keiner (bzw. 0) geliefert. Das sind nur ein paar Fälle, es gibt noch mehr davon in der Antwort.
Für mich sieht das nach einem Fehler in der App aus.

Außerdem scheinen die Platzhalter mit Regex nicht so zu funktionieren, wie dokumentiert, denn beim Kanal kommt mit .* Fehler 404 zurück:

<html>

<head>
	<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1" />
	<title>Error 404 Not Found</title>
</head>

<body>
	<h2>HTTP ERROR 404 Not Found</h2>
	<table>
		<tr>
			<th>URI:</th>
			<td>/rest/channel/.*/.*</td>
		</tr>
		<tr>
			<th>STATUS:</th>
			<td>404</td>
		</tr>
		<tr>
			<th>MESSAGE:</th>
			<td>Not Found</td>
		</tr>
		<tr>
			<th>SERVLET:</th>
			<td>-</td>
		</tr>
	</table>
	<hr /><a href="https://eclipse.org/jetty">Powered by Jetty:// 9.4.44.v20210927</a>
	<hr />

</body>

</html>

Platzhalter nur beim Datenpunkt funktionieren.

Dann gibt es Kanäle, bei denen die Abfrage mit .* Fehler liefert, wenn es Datenpunkte gibt, die nicht gelesen werden dürfen:

<head>
	<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1" />
	<title>Error 500 java.lang.IllegalArgumentException: Channel [ArmSoftReset] is WRITE_ONLY.</title>
</head>

<body>
	<h2>HTTP ERROR 500 java.lang.IllegalArgumentException: Channel [ArmSoftReset] is WRITE_ONLY.</h2>
	<table>
		<tr>
			<th>URI:</th>
			<td>/rest/channel/batteryInverter0/.*</td>
		</tr>
		<tr>
			<th>STATUS:</th>
			<td>500</td>
		</tr>
		<tr>
			<th>MESSAGE:</th>
			<td>java.lang.IllegalArgumentException: Channel [ArmSoftReset] is WRITE_ONLY.</td>
		</tr>
		<tr>
			<th>SERVLET:</th>
			<td>-</td>
		</tr>
		<tr>
			<th>CAUSED BY:</th>
			<td>java.lang.IllegalArgumentException: Channel [ArmSoftReset] is WRITE_ONLY.</td>
		</tr>
	</table>
	<h3>Caused by:</h3>
	<pre>java.lang.IllegalArgumentException: Channel [ArmSoftReset] is WRITE_ONLY.
	at io.openems.edge.common.channel.internal.AbstractReadChannel.value(AbstractReadChannel.java:153)
	at io.openems.edge.controller.api.rest.RestHandler.handleGet(RestHandler.java:265)
	at io.openems.edge.controller.api.rest.RestHandler.handleChannel(RestHandler.java:189)
	at io.openems.edge.controller.api.rest.RestHandler.handleRest(RestHandler.java:170)
	at io.openems.edge.controller.api.rest.RestHandler.handle(RestHandler.java:92)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
	at org.eclipse.jetty.server.Server.handle(Server.java:516)
	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:400)
	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:645)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:392)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
	at java.base/java.lang.Thread.run(Unknown Source)
</pre>
	<hr /><a href="https://eclipse.org/jetty">Powered by Jetty:// 9.4.44.v20210927</a>
	<hr />

</body>

</html>

Hier wäre es besser, wenn entweder nur die lesbaren Kanäle zurück kommen oder auch die nur beschreibbaren, aber mit Wert NULL. In accessMode steht ja dann drin, ob man lesen kann oder nicht.

Und noch eine Frage zur App allgemein: Kann man darüber abfragen, welche Kanäle insgesamt existieren und auch abgefragt werden können?

Stefan

Da es hier wohl niemanden gibt, der sich mit der Schnittstelle auskennt, obwohl das ja ein reines OpenEMS Thema ist, an wen kann man sich denn sonst noch wenden, um an die Informationen zu kommen?