NodeRed programování

Home Assistant, Arduino, SDS, Raspberry, Linux, vzdálený dohled, automatizace, měření, opensource, closedsource, hotová řešení, DIY, stavebnice, komponenty, software, postupy, návody, schémata, rady, zkušenosti ...
Leo
Příspěvky: 81
Registrován: stř dub 17, 2013 1:21 pm
Reputace: 1

Re: NodeRed programování

Nový příspěvek od Leo »

Dotaz. Když mam nějaké data, které chci, aby se zachovaly, když restartuji raspberry.
Jak se to řeší? Dík.
rva
Příspěvky: 4121
Registrován: úte dub 23, 2013 10:21 am
Reputace: 683
Lokalita: Kousek od Lysé nad Labem
Systémové napětí: 48V
Výkon panelů [Wp]: 46000
Kapacita baterie [kWh]: 40
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Kousek od Lysé nad Labem

Re: NodeRed programování

Nový příspěvek od rva »

Třeba vytvořením nové entity template? https://www.home-assistant.io/integrations/template/
_______________________________________________________________________
43 kWp, LiFePO4 62 kWh,
EPSolar 60 A/150 V ET6415N + 3x Isolar SM II (5 kW, 450 V, 80 A) + Axpert PIP 5048MS
alextccz
Příspěvky: 92
Registrován: úte led 16, 2018 2:28 pm
Reputace: 8
Lokalita: okr. Tachov
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: okr.Tachov

Re: NodeRed programování

Nový příspěvek od alextccz »

Lze ukládat přes context do paměti, po zapnutí do souboru na SDkartu
https://nodered.org/docs/user-guide/context

nebo přímo do souboru
dako
Příspěvky: 54
Registrován: pát bře 18, 2011 1:01 pm
Reputace: 3
Lokalita: Ostrava!!!
Systémové napětí: 48V
Bydliště: Ostrava!!!

Re: NodeRed programování

Nový příspěvek od dako »

Jestli mohu poradit, jako uživatel Nodered, tak než používat hodnoty (msg.payload) označkované topicem (msg.topic),
je lepší používat global hodnoty, tj. proměnné global.proměna. např. v nodu function ji lze definovat jako global.set("variable",x) kde variable je název proměnné a x je hodnota.

Global hodnotu pak lze přečíst napříč všech flow pomocí global.get("variable"),

je to rozhodně pohodlnější, jak předat libovolnému function flow více výpočtových nebo podmínkových hodnot než předávat nodu "stream" s hodnotou msg.payload a k tomu msg.topic

např.

předání hodnoty do function node na vstupu (z msg.payload) a přiřazení do globalní hodnoty SwPosSet

Kód: Vybrat vše

 global.set("SwPosSet",msg.payload);
v jiném nodu function, kde chci s touto hodnotou pracovat pak jen na začátku kódu předám

Kód: Vybrat vše

 switchPosSet = global.get('SwPosSet');
 .
 .
 .
 if (swichPosSet == 3)
 {
 ..........
 }
 
příp. můžu s hodnotou rovnou pracovat

Kód: Vybrat vše

 .
 if (global.get('SwPosSet') == 3)
 {
 ..........
 }
 
dako
Příspěvky: 54
Registrován: pát bře 18, 2011 1:01 pm
Reputace: 3
Lokalita: Ostrava!!!
Systémové napětí: 48V
Bydliště: Ostrava!!!

Re: NodeRed programování

Nový příspěvek od dako »

A ještě další tip,
pro lepší debug-ování jednotlivých function nodu je dobré přidat node.status než je vrácena hodnota msg.payload

příklad:

Kód: Vybrat vše

if (global.get('SwPosSet') == 3)
 {
 msg.payload =  global.get('ChargeCurrentSet') + 1;
 node.status({fill:"blue", shape:"dot", text: msg.payload});
 return msg;
 }
 
tak nějak to pak vypadá ve flow:
function-status.png
function-status.png (5.77 KiB) Zobrazeno 575 x
Leo
Příspěvky: 81
Registrován: stř dub 17, 2013 1:21 pm
Reputace: 1

Re: NodeRed programování

Nový příspěvek od Leo »

alextccz - Děkuji, ten context je to co potřebují, ale nedaří se.
Očučel jsem na YouTube všechny videa a stejně někde dělám chybu.
/home/leo/.node-red/settings.js
Bylo tam za komentované.

contextStorage: {
default: {
module:"localfilesystem"
},
},
A reboot.

