OK. There is a lot there, so rewriting all of it is a bit pointless. Here are some examples of how it would be done in Webcore. The real advantage is how you write the the piston, compared to RM rules.
A piston is just a container for some rules. It can have one rule or many, and pistons can call other pistons. A piston is a way to group rules together that make sense, and it is best to not do too much in one piston so it doesn't get cluttered and unmanageable.
First, Webcore is dropdown selections and fields, just like RM. One nice thing is that your if statements are already formatted. You just fill in the sections, and you never have to close an if or else if manually.

The basics of Webcore are better looked up on the internet instead of me going into all that here.
Like in your Rule, Webcore cannot combine timers and conditional checks together. So in this case I would make a trigger piston, that calls the calculation piston.
I used a thermostat where needed for demonstration, since I have no Water Heater device.
Here would be the trigger piston:
In this case, you do still need a boolean to check if the calcs are running, since your triggers can overlap. The case in Webcore you don't need that check is with things rising and falling over targets. In RM you want to trigger once when it falls below a target, you have to set a bool that it fell below, and that is where you can save a boolean with Webcore because Webcore accounts for that with the "falls below" or "rises above" conditions and it will only trigger once.
This is a limited version of your calcs in the called piston, just to demo things you are doing in RM.
You have a LOT of variables. Those are declared at the top of a piston. You can declare a type, or just use Dynamic.
Yeah, not sure if this really reads much clearer than RM, but at least it uses indentation.
Not worth your time to rewrite this rule in Webcore for sure, but you could just try it out just to see how it actually works when building rules. You just follow the logic flow, and everything builds as it reads.