Binding Request: RCT Power invertor

Hello,
anyone could create bindig for pv inverter from rct power. I found a php script for this, but for another smart home solution. would it be possible to remake for openhab? It is opening tcp communication and sending hex values and reading hex results and converting to float

thanks

It you are not a developer you can offer a bounty on bountysource to encourage a volunteer developer.

Most if not all inverters run Modbus. If you know the registers/meanings, you can use the Modbus over TCP binding of OH.

modbus not work :confused:

Dear all,

I have a RCT Power Inverter 6.0 and managed to write a very basic python script (likely based on the PHP script mentioned since I took it to reverse engineer) which is reading the most relevant values from the inverter, which I then send to OpenHAB via MQTT. A clean binding however would be awesome for sure. I am not a JAVA developer and have too many IT projects in flow already to start learning to code a binding (now).

RCT unfortunately is using a proprietary format which is not that straight forward as well as the inverter sends its answers to any “poll” requests as multicast, so it is a bit error-prone if you are using the RCT app on Android or iOS in parallel.

Happy to discuss and maybe we find somebody who could help with the binding.

Jens

1 Like

Hi Jens,
mind sharing your script?
I’m looking for a way to integrate a RCT invervter too…

Thanks,
Curlyel

Hi Curlyel,

sorry was a busy week thus responding a bit late. I have pushed my python script to Github: https://github.com/eleven6/rct-power

I still would love someone could write a proper JAVA Binding with the details provided, I simply am not a Java programmer but would be helping in testing, documenting,… if anyone is interested to help all RCT Power 6.0 interver users.

Additionally, I want to highlight anohter very cool Python project - more advanced than my simple script by svaLouch https://github.com/svalouch/python-rctclient who wrote a Python library - I am planning to test this out if I can come up with a 100% reliable solution (since my script sometimes gets stuck and does not send values / nor do I have a clean exception handling to return proper values, instead it is NULL :-/ (Sorry for that, did not really have spent time to do it right) - too many other projects ongoing.

Let me know if I can be of additional help.

Jens

1 Like

Thanks for sharing!

Wow, you did the hard job yourself :wink:
I thought, you’ve leveraged the rtcclient library and just added some MQTT pub/sub stuff…

I’ve read about the rtcclient library and noticed that there may be some “risk” of unreliability because of interfering multicast responses to requests from different sources (like the RCT app for example) which are “talking” at the same time to the inverter. So a decent error handling seems to be required…

I haven’t tried anything myself since I don’t have the RCT inverter yet. Currently I’m checking whether to order RCT or Fronius. I’m just checking upfront, if I could integrate it into openHAB. A Python/MQTT solution would be fine for me . Of course, a dedicated binding like the Fronius or Modbus binding would be better :wink:
Fully agree…

Unfortunetely, RCT does not support Modbus via Ethernet (yet). And a dedicated Binding needs some RCT owner with appropriate Java skills.
So seems a bit harder to integrate…

OFFTOPIC:
Are you still happy with your RCT system? Would appreciate if you would share your experience and what system you use. Not that much comments about RCT in the other forums so far. (maybe as PM)

Thanks a lot!

Yes very happy :blush:

1 Like

Dear all,
I have a RCT Power Inverter 6.0 too and I am really interrested, if someone was successfull with connecting the inverter to OpenHAB and could maybe help me with that

Thank you

Marko

Hi Jens,
your python scripts are great and work fine. Can you provide the MQTT settings in openhab too.
Until now I have no experience with the MQTT .
best regards
Ralf

Hi Ralf,

I am using a separate Mosquitto MQTT Broker (very old version 1.5.2 I guess in a container on Kubernetes, need to configure the newer MQTT once I find time & motivation), not the one built into OpenHAB.

Will need a bit to post the things and items config of MQTT.

The OpenHAB MQTT docu is a good starting point: MQTT Binding Docu

Best,
Jens

Hi Jens,
I work with a PI and full local installation. Mosquitto is running and your python script forward it. With the debug level I detect it :wink:
But now it strong to get “feed in the door” with the MQTT Binding. I found the document too and it help to understand. But figure out the required settings is hard.
Furthermore until now OH 3.3, I was able to stay on text based configuration. I don’t like the GUI. However, that’s my personal issue.
If you can share a mqtt.thing and one example for an item configuration, will be save much time for me - and I thing for other like me :wink:
Best regards
Ralf

