Grid Meter data from Node-RED to DBus possible?

i have a Grid Power Meter from which i get data via REST (JSON) within Node-RED.
(Node-RED is running on Cerbo GX/Venus OS Large)
Is there a possibility to make Grid Meter data available on DBus to use that data as “AC Input” ?

Already found this project for Shelly meters “dbus-shelly-3em-smartmeter” but i do not have a shelly and data is already here within Node-RED.

appreciate feedback and best regards,
Marcus

Hi
appreciate your feedback.
However, my 3-phase energy meter does not provide an MQTT interface. it has a REST interface.

@alpha-linux
you should be able to send MQTT from NodeRed to the script linked.

I get data from SDM630 via modbus into HomeAssistant. I reformat the message in NudeRed and forward ti Cerbo/NodeRed where I forward to the linked script.

gave it a first try to export grid power data from Node-RED context data to MQTT.
Will extend to have Voltages and kWh later on.
currently my JSON looks like this (Power Total, L1,L2,L3)

{
  "grid": {
    "power": 2692,
    "L1": {
      "power": 941
    },
    "L2": {
      "power": 1055
    },
    "L3": {
      "power": 695
    }
  }
}


1 Like

fully done, works reliably so far

{
    "grid": {
        "power": 193,
        "current": 3.235,
        "energy_forward": 12345.678,
        "energy_reverse": -12.345,
        "L1": {
            "power": 15,
            "voltage": 237.5,
            "current": 0.23,
            "frequency": 50
        },
        "L2": {
            "power": 132,
            "voltage": 236.2,
            "current": 0.787,
            "frequency": 50
        },
        "L3": {
            "power": 45,
            "voltage": 237.5,
            "current": 2.217,
            "frequency": 50
        }
    }
}

@alpha-linux
cool!
Pls, check also, how the system behaves, if you cannot read and forward measurment data.
If the Venus OS does not get data from a grid meter, the MP2 must be set into mode “Paththrough”.

Actually, I do not know, which data es expected on DBus to show lost connectivity to grid meter.

could you share your NoteRed Flow Card?
Import Grid Power / L1 / L2 / L3 does work, but reformat and send it via mqtt Output does not work in my FlowCard

Hi
i your goal is to:

  • Collect values from global context
  • Structure them into a JSON object
  • Publish them via MQTT

then my function node is like this:

// Get power values from the global context
let HomePowerL1 = global.get("HomePowerL1") || 0;
let HomePowerL2 = global.get("HomePowerL2") || 0;
let HomePowerL3 = global.get("HomePowerL3") || 0;
let HomePowerTotal = global.get("HomePowerTotal") || 0;

// Get current values from the global context
let HomeCurrentL1 = global.get("HomeCurrentL1") || 0;
let HomeCurrentL2 = global.get("HomeCurrentL2") || 0;
let HomeCurrentL3 = global.get("HomeCurrentL3") || 0;
let HomeCurrentTotal = global.get("HomeCurrentTotal") || 0;

// Get voltage values from the global context
let HomeVoltL1 = global.get("HomeVoltL1") || 0;
let HomeVoltL2 = global.get("HomeVoltL2") || 0;
let HomeVoltL3 = global.get("HomeVoltL3") || 0;

// Get energy values from the global context
let HomeEnergyImport = global.get("HomeEnergyImportT1") || 0;
let HomeEnergyExport = global.get("HomeEnergyExportT1") || 0;

// Get frequency value from the global context
let HomeFrequency = global.get("HomeFrequency") || 0;

// Construct the MQTT message payload
let payload = {
    grid: {
        power: HomePowerTotal,
        current: HomeCurrentTotal,
        energy_forward: HomeEnergyImport,
        energy_reverse: HomeEnergyExport,
        L1: {
            power: HomePowerL1,
            voltage: HomeVoltL1,
            current: HomeCurrentL1,
            frequency: HomeFrequency
        },
        L2: {
            power: HomePowerL2,
            voltage: HomeVoltL2,
            current: HomeCurrentL2,
            frequency: HomeFrequency
        },
        L3: {
            power: HomePowerL3,
            voltage: HomeVoltL3,
            current: HomeCurrentL3,
            frequency: HomeFrequency
        }
    }
};

// Specify the MQTT topic
msg.topic = "emu/Home/power";

// Set the payload to the `msg` object
msg.payload = payload; // Keep it as an object (MQTT will serialize to JSON)

// Return the message to send to the MQTT Out node
return msg;