5

Click here to load reader

Raspberry Pi: Setup Node.js

Embed Size (px)

DESCRIPTION

In this work sheet I will introduce you to some advantages of node.js. There will be also an instruction how to install node.js on your Raspberry Pi, and some information about command sudo and different editors. You can also find an instruction how to install libraries. Overview: What node.js can be used forWhat is sudo?Install Node.jsStandard-Editor nanoOnline-Editor PiJSInstall Librariesquick2wire-gpio-adminTrouble ShootingUseful Resources

Citation preview

Page 1: Raspberry Pi: Setup Node.js

handson.dmt.fh-joanneum.at

© Carelse, Pauger, Pilz 1

RASPBERRY PI

Workpackage: Setup Node.js on the Raspberry Pi

Description: In this work sheet I will introduce you to some advantages of node.js.

There will be also an instruction how to install node.js on your Raspberry Pi.

Difficulty (1-10): 4

Overview: What node.js can be used for

What is sudo?

Install Node.js

Standard-Editor nano

Online-Editor PiJS

Install Libraries

quick2wire-gpio-admin

Trouble Shooting

Useful Resources

Requirements: Hardware: Raspberry Pi and Standard Equipment

Software: can be installed with commands if you have internet access

Page 2: Raspberry Pi: Setup Node.js

Instructions handson.dmt.fh-joanneum.at

© Carelse, Pauger, Pilz 2

SETUP NODE.JS ON THE RASPBERRY PI If you want to develop on the Raspberry Pi, you can choose between several languages. In this workpackage I am going to describe how to install node.js on your Raspberry Pi and how to add other packages as extension to it.

What node.js can be used for Node.js is primary a framework for developing server-side web applications. But you can also use it to write some code which is accessing the GPIO pins of your Raspberry Pi or other applications which are not necessary server-side web applications. In the following worksheets we will use node.js simply to access and regulate connected elements which are connected to the Raspberry Pi.

But the main advantages of node.js are when you use it for modern web-applications.

Node.js follows a different approach then other web applications. Instead of using an own thread for every request, all requests are processed in one single thread. To prevent the thread from blocking, the work has to be delegated to other resources. Most web applications are dependent of external resources like file system or databases. Requests to this external resources are mostly time-consuming. The concept of node.js benefits from that, because node.js puts a request aside until there is a reply from the external resource that their work is done. In the meantime node.js can do the same with all other requests and the thread is never blocked by waiting for a reply of external resources.

Another example for using node.js is streaming.

What is sudo? If you want to install something or change some settings which need sudo (admin) rights you might need the sudo command to do that.

sudo allows a permitted user to execute a command as the superuser (admin).

If you log in with default user pi this user has sudo rights. Anyway you have to write sudo in front of some commands, but you do not need to enter your password. When using another user, which might not have sudo-rights you will need the password of a superuser.

If you have problems when executing a command, try to write sudo in front of it. If there are problems when executing your code you can try to use quick2wire-gpio-admin as explained at the bottom of chapter “Instructions”.

Page 3: Raspberry Pi: Setup Node.js

Instructions handson.dmt.fh-joanneum.at

© Carelse, Pauger, Pilz 3

Instructions Installation You should always update your installed packages before you are installing something new. To do that open your command line and type in: (sudo) apt-get update

downloads the package lists from the repositories and "updates" them to get information on the newest versions of packages and their dependencies (sudo) apt-get upgrade

will fetch new versions of packages existing on the machine if APT knows about these new versions by way of apt-get update

After that you can start installing node js. The latest version can always be found on http://nodejs.org/dist/. There always exists a special version for the Raspberry Pi. But it’s not always available for the latest version. Navigate through the latest versions and search for something like node-v****-linux-arm-pi.at.gz.

Then follow the following steps:

- create a new directory (sudo) mkdir /opt/node

- download package (as version-number use the latest one) (sudo) wget nodejs.org/dist/v0.10.21/node-v0.10.21-linux-arm-pi.tar.gz

- unpack package (sudo) tar -xvzf node-v0.10.21-linux-arm-pi.tar.grz