Hi Jens,
it took me a little time on yesterday afternoon / evening for a basic understanding of mqtt belongs to your scripts. Now I have a minimal running setup.

Best regards
Ralf

Hi Ralf,

here is my THINGS config file (I use file based config, too)

Bridge mqtt:broker:mosquitto "Mosquitto" [ host="172.27.1.32", port="1883", secure=false, qos="1" ]

{

	// RCT PowerStore 6.0 
	Thing topic pv {
		Channels:

			// Monitoring/PV/Current
			Type number : PV_Input_A_Volt 				"Input A in Volt"					[ stateTopic="monitoring/pv/B55BA2CE" ]
			Type number : PV_Input_A_Watt 				"Input A in Watt" 					[ stateTopic="monitoring/pv/DB11855B" ]
			Type number : PV_Input_B_Volt 				"Input B in Volt"			 		[ stateTopic="monitoring/pv/B0041187" ]
			Type number : PV_Input_B_Watt 				"Input B in Watt" 				 	[ stateTopic="monitoring/pv/0CB5D21B" ]
			Type number : PV_Inverter_Current_Power		"Inverter Current Power" 			[ stateTopic="monitoring/pv/DB2D69AE" ]
			Type number : PV_Battery_Voltage 			"Battery Voltage" 				 	[ stateTopic="monitoring/pv/A7FA5C5D" ]
			Type number : PV_Battery_Upper_SOC		 	"Battery Upper SOC Limit in %" 		[ stateTopic="monitoring/pv/8B9FF008" ]
			Type number : PV_Battery_SOC 				"Battery State of Charge in %"  	[ stateTopic="monitoring/pv/959930BF" ]
			Type number : PV_Battery_Current_Power		"Battery Current Power" 			[ stateTopic="monitoring/pv/400F015B" ]
			Type number : PV_Battery_Gross_Capacity 	"Battery Gross Capacity (KW)" 		[ stateTopic="monitoring/pv/4BC0F974" ]
			Type number : PV_Battery_Temperature 		"Battery Temperature" 		 		[ stateTopic="monitoring/pv/902AFAFB" ]
			Type number : PV_House_Current_Power 		"House Current Power" 	 			[ stateTopic="monitoring/pv/1AC87AA0" ]
			Type number : PV_Current_Grid_Feed 			"Current Grid Feed"			 		[ stateTopic="monitoring/pv/91617C58" ]
			Type datetime : PV_Last_Update				"Last Update"				 		[ stateTopic="monitoring/pv/lastupdate" ]

			// Monitoring/PV/Daily
			Type number : PV_Daily_Input_A				"Today's Input A" 				 	[ stateTopic="monitoring/pv/2AE703F2" ]
			Type number : PV_Daily_Input_B				"Today's Input A" 				 	[ stateTopic="monitoring/pv/FBF3CE97" ]
			Type number : PV_Daily_Grid_Feed			"Today's Grid Feed" 				[ stateTopic="monitoring/pv/3C87C4F5" ]
			Type number : PV_Daily_Grid_Load			"Today's Grid Load" 				[ stateTopic="monitoring/pv/867DEF7D" ]
			Type number : PV_Daily_House_Power			"Today's Energy Consumption" 		[ stateTopic="monitoring/pv/2F3C1D7D" ]

			// Monitor/PV/Monthly
			Type number : PV_Monthly_Input_A			"This Month's Input A" 				[ stateTopic="monitoring/pv/81AE960B" ]
			Type number : PV_Monthly_Input_B			"This Month's Input A" 				[ stateTopic="monitoring/pv/7AB9B045" ]
			Type number : PV_Monthly_Grid_Feed			"This Month's Grid Feed" 			[ stateTopic="monitoring/pv/65B624AB" ]
			Type number : PV_Monthly_Grid_Load			"This Month's Grid Load" 			[ stateTopic="monitoring/pv/126ABC86" ]
			Type number : PV_Monthly_House_Power		"This Month's Energy Consumption" 	[ stateTopic="monitoring/pv/F0BE6429" ]

			// Monitor/PV/Yearly
			//Type number : PV_Yearly_Input_A				"This Year's Input A" 				[ stateTopic="monitoring/pv/AF64D0FE" ]
			//Type number : PV_Yearly_Input_B				"This Year's Input A" 				[ stateTopic="monitoring/pv/BD55D796" ]
			//Type number : PV_Yearly_Grid_Feed			"This Year's Grid Feed" 			[ stateTopic="monitoring/pv/26EFFC2F" ]
			//Type number : PV_Yearly_Grid_Load			"This Year's Grid Load" 			[ stateTopic="monitoring/pv/DE17F021" ]
			//Type number : PV_Yearly_House_Power			"This Year's Energy Consumption" 	[ stateTopic="monitoring/pv/C7D3B479" ]

	}
}

