[kostal] - connection lost with latest firmware update

Hello,

I just updated my kostal inverter (model plenticore plus 8.5) to the latest firmware released on 2019-12-17.

Download came from this page:
https://www.kostal-solar-electric.com/download/download#PLENTICORE%20plus/PLENTICORE%20plus%208.5/Deutschland/Update/
This is the file description:
PLENTICORE plus - PIKO IQ - UI: 01.13.04122 FW: 01.40 - Software Update

The info page now shows the following values:
UI-Version: 01.13.04122
MC-Version: 01.40
IOC-Version: 01.40

After the update openhab lost the connection to the inverter - this error shows up in the log:

2020-01-01 23:31:28.007 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: 
com.google.gson.JsonSyntaxException: Expected a com.google.gson.JsonArray but was com.google.gson.JsonPrimitive
	at com.google.gson.internal.bind.TypeAdapters$35$1.read(TypeAdapters.java:896) ~[?:?]
	at com.google.gson.Gson.fromJson(Gson.java:888) ~[?:?]
	at com.google.gson.Gson.fromJson(Gson.java:853) ~[?:?]
	at com.google.gson.Gson.fromJson(Gson.java:802) ~[?:?]
	at com.google.gson.Gson.fromJson(Gson.java:774) ~[?:?]
	at org.openhab.binding.internal.kostal.inverter.thirdgeneration.ThirdGenerationHttpHelper.getJsonArrayFromResponse(ThirdGenerationHttpHelper.java:144) ~[?:?]
	at org.openhab.binding.internal.kostal.inverter.thirdgeneration.ThirdGenerationHandler.updateChannelValues(ThirdGenerationHandler.java:195) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_231]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[?:1.8.0_231]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_231]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[?:1.8.0_231]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_231]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_231]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_231]

Looks like they changed something in the new firmware.

Does anybody of the kostal binding developers have some time to look into this?
I’d be willing to act as a tester for any changes made.

Rgds,
Markus

Since this is an official OH binding you need to file an issue on GitHub for the developers. Not all developers use this user forum.

Just a word of advice: Before updating firmware on devices, check that the API specs haven’t changed or anything of that nature. If it ain’t broke, don’t fix it.

I checked the release notes beforehand:
https://www.kostal-solar-electric.com/download/-/media/document-library-folder---kse/2019/03/12/07/13/release_notes_011304122.txt

Only mentioned a “general UI optimization”, no mention of the API whatsoever. Now found out, that the same API is used in the UI of the device itself, so this note probably included that changes to the API.

Already filed a support request with the manufacturer yesterday aksing if there were any changes to the API in this release.

1 Like

Include your findings in the gitHUB issue

Thanks for the info - just added an isse to GitHub
https://github.com/openhab/openhab-addons/issues/6745

1 Like

Quick update: The binding works again now.
What did I change:

  • restarted the inverter (once again)
  • removed all items/things etc. for binding, uninstalled binding, installed and configured again

As I did this more or less at the same time I cannot say what was the solution, but after that everything works as before.

Will also close the issue on github.

Hello Markus,
maybe you can help me with my problem. I have a Plenticore10 with newest firmware.
Openhab 2.5.0M6
In PaperUI the status of the inventer is allways “Unknown”. Do you have an idea what the problem is?

Try moving to 2.5 Stable version.
Milestone 6 was replaced by Release Candidate 1 which was replaced by the Stable 2.5 version.

Hello,

as Bruce suggested - update to 2.5 stable version. Check that the openhab configuration of the inverter is OK (correct IP address, correct password, …)
If it still doesn’t work check openhab.log and event.log for anything with “kostal” and connection warnings or errors and paste those parts here for further analysis.

Rgds,
Markus

1 Like

Hello,

I made an update to 2.5 stable now. But still same problem.
I can find this in the LOG, but this do not help me. Maybe a problem with java?

2020-01-11 16:41:32.438 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception:
java.lang.IllegalArgumentException: Expected closing bracket for IPv6 address at index 13: http://[http://192.168.2.114//api/v1/auth/start]
        at java.net.URI.create(URI.java:852) ~[?:1.8.0_152]
        at org.eclipse.jetty.client.HttpClient.newRequest(HttpClient.java:442) ~[?:?]
        at org.eclipse.jetty.client.HttpClient.newRequest(HttpClient.java:431) ~[?:?]
        at org.openhab.binding.internal.kostal.inverter.thirdgeneration.ThirdGenerationHttpHelper.executeHttpPost(ThirdGenerationHttpHelper.java:84) ~[?:?]
        at org.openhab.binding.internal.kostal.inverter.thirdgeneration.ThirdGenerationHttpHelper.executeHttpPost(ThirdGenerationHttpHelper.java:66) ~[?:?]
        at org.openhab.binding.internal.kostal.inverter.thirdgeneration.ThirdGenerationHandler.authenticate(ThirdGenerationHandler.java:309) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_152]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_152]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_152]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[?:1.8.0_152]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_152]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_152]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_152]
