[New Binding] Enphase Envoy Solar System gateway

@captndelta I have been using the binding for a while now and i hope it will be available on next versions of OH. So if possible could it be merged into OH master? Or do you mind if someone else takes your code and make a PR against OH?

Is this Binding still supported and work with the latest version of OH? I’m not having any luck with the Binding discovering my Envoy-s unit. I CAN view the inverter info via the v1 API call that uses the default password. I don’t know what logs to review for any issues.

@captndelta seems to have gone quiet. I’ve switched over to using a Jython script, but you can easily use the http binding. See this post for info on the http solution, and this post for info on the Jython solution.

Since development seem to have very much stalled. I’ve picked up and reworked the Enphase binding to get it to work with my system. I’ll hope to get this in the openHAB distribution at some point. You can find a kar file you can drop in the addons directory and a link to the documentation here: https://github.com/Hilbrand/openhab-addons/releases/tag/enphase

Since I changed the interface of the things and if you have an earlier version of this binding you need to recreate your things. You only need to configure it with the serialnumber if you have all other as default. See the documentation at the link above. If you have additional feature request/bug reports please add them as new issue to my GitHub repository for now.

I just tried to install this and my system didn’t seem to recognise it - should the extension be jar rather than kar?

Which openHAB version do you have, because you need to have 2.5.x

Nightly openHAB 2.5.7 Build #160

I’ve just reread this thread, would you like me to open an issue on Github?

If you have additional feature request/bug reports please add them as new issue to my GitHub repository for now.

Due to vacation period I had no time to react earlier.

Do you mean you didn’t see the binding or the binding didn’t see you enphase? If you didn’t see the binding, did you put it in the right directory? I’ve updated the kar file (although I don’t expect it make a difference here) can you try this updated version.

In short, kar files are jar files with additional functionality that it installs any features required by the binding. But this only works for individual bindings since openHAB 2.5.0. For older versions of openHAB you would need a jar file and manually install any dependencies (if needed)

If you get it running and find any issues. yes please open an issue. That makes it easier and faster for me to track and separate different issues.

I’ve just given this another go, initially it seemed to kill the MQTT Binding in OH until I reinstalled MQTT. Then realising my snapshot build was a little old I updated everything and reinstalled the binding. It found the Envoy, and I changed the username and password in the thing to what I’m using in my curl command to query it with. The thing created with the Enphase Binding won’t come online and displays this

 Status: OFFLINE - COMMUNICATION_ERROR java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 5 path $

Hi, I’ve just added the kar-file in the addons, Paper UI Inbox gives me my Envoy, but when I want to add is as a Thing, I get following error: [ERROR: 409 - Conflict]
The log mentions:
[WARN ] [g.discovery.internal.PersistentInbox] - Cannot create thing. No binding found that supports creating a thing of type enphase:envoy.

I’m really a noob for the moment, so perhaps I did something not correctly…

Ok, so I just realized that after I installed the kar-file in the /addons folder, I needed to look in PaperUI in the addons menu and search for the Enphase binding, which now showed 2 results: the 2.5.x version and the older 1.14.0 version. After installing the former binding, autodiscovery worked for the envoy as well as for the inverters!
I’ll play around and see if it works without the envoy username & password

Hi, I’ve got my aggregated input from the envoy, and also the individual data from every single inverter and push these to influxdb to show in grafana. Now, I want to add this with my smart meter (Sagemcom DSMR5), where I could get data every second (now I collect these only every minute). But to get an idea of my selfconsumption, I need to combine data from my PV system. What is the refresh rate out of the envoy (both aggregated and individual inverter)? Default it is set at 15 minutes, but is there a finer detail possible?

Hello @hilbrand

Thank you for this binding. Although I am getting data from my system, ever since I installed the binding I am getting errors in my logs. Please see below:

