question

pdonner avatar image
pdonner asked

Can Cerbo relay control values correspond to Ruuvi temperature resolution?

Introducing support for RuuviTag temperature sensors greatly added to the use value of Victron UPS systems. The current VRM menu system makes it easy for almost anybody to control an otherwise complex heating system.

However, radiators are slow in reacting to relay controlled changes in electric supplies. It takes quite some time before the radiator warms up and cools down. In our application, excessive electric power tends to overheat the environment. Apart from consuming energy it also wears the equipment quicklier than necessary.

Placing the RuuviTag on the surface of the radiator would lead to a situation where the sensor could easily get damaged. Therefore, we have to attach the tag on a wall close to the radiator. To detect temperature changes swiftly, we use the relay conditions feature whith a difference in activation and deactivation values of only one degree celsius.

Energy savings could be much more efficient if we would be able to define the values using a finer resolution of one decimal, somehow corresponding with the abilities of the RuuviTag. - Can you consider such a gui modification improvement?


Relaymodificationsruuvi sensorsgui mods
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

7 Answers
johnny-brusevold avatar image
johnny-brusevold answered ·

I don't think radiators are slow in reacting to relay, the temperature sensor has too much mass so that it becomes too slow. A fast temperature sensor is usually used together with a smart pid controller with a self-learning system so it learns when radiators should be switched off before a temperature is reached and switched on before the minimum temperature is reached to get a more stable temperature (hysteresis). It is then often used in conjunction with an external outdoor sensor to take account of the external cooling effect

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

pdonner avatar image
pdonner answered ·

Thank you @Johnny Brusevold for your kind posting. However, a yes-no discussion isn't a very productive mode of interaction.

