[UNSUPPORTED] Enphase Envoy (local access)

Cool! Well, that worked but the envoy thing isn’t showing any data. I went into the ST settings and I filled out all the required fields but it is saying this:.

it may be off the bottom of the screen, but is inverter size filled out?

Yes both inverter/panel questions are filled out.

Are you sure your on the same wifi network as your SmartThings hub?

By the way the graph never appears on my screen I just get the cursor spinning like in the attached image has anybody else experienced this and is there a fix for it?

I have the same issue here, get the error when saving. Note I have an Envoy-S with IQ7+ Microinverters. Seems that I need the path to the geggog code that klockk asked for back in July 2019?

Are you using Classic App or New App to try to get this setup?
I wonder if we need to make any updates to the code to ensure it’s good with the New App these days…
I never got the other Fork I requested… wish I had!

1 Like

Using both - I get that error in the classic app when I try to put in the IP. The new app gives no error, but does not work in grabbing the data.

Awesome, i got it working thank you so much!

Hi rybackisback,
If you found solution for your answer please post it here I have exactly the same issue
Thanks

No i did not find a solution. I now have a fronius inverter and so now using a different device handler.

if i set refresh time lower then 15min i get “no new data” in ide logs. looks like enphase changed something…

it would be nice if someone could update app for new smartthings app. perhaps simplify the device handler to just the data … the api’s being used are now blocked by the latest firmware…

all i get in app is “energy consumption”, which is production in kwh; and “power meter”, which is watts.

and 15 minutes is the smallest interval, any thing smaller errors in logs.

/production.json?details=1

returns

