Node-RED × Victron Energy
Komplexné asistentské
scenáre pre váš
Victron systém
Programujeme pokročilú automatizačnú logiku priamo v Node-RED — od inteligentného riadenia nabitia až po viacpodmienkovú orchestráciu celého energetického systému.
Čo programujeme
Každý scenár je vlastný Node-RED flow šitý na konkrétny Victron systém a požiadavky prevádzky
Časovo-tarifný správca nabitia
Flow sleduje spotové ceny elektriny alebo pevné tariffy a automaticky rozhoduje, kedy nabíjať batérie zo siete, kedy predávať prebytky a kedy využiť solárnu produkciu — všetko s prioritizáciou podľa predikcie počasia a plánovanej spotreby.
Dynamická regulácia záťaže
Automatické zapínanie a vypínanie spotrebičov (tepelné čerpadlo, EV nabíjačka, bojler) podľa aktuálneho stavu SOC, solárnej produkcie a grid limitu — bez zásahu obsluhy.
Viacúrovňový poplachový systém
Scenár sleduje desiatky parametrov (teplota batérie, pretlak, podpätie, chybové kódy) a eskaluje udalosti cez rôzne kanály — push notifikácia, e-mail, SMS, alebo priamy zásah do systému.
Orchester viacerých invertorov
Koordinácia paralelných MultiPlus alebo Quattro jednotiek v rôznych fázach — vyvažovanie záťaže, prioritizácia zdrojov a automatický failover bez manuálneho prepínania.
Vlastný dashboard & reporty
Node-RED UI alebo integrácia s Grafanou — živé grafy spotreby, produkcie a SOC histórie s automatickým denným alebo týždenným e-mailovým reportom vo vlastnej šablóne.
Integrácia s externým systémom
Prepojenie Victron systému s Home Assistant, EVCC, smart metrami, BMS komunikáciou alebo vlastným backendom cez REST, MQTT, Modbus alebo Victron D-Bus protokol.
Ako to funguje
Node-RED beží priamo na Cerbo GX alebo externom Raspberry Pi a komunikuje so všetkými zariadeniami v systéme
Analýza systému
Zmapujeme topológiu vašej inštalácie — zariadenia, komunikačné rozhrania, dostupné dáta a požiadavky na automatizáciu.
Návrh flow logiky
Navrhneme stavový diagram scenára — vstupy, podmienky, akcie a výstupy. Každý rozhodovací bod je zdokumentovaný pred implementáciou.
Programovanie & testovanie
Flow je vyvíjaný iteratívne — najprv na testovacom prostredí, potom nasadený do živého systému s možnosťou rollbacku.
Odovzdanie & dokumentácia
Dostanete exportovaný flow, technickú dokumentáciu logiky a voliteľne krátke video s popisom ako scenár funguje a ako ho upraviť.
Reálna ukážka scenára
Riadenie výkonu invertora a EV nabíjačky podľa SOC, dennej doby a celkovej spotreby — funkčný Node-RED function node nasadený v prevádzke
Rôzne SOC prahy pre deň a noc. Cez deň chráni batériu pre solárne nabíjanie, v noci plynulo redukuje výkon invertora.
Pod 23 % SOC sa výkon tvrdо obmedzí na 500 W bez ohľadu na iné pravidlá — ochrana pred hlbokým vybitím.
Ak rezerva klesne pod 1 kW, scenár automaticky zvýši výkon invertoра — aj napriek SOC throttle. Prednosť pred záťažovými špičkami.
Nabíjací prúd auta sa škrtí v reálnom čase podľa celkovej záťaže, aby nedošlo k pretečeniu gridového limitu 6,8 kW.
// Node-RED function node: Victron Venus OS inverter power control
// Controls max inverter discharge power and EV charger amps based on battery SOC,
// time of day, and total AC consumption. Publishes results to flow context.
// --- Inputs (from flow context) ---
const acAll = flow.get("l1"); // Total AC consumption (W), all phases
const soc = flow.get("soc"); // Battery state of charge (%)
const carTakes = flow.get("evl1"); // EV charger current draw (W)
const houseWithoutCar = acAll - carTakes; // House load excluding EV charger (W)
// --- Constants ---
const GRID_LIMIT = 6800; // Max power to draw from grid (W)
const DESIRED_RESERVE = 1000; // Minimum power reserve before boosting inverter (W)
const INVERTER_MAX = 5000; // Absolute inverter hardware maximum (W)
const HIGH_LOAD_THRESH = 5000; // AC threshold that unlocks higher daytime discharge (W)
const DEFAULT_CAR_AMPS = 32; // Default EV charger current (A)
const isDay = flow.get("day") === 1;
// --- Inverter power limit ---
// Default to full power; reduced by SOC-based curves below.
let maxInverterPower = INVERTER_MAX;
if (!isDay) {
// Night: gradually reduce discharge as battery empties to preserve morning reserves
if (soc < 35) maxInverterPower = 2000;
else if (soc < 50) maxInverterPower = 2500;
else if (soc < 60) maxInverterPower = 3000;
// soc >= 60: full power (INVERTER_MAX)
} else {
// Day: throttle inverter heavily to allow solar to recharge the battery.
// When AC load is high (>HIGH_LOAD_THRESH), allow more discharge to avoid
// overloading the grid connection.
if (soc < 50) maxInverterPower = acAll > HIGH_LOAD_THRESH ? 2000 : 500;
else if (soc < 60) maxInverterPower = acAll > HIGH_LOAD_THRESH ? 3000 : 1000;
else if (soc < 70) maxInverterPower = acAll > HIGH_LOAD_THRESH ? 4000 : 1500;
else if (soc < 80) maxInverterPower = acAll > HIGH_LOAD_THRESH ? 5000 : 2000;
// soc >= 80: full power (INVERTER_MAX)
}
// Emergency low-battery cutback: applies day and night.
// Protects battery from deep discharge regardless of other rules.
if (soc < 23) maxInverterPower = 500;
// --- Power reserve override ---
// If available headroom (grid + inverter - load) drops below DESIRED_RESERVE,
// raise inverter power to cover the shortfall and prevent grid overload.
// This intentionally overrides the SOC throttle during high-load spikes.
const powerReserve = GRID_LIMIT + maxInverterPower - acAll;
if (powerReserve < DESIRED_RESERVE) {
maxInverterPower = acAll + DESIRED_RESERVE - GRID_LIMIT;
}
// Hard cap at inverter hardware maximum
if (maxInverterPower > INVERTER_MAX) maxInverterPower = INVERTER_MAX;
// --- EV charger current limit ---
// Reduce car charging amps if total load would exceed grid limit + inverter budget.
// Negative result is intentional: signals charger to pause (handled downstream).
let carAmps = DEFAULT_CAR_AMPS;
const desiredGridLimitMax = maxInverterPower + GRID_LIMIT;
if (acAll > desiredGridLimitMax) {
carAmps = (desiredGridLimitMax - houseWithoutCar) / 230;
}
// --- Outputs ---
flow.set("carAmps", carAmps);
flow.set("maxInverterPower", maxInverterPower);
flow.set("maxInverterCharge", 5000); // Max charge power — fixed, not SOC-dependent
return msg;
O nás
Tekvica s.r.o.
Sme slovenská technologická spoločnosť. Pod značkou VictronLab sa venujeme výhradne programovaniu komplexných automatizačných scenárov v Node-RED pre inštalácie Victron Energy.
Nejde nám o jednoduché pravidlá — programujeme stavové stroje, viacpodmienkovú logiku a dlhodobé orchestrátory, ktoré reagujú na desiatky premenných súčasne.
const soc = msg.payload.soc;
const price = context.get('spotPrice');
const solar = flow.get('solarForecast');
if (soc < 20 && price < 0.08) {
return [{ payload: 'charge' }, null];
}
if (solar > 3000 && soc > 90) {
return [null, { payload: 'export' }];
}
return [null, null];
Časté otázky
Odpovede na najčastejšie otázky o Node-RED programovaní pre Victron Energy
Na aké zariadenia Victron Energy sa špecializujete?
Pracujeme s celým ekosystémom Victron Energy — Cerbo GX, MultiPlus-II, Quattro, MPPT regulátory, SmartShunt, VenusOS a VRM portál. Node-RED beží priamo na Cerbo GX alebo externom Raspberry Pi s VenusOS.
Čo je potrebné pre spustenie Node-RED na Victron systéme?
Na spustenie Node-RED stačí Cerbo GX alebo Raspberry Pi s VenusOS Large. Node-RED je v ňom dostupný priamo. Potrebujete tiež prístup k VRM portálu pre vzdialenú správu a diagnostiku.
Aká je cena za programovanie Node-RED scenára?
Cena je 200 € bez DPH za hodinu. Fakturujeme po 15-minútových intervaloch. Pred začatím prác odhadneme rozsah a časovú náročnosť konkrétneho scenára — takže viete, čo čakať.
Je možná vzdialená spolupráca?
Áno, väčšinu prác vykonávame na diaľku cez VRM portál a vzdialený prístup k Cerbo GX. Fyzická prítomnosť pri programovaní Node-RED scenárov nie je potrebná — fungujeme s klientmi po celej EÚ.
Dostaneme zdrojový kód a dokumentáciu?
Áno. Po dokončení dostanete exportovaný Node-RED flow vo formáte JSON, technickú dokumentáciu logiky a popis každého rozhodovacieho uzla. Vlastníte celý kód bez licenčných obmedzení.
Kontakt
Opíšte váš systém a čo chcete automatizovať — ozveme sa vám