# VRM widget MPPT operation mode

**URL:** <https://community.victronenergy.com/t/vrm-widget-mppt-operation-mode/29752>\
**Category:** Node-RED\
**Tags:** vebus, domestic, vrm, diy\
**Created:** [22 April 2025 17:27 UTC](https://community.victronenergy.com/t/vrm-widget-mppt-operation-mode/29752 "2025-04-22T17:27:06Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![usernamepasswordbs](https://avatars.discourse-cdn.com/v4/letter/u/b9e5f3/32.png) [@usernamepasswordbs](https://community.victronenergy.com/u/usernamepasswordbs)\
**Post date:** [22 April 2025 17:27 UTC](https://community.victronenergy.com/t/vrm-widget-mppt-operation-mode/29752/1 "2025-04-22T17:27:06Z")

</div>

Hi All,

I am using a Victron solar charger node in Node-red which outputs the MPP operation mode, either “Tracker active” (normal operation) or “Voltage or current limited” (which corresponds to the MPPT “throttling” back when the battery is almost charged).  
Anyway, I would like to know is there a way to be able to see the mode as a widget on VRM advanced ?

Thanks,

---

<div class="post-metadata">

**Author:** ![ISavedNoKat](https://dub1.discourse-cdn.com/victron/user_avatar/community.victronenergy.com/isavednokat/32/56073_2.png) [@ISavedNoKat](https://community.victronenergy.com/u/ISavedNoKat)\
**Post date:** [28 July 2026 05:01 UTC](https://community.victronenergy.com/t/vrm-widget-mppt-operation-mode/29752/2 "2026-07-28T05:01:56Z")

</div>

I’ve just been looking into this and I don’t think there’s a direct way from the settings on VRM…it might be possible to set it up to be tracked though if you look into the options under virtual devices in Node Red and could set one up for it and could copy through the values from the real parameter to the virtual device via a custom control node - just a thought though, I haven’t worked with a virtual device yet and am not sure whether one of the device types could be hijacked to serve this purpose…I’m considering trying it in which case I’ll return with the results of that effort if I remember to.

---

<div class="post-metadata">

**Author:** ![usernamepasswordbs](https://avatars.discourse-cdn.com/v4/letter/u/b9e5f3/32.png) [@usernamepasswordbs](https://community.victronenergy.com/u/usernamepasswordbs)\
**Post date:** [28 July 2026 08:59 UTC](https://community.victronenergy.com/t/vrm-widget-mppt-operation-mode/29752/3 "2026-07-28T08:59:36Z")

</div>

I would be interested to hear how you get on.

---

<div class="post-metadata">

**Author:** ![ISavedNoKat](https://dub1.discourse-cdn.com/victron/user_avatar/community.victronenergy.com/isavednokat/32/56073_2.png) [@ISavedNoKat](https://community.victronenergy.com/u/ISavedNoKat)\
**Post date:** [2 August 2026 13:00 UTC](https://community.victronenergy.com/t/vrm-widget-mppt-operation-mode/29752/4 "2026-08-02T13:00:32Z")

</div>

Well I’ve just done this now…I put a virtual device and tried to pick something relatively innocuous so I went for the temperature sensor device type with a generic temperature type, I converted the output of a solar charger’s MPP operation mode parameter through a change node with a Jsonata expression set to {“/Temperature”:payload} and passed it into the virtual device (the extra injects were to force the changes of data necessary to create the spike in the following chart).

 ![image](https://europe1.discourse-cdn.com/victron/original/3X/4/f/4fc446a1b9e44d0e615c9f79a931d9800a0784eb.png)

Then setup a custom widget in the Advanced page with device being my new virtual device and parameter being temperature. Unfortunately temperature is set up for continuous values as you can see but it’s working.

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

Also showing up nicely in dbus-spy:

 ![image](https://europe1.discourse-cdn.com/victron/original/3X/6/1/61811a74d258110a4f1471beaf0b1352de40b98e.png)

---

<div class="post-metadata">

**Author:** ![usernamepasswordbs](https://avatars.discourse-cdn.com/v4/letter/u/b9e5f3/32.png) [@usernamepasswordbs](https://community.victronenergy.com/u/usernamepasswordbs)\
**Post date:** [3 August 2026 06:35 UTC](https://community.victronenergy.com/t/vrm-widget-mppt-operation-mode/29752/5 "2026-08-03T06:35:19Z")

</div>

Good ! I will try this with mine.

---

<div class="post-metadata">

**Author:** ![usernamepasswordbs](https://avatars.discourse-cdn.com/v4/letter/u/b9e5f3/32.png) [@usernamepasswordbs](https://community.victronenergy.com/u/usernamepasswordbs)\
**Post date:** [20 August 2026 04:48 UTC](https://community.victronenergy.com/t/vrm-widget-mppt-operation-mode/29752/6 "2026-08-20T04:48:40Z")

</div>

Can you share the node or the flow ? I can’t find the right one.

---

<div class="post-metadata">

**Author:** ![ISavedNoKat](https://dub1.discourse-cdn.com/victron/user_avatar/community.victronenergy.com/isavednokat/32/56073_2.png) [@ISavedNoKat](https://community.victronenergy.com/u/ISavedNoKat)\
**Post date:** [20 August 2026 05:17 UTC](https://community.victronenergy.com/t/vrm-widget-mppt-operation-mode/29752/7 "2026-08-20T05:17:07Z")

</div>

The following flow includes the basics…note I’ve got a couple of other features of the virtual device turned on because I’m using it to track other values not included in this flow.

I suspect when copying and pasting you may need to replace my solar charger node with your own fresh local one and there may be similar issues with the virtual device but see what happens.

```flows
[
    {
        "id": "9c0cc40bbd23f598",
        "type": "victron-input-solarcharger",
        "z": "aa940e18d5486a09",
        "service": "com.victronenergy.solarcharger/0",
        "path": "/MppOperationMode",
        "serviceObj": {
            "service": "com.victronenergy.solarcharger/0",
            "name": "120 Solar Charger 1",
            "communityTag": "solarcharger"
        },
        "pathObj": {
            "path": "/MppOperationMode",
            "type": "enum",
            "name": "MPP operation mode",
            "enum": {
                "0": "Off",
                "1": "Voltage or current limited",
                "2": "MPPT Tracker active",
                "255": "Not available"
            }
        },
        "initial": "",
        "name": "SCC MPP Mode",
        "onlyChanges": true,
        "outputs": 1,
        "conditionalMode": false,
        "outputTrue": "",
        "outputFalse": "",
        "debounce": "",
        "x": 1560,
        "y": 180,
        "wires": [
            [
                "728741c6a4e93418"
            ]
        ]
    },
    {
        "id": "728741c6a4e93418",
        "type": "change",
        "z": "aa940e18d5486a09",
        "name": "RecordRawMPPMode",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "{\"/Temperature\":payload}",
                "tot": "jsonata"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1220,
        "y": 360,
        "wires": [
            [
                "65b440d3c5f85adb"
            ]
        ]
    },
    {
        "id": "65b440d3c5f85adb",
        "type": "victron-virtual",
        "z": "aa940e18d5486a09",
        "name": "MPPMode",
        "outputs": 1,
        "device": "temperature",
        "default_values": true,
        "acload_nrofphases": 1,
        "enable_s2support": false,
        "battery_capacity": 25,
        "include_battery_temperature": false,
        "battery_voltage_preset": "24",
        "battery_voltage_custom": 24,
        "generator_type": "ac",
        "generator_nrofphases": 1,
        "include_engine_hours": false,
        "include_starter_voltage": false,
        "include_history_energy": false,
        "grid_nrofphases": 1,
        "include_motor_temp": false,
        "include_controller_temp": false,
        "include_coolant_temp": false,
        "include_motor_rpm": true,
        "include_motor_direction": true,
        "position": 0,
        "pvinverter_nrofphases": 1,
        "switch_1_type": 1,
        "switch_1_min": 0,
        "switch_1_max": "",
        "switch_1_initial": 0,
        "switch_1_label": "",
        "switch_1_unit": "",
        "switch_1_step": 1,
        "switch_1_customname": "",
        "switch_1_group": "",
        "switch_1_include_measurement": false,
        "switch_1_rgb_color_wheel": false,
        "switch_1_cct_wheel": false,
        "switch_1_rgb_white_dimmer": false,
        "fluid_type": 0,
        "include_tank_battery": false,
        "include_tank_temperature": false,
        "tank_battery_voltage": 3.3,
        "tank_capacity": 0.2,
        "temperature_type": 2,
        "include_humidity": true,
        "include_pressure": true,
        "include_temp_battery": false,
        "temp_battery_voltage": 3.3,
        "x": 1450,
        "y": 400,
        "wires": [
            [
                "6463c35b177a3ff2"
            ]
        ]
    },
    {
        "id": "6463c35b177a3ff2",
        "type": "debug",
        "z": "aa940e18d5486a09",
        "name": "debugMPPMode",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1690,
        "y": 380,
        "wires": []
    },
    {
        "id": "dbbbaacc8926f599",
        "type": "global-config",
        "env": [],
        "modules": {
            "@victronenergy/node-red-contrib-victron": "1.6.64"
        }
    }
]

```

---

<div class="post-metadata">

**Author:** ![usernamepasswordbs](https://avatars.discourse-cdn.com/v4/letter/u/b9e5f3/32.png) [@usernamepasswordbs](https://community.victronenergy.com/u/usernamepasswordbs)\
**Post date:** [20 August 2026 06:08 UTC](https://community.victronenergy.com/t/vrm-widget-mppt-operation-mode/29752/8 "2026-08-20T06:08:53Z")

</div>

Thanks for that. However, on my Node-red it shows as “unknown - victron virtual”

---

<div class="post-metadata">

**Author:** ![Brucey](https://avatars.discourse-cdn.com/v4/letter/b/ccd318/32.png) [@Brucey](https://community.victronenergy.com/u/Brucey)\
**Post date:** [1 September 2026 00:28 UTC](https://community.victronenergy.com/t/vrm-widget-mppt-operation-mode/29752/9 "2026-09-01T00:28:05Z")

</div>

Would this be the same as the scc going from absorb to float? In which case you could just enable the widget for mppt state?

 ![Screenshot_20260831_202717_VRM](https://europe1.discourse-cdn.com/victron/original/3X/8/a/8ae40357f686a29fe2d19995fc10aad3009d488c.jpeg)

---

<div class="post-metadata">

**Author:** ![usernamepasswordbs](https://avatars.discourse-cdn.com/v4/letter/u/b9e5f3/32.png) [@usernamepasswordbs](https://community.victronenergy.com/u/usernamepasswordbs)\
**Post date:** [1 September 2026 09:28 UTC](https://community.victronenergy.com/t/vrm-widget-mppt-operation-mode/29752/10 "2026-09-01T09:28:19Z")

</div>

No, what I want to track is basically when it throttles back generally due to battery being nearly charged. The MPPT widget will track the periods of “off” or “bulk” or “ext.control” etc. but not “voltage or current limited”, the node does track this but I don’t know how to turn the node output into a widget.