[WARN ] [internal.service.FeaturesServiceImpl] - Can't load features repository mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/2.5.0/xml/features
java.lang.RuntimeException: Error resolving artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:2.5.0: [Could not find artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:2.5.0 in openhab (https://dl.bintray.com/openhab/mvn/online-repo/2.5/), Could not find artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:2.5.0 in openhab (https://dl.bintray.com/openhab/mvn/online-repo/2.5/)] : mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/2.5.0/xml/features
	at org.apache.karaf.features.internal.service.RepositoryImpl.load(RepositoryImpl.java:116) ~[?:?]
	at org.apache.karaf.features.internal.service.RepositoryImpl.<init>(RepositoryImpl.java:50) ~[?:?]
	at org.apache.karaf.features.internal.service.RepositoryCacheImpl.create(RepositoryCacheImpl.java:51) ~[?:?]
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.getFeatureCache(FeaturesServiceImpl.java:605) ~[?:?]
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.listInstalledFeatures(FeaturesServiceImpl.java:655) ~[?:?]
	at org.openhab.core.karaf.internal.FeatureInstaller.installFeature(FeatureInstaller.java:486) ~[?:?]
	at org.openhab.core.karaf.internal.FeatureInstaller.installPackage(FeatureInstaller.java:527) ~[?:?]
	at org.openhab.core.karaf.internal.FeatureInstaller.lambda$1(FeatureInstaller.java:184) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_212]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_212]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_212]
Caused by: java.io.IOException: Error resolving artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:2.5.0: [Could not find artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:2.5.0 in openhab (https://dl.bintray.com/openhab/mvn/online-repo/2.5/), Could not find artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:2.5.0 in openhab (https://dl.bintray.com/openhab/mvn/online-repo/2.5/)]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.configureIOException(AetherBasedResolver.java:803) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:774) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:657) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:598) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:565) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:555) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.Connection.getInputStream(Connection.java:123) ~[?:?]
	at java.net.URL.openStream(URL.java:1045) ~[?:1.8.0_212]
	at org.apache.karaf.features.internal.service.RepositoryImpl.load(RepositoryImpl.java:113) ~[?:?]
	... 10 more
	Suppressed: shaded.org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:2.5.0 in openhab (https://dl.bintray.com/openhab/mvn/online-repo/2.5/)
		at shaded.org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:48) ~[?:?]
		at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:368) ~[?:?]
		at shaded.org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:75) ~[?:?]
		at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:642) ~[?:?]
		at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:262) ~[?:?]
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:489) ~[?:?]
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:390) ~[?:?]
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:215) ~[?:?]
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:192) ~[?:?]
		at shaded.org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:247) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:767) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:657) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:598) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:565) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:555) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.Connection.getInputStream(Connection.java:123) ~[?:?]
		at java.net.URL.openStream(URL.java:1045) ~[?:1.8.0_212]
		at org.apache.karaf.features.internal.service.RepositoryImpl.load(RepositoryImpl.java:113) ~[?:?]
		at org.apache.karaf.features.internal.service.RepositoryImpl.<init>(RepositoryImpl.java:50) ~[?:?]
		at org.apache.karaf.features.internal.service.RepositoryCacheImpl.create(RepositoryCacheImpl.java:51) ~[?:?]
		at org.apache.karaf.features.internal.service.FeaturesServiceImpl.getFeatureCache(FeaturesServiceImpl.java:605) ~[?:?]
		at org.apache.karaf.features.internal.service.FeaturesServiceImpl.listInstalledFeatures(FeaturesServiceImpl.java:655) ~[?:?]
		at org.openhab.core.karaf.internal.FeatureInstaller.installFeature(FeatureInstaller.java:486) ~[?:?]
		at org.openhab.core.karaf.internal.FeatureInstaller.installPackage(FeatureInstaller.java:527) ~[?:?]
		at org.openhab.core.karaf.internal.FeatureInstaller.lambda$1(FeatureInstaller.java:184) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_212]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_212]
		at java.lang.Thread.run(Thread.java:748) [?:1.8.0_212]
	Suppressed: shaded.org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:2.5.0 in openhab (https://dl.bintray.com/openhab/mvn/online-repo/2.5/)
		at shaded.org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:48) ~[?:?]
		at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:368) ~[?:?]
		at shaded.org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:75) ~[?:?]
		at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:642) ~[?:?]
		at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:262) ~[?:?]
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:489) ~[?:?]
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:390) ~[?:?]
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:215) ~[?:?]
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:192) ~[?:?]
		at shaded.org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:247) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:767) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:657) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:598) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:565) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:555) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.Connection.getInputStream(Connection.java:123) ~[?:?]
		at java.net.URL.openStream(URL.java:1045) ~[?:1.8.0_212]
		at org.apache.karaf.features.internal.service.RepositoryImpl.load(RepositoryImpl.java:113) ~[?:?]
		at org.apache.karaf.features.internal.service.RepositoryImpl.<init>(RepositoryImpl.java:50) ~[?:?]
		at org.apache.karaf.features.internal.service.RepositoryCacheImpl.create(RepositoryCacheImpl.java:51) ~[?:?]
		at org.apache.karaf.features.internal.service.FeaturesServiceImpl.getFeatureCache(FeaturesServiceImpl.java:605) ~[?:?]
		at org.apache.karaf.features.internal.service.FeaturesServiceImpl.listInstalledFeatures(FeaturesServiceImpl.java:655) ~[?:?]
		at org.openhab.core.karaf.internal.FeatureInstaller.installFeature(FeatureInstaller.java:486) ~[?:?]
		at org.openhab.core.karaf.internal.FeatureInstaller.installPackage(FeatureInstaller.java:527) ~[?:?]
		at org.openhab.core.karaf.internal.FeatureInstaller.lambda$1(FeatureInstaller.java:184) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_212]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_212]
		at java.lang.Thread.run(Thread.java:748) [?:1.8.0_212]