Když otevřu uzel Change, tak tam nemam toto.
Přílohy
neni.png
alextccz
Příspěvky: 92
Registrován: úte led 16, 2018 2:28 pm
Reputace: 8
Lokalita: okr. Tachov
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: okr.Tachov

Re: NodeRed programování

Nový příspěvek od alextccz »

Tohle na výběr taky nemám. Předpokládám že je tam volba zda uložit do paměti nebo do souboru. Pravděpodobně by to mohlo souviset s těmito nastaveními https://nodered.org/docs/api/context/ ale funguje to i bez toho. V mém případě se automaticky založí se adresář Context v umístění /data/home/nodered/.node-red/context

Kód: Vybrat vše

[
    {
        "id": "fba6b9c6470fed69",
        "type": "inject",
        "z": "a5c2686a419678c5",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "pokus",
        "payload": "",
        "payloadType": "date",
        "x": 120,
        "y": 5120,
        "wires": [
            [
                "673e81397e1d60c6"
            ]
        ]
    },
    {
        "id": "2ace8c5447420afe",
        "type": "debug",
        "z": "a5c2686a419678c5",
        "name": "debug 18",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 500,
        "y": 5120,
        "wires": []
    },
    {
        "id": "001231f9c0b9db2f",
        "type": "inject",
        "z": "a5c2686a419678c5",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "pokus",
        "payloadType": "flow",
        "x": 100,
        "y": 5180,
        "wires": [
            [
                "6c4bf27e016c42ab"
            ]
        ]
    },
    {
        "id": "673e81397e1d60c6",
        "type": "change",
        "z": "a5c2686a419678c5",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "pokus",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 300,
        "y": 5120,
        "wires": [
            [
                "2ace8c5447420afe"
            ]
        ]
    },
    {
        "id": "6c4bf27e016c42ab",
        "type": "debug",
        "z": "a5c2686a419678c5",
        "name": "debug 19",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 360,
        "y": 5180,
        "wires": []
    }
]
dako
Příspěvky: 54
Registrován: pát bře 18, 2011 1:01 pm
Reputace: 3
Lokalita: Ostrava!!!
Systémové napětí: 48V
Bydliště: Ostrava!!!

Re: NodeRed programování

Nový příspěvek od dako »

A co tak použít node "write file"?
Snímek obrazovky z 2025-01-13 22-02-09.png
Snímek obrazovky z 2025-01-13 22-02-09.png (2.72 KiB) Zobrazeno 482 x
Leo
Příspěvky: 81
Registrován: stř dub 17, 2013 1:21 pm
Reputace: 1

Re: NodeRed programování

Nový příspěvek od Leo »

Zdravím. Dotaz. Když použiju uzel write file a nastavím si připojit k souboru, ukládají se mi data do řádku.
Není nějaký uzel read file, co by uměl přečíst jen jeden řádek?
Třeba když je v souboru 100 řadku a já potřebují jen 20 řadek.
alextccz
Příspěvky: 92
Registrován: úte led 16, 2018 2:28 pm
Reputace: 8
Lokalita: okr. Tachov
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: okr.Tachov

Re: NodeRed programování

Nový příspěvek od alextccz »

Něco takového? Používám ukládání do souboru nebo contextu jen pro jednoduché hodnoty jako stavy přepínačů nebo stavů spotřeby. Aby to přežilo případný restart.

Kód: Vybrat vše

