Tip
Centrum nápovědy Victron
Navrhovat v CADzdarma
Node-RED · první flow

Relé Cerbo GX podle stavu nabití baterie

Čtyři uzly: čtení stavu nabití baterie (SoC), jednoduchá funkce s hysterezí, relé 1 v Cerbo GX a zobrazení v panelu Debug. Relé sepne při 30% a rozepne až při 50%, takže při kolísání SoC „necvaká“. Na konci najdete hotový flow k importu.

Než začnete

  • Zapnutý Node-RED. Cerbo GX s Venus OS Large a zapnutým Node-RED; editor se otevírá na adrese https://venus.local:1881. Postup: první spuštění Node-RED.
  • Monitor baterie viditelný v GX. SoC pochází z monitoru baterie nebo BMS připojeného k GX, např. SmartShunt, BMV nebo Lynx Shunt. Pokud GX nezobrazuje stav nabití, nedostane ho ani Node-RED.
  • Relé v ručním režimu. Victron: relé lze ovládat z Node-RED až po přepnutí na ruční ovládání. U relé Cerbo GX: Settings → Integrations → Relays, funkce „Manual“. Ve stejném menu je také polarita relé (normálně rozepnuté nebo normálně sepnuté).
Cerbo GX: svorky Relay 1 a Relay 2 (NO, COM, NC) dole vedle napájení. V Node-RED je Relay 1 „Venus relay 1 state“, cesta /Relay/0/State.
Cerbo GX: svorky Relay 1 a Relay 2 (NO, COM, NC) jsou dole vedle napájení. V Node-RED odpovídá Relay 1 položce „Venus relay 1 state“, cesta /Relay/0/State.

Z Node-RED lze ovládat i další relé, ale každé musíte nejprve přenastavit: u BMV nastavte volbu relé na REM (ve VictronConnect), u Lynx Shunt VE.Can funkci na „Manual control“ (v menu GX), u větších regulátorů MPPT a zařízení řady RS ruční režim (ve VictronConnect). Relé Lynx Smart BMS nelze ovládat z Node-RED. Nelze ovládat ani alarmové relé nebo stykač AC-out 2 v MultiPlus a Quattro.

Chcete spouštět elektrocentrálu? GX má pro tento účel vestavěné automatické spouštění a zastavování elektrocentrály pomocí relé s vlastními podmínkami spuštění (v návodu GX kapitola „Generator auto start/stop“), takže Node-RED není potřeba. Příklad Victron s elektrocentrálou (níže) neovládá relé přímo, ale používá uzel Generator.

Jak tento flow funguje

SoC % 0 / 1 Battery (input) /Soc · SoC v % hystereze function · 30 / 50% Relay (output) /Relay/0/State debug panel Debug Prahy v uzlu hystereze (příklad) sepnout (1) beze změny rozepnout (0) 0% 30% 50% 100%
zprávy (msg) mezi uzly
Najeďte na prvek schématu nebo na něj klepněte.
  1. Battery (input)Stav nabití z monitoru baterie — při každé změně, bez „only changes“ také každých 5 s.
  2. hystereze (function)SoC ≤ 30% → 1, SoC ≥ 50% → 0, mezi těmito hodnotami beze změny. Odesílá pouze změnu stavu.
  3. Relay (output)1 sepne, 0 rozepne relé 1 v Cerbo GX (/Relay/0/State).
  4. debugV panelu Debug zobrazuje každou hodnotu odeslanou do relé.

Sestavení krok za krokem

  1. Nová záložka. V editoru Node-RED přidejte novou záložku flow (tlačítko „+“ nad pracovní plochou), aby se příklad nemíchal s ostatními flow.
  2. Uzel Battery. Ze sekce uzlů Victron v paletě přetáhněte vstupní uzel Battery. V jeho nastavení vyberte svůj monitor baterie a měřenou veličinu „State of charge (%)“. Pole „only changes“ nechte nezaškrtnuté — uzel pak odesílá SoC při každé změně a navíc každých 5 sekund, takže funkce rychle dostane hodnotu i po restartu.
  3. Uzel function. Přidejte běžný uzel function, pojmenujte ho „hystereze“ a vložte kód ze sekce „Kód hystereze“. Propojte výstup uzlu Battery se vstupem funkce.
  4. Uzel Relay. Přidejte výstupní uzel Relay, vyberte „Venus device“ a „Venus relay 1 state“ (cesta /Relay/0/State — číslování v cestě začíná od 0, takže index 0 znamená relé 1). Uzel nastaví hodnotu přijatou v msg.payload: 0 — Open, 1 — Closed. Připojte k němu výstup funkce.
  5. Uzel debug. K výstupu funkce připojte také uzel debug. Hodnoty uvidíte v panelu Debug na pravé straně editoru a pod uzlem „hystereze“ aktuální SoC a stav relé.
  6. Deploy a test. Klikněte na Deploy. Abyste nemuseli čekat na vybití baterie, dočasně přidejte uzel inject s číselnou hodnotou (typ „number“, např. 25 a potom 55), připojte ho k funkci a zkontrolujte, zda se relé v menu Relays přepíná. Potom inject odstraňte a znovu klikněte na Deploy.