Let me point out though, that the RuuviTag sensors seem to react very quickly and precisely to changes in the surrounding temperature. I would say that even a slight difference of less than 1 °C is mediated in less than half a minute. (I guess that the sensor probably reacts similarly even to slighter temperature differences than 0,2 °C, but I didn't experiment with that aspect).

On the other hand, without a fan it takes quite some time before the radiator creates an increase in the air temperature of the device cabinet. It is in the radiator where that slowing down mass is in fact located. - Are we perhaps referring to different kinds of heating arrangements?

We wouldn't need a self-learning system, if the scale of the temperature controlled relay would be comparable to the exactitude of the RuuviTag.

The VRM team is busy with other important undertakings, but can we expect such an update in the future @mvader ? We are planning to purchase 6 Victron systems for our machine rooms next autumn and wouldn't like to go through multiple lengthy calibration schemes.


2 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

johnny-brusevold avatar image johnny-brusevold commented ·

@pdonner
I was going to use a ruuvi tag to control the gas burner and a shunt valve for the central heating in my motorhome, but for my use it was too slow

As a test, I moved a ruuvi tag hanging by a thin thread (so it only measures air temperature) from a room at 15C to another room at 20C, it takes about 1/2 hour before the ruuvi shows 20C at a humidity of 37%, which corresponds to 6 minutes degree C and is slower closer to the ambient temperature it measures.


Venus-os v. 2.92 only show whole degrees without decimals for ruuvi tags in the 'remote console'.

You can edit PageTemperatureSensor.qml and add

decimals: 1 on line 78 to get 0.1 degrees

0 Likes 0 ·
pdonner avatar image pdonner johnny-brusevold commented ·

Thanks @Johnny Brusevold for continued detailed comments.

You wrote: "I moved a ruuvi tag hanging by a thin thread (so it only measures air temperature) from a room at 15C to another room at 20C, it takes about 1/2 hour before the ruuvi shows 20C".

Interesting. Your requirement of a rise of 5 degrees doesn't conform to our setting, where the aim is to keep a stable temperature. It takes a little bit more than 5 minutes for the radiator to get warm and the air surrounding the tag heated. That causes later a rise of close to five degrees in the equipment of the machine room. The response could be quicker with a finer temperature scale.

You added: "You can edit PageTemperatureSensor.qml and add decimals: 1 on line 78 to get 0.1 degrees."

Thanks for this hint to code on the Git repository. I'll look into it. One day I will anyway need to go through the hardships of setting up a test GX unit and loading a customized version of Venus OS.

I'm also aware that it could be possible to achieve the stated aim by applying a node-red or shell based cron solution. Unfortunately I'm more of a Windows developer ;(

However, if the fix is that simple, I hope that the developers at Victron could consider my wish. I am calling for Victron attention to the matter because I'm also a rural community activist. Local end users wouldn't be able to use other than a GUI approach. So perhaps it would be most practical that the developers would test and implement your suggestion?

0 Likes 0 ·
pdonner avatar image
pdonner answered ·

While setting up an environment for Venus OS based development, I made a few VRM GUI tweaks which illustrate the need to mirror RuuviTag measurements with one decimal exactitude on the scale for values of the temperature controlled relay settings.

To refine the graph along the time axis configure:
Settings > VRM online portal > Log interval to 1 min

The VRM Custom widget offers flexible methods of tuning the graph. In the Advanced view select:
Widgets > Custom Widget > Create custom widget > Select Device : RuuviTag

Use values: RuuviTag, Manually set one y-axis for all parameters, Temperature and insert Minimum and Maximum values.

2023-01-02-ltt5-ruuvitag-diagram-edit2.png

Victron provided us an elegant machinery to monitor interaction between the equipment and the environment.


2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

pdonner avatar image
pdonner answered ·

Finally got my modest Raspberry Pi 3B based development environment up and running.

While skimming through the qml source files it turned out that the GUI functionality related to the question is actually located in PageTemperatureSensorRelay.qml. I tweaked four sections (activation and deactivation MbSpinBox sections of the two relays) of the descriptive code like this:

                step: 0.1 /* Was 1 */
                decimals: 1 /* Was 0 */

This made c0Set, c0Clear etc. MbSpinBoxes work correctly and values appeared with one decimals on the menu browser page and its parent. The problem left was that while confirming the new value, the decimal part of the new reading gets lost.

As there are a number of competent developers in this community who are familiar with the Victron OS environment, I wonder if anybody could tell me where I should look for definitions of these values as integers to fix them (or any other workaround) so that I could get to the aim?

1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

pdonner avatar image pdonner commented ·

@Guy Stewart (Victron Community Manager) pointed out elsewhere about Victron battery sensors that:

The temperature sensor probe is only accurate to 1 degree

Therefore, it could be more flexible to single out only ruuvi sensors as having 1 decimal precision. This can be done by declaring a function:

    function isRuuviSensor() {
        return (sensorId.substring(0, 6) === "ruuvi_")
    }

Then the suggested modifications should rather read:

    step: isRuuviSensor() ? 0.1 : 1
    decimals: isRuuviSensor() ? 1 : 0
0 Likes 0 ·
pdonner avatar image
pdonner answered ·

Wrote earlier:

I'm also aware that it could be possible to achieve the stated aim by applying a node-red ... solution.

Checked the Victron and Node-Red webinar videos and found that Victron employee @Dirk-Jan Faber made a presentation which actually illustrates in detail how this can be achieved:

https://youtu.be/_J2rVNLrDIg

However, this approach involves installation of supporting equipment and software, the large version of Venus OS and a couple of other tricks which makes it less usable for untrained users.


2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

pdonner avatar image
pdonner answered ·

I wonder if anybody could tell me where I should look for definitions of these values as integers to fix them (or any other workaround).

The localsettings document at https://github.com/victronenergy/localsettings states:

D-Bus settings manager that interfaces between xml file on disk and D-Bus. It is a part of Venus. All programs that need non-volatile settings use this dbus service. And all code that changes settings from other processes, for example the GUI, do that via the D-Bus service of com.victronenergy.settings as well.

Non-volatile settings reside in /data/conf/settings.xml which is updated whenever a change is being made. It turned out that all my qml changes were correctly modified, but when the SetValue call modified the value the decimals were lost. The reason for this is that the file defines the values as integers, like this:

<ClearValue type="i" min="-100" max="100" default="0" silent="False">16</ClearValue>

So the workaround is to change the type argument's values to floats ("f"). After that everything works as expected. Apparently that wouldn't offend functionality of sensors with a precision of 1 degree.


2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

pdonner avatar image
pdonner answered ·

With the ability to utilize 0.1 °C precision the modification was ready to be installed on the production unit:

01c-graph.png

Now the fluctuation of temperature diminished from 3.5 to 1.5 °C. With a better placing of the sensor the result could apparently be even better, but that falls outside the scope of this topc.



01c-graph.png (9.2 KiB)
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Related Resources

Additional resources still need to be added for this topic

Experiments, Modifications and Adaptions. Mods (Modifications) can be made to Victron Software by the Community. Please use the modifications space for enthusiasts who want to push what is possible, without official Victron Support.