# \[APP\]\[Pro\] SolarEdge + Growatt TCP modbus

**URL:** <https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487>\
**Category:** Apps\
**Tags:** app, pv-solar\
**Created:** [March 30, 2021, 10:17am UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487 "2021-03-30T10:17:23Z")\
**Posts on this page:** 20\
**Page:** 40

<div class="post-metadata">

**Author:** ![Mark\_Meijer](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/mark_meijer/32/3843_2.png) [@Mark\_Meijer](https://community.homey.app/u/Mark_Meijer)\
**Post date:** [January 11, 2024, 5:10pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/789 "2024-01-11T17:10:27Z")

</div>

Can you also advise with what webbrowser setting in the [https://server.growatt.com/](https://server.growatt.com/) you link this minimum and maximum battery capacity?

---

<div class="post-metadata">

**Author:** ![Arjan\_Neet](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/arjan_neet/32/17808_2.png) [@Arjan\_Neet](https://community.homey.app/u/Arjan_Neet)\
**Post date:** [January 12, 2024, 11:54am UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/790 "2024-01-12T11:54:48Z")

</div>

For some reason it did change after all, but strange enough I checked it a few times, even with an hour in between, now I was travelling and got back home and I see it set to 15% which I send from homey the day before yesterday.  
 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/6/7/67c51c9a00c1399378e9fa2294c8c5104f6dcbf1.png)

---

<div class="post-metadata">

**Author:** ![Edwin\_Biemond](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/edwin_biemond/32/72686_2.png) [@Edwin\_Biemond](https://community.homey.app/u/Edwin_Biemond)\
**Post date:** [January 12, 2024, 7:05pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/791 "2024-01-12T19:05:05Z")

</div>

I remember shinelink does not actively pull latest state of the settings. maybe it syncs it once a day or so.

---

<div class="post-metadata">

**Author:** ![Phil\_Bro](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/phil_bro/32/78156_2.png) [@Phil\_Bro](https://community.homey.app/u/Phil_Bro)\
**Post date:** [January 12, 2024, 7:44pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/792 "2024-01-12T19:44:03Z")

</div>

Correct, but the web UI has a READ function, I use this to force parameter updates. Not without errors but after the need to read multiple times it is ok.

I’ve had strange experiences since 2 days on the TL-XH, the AC charge does not function anymore. I discovered that the Charging Power Rate was set to 100% (which is default). Changing this to 50 and back to 99 the AC charge was reactivated.

As you know the time slots are required to activate prio battery to be able to AC charge. It seems that we need to add another option [Charging Power Rate] percentage 0 ~ 100%. Unfortunately I cannot find the parm in the MTU list, Growatt\_Modbus RTU Protocol MAX Series\_v124\_2023.pdf

---

<div class="post-metadata">

**Author:** ![TiV](https://avatars.discourse-cdn.com/v4/letter/t/838e76/32.png) [@TiV](https://community.homey.app/u/TiV)\
**Post date:** [January 16, 2024, 1:40pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/793 "2024-01-16T13:40:21Z")

</div>

Hi @Edwin_Biemond,

I’m trying my luck here 😉

Is there a way to make this work with the SunGrow inverter?  
They use the iSolarCloud app. I wrote to the support team and they responded that they work only via a MODBUS-protocol no API to connect to third party apps. I hope that is sule useful info. Happy to provide you with more info if needed!

Thanks for the tip @Ria_Banis

Thank you!  
Tim

---

<div class="post-metadata">

**Author:** ![Edwin\_Biemond](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/edwin_biemond/32/72686_2.png) [@Edwin\_Biemond](https://community.homey.app/u/Edwin_Biemond)\
**Post date:** [January 16, 2024, 5:51pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/794 "2024-01-16T17:51:36Z")

</div>

if you have some doc with the registers and can give me temp vpn access. it should be doable. mostly reading will be quick, changing depends how complicated they made it.

---

<div class="post-metadata">

**Author:** ![Jumpingtrees](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/jumpingtrees/32/79538_2.png) [@Jumpingtrees](https://community.homey.app/u/Jumpingtrees)\
**Post date:** [January 22, 2024, 6:48pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/795 "2024-01-22T18:48:38Z")

</div>

Hello,

I’ve noticed a behaviour I cannot explain.

- The upper card outcome is “true” and the card finished in 12ms
- The lower card outcome is “false” and the card finished in 3ms

The battery is not loading. #Battery Power Charge equals 0.

What is the difference between the two cards?

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/a/c/ac8f557de65f0c7c1cf9c849df24175c1965c9f1.png)

BR  
Marco

---

<div class="post-metadata">

**Author:** ![CaptainVoni](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/captainvoni/32/3549_2.png) [@CaptainVoni](https://community.homey.app/u/CaptainVoni)\
**Post date:** [January 24, 2024, 8:05am UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/796 "2024-01-24T08:05:53Z")

</div>

I reported this some while ago on [github](https://github.com/biemond/solaredge.modbus/issues/44). Not sure if it is an App or Homey problem.

---

<div class="post-metadata">

**Author:** ![Jumpingtrees](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/jumpingtrees/32/79538_2.png) [@Jumpingtrees](https://community.homey.app/u/Jumpingtrees)\
**Post date:** [January 27, 2024, 8:59am UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/797 "2024-01-27T08:59:12Z")

</div>

Thank you for the link. The thread on GitHub is helpful. Continued the post there.

Somehow related to the topic and I am curious: Why are there two #battery tags available? Does somebody know? A link to a documentation is also fine, but I wasn’t able to find something.

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/d/2/d2d15b120e51d79421d0c226bd0521a31375dcad.png)

---

<div class="post-metadata">

**Author:** ![Marc\_Collet](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/marc_collet/32/99659_2.png) [@Marc\_Collet](https://community.homey.app/u/Marc_Collet)\
**Post date:** [January 30, 2024, 8:39am UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/798 "2024-01-30T08:39:32Z")

</div>

Hey Sjaak, I am also trying to get the power control function working on my Solar Edge using Loxone as a controller. Would you mind sharing your insights? Cheers, Marc

---

<div class="post-metadata">

**Author:** ![Sjaak](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sjaak/32/79000_2.png) [@Sjaak](https://community.homey.app/u/Sjaak)\
**Post date:** [January 30, 2024, 9:11pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/799 "2024-01-30T21:11:34Z")

</div>

Hi Marc, see the config below. Hope this helps.

 ![Loxone SolarEdge Power Limiter](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/d/4/d49721a15d46a957ccdaa3c9e52c7c83de9f75bf.png)

---

<div class="post-metadata">

**Author:** ![Marc\_Collet](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/marc_collet/32/99659_2.png) [@Marc\_Collet](https://community.homey.app/u/Marc_Collet)\
**Post date:** [January 30, 2024, 9:44pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/800 "2024-01-30T21:44:27Z")

</div>

hi Sjaak, thanks for your example. I see I was already well on my way. What I don’t really understand yet is the difference between active and reactive steering. I see you also use advanced power control. Is it not sufficient to actively manage everyone? And it might be useful to connect Loxone’s load manager via an analogue scaler to scale the range of your kilowatt peak power to 0 to 100%. Then you can control your production based on the required power in the installation, with of course a margin + or a margin -.

But many thanks for the efforts. Lovely!

---

<div class="post-metadata">

**Author:** ![Sjaak](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sjaak/32/79000_2.png) [@Sjaak](https://community.homey.app/u/Sjaak)\
**Post date:** [January 31, 2024, 8:47am UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/801 "2024-01-31T08:47:39Z")

</div>

Hi Marc, connecting the load manager does not benefit me due to the way we are billed here in the Netherlands. It only benefits me to turn off the power when the net price is negative. In the future when the energy market changes, then this is something I will certainly implement.  
Not sure what you mean by actively manage everyone?

---

<div class="post-metadata">

**Author:** ![CaptainVoni](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/captainvoni/32/3549_2.png) [@CaptainVoni](https://community.homey.app/u/CaptainVoni)\
**Post date:** [February 3, 2024, 2:52pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/802 "2024-02-03T14:52:08Z")

</div>

Just want to say thank you - again - for this great app! Together with the also great app [Power by the Hour](https://homey.app/de-at/app/com.gruijter.powerhour/Power-by-the-Hour/) by @Gruijter I’m able to perfectly control the charging- and discharging behaviour of my PV battery to get the most out of my system.

The chart below shows the completely automised charging/discharging strategy for the next days:

- green - control just according the current electricity prices
- yellow - prevent discharging
- orange - prioritise battery charging over self consumption
- red - charge from grid

 ![grafik](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/5/7/570b579fe4a41992771aa05e4cdf92a8da8d69db.png)

Not yet perfect, but I’m quite happy with it. Thanks to everyone who made this possible!

---

<div class="post-metadata">

**Author:** ![Phil\_Bro](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/phil_bro/32/78156_2.png) [@Phil\_Bro](https://community.homey.app/u/Phil_Bro)\
**Post date:** [February 3, 2024, 7:27pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/803 "2024-02-03T19:27:17Z")

</div>

Hi,

Your controls are similar to mine however one question: How do you generate such a nice chart, is this auto-output or manual excel or something?

Thanks,

---

<div class="post-metadata">

**Author:** ![CaptainVoni](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/captainvoni/32/3549_2.png) [@CaptainVoni](https://community.homey.app/u/CaptainVoni)\
**Post date:** [February 3, 2024, 8:51pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/804 "2024-02-03T20:51:40Z")

</div>

I used the [inspiration](https://community.homey.app/t/inspiration-daily-energy-prices-chart-using-power-by-the-hour/80821#!) from @Stikstof to create a link to [image-charts.com](https://image-charts.com). Very handy for visualisation.

---

<div class="post-metadata">

**Author:** ![Phil\_Bro](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/phil_bro/32/78156_2.png) [@Phil\_Bro](https://community.homey.app/u/Phil_Bro)\
**Post date:** [February 3, 2024, 10:34pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/805 "2024-02-03T22:34:55Z")

</div>

Thanks, I’ve studied the info. Nice idd. The charts I see in the posts are basic, in fact the power to the hour has a chart like that, yours on the other hand is much nicer. Thing is, not inventing the wheel for 2nd time, how do you play with the vars used in your chart, how are the transferred, all in your script? Do you wanna share any of this?

For what it’s worth, I’m not lazy but need some kind of start-help with this.

Thanks,

---

<div class="post-metadata">

**Author:** ![CaptainVoni](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/captainvoni/32/3549_2.png) [@CaptainVoni](https://community.homey.app/u/CaptainVoni)\
**Post date:** [February 4, 2024, 10:28am UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/806 "2024-02-04T10:28:30Z")

</div>

It’s pretty much the same with just some minor adjustments. Below is my code - pretty straight forward, no magic there:

```auto
function buildChartUrl(simulatedHours)
{
	// Set base url
	const chartWidth = 1200;
	const chartHeight = 600;
	const baseUrl = `https://image-charts.com/chart.js/2.8.0?bkg=white&height=${chartHeight}&width=${chartWidth}&c=`;

	let values=[],labels=[],backgrounds=[],datalabels=[];
	lastSimulatedSOC=-1;
	for (i=0;i<simulatedHours.length;i++)
	{
		hour=simulatedHours[i];
		values.push(hour.price);
		labels.push(((currentHour+i)%24).toFixed(0).padStart(2,"0"));
		
		simulatedSOC=Math.round(100.0*hour.simulatedBatteryAtEnd/batteryCapacity);
		if (simulatedSOC!=lastSimulatedSOC) datalabels.push(simulatedSOC.toFixed(0)+"%");
		else datalabels.push([]);
		lastSimulatedSOC=simulatedSOC;
		
		let color;
		if (hour.chargingMode==CHARGING_GRID) color="rgb(255,0,0)";
		else if (hour.chargingMode==CHARGING_PRIORITISE) color="rgb(255,160,0)";
		else if (hour.dischargingMode==DISCHARGING_OFF) color="rgb(255,255,0)";
		else if (hour.pvYield>=hour.consumption) color="rgb(192,255,64)";
		else color="rgb(0,255,0)";		
		backgrounds.push(color);
	}

	// Build configuration for the chart
	const settings=
	{ 
		type: "bar",
		data: 
		{
			labels,
			datasets: [
				{
					label: "Optimierung",
					backgroundColor: backgrounds,
					data: values
				}
			]
		},
		options: 
		{
			responsive: true,
			legend: { position: "none" },
			layout: 
			{
				padding: 
				{
					top: 35,
					bottom: 0,
					left: 5,
					right: 5
				}
			},
			rectangleRadius: 6,
			plugins: 
			{
				datalabels: 
				{
					anchor: 'end',
					align: 'start',
					offset: -10,
					padding: 0,
					backgroundColor: 'white',
					color: 'black',
					font: { size: 7 }
				}
			},
			datalabels
		}
	}

```

---

<div class="post-metadata">

**Author:** ![Phil\_Bro](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/phil_bro/32/78156_2.png) [@Phil\_Bro](https://community.homey.app/u/Phil_Bro)\
**Post date:** [February 4, 2024, 5:02pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/807 "2024-02-04T17:02:52Z")

</div>

MANY THANKS!

Will go for a spin this week. I was very curious if you read the system data, it seems that you are using the Power By The Hour data to display what the system should do, but not how the system is configured to deal with the data, but this is my first look to the script.

Have to see what my set will tell me compared to what I’ve automated.

Thanks again!

---

<div class="post-metadata">

**Author:** ![CaptainVoni](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/captainvoni/32/3549_2.png) [@CaptainVoni](https://community.homey.app/u/CaptainVoni)\
**Post date:** [February 5, 2024, 10:55am UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/808 "2024-02-05T10:55:34Z")

</div>

> Will go for a spin this week. I was very curious if you read the system data, it seems that you are using the Power By The Hour data to display what the system should do, but not how the system is configured to deal with the data, but this is my first look to the script.

Not sure I understand you right. The chart is the visualization of the actual charging/discharging strategy for the next few hours, i.e. the battery is controlled in the way that is shown in the chart. The optimization strategy is determined and updated every five minutes based on current data (mostly batter level) and expected data (yield and consumption, mostly based on historic values).

The script that determines the strategy is far from finished and right now optimized for saving the battery for the expensive hours. Currently I’m working on extending it to prevent the battery being full at very cheap hours, i.e. when grid charging would be favourable. I might create a Homey app based on it when it’s finished.

[Previous page](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487.md?page=39)

[Next page](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487.md?page=41)