[
    {
        "id": "e565d8319ad8d229",
        "type": "inject",
        "z": "a5c2686a419678c5",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "Teplota 1",
        "payload": "10",
        "payloadType": "num",
        "x": 130,
        "y": 5100,
        "wires": [
            [
                "d79d3382892f3fba"
            ]
        ]
    },
    {
        "id": "28bf010c2a887ec8",
        "type": "inject",
        "z": "a5c2686a419678c5",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "Teplota 2",
        "payload": "20",
        "payloadType": "num",
        "x": 130,
        "y": 5140,
        "wires": [
            [
                "d79d3382892f3fba"
            ]
        ]
    },
    {
        "id": "edd0a10caf3d16e1",
        "type": "inject",
        "z": "a5c2686a419678c5",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "Teplota 3",
        "payload": "60",
        "payloadType": "num",
        "x": 130,
        "y": 5180,
        "wires": [
            [
                "d79d3382892f3fba"
            ]
        ]
    },
    {
        "id": "7dc98b2669a322e3",
        "type": "debug",
        "z": "a5c2686a419678c5",
        "name": "debug 18",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 520,
        "y": 5120,
        "wires": []
    },
    {
        "id": "d79d3382892f3fba",
        "type": "join",
        "z": "a5c2686a419678c5",
        "name": "",
        "mode": "custom",
        "build": "object",
        "property": "payload",
        "propertyType": "msg",
        "key": "topic",
        "joiner": "\\n",
        "joinerType": "str",
        "accumulate": true,
        "timeout": "",
        "count": "3",
        "reduceRight": false,
        "reduceExp": "",
        "reduceInit": "",
        "reduceInitType": "",
        "reduceFixup": "",
        "x": 330,
        "y": 5140,
        "wires": [
            [
                "7dc98b2669a322e3",
                "326757e570a8fded"
            ]
        ]
    },
    {
        "id": "326757e570a8fded",
        "type": "file",
        "z": "a5c2686a419678c5",
        "name": "",
        "filename": "/data/home/nodered/Switch/pokus.json",
        "filenameType": "str",
        "appendNewline": true,
        "createDir": true,
        "overwriteFile": "true",
        "encoding": "none",
        "x": 610,
        "y": 5160,
        "wires": [
            []
        ]
    },
    {
        "id": "f6314f71fbc81bca",
        "type": "file in",
        "z": "a5c2686a419678c5",
        "name": "",
        "filename": "/data/home/nodered/Switch/pokus.json",
        "filenameType": "str",
        "format": "utf8",
        "chunk": false,
        "sendError": false,
        "encoding": "none",
        "allProps": false,
        "x": 370,
        "y": 5240,
        "wires": [
            [
                "1c7e673fb7bb624e"
            ]
        ]
    },
    {
        "id": "e89bd45ba310d17f",
        "type": "debug",
        "z": "a5c2686a419678c5",
        "name": "debug 19",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 1040,
        "y": 5240,
        "wires": []
    },
    {
        "id": "788240d37b286439",
        "type": "inject",
        "z": "a5c2686a419678c5",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 120,
        "y": 5240,
        "wires": [
            [
                "f6314f71fbc81bca"
            ]
        ]
    },
    {
        "id": "1c7e673fb7bb624e",
        "type": "json",
        "z": "a5c2686a419678c5",
        "name": "",
        "property": "payload",
        "action": "",
        "pretty": false,
        "x": 610,
        "y": 5240,
        "wires": [
            [
                "bcfc3df17f00e8e7",
                "7c71ae9ede7dc301",
                "91bbd618a18f7021"
            ]
        ]
    },
    {
        "id": "bcfc3df17f00e8e7",
        "type": "change",
        "z": "a5c2686a419678c5",
        "name": "",
        "rules": [
            {
                "t": "move",
                "p": "payload[\"Teplota 1\"]",
                "pt": "msg",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 830,
        "y": 5240,
        "wires": [
            [
                "e89bd45ba310d17f"
            ]
        ]
    },
    {
        "id": "7c71ae9ede7dc301",
        "type": "change",
        "z": "a5c2686a419678c5",
        "name": "",
        "rules": [
            {
                "t": "move",
                "p": "payload[\"Teplota 2\"]",
                "pt": "msg",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 830,
        "y": 5280,
        "wires": [
            [
                "469e43bb83092529"
            ]
        ]
    },
    {
        "id": "91bbd618a18f7021",
        "type": "change",
        "z": "a5c2686a419678c5",
        "name": "",
        "rules": [
            {
                "t": "move",
                "p": "payload[\"Teplota 3\"]",
                "pt": "msg",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 830,
        "y": 5320,
        "wires": [
            [
                "fff4271e29bccd52"
            ]
        ]
    },
    {
        "id": "469e43bb83092529",
        "type": "debug",
        "z": "a5c2686a419678c5",
        "name": "debug 20",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 1040,
        "y": 5280,
        "wires": []
    },
    {
        "id": "fff4271e29bccd52",
        "type": "debug",
        "z": "a5c2686a419678c5",
        "name": "debug 21",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 1040,
        "y": 5320,
        "wires": []
    }
]
Leo
Příspěvky: 81
Registrován: stř dub 17, 2013 1:21 pm
Reputace: 1

Re: NodeRed programování

Nový příspěvek od Leo »

Kluci dotaz. Má někdo node-red na HA?
Do nedávna jsem měl na raspios-bookworm.
O víkendu jsem si nainstaloval HA a zkouším.
Uzel write file nechce zapisovat do systémových souboru.
Jsem hledal a prý v HA, Node-RED běží v kontejneru a má omezený přístup k souborům.
Někde se to prý musí povolit.
Nevi někdo jak na to? Děkuji.
Leo
Příspěvky: 81
Registrován: stř dub 17, 2013 1:21 pm
Reputace: 1

Re: NodeRed programování

Nový příspěvek od Leo »

Hojte tu všici.
Tak jsem zjistil, že HA neni to co jsem chtěl a jsme zptky na linuxu na raspi.
By byl by dotaz.
Pohořel jsem u databoardu1 - template, u check boxu.
Jak vyřešit, aby mi na výstupu vypisoval stav, když check přepinam?
Děkuji
<div>
<input type="checkbox" name="checkbox" value="bar1">Bar 1</input><br>
<input type="checkbox" name="checkbox" value="bar2">Bar 2</input><br>
<input type="checkbox" name="checkbox" value="bar3">Bar 3</input><br>
<input type="checkbox" name="checkbox" value="bar4">Bar 4</input><br>
</div>
Antrac1t
Příspěvky: 410
Registrován: ned čer 26, 2022 3:33 pm
Reputace: 73
Lokalita: Znojemsko
Systémové napětí: 48V
Výkon panelů [Wp]: 5500
Kapacita baterie [kWh]: 11
Chci prodávat energii: NE
Chci/Mám dotaci: NE

Re: NodeRed programování

Nový příspěvek od Antrac1t »

vloz sem aktualni flow co mas
string1 - 5.5kwp 3S4P - 460wp | 3x Multiplus ii 3000VA 1F systém | Lifepo4 230AH 48V + Seplos BMS
skybor
Příspěvky: 1175
Registrován: pon dub 24, 2023 8:47 am
Reputace: 132
Lokalita: Lašská brána Beskyd
Systémové napětí: 48V
Výkon panelů [Wp]: 6kWp
Kapacita baterie [kWh]: 18kWh

Re: NodeRed programování

Nový příspěvek od skybor »

Co takhle použít node-red-node-ui-list ?
SkyFVE 6 kWp (ve výstavbě) na výzkumné "chytré" chatě. 4x MPPT Epever XTRA4415N 4x40A, 1x AC Charger WATE 42V/10A, Li-Ion 3x 12s 156Ah (18 kWh/44V), SkyPowerBox LF 4810 1kVA, Victron Atlas 48/1600, APC SmartUPS 5kVA + PLC Siemens Logo! + Dell Optiplex 3040 Micro (Proxmox: HA, Node-RED, InfluxDB, Grafana, Mqtt, Zigbee2Mqtt, Samba, Tailscale)
skybor
Příspěvky: 1175
Registrován: pon dub 24, 2023 8:47 am
Reputace: 132
Lokalita: Lašská brána Beskyd
Systémové napětí: 48V
Výkon panelů [Wp]: 6kWp
Kapacita baterie [kWh]: 18kWh

Re: NodeRed programování

Nový příspěvek od skybor »

https://flows.nodered.org/node/node-red-node-ui-list

CheckBox1.jpg
CheckBox2.jpg
CheckBox2.jpg (6.36 KiB) Zobrazeno 182 x

Kód: Vybrat vše

[
    {
        "id": "c2966228d27863a5",
        "type": "ui_list",
        "z": "c68cce97b5f96270",
        "group": "7e4c65d6.0419cc",
        "name": "Checkboxes",
        "order": 3,
        "width": "4",
        "height": "7",
        "lineType": "one",
        "actionType": "check",
        "allowHTML": false,
        "outputs": 1,
        "topic": "",
        "x": 310,
        "y": 260,
        "wires": [
            [
                "398c9cbcac0aebaf"
            ]
        ]
    },
    {
        "id": "b4a3240a33dcf4b6",
        "type": "inject",
        "z": "c68cce97b5f96270",
        "name": "Bars",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "[{\"title\":\"bar1\",\"isChecked\":true},{\"title\":\"bar2\"},{\"title\":\"bar3\"},{\"title\":\"bar4\"}]",
        "payloadType": "json",
        "x": 110,
        "y": 260,
        "wires": [
            [
                "c2966228d27863a5"
            ]
        ]
    },
    {
        "id": "398c9cbcac0aebaf",
        "type": "debug",
        "z": "c68cce97b5f96270",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 510,
        "y": 260,
        "wires": []
    },
    {
        "id": "7e4c65d6.0419cc",
        "type": "ui_group",
        "name": "Checkboxes",
        "tab": "2f52ec48.3a82cc",
        "order": 1,
        "disp": true,
        "width": "12",
        "collapse": false,
        "className": ""
    },
    {
        "id": "2f52ec48.3a82cc",
        "type": "ui_tab",
        "name": "List",
        "icon": "dashboard"
    }
]
SkyFVE 6 kWp (ve výstavbě) na výzkumné "chytré" chatě. 4x MPPT Epever XTRA4415N 4x40A, 1x AC Charger WATE 42V/10A, Li-Ion 3x 12s 156Ah (18 kWh/44V), SkyPowerBox LF 4810 1kVA, Victron Atlas 48/1600, APC SmartUPS 5kVA + PLC Siemens Logo! + Dell Optiplex 3040 Micro (Proxmox: HA, Node-RED, InfluxDB, Grafana, Mqtt, Zigbee2Mqtt, Samba, Tailscale)
Leo
Příspěvky: 81
Registrován: stř dub 17, 2013 1:21 pm
Reputace: 1

Re: NodeRed programování

Nový příspěvek od Leo »

Ono to pry je nějak nefunkční přes klasický JS.
Tady by mělo byt řešení, ale toto je už mimo mé dosavadní znalosti.
Pomuže někdo?
https://discourse.nodered.org/t/how-to- ... es/62202/4
Děkuji.

skybor - děkují moc, ještě neznam, určitě vyzkoušim.
Koupil jsem si toto rele
https://aliexpress.com/item/1005006312144193.html
Snažim udělat podobný dashboard, jako je v Zigbee2MQTT.
https://ibb.co/RkKJ1cMr
A muj vytvor.
https://ibb.co/rNf6wVW
Vztup mam plně funkční. Rele mužu přepinat čimkoliv a check tlačitka v node se podle toho překlapěji.
Ted řešik ten nefunkční vystup
skybor
Příspěvky: 1175
Registrován: pon dub 24, 2023 8:47 am
Reputace: 132
Lokalita: Lašská brána Beskyd
Systémové napětí: 48V
Výkon panelů [Wp]: 6kWp
Kapacita baterie [kWh]: 18kWh

Re: NodeRed programování

Nový příspěvek od skybor »

Pokud se ti check tlačítka překlápěji, tak už to jen napoj na ty vstupy rele.
CheckBoxRele1.jpg
CheckBoxRele2.jpg

Kód: Vybrat vše

[
    {
        "id": "c2966228d27863a5",
        "type": "ui_list",
        "z": "c68cce97b5f96270",
        "group": "7e4c65d6.0419cc",
        "name": "Checkboxes",
        "order": 1,
        "width": 4,
        "height": 4,
        "lineType": "one",
        "actionType": "check",
        "allowHTML": false,
        "outputs": 1,
        "topic": "",
        "x": 310,
        "y": 260,
        "wires": [
            [
                "398c9cbcac0aebaf",
                "81fc48e0585f0d1e"
            ]
        ]
    },
    {
        "id": "b4a3240a33dcf4b6",
        "type": "inject",
        "z": "c68cce97b5f96270",
        "name": "Bars",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "[{\"title\":\"bar1\"},{\"title\":\"bar2\"},{\"title\":\"bar3\"},{\"title\":\"bar4\"}]",
        "payloadType": "json",
        "x": 110,
        "y": 260,
        "wires": [
            [
                "c2966228d27863a5"
            ]
        ]
    },
    {
        "id": "398c9cbcac0aebaf",
        "type": "debug",
        "z": "c68cce97b5f96270",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 510,
        "y": 260,
        "wires": []
    },
    {
        "id": "81fc48e0585f0d1e",
        "type": "switch",
        "z": "c68cce97b5f96270",
        "name": "",
        "property": "payload.title",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "bar1",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "bar2",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "bar3",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "bar4",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 4,
        "x": 510,
        "y": 380,
        "wires": [
            [
                "ed03eb2f2ee31f08"
            ],
            [
                "faf668c371c28f98"
            ],
            [
                "8d9e6f903935596f"
            ],
            [
                "328d64c59f7eec1c"
            ]
        ]
    },
    {
        "id": "e1ab77410ba28080",
        "type": "ui_led",
        "z": "c68cce97b5f96270",
        "order": 2,
        "group": "7e4c65d6.0419cc",
        "width": 8,
        "height": 1,
        "label": "rele1",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "#c0c0c0",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "#ffff00",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "shape": "circle",
        "showGlow": true,
        "name": "rele1",
        "x": 970,
        "y": 320,
        "wires": []
    },
    {
        "id": "f76a38eee81bdbea",
        "type": "ui_led",
        "z": "c68cce97b5f96270",
        "order": 3,
        "group": "7e4c65d6.0419cc",
        "width": 8,
        "height": 1,
        "label": "rele2",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "#c0c0c0",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "#ffff00",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "shape": "circle",
        "showGlow": true,
        "name": "rele2",
        "x": 970,
        "y": 360,
        "wires": []
    },
    {
        "id": "b8471c878ac45353",
        "type": "ui_led",
        "z": "c68cce97b5f96270",
        "order": 4,
        "group": "7e4c65d6.0419cc",
        "width": 8,
        "height": 1,
        "label": "rele3",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "#c0c0c0",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "#ffff00",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "shape": "circle",
        "showGlow": true,
        "name": "rele3",
        "x": 970,
        "y": 400,
        "wires": []
    },
    {
        "id": "94698f6c3b7fad08",
        "type": "ui_led",
        "z": "c68cce97b5f96270",
        "order": 5,
        "group": "7e4c65d6.0419cc",
        "width": 8,
        "height": 1,
        "label": "rele4",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "#c0c0c0",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "#ffff00",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "shape": "circle",
        "showGlow": true,
        "name": "rele4",
        "x": 970,
        "y": 440,
        "wires": []
    },
    {
        "id": "ed03eb2f2ee31f08",
        "type": "function",
        "z": "c68cce97b5f96270",
        "name": "isChecked",
        "func": "msg.payload = msg.payload.isChecked;\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 810,
        "y": 320,
        "wires": [
            [
                "e1ab77410ba28080"
            ]
        ]
    },
    {
        "id": "faf668c371c28f98",
        "type": "function",
        "z": "c68cce97b5f96270",
        "name": "isChecked",
        "func": "msg.payload = msg.payload.isChecked;\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 810,
        "y": 360,
        "wires": [
            [
                "f76a38eee81bdbea"
            ]
        ]
    },
    {
        "id": "8d9e6f903935596f",
        "type": "function",
        "z": "c68cce97b5f96270",
        "name": "isChecked",
        "func": "msg.payload = msg.payload.isChecked;\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 810,
        "y": 400,
        "wires": [
            [
                "b8471c878ac45353"
            ]
        ]
    },
    {
        "id": "328d64c59f7eec1c",
        "type": "function",
        "z": "c68cce97b5f96270",
        "name": "isChecked",
        "func": "msg.payload = msg.payload.isChecked;\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 810,
        "y": 440,
        "wires": [
            [
                "94698f6c3b7fad08"
            ]
        ]
    },
    {
        "id": "7e4c65d6.0419cc",
        "type": "ui_group",
        "name": "Checkboxes",
        "tab": "2f52ec48.3a82cc",
        "order": 1,
        "disp": true,
        "width": "12",
        "collapse": false,
        "className": ""
    },
    {
        "id": "2f52ec48.3a82cc",
        "type": "ui_tab",
        "name": "List",
        "icon": "dashboard"
    }
]
SkyFVE 6 kWp (ve výstavbě) na výzkumné "chytré" chatě. 4x MPPT Epever XTRA4415N 4x40A, 1x AC Charger WATE 42V/10A, Li-Ion 3x 12s 156Ah (18 kWh/44V), SkyPowerBox LF 4810 1kVA, Victron Atlas 48/1600, APC SmartUPS 5kVA + PLC Siemens Logo! + Dell Optiplex 3040 Micro (Proxmox: HA, Node-RED, InfluxDB, Grafana, Mqtt, Zigbee2Mqtt, Samba, Tailscale)
Leo
Příspěvky: 81
Registrován: stř dub 17, 2013 1:21 pm
Reputace: 1

Re: NodeRed programování

Nový příspěvek od Leo »

Kdyby to neměli dojebane, tak by mělo stačit toto, ne?

Kód: Vybrat vše

<div>
    <input type="checkbox" id="bar1" value="bar1" onclick="sendState('bar1', this.checked)">Bar 1</input><br>
    <input type="checkbox" id="bar2" value="bar2" onclick="sendState('bar2', this.checked)">Bar 2</input><br>
</div>

<script>
    function sendState(name, state) {
    var msg = { payload: name + ' ' + (state ? 'on' : 'off') };
    send(msg);
}
</script>
Antrac1t
Příspěvky: 410
Registrován: ned čer 26, 2022 3:33 pm
Reputace: 73
Lokalita: Znojemsko
Systémové napětí: 48V
Výkon panelů [Wp]: 5500
Kapacita baterie [kWh]: 11
Chci prodávat energii: NE
Chci/Mám dotaci: NE

Re: NodeRed programování

Nový příspěvek od Antrac1t »

pouzij to co postnul skybor - multicheckbox, nedelej zbytecne template, kor kdyz resis pouze ON/OFF. Druha alternativa je multistate switch
string1 - 5.5kwp 3S4P - 460wp | 3x Multiplus ii 3000VA 1F systém | Lifepo4 230AH 48V + Seplos BMS
skybor
Příspěvky: 1175
Registrován: pon dub 24, 2023 8:47 am
Reputace: 132
Lokalita: Lašská brána Beskyd
Systémové napětí: 48V
Výkon panelů [Wp]: 6kWp
Kapacita baterie [kWh]: 18kWh

Re: NodeRed programování

Nový příspěvek od skybor »

Podle mne Tamplates zbytečně znepřehledňují Flows. Já se jim snažím vyhnout kdekoli to jde.

A když se dívám na ten tvůj původní "vzor", tak tam ani nejsou checkboxy ale switche. Takže by snad šly požít i v NR obyč switche.

4xSwitch_a.jpg
4xSwitch_a.jpg (41.66 KiB) Zobrazeno 74 x
4xSwitch_b.jpg

Kód: Vybrat vše

[
    {
        "id": "927434028e9989cd",
        "type": "ui_led",
        "z": "c68cce97b5f96270",
        "order": 6,
        "group": "7e4c65d6.0419cc",
        "width": 4,
        "height": 1,
        "label": "State L1 (L1)",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "#c0c0c0",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "#ffff00",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "shape": "circle",
        "showGlow": true,
        "name": "led1",
        "x": 510,
        "y": 560,
        "wires": []
    },
    {
        "id": "c0cb85aa486e6ca8",
        "type": "ui_switch",
        "z": "c68cce97b5f96270",
        "name": "switch1",
        "label": "",
        "tooltip": "",
        "group": "7e4c65d6.0419cc",
        "order": 8,
        "width": 2,
        "height": 1,
        "passthru": true,
        "decouple": "false",
        "topic": "topic",
        "topicType": "msg",
        "style": "",
        "onvalue": "true",
        "onvalueType": "bool",
        "onicon": "",
        "oncolor": "",
        "offvalue": "false",
        "offvalueType": "bool",
        "officon": "",
        "offcolor": "",
        "animate": false,
        "className": "",
        "x": 320,
        "y": 560,
        "wires": [
            [
                "927434028e9989cd",
                "102de06c02f7681e"
            ]
        ]
    },
    {
        "id": "8391c46463083ee9",
        "type": "debug",
        "z": "c68cce97b5f96270",
        "name": "rele1",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 730,
        "y": 600,
        "wires": []
    },
    {
        "id": "102de06c02f7681e",
        "type": "function",
        "z": "c68cce97b5f96270",
        "name": "sendState rele1",
        "func": "msg.topic = \"bar1\";\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 540,
        "y": 600,
        "wires": [
            [
                "8391c46463083ee9"
            ]
        ]
    },
    {
        "id": "b13878e1c4a7bf42",
        "type": "ui_led",
        "z": "c68cce97b5f96270",
        "order": 9,
        "group": "7e4c65d6.0419cc",
        "width": 4,
        "height": 1,
        "label": "State L2 (L2)",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "#c0c0c0",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "#ffff00",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "shape": "circle",
        "showGlow": true,
        "name": "led2",
        "x": 510,
        "y": 640,
        "wires": []
    },
    {
        "id": "0c6334d58f21b615",
        "type": "ui_switch",
        "z": "c68cce97b5f96270",
        "name": "switch2",
        "label": "",
        "tooltip": "",
        "group": "7e4c65d6.0419cc",
        "order": 11,
        "width": 2,
        "height": 1,
        "passthru": true,
        "decouple": "false",
        "topic": "topic",
        "topicType": "msg",
        "style": "",
        "onvalue": "true",
        "onvalueType": "bool",
        "onicon": "",
        "oncolor": "",
        "offvalue": "false",
        "offvalueType": "bool",
        "officon": "",
        "offcolor": "",
        "animate": false,
        "className": "",
        "x": 320,
        "y": 640,
        "wires": [
            [
                "b13878e1c4a7bf42",
                "03340dd44e656d2e"
            ]
        ]
    },
    {
        "id": "f01d2f690b9bc9c5",
        "type": "debug",
        "z": "c68cce97b5f96270",
        "name": "rele2",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 730,
        "y": 680,
        "wires": []
    },
    {
        "id": "03340dd44e656d2e",
        "type": "function",
        "z": "c68cce97b5f96270",
        "name": "sendState rele2",
        "func": "msg.topic = \"bar2\";\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 540,
        "y": 680,
        "wires": [
            [
                "f01d2f690b9bc9c5"
            ]
        ]
    },
    {
        "id": "66e9ac1894be70c3",
        "type": "ui_led",
        "z": "c68cce97b5f96270",
        "order": 12,
        "group": "7e4c65d6.0419cc",
        "width": 4,
        "height": 1,
        "label": "State L3 (L3)",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "#c0c0c0",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "#ffff00",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "shape": "circle",
        "showGlow": true,
        "name": "led3",
        "x": 510,
        "y": 720,
        "wires": []
    },
    {
        "id": "ab2b46d38dcc11b7",
        "type": "ui_switch",
        "z": "c68cce97b5f96270",
        "name": "switch3",
        "label": "",
        "tooltip": "",
        "group": "7e4c65d6.0419cc",
        "order": 14,
        "width": 2,
        "height": 1,
        "passthru": true,
        "decouple": "false",
        "topic": "topic",
        "topicType": "msg",
        "style": "",
        "onvalue": "true",
        "onvalueType": "bool",
        "onicon": "",
        "oncolor": "",
        "offvalue": "false",
        "offvalueType": "bool",
        "officon": "",
        "offcolor": "",
        "animate": false,
        "className": "",
        "x": 320,
        "y": 720,
        "wires": [
            [
                "66e9ac1894be70c3",
                "feeb578b095a1e40"
            ]
        ]
    },
    {
        "id": "68a4c9f1eb8e8f50",
        "type": "debug",
        "z": "c68cce97b5f96270",
        "name": "rele3",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 730,
        "y": 760,
        "wires": []
    },
    {
        "id": "feeb578b095a1e40",
        "type": "function",
        "z": "c68cce97b5f96270",
        "name": "sendState rele3",
        "func": "msg.topic = \"bar3\";\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 540,
        "y": 760,
        "wires": [
            [
                "68a4c9f1eb8e8f50"
            ]
        ]
    },
    {
        "id": "a2769da617338d34",
        "type": "ui_led",
        "z": "c68cce97b5f96270",
        "order": 15,
        "group": "7e4c65d6.0419cc",
        "width": 4,
        "height": 1,
        "label": "State L4 (L4)",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "#c0c0c0",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "#ffff00",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "shape": "circle",
        "showGlow": true,
        "name": "led4",
        "x": 510,
        "y": 800,
        "wires": []
    },
    {
        "id": "dbbe0ec9bbeb425c",
        "type": "ui_switch",
        "z": "c68cce97b5f96270",
        "name": "switch4",
        "label": "",
        "tooltip": "",
        "group": "7e4c65d6.0419cc",
        "order": 17,
        "width": 2,
        "height": 1,
        "passthru": true,
        "decouple": "false",
        "topic": "topic",
        "topicType": "msg",
        "style": "",
        "onvalue": "true",
        "onvalueType": "bool",
        "onicon": "",
        "oncolor": "",
        "offvalue": "false",
        "offvalueType": "bool",
        "officon": "",
        "offcolor": "",
        "animate": false,
        "className": "",
        "x": 320,
        "y": 800,
        "wires": [
            [
                "a2769da617338d34",
                "ef4feff4790fda32"
            ]
        ]
    },
    {
        "id": "4ab66410a7516f18",
        "type": "debug",
        "z": "c68cce97b5f96270",
        "name": "rele4",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 730,
        "y": 840,
        "wires": []
    },
    {
        "id": "ef4feff4790fda32",
        "type": "function",
        "z": "c68cce97b5f96270",
        "name": "sendState rele4",
        "func": "msg.topic = \"bar4\";\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 540,
        "y": 840,
        "wires": [
            [
                "4ab66410a7516f18"
            ]
        ]
    },
    {
        "id": "7e4c65d6.0419cc",
        "type": "ui_group",
        "name": "Checkboxes",
        "tab": "2f52ec48.3a82cc",
        "order": 1,
        "disp": true,
        "width": "12",
        "collapse": false,
        "className": ""
    },
    {
        "id": "2f52ec48.3a82cc",
        "type": "ui_tab",
        "name": "List",
        "icon": "dashboard"
    }
]
SkyFVE 6 kWp (ve výstavbě) na výzkumné "chytré" chatě. 4x MPPT Epever XTRA4415N 4x40A, 1x AC Charger WATE 42V/10A, Li-Ion 3x 12s 156Ah (18 kWh/44V), SkyPowerBox LF 4810 1kVA, Victron Atlas 48/1600, APC SmartUPS 5kVA + PLC Siemens Logo! + Dell Optiplex 3040 Micro (Proxmox: HA, Node-RED, InfluxDB, Grafana, Mqtt, Zigbee2Mqtt, Samba, Tailscale)

  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek

Kdo je online

Uživatelé prohlížející si toto fórum: CC [Bot] a 2 hosti