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.
@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)
@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
// 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;