Caused by: java.net.URISyntaxException: Expected closing bracket for IPv6 address at index 13: http://[http://192.168.2.114//api/v1/auth/start]
        at java.net.URI$Parser.fail(URI.java:2848) ~[?:1.8.0_152]
        at java.net.URI$Parser.failExpecting(URI.java:2854) ~[?:1.8.0_152]
        at java.net.URI$Parser.parseServer(URI.java:3231) ~[?:1.8.0_152]
        at java.net.URI$Parser.parseAuthority(URI.java:3155) ~[?:1.8.0_152]
        at java.net.URI$Parser.parseHierarchical(URI.java:3097) ~[?:1.8.0_152]
        at java.net.URI$Parser.parse(URI.java:3053) ~[?:1.8.0_152]
        at java.net.URI.<init>(URI.java:588) ~[?:1.8.0_152]
        at java.net.URI.create(URI.java:850) ~[?:1.8.0_152]
        ... 12 more
2020-01-11 16:41:41.437 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception:
java.lang.IllegalArgumentException: Expected closing bracket for IPv6 address at index 13: http://[http://192.168.2.114//api/v1/processdata]
        at java.net.URI.create(URI.java:852) ~[?:1.8.0_152]
        at org.eclipse.jetty.client.HttpClient.newRequest(HttpClient.java:442) ~[?:?]
        at org.eclipse.jetty.client.HttpClient.newRequest(HttpClient.java:431) ~[?:?]
        at org.openhab.binding.internal.kostal.inverter.thirdgeneration.ThirdGenerationHttpHelper.executeHttpPost(ThirdGenerationHttpHelper.java:84) ~[?:?]
        at org.openhab.binding.internal.kostal.inverter.thirdgeneration.ThirdGenerationHandler.updateChannelValues(ThirdGenerationHandler.java:163) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_152]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[?:1.8.0_152]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_152]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[?:1.8.0_152]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_152]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_152]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_152]
Caused by: java.net.URISyntaxException: Expected closing bracket for IPv6 address at index 13: http://[http://192.168.2.114//api/v1/processdata]
        at java.net.URI$Parser.fail(URI.java:2848) ~[?:1.8.0_152]
        at java.net.URI$Parser.failExpecting(URI.java:2854) ~[?:1.8.0_152]
        at java.net.URI$Parser.parseServer(URI.java:3231) ~[?:1.8.0_152]
        at java.net.URI$Parser.parseAuthority(URI.java:3155) ~[?:1.8.0_152]
        at java.net.URI$Parser.parseHierarchical(URI.java:3097) ~[?:1.8.0_152]
        at java.net.URI$Parser.parse(URI.java:3053) ~[?:1.8.0_152]
        at java.net.URI.<init>(URI.java:588) ~[?:1.8.0_152]
        at java.net.URI.create(URI.java:850) ~[?:1.8.0_152]
        ... 11 more
2020-01-11 16:41:52.595 [WARN ] [o.internal.handler.SysteminfoHandler] - No information for channel battery#remainingCapacity with device index 0 :
2

Something was expecting an IPv6 address for a URL? but somebody entered
http://192.168.2.114//api/v1/auth/start
The "IPv6 address might be just a system guess due to other issues. I would find that entry and try

192.168.2.114/api/v1/auth/start NOTE: I removed the double slash too.

If it wants just the address, I would try that as a next step.

´Thanks for very fast reply!
But if I change the IP adress of the thing to something without http:// thing is not “unknown” but “offline comunication error”
Here is the log:

==> /var/log/openhab2/openhab.log <==
2020-01-11 17:34:53.103 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception:
com.google.gson.JsonSyntaxException: Expected a com.google.gson.JsonObject but was com.google.gson.JsonPrimitive
        at com.google.gson.internal.bind.TypeAdapters$35$1.read(TypeAdapters.java:896) ~[?:?]
        at com.google.gson.Gson.fromJson(Gson.java:888) ~[?:?]
        at com.google.gson.Gson.fromJson(Gson.java:853) ~[?:?]
        at com.google.gson.Gson.fromJson(Gson.java:802) ~[?:?]
        at com.google.gson.Gson.fromJson(Gson.java:774) ~[?:?]
        at org.openhab.binding.internal.kostal.inverter.thirdgeneration.ThirdGenerationHttpHelper.getJsonObjectFromResponse(ThirdGenerationHttpHelper.java:155) ~[?:?]
        at org.openhab.binding.internal.kostal.inverter.thirdgeneration.ThirdGenerationHandler.authenticate(ThirdGenerationHandler.java:342) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_152]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_152]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_152]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[?:1.8.0_152]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_152]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_152]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_152]
2020-01-11 17:34:53.250 [WARN ] [o.internal.handler.SysteminfoHandler] - No information for channel battery#remainingCapacity with device index 0 :


Sorry, I do not know. My answer was solely based on the error. I do not use that binding.

But thanks for your help.
Nowmaly the thing configuration is very simple. Beacuse of that I do not know where I have to look for the error.
I will try to start a complete new openhab with only that binding. Maybe this will will work and I can add other bindings later.

1 Like

Christian,

please have a look at the documentation of the binding -> third generation devices.

The configuration is described with example values - the same config parameters will be used in Paper UI.
Some remarks from my side:
IP-Adress: you have to distinguish between IP-Address (“192.168.2.114” in your case) and a URL (e.g. “http://192.168.2.114/”) The binding needs the IP-Address as described in the documentation.
Password: This is the password you have set for the Web view of the inverter when logging in as “Plant Owner” or “Anlagenbetreiber”

Rgds,
Markus

1 Like

It amazes me how people avoid the official written documentation and wonder why things do not work.

Hi Markus,
yes I know it but in my case everything is right.
I installed a new system on a second SD card and binding works fine.
There is a problem in my openhab system and not in the binding configuration.
Maybe I should use that new system in the future.
Thanks for your help!