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?

Danke für die Korrekturen.

Es gibt allerdings immer noch Fehler bei den Zellentemperaturen.
Für ModuleXCell005Temperature, ModuleXCell006Temperature, ModuleXCell007Temperature, ModuleXCell008Temperature wird generell 0 zurückgegeben,
bei ModuleXCell010Temperature steht der Wert irgendeiner Spannung (z.B. 3313)
und Module0Cell014Temperature ist über 20 Grad zu hoch (z.B. 464, in MaxTemperature steht 257).

Hallo !

Nach wie vor ist die FEMS ein Produkt der Fenecon. Deswegen wäre es doch besser sich bei solchen Themen an Fenecon direkt zu wenden :slight_smile:

Grüße :slight_smile:

Die Skalierung bzw. die Einheiten dieser Channel sind leider noch falsch. Wir haben das als Aufgabe mit niedriger Priorität in unserem Backlog, freuen uns aber natürlich auch über einen Pull-Request, der den Fehler behebt.

sollte ich mal zeit finden, werde ich mich mal dran setzen. Kann aber nichts versprechen :smiley:

Da sich in der Zwischenzeit Nichts geändert hat:
Gibt es eine Möglichkeit, das in Verbindung mit meinem Fems zu debuggen? Wenn ja, würde ich mich mal hinsetzen und schauen, wie weit ich komme.

Hallo,

nein, da die FEMS ein geschlossenes Produkt von FENECON ist (nach wie vor der Hinweis, sich an Fenecon zu melden).

Wie aber Stefan bereits geschrieben hat, hat das bei Fenecon nicht die oberste Prio!

Grüße

Und was genau heißt das? Nach 4 Monaten habe ich noch nicht mal eine Antwort auf meine Anfrage bei Fenecon bekommen. Selbst mit niedriger Priorität wäre es doch langsam mal an der Zeit dafür.
Solange der ständige Hinweis auf Fenecon nicht wirklich hilft, muss auch mal dieses Forum die eine oder andere Frage aushalten.