npm package: @p4d/rpi-config
Description: Raspberry Pi command line utility to change common configuration.
Author: Tomás Migone
Latest version: 1.9.0

# RPi-Config
Raspberry Pi command line utility to change common configuration.

RPi-Config provides a centralized and easy way of changing many system configurations on a Raspbian based RPi. It does not require superuser privileges.

RPi-Config provides the following utilities:
+ Hostname
+ Password
+ Project
+ Kronos
+ Hermes
+ Cloud
+ Totem mode

## Installation
RPi is distributed via NPM:
```
sudo npm install -g @p4d/rpi-config
```

## Hostname
Provides a way of changing the RPi hostname. Uses `raspi-config` utility which is safer than manually editing `/etc/hostname` file. Hostnames must be [valid host names](https://en.wikipedia.org/wiki/Hostname). The utility DOES NOT check if the provided hostname is valid. If it's invalid it will modify the hostname so that it complies with hostname requirements.

Requires a system reboot to take effect.

Usage:
```bash
# Set hostname to newhostname
rpi-config hostname newhostname
```

## Password
Provides a way of changing the RPi password for pi/root user. Uses a custom Python script.

Usage:
```bash
# Set password to myNewPassword
rpi-config password myNewPassword
```

## Project
Provides a way of changing the RPi Project info.
Project information is stored at `/etc/project` with the following convention:

```
<PROJECT_NAME>,<PROJECT_ID>
```

"<PROJECT_NAME>": Project name is a string. Can have spaces.
"<PROJECT_ID>": Project Id is automatically generated. Its a lower case, camel cased version of the project name. It's compatible with Kibana index name requirements.

Usage:
```bash
# Set project to 'This is an awesome project dude'
rpi-config project "This is an awesome project dude"
```

This will result in a project file `/etc/project`:
```
This is an awesome project dude,this_is_an_awesome_project_dude
```

## Kronos
Provides a way of changing the RPi Kronos id.
Kronos id is stored at `/etc/kronos` with the following convention:

```
<KRONOS_ID>
```

"<KRONOS_ID>": Kronos id for this RPi device.

Usage:
```bash
# Set kronos id to x1234
rpi-config kronos x1234
```

This will result in a kronos file `/etc/kronos`:
```
x1234
```

## Hermes
Provides a way of changing the RPi Hermes url.
Hermes id is stored at `/etc/hermes` with the following convention:

```
<HERMES_URL>
```

"<HERMES_URL>": Hermes id for this RPi device.

Usage:
```bash
# Set hermes id to x1234
rpi-config hermes http://www.google.com:8000
```

This will result in a hermes file `/etc/hermes`:
```
http://www.google.com:8000
```

## Cloud
Provides a way of changing the RPi Cloud url.
Cloud url is stored at `/etc/cloud` with the following convention:

```
<CLOUD_URL>
```

"<CLOUD_URL>": Cloud url for this RPi device.

Usage:
```bash
# Set cloud url to x1234
rpi-config cloud http://www.google.com:8000
```

This will result in a cloud file `/etc/cloud`:
```
http://www.google.com:8000
```

## Totem mode
Provides a way of setting the RPi to totem mode.
Totem mode installs the following utilities:
+ xscreensaver
+ unclutter

Usage:
```bash
# Enable totem mode
rpi-config totem install

# Disable totem mode
rpi-config totem remove
```