- copy unpacked folder to /opt/node (sudo) cp -r node-v0.10.2-linux-arm-pi/* /opt/node

- Add node.js to path variable o (sudo) nano /etc/profile o add following lines to the configuration file before the 'export' command

... NODE_JS_HOME="/opt/node" PATH="$PATH:$NODE_JS_HOME/bin" export PATH ...

- logout and login again so that changed path variable will work logout

After that node should be globally installed on your Raspberry Pi and should be available from everywhere in your file system.

Start Programming – Editors for node.js Standard-Editor nano To start programming you only have to create a file with the ending *.js: (sudo) nano filename.js

Open this file and write your code. There are additional functions available, you can list them by using CTRL+G. To return to your code use CTRL+X, which also closes the editor when you are on main screen of nano.

After you have written your code and closed the editor you can run your file by typing in: (sudo) node filename.js

Online-Editor If you do not want to install node.js on your Raspberry Pi you can use PiJS. You can write your javascript-code in any browser on your Raspberry Pi. It deploys automatically to your Raspberry Pi and restarts also automatically if you reboot your device. There is also a web-console where you can watch what’s going on in your program. But if you want to use libraries it is easier to develop directly on the Raspberry Pi.

Page 4: Raspberry Pi: Setup Node.js

Instructions handson.dmt.fh-joanneum.at

© Carelse, Pauger, Pilz 4

You can find more information of how to use that editor on http://www.tbideas.com/blog/2013/04/NodeJS-Raspberry-Pi-The-easy-way/

Desktop-Editor To save performance it is better to use one of the other editors listed above.

Test if installation of Node.js was successful - create a file with filename.js

- insert this line in the file: console.log(“Hello World!”);

- save the file

- run the file (sudo) node filename.js

- if the output is “Hello World!” node.js was successfully installed

You can also type in your command line node --version. This will return you the version of your installed node.js and if it returns that, it is also sure that node.js was installed.

Install Libraries You should always work in the same directory when you program with node.js. In this directory you should install all libraries you would need and then you can access them there.

Every time you need to “require” something in your code, you have to install it first.

Example: var Gpio = require('onoff').Gpio; Here you require the package onoff. To make it available on your Raspberry Pi, you have to install it first. To do that, go to your working directory and type in the following command: [sudo] npm install onoff This command will install the library onoff in the folder node_modules in your directory. From now on you can require it from every file in your working directory.

If you want to install another library you can simply replace the “onoff” with the name of the library you want to install.

quick2wire-gpio-admin If you have problems running your application with sudo-rights you can use “quick2wire-gpio-admin”.

If you have not installed Git on your pi before user the following command to do so. sudo apt-get install git-core

Then install the quick2wire package with the following command. git clone git://github.com/quick2wire/quick2wire-python-api.git

After that navigate into the folder quick2wire-python-api and type in make

sudo make install

If you use user pi you do not have to do the following step which adds your user ($USER) to the gpio group. sudo adduser $USER gpio

This enables you to export and unexport special pins so that you do not need sudo rights any more to access the pins.

To use a pin in your code run the command with the pin-number (here 22) before running your code. gpio-admin export 22

If you are done unexport all pins again. gpio-admin unexport 22

Page 5: Raspberry Pi: Setup Node.js

Trouble Shooting handson.dmt.fh-joanneum.at

© Carelse, Pauger, Pilz 5

Trouble Shooting If you have problems with the installing commands, first check if you have internet connection.

Be always sure that you install a package in the same folder as you want to develop. Otherwise the require statement cannot find the package and you can’t use it.

Useful Resources Node.js Download:

http://nodejs.org/dist/

Node Packaged Modules/Libraries: https://npmjs.org/

Tutorial: http://www.nodebeginner.org/

Editors: http://www.tbideas.com/blog/2013/04/NodeJS-Raspberry-Pi-The-easy-way/ http://www.raspberrypi-spy.co.uk/2013/11/quick-guide-to-nano-text-editor-on-the-raspberry-pi/ http://pijs.io/