{“production”:[{“type”:“inverters”,“activeCount”:56,“readingTime”:1617410360,“wNow”:39,“whLifetime”:3727182},{“type”:“eim”,“activeCount”:1,“measurementType”:“production”,“readingTime”:1617410904,“wNow”:-0.0,“whLifetime”:3701075.721,“varhLeadLifetime”:2.608,“varhLagLifetime”:3827318.273,“vahLifetime”:6716898.487,“rmsCurrent”:9.488,“rmsVoltage”:249.673,“reactPwr”:1181.298,“apprntPwr”:1184.469,“pwrFactor”:0.0,“whToday”:96688.721,“whLastSevenDays”:570651.721,“vahToday”:108358.487,“varhLeadToday”:0.608,“varhLagToday”:24240.273,“lines”:[{“wNow”:-0.0,“whLifetime”:1849492.286,“varhLeadLifetime”:2.498,“varhLagLifetime”:1911452.514,“vahLifetime”:3353686.043,“rmsCurrent”:4.756,“rmsVoltage”:124.768,“reactPwr”:592.161,“apprntPwr”:593.458,“pwrFactor”:0.0,“whToday”:48336.286,“whLastSevenDays”:285319.286,“vahToday”:54171.043,“varhLeadToday”:0.498,“varhLagToday”:12076.514},{“wNow”:-0.0,“whLifetime”:1851583.434,“varhLeadLifetime”:0.11,“varhLagLifetime”:1915865.759,“vahLifetime”:3363212.444,“rmsCurrent”:4.732,“rmsVoltage”:124.905,“reactPwr”:589.137,“apprntPwr”:591.011,“pwrFactor”:0.0,“whToday”:48352.434,“whLastSevenDays”:285332.434,“vahToday”:54187.444,“varhLeadToday”:0.11,“varhLagToday”:12163.759}]}],“consumption”:[{“type”:“eim”,“activeCount”:1,“measurementType”:“total-consumption”,“readingTime”:1617410904,“wNow”:1243.165,“whLifetime”:9018986.123,“varhLeadLifetime”:4325070.038,“varhLagLifetime”:16284.373,“vahLifetime”:11221373.263,“rmsCurrent”:14.5,“rmsVoltage”:249.774,“reactPwr”:-1133.337,“apprntPwr”:1813.269,“pwrFactor”:0.68,“whToday”:23253.123,“whLastSevenDays”:245457.123,“vahToday”:35818.263,“varhLeadToday”:22309.038,“varhLagToday”:5.373,“lines”:[{“wNow”:766.752,“whLifetime”:4459300.349,“varhLeadLifetime”:2691931.018,“varhLagLifetime”:4330.991,“vahLifetime”:5981175.106,“rmsCurrent”:9.333,“rmsVoltage”:124.813,“reactPwr”:-754.27,“apprntPwr”:1167.616,“pwrFactor”:0.65,“whToday”:12589.349,“whLastSevenDays”:133099.349,“vahToday”:21884.106,“varhLeadToday”:14787.018,“varhLagToday”:0.991},{“wNow”:476.414,“whLifetime”:4559685.774,“varhLeadLifetime”:1633139.02,“varhLagLifetime”:11953.382,“vahLifetime”:5240198.157,“rmsCurrent”:5.166,“rmsVoltage”:124.961,“reactPwr”:-379.067,“apprntPwr”:645.653,“pwrFactor”:0.73,“whToday”:10663.774,“whLastSevenDays”:112357.774,“vahToday”:13934.157,“varhLeadToday”:7522.02,“varhLagToday”:4.382}]},{“type”:“eim”,“activeCount”:1,“measurementType”:“net-consumption”,“readingTime”:1617410904,“wNow”:1243.165,“whLifetime”:0.0,“varhLeadLifetime”:4325067.431,“varhLagLifetime”:-3811033.9,“vahLifetime”:11221373.263,“rmsCurrent”:5.011,“rmsVoltage”:249.724,“reactPwr”:47.961,“apprntPwr”:1251.38,“pwrFactor”:0.99,“whToday”:0,“whLastSevenDays”:0,“vahToday”:0,“varhLeadToday”:0,“varhLagToday”:0,“lines”:[{“wNow”:766.752,“whLifetime”:0.0,“varhLeadLifetime”:2691928.521,“varhLagLifetime”:-1907121.523,“vahLifetime”:5981175.106,“rmsCurrent”:4.577,“rmsVoltage”:124.791,“reactPwr”:-162.109,“apprntPwr”:571.201,“pwrFactor”:1.0,“whToday”:0,“whLastSevenDays”:0,“vahToday”:0,“varhLeadToday”:0,“varhLagToday”:0},{“wNow”:476.414,“whLifetime”:0.0,“varhLeadLifetime”:1633138.91,“varhLagLifetime”:-1903912.377,“vahLifetime”:5240198.157,“rmsCurrent”:0.434,“rmsVoltage”:124.933,“reactPwr”:210.07,“apprntPwr”:54.194,“pwrFactor”:1.0,“whToday”:0,“whLastSevenDays”:0,“vahToday”:0,“varhLeadToday”:0,“varhLagToday”:0}]}],“storage”:[{“type”:“acb”,“activeCount”:0,“readingTime”:0,“wNow”:0,“whNow”:0,“state”:“idle”}]}

/production?locale=en
requires login, which isn’t installer or envoy…

@ahndee for your swan song, can u update your device handler to use //ip//production.json and strip out all but watts, watt hours, for production and same for consumption.

I might eventually be able to look at it, but gotta find time to examine the code

cool. @ahndee is headed to Hubitat. frustrated that he lost his graphing functions. i don’t need graphing, as that is in the enphase apps. just really want the ability to have power meter function so i can uses the data in web core to switch on loads, like to start car charging or adjusting thermostats…

i edited the dh to add IP/production.json and it is able to request the data. just don’t know about java or groovy. so i ordered a few books off amazon…

def pullData() {
updateDNI()
if (!state.installationDate) {
log.debug “${device.displayName} - requesting installation date from Envoy…”
sendHubCommand(new physicalgraph.device.HubAction([
method: “GET”,
path: “/production?locale=en”,
headers: [HOST:getHostAddress()]
],
state.dni,
[callback: installationDateCallback])
)
} else {
state.lastRequestType = (state.api == “HTML” ? “HTML” : “JSON API”)
log.debug “${device.displayName} - requesting latest data from Envoy via ${state.lastRequestType}…”
updateDNI()
sendHubCommand(new physicalgraph.device.HubAction([
method: “GET”,
path: state.lastRequestType == “HTML” ? “/production?locale=en” : “/api/v1/production”,
headers: [HOST:getHostAddress()]
],
state.dni,
[callback: dataCallback])
)
> sendHubCommand(new physicalgraph.device.HubAction([
> method: “GET”,
> path: state.lastRequestType == “HTML” ? “/production?locale=en” : “/production.json”,
> headers: [HOST:getHostAddress()]
> ],
> state.dni,
> [callback: dataCallback])
)
}
}

