NodeRed programování
- 
				Leo
 - Příspěvky: 88
 - Registrován: stř dub 17, 2013 1:21 pm
 - Reputace: 1
 
Re: NodeRed programování
Dotaz. Když mam nějaké data, které chci, aby se zachovaly, když restartuji raspberry.
Jak se to řeší? Dík.
			
			
									
						
										
						Jak se to řeší? Dík.
- 
				rva
 - Příspěvky: 4541
 - Registrován: úte dub 23, 2013 10:21 am
 - Reputace: 831
 - 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í
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
			
						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: 104
 - 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í
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
			
			
									
						
										
						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í
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
v jiném nodu function, kde chci s touto hodnotou pracovat pak jen na začátku kódu předám
příp. můžu s hodnotou rovnou pracovat
			
			
									
						
										
						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);
Kód: Vybrat vše
 switchPosSet = global.get('SwPosSet');
 .
 .
 .
 if (swichPosSet == 3)
 {
 ..........
 }
 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í
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:
 
tak nějak to pak vypadá ve flow:
			
			
									
						
										
						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;
 }
 - 
				Leo
 - Příspěvky: 88
 - Registrován: stř dub 17, 2013 1:21 pm
 - Reputace: 1
 
Re: NodeRed programování
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.
			
							
			
									
						
										
						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.
- 
				alextccz
 - Příspěvky: 104
 - 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í
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í
A co tak použít node "write file"?
			
			
									
						
										
						- 
				Leo
 - Příspěvky: 88
 - Registrován: stř dub 17, 2013 1:21 pm
 - Reputace: 1
 
Re: NodeRed programování
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.
			
			
									
						
										
						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: 104
 - 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í
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: 88
 - Registrován: stř dub 17, 2013 1:21 pm
 - Reputace: 1
 
Re: NodeRed programování
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.
			
			
									
						
										
						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: 88
 - Registrován: stř dub 17, 2013 1:21 pm
 - Reputace: 1
 
Re: NodeRed programování
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>
			
			
									
						
										
						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: 539
 - Registrován: ned čer 26, 2022 3:33 pm
 - Reputace: 98
 - Lokalita: Znojemsko
 - Systémové napětí: 48V
 - Výkon panelů [Wp]: 5500
 - Kapacita baterie [kWh]: 26
 - Chci prodávat energii: NE
 - Chci/Mám dotaci: NE
 
Re: NodeRed programování
vloz sem aktualni flow co mas
			
			
									
						
							string1 - 5.5kwp 3S4P - 460wp | 3x Multiplus ii 3000VA  1F systém | Lifepo4 230AH 48V + Seplos BMS, Lifepo4 310AH 48V + Seplos BMS
			
						- 
				skybor
 - Příspěvky: 1435
 - Registrován: pon dub 24, 2023 8:47 am
 - Reputace: 197
 - Lokalita: Lašská brána Beskyd
 - Systémové napětí: 48V
 - Výkon panelů [Wp]: 8kWp
 - Kapacita baterie [kWh]: 20kWh
 
Re: NodeRed programování
Co takhle použít node-red-node-ui-list ?
			
			
									
						
							SkyFVE 8 kWp na výzkumné "chytré" chatě.  4x MPPT Epever XTRA4415N 4x40A, 3x LG Chem Li-Ion 12s 156Ah (cca 20 kWh/44V), SkyPowerBox LF 4810 1kVA, Victron MP 48/3000, REVO VM II 5.5kW + PLC Siemens Logo! + Dell Optiplex 3040 Micro (Proxmox: HA, Node-RED, InfluxDB, Grafana, Mqtt, Zigbee2Mqtt, Samba, Tailscale)
			
						- 
				skybor
 - Příspěvky: 1435
 - Registrován: pon dub 24, 2023 8:47 am
 - Reputace: 197
 - Lokalita: Lašská brána Beskyd
 - Systémové napětí: 48V
 - Výkon panelů [Wp]: 8kWp
 - Kapacita baterie [kWh]: 20kWh
 
Re: NodeRed programování
https://flows.nodered.org/node/node-red-node-ui-list
			
			
									
						
							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 8 kWp na výzkumné "chytré" chatě.  4x MPPT Epever XTRA4415N 4x40A, 3x LG Chem Li-Ion 12s 156Ah (cca 20 kWh/44V), SkyPowerBox LF 4810 1kVA, Victron MP 48/3000, REVO VM II 5.5kW + PLC Siemens Logo! + Dell Optiplex 3040 Micro (Proxmox: HA, Node-RED, InfluxDB, Grafana, Mqtt, Zigbee2Mqtt, Samba, Tailscale)
			
						- 
				Leo
 - Příspěvky: 88
 - Registrován: stř dub 17, 2013 1:21 pm
 - Reputace: 1
 
Re: NodeRed programování
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
			
			
									
						
										
						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: 1435
 - Registrován: pon dub 24, 2023 8:47 am
 - Reputace: 197
 - Lokalita: Lašská brána Beskyd
 - Systémové napětí: 48V
 - Výkon panelů [Wp]: 8kWp
 - Kapacita baterie [kWh]: 20kWh
 
Re: NodeRed programování
Pokud se ti check tlačítka překlápěji, tak už to jen napoj na ty vstupy rele.
			
			
									
						
							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 8 kWp na výzkumné "chytré" chatě.  4x MPPT Epever XTRA4415N 4x40A, 3x LG Chem Li-Ion 12s 156Ah (cca 20 kWh/44V), SkyPowerBox LF 4810 1kVA, Victron MP 48/3000, REVO VM II 5.5kW + PLC Siemens Logo! + Dell Optiplex 3040 Micro (Proxmox: HA, Node-RED, InfluxDB, Grafana, Mqtt, Zigbee2Mqtt, Samba, Tailscale)
			
						- 
				Leo
 - Příspěvky: 88
 - Registrován: stř dub 17, 2013 1:21 pm
 - Reputace: 1
 
Re: NodeRed programování
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: 539
 - Registrován: ned čer 26, 2022 3:33 pm
 - Reputace: 98
 - Lokalita: Znojemsko
 - Systémové napětí: 48V
 - Výkon panelů [Wp]: 5500
 - Kapacita baterie [kWh]: 26
 - Chci prodávat energii: NE
 - Chci/Mám dotaci: NE
 
Re: NodeRed programování
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, Lifepo4 310AH 48V + Seplos BMS
			
						- 
				skybor
 - Příspěvky: 1435
 - Registrován: pon dub 24, 2023 8:47 am
 - Reputace: 197
 - Lokalita: Lašská brána Beskyd
 - Systémové napětí: 48V
 - Výkon panelů [Wp]: 8kWp
 - Kapacita baterie [kWh]: 20kWh
 
Re: NodeRed programování
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.
			
			
									
						
							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.
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 8 kWp na výzkumné "chytré" chatě.  4x MPPT Epever XTRA4415N 4x40A, 3x LG Chem Li-Ion 12s 156Ah (cca 20 kWh/44V), SkyPowerBox LF 4810 1kVA, Victron MP 48/3000, REVO VM II 5.5kW + PLC Siemens Logo! + Dell Optiplex 3040 Micro (Proxmox: HA, Node-RED, InfluxDB, Grafana, Mqtt, Zigbee2Mqtt, Samba, Tailscale)
			
						Kdo je online
Uživatelé prohlížející si toto fórum: Claudebot [Bot] a 0 hostů