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
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.
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.
Wow, you did the hard job yourself
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
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)
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
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
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.
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
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
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.
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
//}
}
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
thanks for your answer. But I am not familiar with Docker and things like that.
Therefore it is a bit tricky for me. I don’t trust myself to do the RCT integration like that at the moment, unfortunately.
Hi Julian,
alternativly you can use the rctmon (not in docker). I start with this way, but with the update from 3.x to 4.x, I switch over to docker. But that (docker) is not necessary.
However, you need a mosquitto + rctmon + mqttt binding. That’s the way it can work. You must take the time once, than you are happy. If you run our openHAB on a linux box (e.g. PI), try it.
Another method could be a http binding and parse the “website”. But I spend not time for this.