And here is my ITEMS file:

// Monitoring/PV/Current
Number PV_Input_A_Volt 				"Input A in Volt [%.1f V]" 				 					<solarplant>	{ channel="mqtt:topic:mosquitto:pv:PV_Input_A_Volt" }
Number PV_Input_A_Watt 				"Input A in Watt [%.1f W]" 									<solarplant>	{ channel="mqtt:topic:mosquitto:pv:PV_Input_A_Watt" }
Number PV_Input_B_Volt 				"Input B in Volt [%.1f V]"			 						<solarplant>	{ channel="mqtt:topic:mosquitto:pv:PV_Input_B_Volt" }
Number PV_Input_B_Watt 				"Input B in Watt [%.1f W]" 				 					<solarplant>	{ channel="mqtt:topic:mosquitto:pv:PV_Input_B_Watt" }
Number PV_Inverter_Current_Power	"Inverter Current Power [%.1f W]" 							<energy>		{ channel="mqtt:topic:mosquitto:pv:PV_Inverter_Current_Power" }
Number PV_Battery_Voltage 			"Battery Voltage [%.1f V]" 				 					<energy>		{ channel="mqtt:topic:mosquitto:pv:PV_Battery_Voltage" }
Number PV_Battery_Upper_SOC		 	"Battery Upper SOC Limit in % [%.1f]"                   	<line>			{ channel="mqtt:topic:mosquitto:pv:PV_Battery_Upper_SOC" }
Number PV_Battery_SOC 				"Battery State of Charge in % [%.1f]"                   	<line>			{ channel="mqtt:topic:mosquitto:pv:PV_Battery_SOC" }
Number PV_Battery_Current_Power		"Battery Current Power [%.1f W]" 							<battery>		{ channel="mqtt:topic:mosquitto:pv:PV_Battery_Current_Power" }
Number PV_Battery_Gross_Capacity 	"Battery Gross Capacity (KW) [%.1f]"                 		<battery>		{ channel="mqtt:topic:mosquitto:pv:PV_Battery_Gross_Capacity" }
Number PV_Battery_Temperature 		"Battery Temperature [%.1f °C]" 		 					<temperature>	{ channel="mqtt:topic:mosquitto:pv:PV_Battery_Temperature" }
Number PV_House_Current_Power 		"House Current Power [%.1f W]" 	 							<energy>		{ channel="mqtt:topic:mosquitto:pv:PV_House_Current_Power" }
Number PV_Current_Grid_Feed 		"Current Grid Feed [%.1f W]"			 					<energy>		{ channel="mqtt:topic:mosquitto:pv:PV_Current_Grid_Feed" }
DateTime PV_Last_Update				"Last Update [%1$tT]"				 						<time>			{ channel="mqtt:topic:mosquitto:pv:PV_Last_Update" }

// Monitoring/PV/Daily
Number PV_Daily_Input_A				"Today's Input A [%.1f Wh]" 				 				<solarplant>	{ channel="mqtt:topic:mosquitto:pv:PV_Daily_Input_A" }
Number PV_Daily_Input_B				"Today's Input A [%.1f Wh]" 				 				<solarplant>	{ channel="mqtt:topic:mosquitto:pv:PV_Daily_Input_B" }
Number PV_Daily_Grid_Feed			"Today's Grid Feed [%.1f Wh]" 								<energy>		{ channel="mqtt:topic:mosquitto:pv:PV_Daily_Grid_Feed" }
Number PV_Daily_Grid_Load			"Today's Grid Load [%.1f Wh]" 				 				<energy>		{ channel="mqtt:topic:mosquitto:pv:PV_Daily_Grid_Load" }
Number PV_Daily_House_Power			"Today's Energy Consumption [%.1f Wh]" 						<energy>		{ channel="mqtt:topic:mosquitto:pv:PV_Daily_House_Power" }