logs

c5ec53ff-d7ee-47ad-8c54-5b1beb28c890 10:13:03 AM: error java.lang.NullPointerException: Cannot invoke method div() on null object @line 479 (dataCallback)

c5ec53ff-d7ee-47ad-8c54-5b1beb28c890 10:13:03 AM: debug solar - new data: [consumption:[[activeCount:1, apprntPwr:2037.609, measurementType:total-consumption, pwrFactor:0.75, reactPwr:-1123.26, readingTime:1617462791, rmsCurrent:16.237, rmsVoltage:250.704, type:eim, vahLifetime:11250876.227, vahToday:19601.227, varhLagLifetime:16334.974, varhLagToday:0.974, varhLeadLifetime:4341237.626, varhLeadToday:11640.626, wNow:1518.953, whLastSevenDays:244933.215, whLifetime:9040462.215, whToday:13674.215], [activeCount:1, apprntPwr:12363.887, measurementType:net-consumption, pwrFactor:-0.53, reactPwr:137.334, readingTime:1617462791, rmsCurrent:49.312, rmsVoltage:250.729, type:eim, vahLifetime:11250876.227, vahToday:0, varhLagLifetime:-3827887.584, varhLagToday:0, varhLeadLifetime:4341235.018, varhLeadToday:0, wNow:-6578.468, whLastSevenDays:0, whLifetime:0.0, whToday:0]], production:[[activeCount:56, readingTime:1617462789, type:inverters, wNow:5906, whLifetime:3734035], [activeCount:1, apprntPwr:8199.386, measurementType:production, pwrFactor:0.99, reactPwr:1260.594, readingTime:1617462791, rmsCurrent:65.548, rmsVoltage:250.755, type:eim, vahLifetime:6740491.333, vahToday:18679.333, varhLagLifetime:3844222.558, varhLagToday:12006.558, varhLeadLifetime:2.608, varhLeadToday:0.608, wNow:8097.421, whLastSevenDays:576938.707, whLifetime:3709716.707, whToday:8641.707]], storage:[[activeCount:0, readingTime:0, state:idle, type:acb, wNow:0, whNow:0]]]

c5ec53ff-d7ee-47ad-8c54-5b1beb28c890 10:13:02 AM: debug solar - no new data

c5ec53ff-d7ee-47ad-8c54-5b1beb28c890 10:13:02 AM: debug solar - requesting latest data from Envoy via JSON API…

c5ec53ff-d7ee-47ad-8c54-5b1beb28c890 10:13:02 AM: debug solar - unable to find installation date on page

c5ec53ff-d7ee-47ad-8c54-5b1beb28c890 10:13:02 AM: debug solar - trying to determine system installation date…

c5ec53ff-d7ee-47ad-8c54-5b1beb28c890 10:13:02 AM: trace solar - startPoll: schedule(‘31 11/15 * * * ?’, pullData)

c5ec53ff-d7ee-47ad-8c54-5b1beb28c890 10:13:02 AM: debug solar - requesting installation date from Envoy…

c5ec53ff-d7ee-47ad-8c54-5b1beb28c890 10:13:02 AM: trace solar - setting checkInterval for device health check to 4530 seconds

c5ec53ff-d7ee-47ad-8c54-5b1beb28c890 10:13:02 AM: trace solar - updated() called with settings: [‘confIpAddr’:‘192.168.7.248’, ‘confTcpPort’:80, ‘confNumInverters’:56, ‘pollingInterval’:15, ‘confInverterSize’:295, ‘confPanelSize’:340]

c5ec53ff-d7ee-47ad-8c54-5b1beb28c890 10:11:07 AM: debug solar - no new data

