November 4Nov 4 Much to my surprise, Solaredge shut down the V1 API today. I am investigating options to access the v2 API. So far it looks like free use of the new API will only allow much less frequent calls (maybe 1/hour) without paying $100+/mo for an upgraded rate plan. Stay tuned
November 8Nov 8 Author The solaredge v2 API comes along with a new tiered price structure for monitoring.The free tier only allows 2000 credits per month which would only allow polling the inverter about once per hour. the next tier would allow polling every 15 minutes for $100/mo.This is worthless for my applications. I used eisy-ai to generate a v2 plugin but in addition to the limited polling with the free or even the $100/mo tier it is missing many of the previous fieldsMy use of the mySolaredge app is also due to cease next May so I need to find a better way to poll the inverter.I am working on a plugin for local connection to the inverter via the built in wired ethernet port on my SE7600-H inverter.
Sunday at 05:32 PM5 days Many years ago I had software to pull data from both my inverters via the local IP address (one wired, the other wireless). I combined this with data from a energy monitor that CT's on the incoming connection from the grid. All this data went into a database. I still have the code for that program but I don't use it anymore. I can dig back into it if you have any questions about using the local ip address to get data.
Monday at 04:29 PM4 days Author If your code uses modbusTCP to access a solaredge inverter then absolutely , I'd love to see it. I've put examples of the problem I'm seeing in the modbusTCP forum.Thanks
Monday at 05:40 PM4 days Yes, it does use modbusTCP, but it's in 'C' so I'll just post pseudo code here. This is a function that takes the IP address of the inverter and returns the watt-seconds generated over the past minute./* set up the context and connect to the inverter with ipaddress 'ip' */ mb = modbus_new_tcp(ip, 502); modbus_connect(mb); /* configure the modbus connection */ modbus_set_response_timeout(mb, 2, 0); modbus_set_byte_timeout(mb, 0, 1000000); modbus_set_slave(mb, 1); /* Set modbus slave ID */ /* * According to the sunspec, register 40094 is the * AC energy production over all time in watt-hours. * This is a 32bit value. * * Does this represent the power going out to both * the general output and the backup output? */ wh = read_32(mb, 40094); sf = read_16(mb, 40096); /* scale factor: 1, .1, 10, 100 */ /* convert the register scale factor value to the actual scale */ /* sf == 0 then scalef = 1, sf == -2 then scalef = 100 */ modbus_close(mb); modbus_free(mb); ws = (long long)wh * (long long)factor * 3600LL; ecm_log(L_INFO, "Inverter : %lld (w-h = %u scalef = %u)\n", ws, wh, sf); return ws; This is a I also have a solaredge meter installed and the code is basically the same as above, but uses different registers to get the imported and exported AC energy values.The register reading functions look like:/* * modbus_read_registers start register seems to be one off. * I.E. if I specify 40090 as the start I really read 40091 * * So should I be subtracting one from the start register? */ static uint32_t read_32(modbus_t *mb, int reg) { int rc; uint16_t tab[2]; uint32_t ret; rc = modbus_read_registers(mb, (reg - 1), 2, tab); if (rc != 2) { ecm_log(L_ERROR, "%s\n", modbus_strerror(errno)); return 0; } ret = (tab[0] << 16) | tab[1]; return ret; }
Create an account or sign in to comment