Markdown source

# NodeRED notes

<abstract>
My notes about NodeRED
</abstract>

### Show the system log on a terminal session

	sudo journalctl -f -u nodered -o cat

To generate the messages inside NodeRED:

	node.log("Something happened");
	node.warn("Something happened you should know about");
	node.error("Oh no, something bad happened");

### Variables scope

	// initialise the counter to 0 if it doesn't exist already
	var count = context.get('count')||0;
	count += 1;
	// store the value back
	context.set('count',count);
	// make it part of the outgoing msg object
	msg.count = count;

Scope types:

* __context__ Static data at node level
* __flow__ Static data at flow level
* __global__ Static data at global level

Ref: <https://nodered.org/docs/writing-functions>

### Change the node status

	node.status({fill:"red",shape:"ring",text:"disconnected"});
	node.status({fill:"green",shape:"dot",text:"connected"});
	node.status({text:"Just text status"});
	node.status({});   // to clear the status

## Installation on Rasbian Stretch Lite 2018-03-13

Type at command line prompt:

	bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)

Enable the [systemd service](/systemd) by typing:

	sudo systemctl enable nodered.service

Then start it:

	sudo systemctl start nodered.service

## Get the access to the NodeRED IDE:

* <http://raspberrypi.local:1880>

## Enabling NodeRED projects

Install __git__ by typing:

	sudo apt-get update
	sudo apt-get install git

Enable the project feature editing the file __setting.js__:

	sudo nano .node-red/settings.js

Add these lines inside the __module.exports__ session:

	module.exports = {
    
	    editorTheme: {
	       projects: {
	           enabled: true
	       }
	    },

	...

Restart NodeRED:

	sudo systemctl restart nodered.service
	
Check for any errors at NodeRED startup:

	sudo journalctl -f -u nodered -o cat

* <https://nodered.org/docs/user-guide/projects/>

## Security

Install __node-red-admin__

	sudo npm install -g node-red-admin

Create a password hash by typing:

	node-red-admin hash-pw
	
Add these lines in __.node-red/settings.js__ inside the __module.exports__ session:

	module.exports = {
		adminAuth: {
		    type: "credentials",
		    users: [{
		        username: "admin",
		        password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
		        permissions: "*"
		    }]
		},

Restart NodeRED:

	sudo systemctl restart nodered.service
	
Check for any errors at NodeRED startup:

	sudo journalctl -f -u nodered -o cat

* <https://nodered.org/docs/security>
* <https://nodered.org/docs/node-red-admin>

## Links

* Documentazione ufficiale <https://nodered.org/>
* Flows <https://flows.nodered.org>