# Implement Shelly BLU H&T in VenusOS via NodeRed

**URL:** <https://community.victronenergy.com/t/implement-shelly-blu-h-t-in-venusos-via-nodered/57843>\
**Category:** DIY\
**Tags:** node-red, gx\_device, cerbo\_gx, vrm\
**Created:** [11 May 2026 09:43 UTC](https://community.victronenergy.com/t/implement-shelly-blu-h-t-in-venusos-via-nodered/57843 "2026-05-11T09:43:00Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![ebend](https://avatars.discourse-cdn.com/v4/letter/e/ee7513/32.png) [@ebend](https://community.victronenergy.com/u/ebend)\
**Post date:** [11 May 2026 09:43 UTC](https://community.victronenergy.com/t/implement-shelly-blu-h-t-in-venusos-via-nodered/57843/1 "2026-05-11T09:43:00Z")

</div>

Hi all,

I just wanted to share a solution for displaying Shelly H&T data (temperature and humididy sensor) on my CerboGX, as i found no solution for this yet.

**Prerequisites:**

-CerboGX with large image and NodeRed

-Shelly device acting as Bluetooth Gateway

**Setup:**

First, the shelly device acting as the gateway need to be added in NodeRed.

Mode needs to be set as “Callback” and the bluetooth gateway script needs to be installed.

 ![image](https://europe1.discourse-cdn.com/victron/original/3X/b/7/b7a02e43c8b16978927105a248340ff23280e236.png)

After the script is running, put the device node into a function with following code:

```auto
let d = msg.payload;

if (d && d.info && d.info.data) {
    d = d.info.data;
} else {
    return null;
}

// get values
let temperature = Number(d.temperature);
let humidity = Number(d.humidity);

// payload for virtual device
msg.payload = {
    "/Temperature": Number(d.temperature),
    "/Humidity": Number(d.humidity)
};

return msg;

```

After this, point the output of the function into a virtual temperatur sensor with humdidy activated

 ![image](https://europe1.discourse-cdn.com/victron/original/3X/b/9/b966031a4f2a708b64affda0ae2f53e4800e8918.png)

After this, the data will be displayed on the cerbo

 ![image](https://europe1.discourse-cdn.com/victron/original/3X/8/1/8179e55e0bcb882c44f2889ebd58123a36cdeaa8.png)

If you have any improvements or questions, please let me know!

Best regards,  
Erik

---

<div class="post-metadata">

**Author:** ![Slowmo](https://dub1.discourse-cdn.com/victron/user_avatar/community.victronenergy.com/slowmo/32/58713_2.png) [@Slowmo](https://community.victronenergy.com/u/Slowmo)\
**Post date:** [13 September 2026 23:45 UTC](https://community.victronenergy.com/t/implement-shelly-blu-h-t-in-venusos-via-nodered/57843/2 "2026-09-13T23:45:00Z")

</div>

I did the same thing a little bit differently through MQTT

1. In Shelly gateway device enable MQTT and configure it to connect to Venus OS
2. Install “Universal BLU to MQTT script” in Shelly
3. Node Red flow: “mqtt in” → “change” → “virtual device”

My method does not require Shelly device to be added to Venus OS. Multiple gateways could post to the same MQTT topic if they “hear” the same sensor, but then deduplication will probably need to be implemented.

 ![image](https://europe1.discourse-cdn.com/victron/original/3X/5/7/5783f48f40c45a37a684417685a85a570c74e131.png)

Topic in “mqtt in” node is MAC address of the sensor

 ![image](https://europe1.discourse-cdn.com/victron/original/3X/e/d/ed3a94d333033dd665c3be6dfbd657b3896cf9c9.png)

In change node JSONata expression is:

```json
{
  "/Temperature": payload.service_data.temperature,
  "/Humidity": payload.service_data.humidity
}

```

 ![image](https://europe1.discourse-cdn.com/victron/original/3X/d/b/db10c80a93effd16a513cb18de9a4dea501ed2ad.png)