// Monitor/PV/Monthly
Number PV_Monthly_Input_A			"This Month's Input A [%.1f Wh]" 				 			<solarplant>	{ channel="mqtt:topic:mosquitto:pv:PV_Monthly_Input_A" }
Number PV_Monthly_Input_B			"This Month's Input A [%.1f Wh]" 				 			<solarplant>	{ channel="mqtt:topic:mosquitto:pv:PV_Monthly_Input_B"}
Number PV_Monthly_Grid_Feed			"This Month's Grid Feed [%.1f Wh]" 							<energy>		{ channel="mqtt:topic:mosquitto:pv:PV_Monthly_Grid_Feed"}
Number PV_Monthly_Grid_Load			"This Month's Grid Load [%.1f Wh]" 				 			<energy>		{ channel="mqtt:topic:mosquitto:pv:PV_Monthly_Grid_Load"}
Number PV_Monthly_House_Power		"This Month's Energy Consumption [%.1f Wh]" 				<energy>		{ channel="mqtt:topic:mosquitto:pv:PV_Monthly_House_Power"}

// Monitor/PV/Yearly
//Number PV_Yearly_Input_A			"This Year's Input A [%.1f Wh]" 				 			<solarplant>	{ channel="mqtt:topic:mosquitto:pv:PV_Yearly_Input_A"}
//Number PV_Yearly_Input_B			"This Year's Input A [%.1f Wh]" 				 			<solarplant>	{ channel="mqtt:topic:mosquitto:pv:PV_Yearly_Input_B"}
//Number PV_Yearly_Grid_Feed			"This Year's Grid Feed [%.1f Wh]" 							<energy>		{ channel="mqtt:topic:mosquitto:pv:PV_Yearly_Grid_Feed"}
//Number PV_Yearly_Grid_Load			"This Year's Grid Load [%.1f Wh]" 				 			<energy>		{ channel="mqtt:topic:mosquitto:pv:PV_Yearly_Grid_Load"}
//Number PV_Yearly_House_Power		"This Year's Energy Consumption [%.1f Wh]" 					<energy>		{ channel="mqtt:topic:mosquitto:pv:PV_Yearly_House_Power"}

Additionally the SITEMAP

sitemap mqtt_rct_pv label="RCT Solar Monitoring"
{	
        Frame label="PV Current Status" {
                Text item=PV_Input_A_Volt
				Text item=PV_Input_A_Watt
				Text item=PV_Input_B_Volt
				Text item=PV_Input_B_Watt
				Text item=PV_Inverter_Current_Power
				Text item=PV_House_Current_Power
				Text item=PV_Current_Grid_Feed
				Text item=PV_Last_Update
        }
		
		Frame label="PV Battery Status" {
                Text item=PV_Battery_Voltage
				Text item=PV_Battery_Upper_SOC
				Text item=PV_Battery_SOC
				Text item=PV_Battery_Current_Power
				Text item=PV_Battery_Gross_Capacity
				Text item=PV_Battery_Temperature
        }
		
		Frame label="PV Daily Status" {
                Text item=PV_Daily_Input_A
				Text item=PV_Daily_Input_B
				Text item=PV_Daily_Grid_Feed
				Text item=PV_Daily_Grid_Load
				Text item=PV_Daily_House_Power
        }
		
		Frame label="PV Monthly Status" {
                Text item=PV_Monthly_Input_A
				Text item=PV_Monthly_Input_B
				Text item=PV_Monthly_Grid_Feed
				Text item=PV_Monthly_Grid_Load
				Text item=PV_Monthly_House_Power
        }
		
		//Frame label="PV Yearly Status" {
        //        Text item=PV_Yearly_Input_A
		//		Text item=PV_Yearly_Input_B
		//		Text item=PV_Yearly_Grid_Feed
		//		Text item=PV_Yearly_Grid_Load
		//		Text item=PV_Yearly_House_Power
        //}
}

Regards,
Jens

1 Like

Hi Jens,
another questions belongs your setup. Did you thought about optimize the SOC percentage values. The openhab mqtt documentation have a Incoming Value. Do you have experience with that?
best regards
Ralf