Geyserwala controlled by Victron Venus via node-red

A while back, on this very forum, I stumbled across the nifty little gadget called the ‘Geyserwala’. Long story short, I ordered, I received, I installed, and it works flawlessly. GREAT aftersales service, if not the best I’ve ever experienced. I had a ton of programming questions (this was my first node-red project), and I started to feel bad for bothering them so much with my newbie questions, but they always replied promptly and with good advice. Hence this ‘tutorial’, I’d like to share my node-red project with you. Hopefully, I can learn even more from your input, and maybe this can help another newbie out there.

So firstly, my flow. See attached ‘Geyserwala Boost.zip’

Geyserwala BOOST.zip (3.7 KB)

It started out simple, but quickly got more complex when I added filters and debounce timers to protect the geyserwise relay from switching on/off/on too often. Currently, the geyserwise boost mode will only be turned on if the correct conditions are met for a full minute. The same goes for switching it off. It’s working perfectly for my setup, even when clouds are causing havoc.

(note: The developers from Geyserwala did advise me rather use the remote-setpoint and remote-demand nodes, since they have already some protection built into them. I tried it, but I personally prefer the boost mode node. Just be aware of the dangers of using it)

My boost temperature is set to 65’C in the geyserwala, and I also have a timer set inside the geyserwala to always keep the water at a minimum 40’C. But that timer almost never kicks in if the system is boosted at least once a day to 65’C.

You will see there are 2x once-off injections, these are to put some initial useful data into the flow so that it can start crunching the numbers. It will update itself accordingly in due course, regardless of the actual state of what the geyserwala is in when you deploy the flow.

In the calculation node, I added the ‘SOC != 88’, so that the boost mode is not activated while the pylontech batteries are getting their cells balanced. This might be different for whichever battery system you are using, or feel free to take it out.

I also added an email node so that I can track the flow’s work for the time being. If you want to do the same, have a look at this website for creating the appropriate passwords:

To set up the MQTT handshakes, you’ll need to do the following on the geserwala:

  1. Select ‘Enable MQTT’
  2. Add your Venus or Cerbo IP into ‘MQTT HOST’

In node-red, Edit the Geyserwala Connector node as:

And the MQTT broker as:
MQTT broker

At one point I accidentally made/import a duplicate broker. That caused my flow to say that it was not connected, but it was in fact working via the other broker. I deleted everything (flows and connection and brokers, everything I could find), imported my flow again, created the broker and all was good.

I added a GUI to the dashboard to keep track of the temperature and switching cycles. For now, it only shows the last 24h worth of data. The only flaw here is that the cycle count is lost every time you restart the flow. (seems like Victron does not want us to store those values in permanent memory) So for now I just update the counter to one less of the current value before I make a change.

That’s all I can think of for now, I think the flow should be mostly self-explanatory. But feel free to post any other recommendations or questions.

Just on a side note, to give you an idea of what to expect, this is how erratic my power usage was normally:

Now, after adding the node-red control, the power consumption is much more in sync with my solar input:

4 Likes

Very nice work @MrTolbos! A great idea that I expect many other people will want too.

On the topic of boost-demand vs external-demand, a cautionary note on wear and tear:

A conservative read of the specifications of the relay (HF2160-1A-12DE) in the Geyserwise control box say that it has ~150,000 switching cycle lifetime, which translates to only ~42 cycles a day, over 10 years. Both the Geyserwise and the Geyserwala have built in hysteresis and hold-off strategies to optimise the lifetime of the relay.

In the case of the Geyserwala, the “user” control signals such as the boost-demand have been allowed to break through these protections so to provide responsive user interaction. However, with the expectation that typically a user presses buttons infrequently. Thus, when hooking the Geyserwala up to automation we advise making use of the external-demand signal, to mitigate premature wear of your relay. It also frees up the the Boost button to be controlled independently from the app, and disassociated from your automations. More on integration: Thingwala : Geyserwala Connect : Integration

If you do choose to use the unprotected signals, we suggest you keep an eye on the element-cycles (System page, REST and MQTT) to track the wear and tear of the relay.

@MrTolbos the email notifications is a nice touch! FYI there is Node-RED Telegram Messenger integration which works well. And it can both send and receive messages… :slight_smile:

4 Likes

Update #1:
I added a GUI to the dashboard to keep track of the temperature and switching cycles. For now, it only shows the last 24h worth of data. The only flaw here is that the cycle count is lost every time you restart the flow. (seems like Victron does not want us to store those values in permanent memory) So for now I just update the counter to one less of the current value before I make a change. Does anyone know of a way to permanently store and update a value in node-red on a Venus?

@Thingwala Thank you for the helpful post! I will still play around with the external-demand signal, and maybe one day switch over. For now I’m keeping a close eye on the switching cycles, and even added it to the dashboard gui. In 2 weeks I’ve only cycled 187 times (got the correct value from the settings page in the geyserwala) and that was with all the testing and development. For the last few days it’s been doing about 5 cycles a day, and that’s with bad weather coming in and out constantly. I think we should be okay :+1:

I can’t remember a thing about Node-RED because when I wrote a reasonably complex flow about Load-shedding, it was based on snippets of other people’s flows that I reassembled or massaged.
So, I can’t help you with technical specifics, but I may be able to point you in the right direction.

I came across a flow that created and regularly wrote to a CSV file. As far as I remember, there was the possibility of erasing the file after there was a certain volume of data so that only X amount of data was being held and the file size was finite.
Then, there was a method of recalling the data to populate a dashboard graph.
As the file, is outside Node-Red, it could be recalled whenever Node-Red is re-started

I was experimenting with many snippets at the time with snippets from many, many contributors, so don’t expect the perfect solution, but maybe one that can inspire.
The flows from this YouTuber were definitely involved, at least in part.