Kód hystereze

Pokud by se relé mělo zapínat a vypínat při jediném prahu, např. 40%, při kolísání SoC kolem této hodnoty by se přepínalo stále dokola. Hystereze tyto prahy odděluje: relé sepne při 30% nebo méně a rozepne až při 50% nebo více. Mezi těmito hodnotami zůstává v předchozím stavu. Funkce si tento stav pamatuje v kontextu uzlu a odesílá zprávu pouze při změně, takže relé nedostává stejnou hodnotu každých 5 sekund.

// Hystereze: sepněte relé při SoC <= 30 %, rozepněte při SoC >= 50 %.
// Prahy jsou příklady - nastavte vlastní.
const PROG_ZAL = 30;
const PROG_WYL = 50;

const soc = msg.payload;
if (typeof soc !== 'number' || isNaN(soc)) return null;  // chybí hodnota: nic nedělejte

const poprzedni = context.get('stan');
let stan = (poprzedni === undefined) ? 0 : poprzedni;
if (soc <= PROG_ZAL) stan = 1;       // 1 = Closed
else if (soc >= PROG_WYL) stan = 0;  // 0 = Open
// mezi prahy se stav nemění

node.status({fill: stan ? 'green' : 'grey', shape: 'dot',
             text: 'SoC ' + soc.toFixed(1) + ' %, relé ' + (stan ? 'sepnuté' : 'rozepnuté')});

if (stan === poprzedni) return null;  // odesílejte pouze změnu
context.set('stan', stan);
msg.payload = stan;
return msg;
SoCCo funkce děláRelé
60%první načtení, 50% nebo více → odešle 0rozepnuté
40%mezi prahy — nic neodesílározepnuté
30%30% nebo méně → odešle 1sepnuté
45%mezi prahy — nic neodesílásepnuté
50%50% nebo více → odešle 0rozepnuté
  • Obrácená logika. Chcete při nízkém SoC spotřebič odpojit, a ne zapnout? Zaměňte v kódu 1 a 0 ve dvou řádcích s prahy nebo připojte obvod k druhému kontaktu relé — NC místo NO.
  • Chybějící hodnota. Pokud msg.payload není číslo (např. monitor baterie přestal být dostupný), funkce nic neodesílá a relé zůstane v dosavadním stavu.
  • Po restartu. Kontext uzlu se ve výchozím nastavení ukládá do paměti RAM zařízení GX a při restartu nebo výpadku napájení se ztratí. První načtení po restartu vždy nastaví relé: při SoC mezi prahy na 0 (rozepnuté) — i tehdy, když bylo před restartem sepnuté. Jak zachovat kontext, popisuje sekce „Na co si dát pozor“.

Hotový flow k importu

Stejný flow ve formátu JSON. Uzly Victron jsou sestavené stejně jako v příkladech z dokumentace palety node-red-contrib-victron.

  1. Zkopírujte celý blok níže včetně závorek [ a ].
  2. Import. V editoru otevřete nabídku (tlačítko v pravém horním rohu) → Import nebo stiskněte Ctrl-I, vložte text a klikněte na Import. Flow se zobrazí na nové kartě „Relé podle SoC“.
  3. Vyberte svůj monitor baterie. Otevřete uzel „SoC baterie“ a ze seznamu vyberte svůj monitor baterie a „State of charge (%)“.
  4. Zkontrolujte relé v uzlu „Relé 1 GX“, podle potřeby změňte prahy ve funkci a klikněte na Deploy.
Po importu vyberte vlastní zařízení

Uzel Battery odkazuje na ukázkový SmartShunt z dokumentace Victron (com.victronenergy.battery/277). Číslo na konci je v každé instalaci jiné — závisí na zařízení a způsobu připojení. Dokud v uzlu nevyberete svůj monitor baterie, funkce neobdrží SoC a relé se nepřepne.