c5ec53ff-d7ee-47ad-8c54-5b1beb28c890 10:11:07 AM: error java.lang.NullPointerException: Cannot invoke method div() on null object @line 479 (dataCallback)

there are two url that dump data from the envoy, the first dumps more data. there are three sections, one each for production, consumption and net-consumption.

ip/production.json?details=1

{“production”:[{“type”:“inverters”,“activeCount”:56,“readingTime”:1617480087,“wNow”:12485,“whLifetime”:3786585},{“type”:“eim”,“activeCount”:1,“measurementType”:“production”,“readingTime”:1617480090,“wNow”:12138.669,“whLifetime”:3763209.495,“varhLeadLifetime”:2.608,“varhLagLifetime”:3850453.113,“vahLifetime”:6794385.514,“rmsCurrent”:97.324,“rmsVoltage”:251.069,“reactPwr”:1313.029,“apprntPwr”:12219.011,“pwrFactor”:0.99,“whToday”:62134.495,“whLastSevenDays”:621982.495,“vahToday”:72573.514,“varhLeadToday”:0.608,“varhLagToday”:18237.113,“lines”:[{“wNow”:6084.135,“whLifetime”:1880531.025,“varhLeadLifetime”:2.498,“varhLagLifetime”:1922976.374,“vahLifetime”:3392396.257,“rmsCurrent”:48.801,“rmsVoltage”:125.491,“reactPwr”:652.129,“apprntPwr”:6124.83,“pwrFactor”:0.99,“whToday”:31039.025,“whLastSevenDays”:310957.025,“vahToday”:36256.257,“varhLeadToday”:0.498,“varhLagToday”:9077.374},{“wNow”:6054.534,“whLifetime”:1882678.47,“varhLeadLifetime”:0.11,“varhLagLifetime”:1927476.739,“vahLifetime”:3401989.258,“rmsCurrent”:48.523,“rmsVoltage”:125.578,“reactPwr”:660.9,“apprntPwr”:6094.181,“pwrFactor”:0.99,“whToday”:31095.47,“whLastSevenDays”:311025.47,“vahToday”:36317.258,“varhLeadToday”:0.11,“varhLagToday”:9159.739}]}],“consumption”:[{“type”:“eim”,“activeCount”:1,“measurementType”:“total-consumption”,“readingTime”:1617480090,“wNow”:1375.015,“whLifetime”:9047579.367,“varhLeadLifetime”:4346644.105,“varhLagLifetime”:16338.591,“vahLifetime”:11260593.136,“rmsCurrent”:15.248,“rmsVoltage”:250.983,“reactPwr”:-1112.884,“apprntPwr”:1912.774,“pwrFactor”:0.72,“whToday”:20791.367,“whLastSevenDays”:242320.367,“vahToday”:29318.136,“varhLeadToday”:17047.105,“varhLagToday”:4.591,“lines”:[{“wNow”:901.293,“whLifetime”:4476932.488,“varhLeadLifetime”:2706292.116,“varhLagLifetime”:4331.035,“vahLifetime”:6006356.46,“rmsCurrent”:10.11,“rmsVoltage”:125.421,“reactPwr”:-735.681,“apprntPwr”:1267.768,“pwrFactor”:0.72,“whToday”:12731.488,“whLastSevenDays”:132383.488,“vahToday”:18801.46,“varhLeadToday”:11324.116,“varhLagToday”:0.035},{“wNow”:473.722,“whLifetime”:4570646.879,“varhLeadLifetime”:1640351.989,“varhLagLifetime”:12007.557,“vahLifetime”:5254236.677,“rmsCurrent”:5.138,“rmsVoltage”:125.561,“reactPwr”:-377.203,“apprntPwr”:645.006,“pwrFactor”:0.73,“whToday”:8059.879,“whLastSevenDays”:109936.879,“vahToday”:10516.677,“varhLeadToday”:5722.989,“varhLagToday”:4.557}]},{“type”:“eim”,“activeCount”:1,“measurementType”:“net-consumption”,“readingTime”:1617480090,“wNow”:-10763.654,“whLifetime”:0.0,“varhLeadLifetime”:4346641.497,“varhLagLifetime”:-3834114.522,“vahLifetime”:11260593.136,“rmsCurrent”:82.076,“rmsVoltage”:251.026,“reactPwr”:200.145,“apprntPwr”:20603.145,“pwrFactor”:-0.52,“whToday”:0,“whLastSevenDays”:0,“vahToday”:0,“varhLeadToday”:0,“varhLagToday”:0,“lines”:[{“wNow”:-5182.842,“whLifetime”:0.0,“varhLeadLifetime”:2706289.618,“varhLagLifetime”:-1918645.339,“vahLifetime”:6006356.46,“rmsCurrent”:38.691,“rmsVoltage”:125.456,“reactPwr”:-83.552,“apprntPwr”:4853.995,“pwrFactor”:-1.0,“whToday”:0,“whLastSevenDays”:0,“vahToday”:0,“varhLeadToday”:0,“varhLagToday”:0},{“wNow”:-5580.812,“whLifetime”:0.0,“varhLeadLifetime”:1640351.879,“varhLagLifetime”:-1915469.183,“vahLifetime”:5254236.677,“rmsCurrent”:43.385,“rmsVoltage”:125.57,“reactPwr”:283.697,“apprntPwr”:5447.843,“pwrFactor”:-1.0,“whToday”:0,“whLastSevenDays”:0,“vahToday”:0,“varhLeadToday”:0,“varhLagToday”:0}]}],“storage”:[{“type”:“acb”,“activeCount”:0,“readingTime”:0,“wNow”:0,“whNow”:0,“state”:“idle”}]}