Caused by: shaded.org.eclipse.aether.resolution.ArtifactResolutionException: Error resolving artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:2.5.0
	at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:413) ~[?:?]
	at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:215) ~[?:?]
	at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:192) ~[?:?]
	at shaded.org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:247) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:767) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:657) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:598) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:565) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:555) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.Connection.getInputStream(Connection.java:123) ~[?:?]
	at java.net.URL.openStream(URL.java:1045) ~[?:1.8.0_212]
	at org.apache.karaf.features.internal.service.RepositoryImpl.load(RepositoryImpl.java:113) ~[?:?]
	... 10 more

Are you able to advise? :crossed_fingers:

Am on 2.5.0.

Edit - scratch that.
I’ve updated from 2.5.0 -> 2.5.9 and no more errors in logs.
Cheers! :+1:

Just wanted to pass on my appreciation and kudos for this updated enphase binding. I just installed it into my relatively neglected openhab install and it works really well! Thanks so much, and I hope to see this become part of the default openhab distribution.

Until today i used the version from captndelta. I did have som issue’s (log flooding, no UoM and no textual config), but that should be fixed with this version.

This binding hasn’t made it into 3.0 did it? This binding is one of the ‘problems’ that keep me from updating. So if i can help with this binding in any way, please let me know. I have just installed it and will report back in a while. Great thanks!

I’ve updated the Enphase binding to better handle different envoy versions. It’s still a 2.5 version. You can find the kar file here: Release Enphase 2.5.x binding (28-12-2020) · Hilbrand/openhab-addons · GitHub If this version works oke. I’ll create a 3.0 version.

2 Likes

Downloaded it and will report back in a while. I noticed the previous version had some “test” channels.

Different question: The relay is that some additional device you need of you’re using a 3 phase envoy? I’m currently looking after some more solar panels and will need to switch from singel phase to 3 phase.

Isiepel,

The relay connects to the envoy and connects/disconnects the micros from the grid if the power grid has problems, to stop islanding ect. They are for both single & three phase systems.

It would be wonderful to see this binding in OH3, I just switched to OH3 and am missing my Enphase data.
Thanks for your efforts on this one Hilbrand!

Cheers,

Two weeks without problem, so i guess it worked as expected. Enphase is the only binding keeping me from upgrading to 3.0, so i hope it get’s a port soon. Thanks!