[
{"id":"c24a5c0f10000001","type":"tab","label":"Relé podle SoC","disabled":false,"info":"Hystereze 30/50 % - příklad z cpv24.pl"},
{"id":"c24a5c0f10000002","type":"victron-input-battery","z":"c24a5c0f10000001","service":"com.victronenergy.battery/277","path":"/Soc","serviceObj":{"service":"com.victronenergy.battery/277","name":"SmartShunt (příklad - vyberte svůj)"},"pathObj":{"path":"/Soc","type":"float","name":"State of charge (%)"},"initial":"","name":"SoC baterie","onlyChanges":false,"x":150,"y":120,"wires":[["c24a5c0f10000003"]]},
{"id":"c24a5c0f10000003","type":"function","z":"c24a5c0f10000001","name":"hystereze","func":"// Hystereze: sepněte relé při SoC <= 30 %, rozepněte při SoC >= 50 %.\n// Prahy jsou příklady - nastavte vlastní.\nconst PROG_ZAL = 30;\nconst PROG_WYL = 50;\n\nconst soc = msg.payload;\nif (typeof soc !== 'number' || isNaN(soc)) return null;  // chybí hodnota: nic nedělejte\n\nconst poprzedni = context.get('stan');\nlet stan = (poprzedni === undefined) ? 0 : poprzedni;\nif (soc <= PROG_ZAL) stan = 1;       // 1 = Closed\nelse if (soc >= PROG_WYL) stan = 0;  // 0 = Open\n// mezi prahy se stav nemění\n\nnode.status({fill: stan ? 'green' : 'grey', shape: 'dot',\n             text: 'SoC ' + soc.toFixed(1) + ' %, relé ' + (stan ? 'sepnuté' : 'rozepnuté')});\n\nif (stan === poprzedni) return null;  // odesílejte pouze změnu\ncontext.set('stan', stan);\nmsg.payload = stan;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":120,"wires":[["c24a5c0f10000004","c24a5c0f10000005"]]},
{"id":"c24a5c0f10000004","type":"victron-output-relay","z":"c24a5c0f10000001","service":"com.victronenergy.system/0","path":"/Relay/0/State","serviceObj":{"service":"com.victronenergy.system/0","name":"Venus device"},"pathObj":{"path":"/Relay/0/State","type":"enum","name":"Venus relay 1 state","enum":{"0":"Open","1":"Closed"},"writable":true},"initial":"","name":"Relé 1 GX","onlyChanges":true,"x":600,"y":120,"wires":[]},
{"id":"c24a5c0f10000005","type":"debug","z":"c24a5c0f10000001","name":"stav relé","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":610,"y":180,"wires":[]}
]

Vestavěné příklady Victron

Paleta Victron obsahuje vestavěnou knihovnu příkladů: nabídka (pravý horní roh) → Import → Examples → node-red-contrib-victron. Stejné flow jsou také na wiki stránce palety, takže si je můžete prohlédnout bez editoru. Tři z nich jsou tomuto příkladu nejbližší:

PříkladCo děláČím se liší od flow na této stránce
Threshold ControlVýstup se zapne, když vstupní hodnota překročí práh ON, a vypne se, když klesne pod práh OFF. Před každým přepnutím čeká po nastavenou dobu zpoždění (ON/OFF delay). Prahy a ruční ovládání jsou na dashboardu.Ovládá stejné relé 1 (/Relay/0/State), ale vstupem je napětí baterie z uzlu System (/Dc/Battery/Voltage), nikoli SoC, a navíc používá zpoždění. Vyžaduje další moduly: node-red-dashboard, node-red-contrib-ui-led a node-red-contrib-countdown.
Run generator at certain time when SOC is below 50%Každý den v 18.00 kontroluje uložené SoC. Pokud je nízké, spustí elektrocentrálu na 45 minut: uzel trigger odešle 1 a po 45 minutách 0. SoC se ukládá do kontextu flow.SOC prostřednictvím uzlu change.Ovládá uzel Generator (Manual Start), nikoli relé. Pozor: popis uvádí „pod 50%“, ale uzel switch v tomto flow kontroluje „menší nebo rovno 50“ (název „Start if SOC is <= 50%“).
Only messages at regular intervalsUzel change ukládá poslední hodnotu do kontextu a uzel inject ji načítá v pravidelných intervalech.Hodí se, když potřebujete poslední hodnotu v pravidelných intervalech, nezávisle na tom, kdy ji vstupní uzel odesílá.

Popis všech vstupních a výstupních uzlů Victron: uzly Victron v Node-RED.

Na co si dát pozor

  • Kontext po restartu. Aby se kontext zachoval po restartu, Victron v FAQ popisuje soubor /data/home/nodered/.node-red/settings-user.js s nastavením contextStorage (modul localfilesystem, ukládání každých 300 s, tedy každých 5 minut). Pokud jde o výchozí úložiště kontextu, kód funkce funguje beze změn. Victron upozorňuje, abyste neukládali příliš často, protože se tím opotřebovává paměť flash.
  • Nouzový režim. Pokud po změnách flow přetěžuje GX nebo nefunguje správně, zapněte Node-RED v menu GX v nouzovém režimu (safe mode). Node-RED se spustí bez spuštění flow, takže je můžete opravit. Spustí se po kliknutí na Deploy.
  • Restart Node-RED. V menu GX vypněte a zapněte Node-RED v Venus OS Large Features → Node-RED.
  • Čas ve flow. V příkladech řízených časem, např. s elektrocentrálou v 18.00, používá Node-RED časové pásmo nastavené v Remote Console. Po jeho změně je nutné restartovat Node-RED.
Automatizace, nikoli ochrana

Flow v Node-RED nenahrazuje BMS, pojistky ani jističe — při restartu GX nebo chybě ve flow může relé zůstat v neočekávaném stavu. Obvod připojený k relé musí být bezpečný v obou stavech. Victron neposkytuje podporu pro instalace, které používají Node-RED pro pokročilá řešení.

Zařízení, kterých se to týká

Zdroje

Dále: Node-RED na Cerbo GX — všechny články · první spuštění · uzly Victron · Cerbo GX

Obsah porovnán s dokumentací Victron Energy (datové listy a návody) — stav k 22.09.2026. Nahlásit chybu v obsahu · Přehled oprav