IP/production.json

{“production”:[{“type”:“inverters”,“activeCount”:56,“readingTime”:1617480103,“wNow”:12456,“whLifetime”:3786585},{“type”:“eim”,“activeCount”:1,“measurementType”:“production”,“readingTime”:1617480106,“wNow”:12146.5,“whLifetime”:3763262.665,“varhLeadLifetime”:2.608,“varhLagLifetime”:3850458.867,“vahLifetime”:6794439.028,“rmsCurrent”:97.349,“rmsVoltage”:251.187,“reactPwr”:1313.668,“apprntPwr”:12225.221,“pwrFactor”:0.99,“whToday”:62187.665,“whLastSevenDays”:622035.665,“vahToday”:72627.028,“varhLeadToday”:0.608,“varhLagToday”:18242.867}],“consumption”:[{“type”:“eim”,“activeCount”:1,“measurementType”:“total-consumption”,“readingTime”:1617480106,“wNow”:1380.214,“whLifetime”:9047585.436,“varhLeadLifetime”:4346649.003,“varhLagLifetime”:16338.591,“vahLifetime”:11260601.576,“rmsCurrent”:15.289,“rmsVoltage”:251.234,“reactPwr”:-1114.61,“apprntPwr”:1919.496,“pwrFactor”:0.72,“whToday”:20797.436,“whLastSevenDays”:242326.436,“vahToday”:29326.576,“varhLeadToday”:17052.003,“varhLagToday”:4.591},{“type”:“eim”,“activeCount”:1,“measurementType”:“net-consumption”,“readingTime”:1617480106,“wNow”:-10766.285,“whLifetime”:0.0,“varhLeadLifetime”:4346646.395,“varhLagLifetime”:-3834120.276,“vahLifetime”:11260601.576,“rmsCurrent”:82.06,“rmsVoltage”:251.21,“reactPwr”:199.058,“apprntPwr”:20614.352,“pwrFactor”:-0.52,“whToday”:0,“whLastSevenDays”:0,“vahToday”:0,“varhLeadToday”:0,“varhLagToday”:0}],“storage”:[{“type”:“acb”,“activeCount”:0,“readingTime”:0,“wNow”:0,“whNow”:0,“state”:“idle”}]}

I’m not frustrated about the loss of graphing, I had that via PVOutput. I’m frustrated that SmartThings is sending emails about something not working more than once a week and then decided to remotely brick my ADT hub and sensors with three month’s notice.
I’m happy off the cloud now with more control, more reliability, and much better response times.

Also, the writing is on the wall that custom DTH in groovy will be disabled some time this year…

There is an Android app out there which will give you the login for your Envoy.