# raspi-rcswitch-api

> RESTful API for the node-rcswitch binding based on Node.js/restify.

Latest version **0.1.3** (published 2017-11-27) · MIT license · 0 weekly downloads

## Install

```sh
npm install raspi-rcswitch-api
pnpm add raspi-rcswitch-api
yarn add raspi-rcswitch-api
bun add raspi-rcswitch-api
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.3 |
| Published | 2017-11-27 |
| First published | 2017-07-10 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=4.0.0 |
| Dependencies | 6 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Chris Klinger |
| Maintainers | c-klinger |
| Keywords | rpi, raspberrypi, rcswitch, 433, rf, wireless, power, outlet, rest, restful, api, homeautomation |

## Links

- npm: https://www.npmjs.com/package/raspi-rcswitch-api
- Repository: https://github.com/c-klinger/node-raspi-rcswitch-api
- Homepage: https://github.com/c-klinger/node-raspi-rcswitch-api/
- Issues: https://github.com/c-klinger/node-raspi-rcswitch-api/issues
- npm.io page: https://npm.io/package/raspi-rcswitch-api

## Dependencies (6)

- [restify](https://npm.io/package/restify.md) ^5.0.0
- [winston](https://npm.io/package/winston.md) ^2.3.1
- [rcswitch](https://npm.io/package/rcswitch.md) ^0.3.1
- [daemonize2](https://npm.io/package/daemonize2.md) ^0.4.2
- [restify-errors](https://npm.io/package/restify-errors.md) ^4.3.0
- [bunyan-winston-adapter](https://npm.io/package/bunyan-winston-adapter.md) ^0.2.0

## Alternatives

- [launchdarkly-js-client-sdk](https://npm.io/package/launchdarkly-js-client-sdk.md) — 2.5M weekly downloads
- [@elastic/elasticsearch](https://npm.io/package/@elastic/elasticsearch.md) — 2.1M weekly downloads
- [@c8y/client](https://npm.io/package/@c8y/client.md) — 15.3K weekly downloads
- [@signaldb/maverickjs](https://npm.io/package/@signaldb/maverickjs.md) — 1.7K weekly downloads
- [@bbc/http-transport-cache](https://npm.io/package/@bbc/http-transport-cache.md) — 1.2K weekly downloads

## Recent versions

- 0.1.3 (latest) — 2017-11-27
- 0.1.2 — 2017-07-24
- 0.1.1 — 2017-07-10
- 0.1.0 — 2017-07-10

## README

node-raspi-rcswitch-api
=======================
[![npm version](https://badge.fury.io/js/raspi-rcswitch-api.svg)](https://badge.fury.io/js/raspi-rcswitch-api)

RESTful API for the [node-rcswitch](https://github.com/marvinroger/node-rcswitch) binding based on Node.js/restify.
Allows controlling of 433Mhz RC remote controlled power sockets with the raspberry-pi using HTTP Protocol.

## Requirements

* To use node-rcswitch, [WiringPi](https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/) must be installed in order to compile.
* Tthe data and power Pins of the transmitter must be connected to the Raspberry Pi.

## Installation
```bash
$ npm install raspi-rcswitch-api
```

## Configuration

* `transmitter_pin` defines the GIPO pin on which the transmitter is connected to the Raspberry Pi. Note the number of the WiringPi data Pin. (see http://wiringpi.com/pins/)
* `retries` number of times the signal is send (optional)

## Usage
### Starting
```bash
$ npm start

> node-raspi-rcswitch-api@0.1.0 start /home/pi/node-raspi-rcswitch-api
> node daemon.js start

raspi-rcswitch-api Server started. PID: 9082
raspi-rcswitch-api listening at port 3000
```

The server is running as deamon using [daemonize2](https://github.com/niegowski/node-daemonize2/) by default. As alternative you can start with
```bash
$ node server.js
```

### Stopping
```bash
$ npm stop
```

### Direct device access
http://host:port/api/v1/switch/systemCode/unitCode/state

* `systemCode` five character long binary system code identifying the rc switch system.
* `unitCode` integer number between 1 and 4 identifying the power socket number in the system.
* `state` can be either `on` or `off` for the target state of the power socket.

For example a GET call to `http://host:port/api/v1/switch/10101/2/on` will switch on the second power socket of the system `10101`.

### Mapped device access
You can specify named devices in the `device_config.json` file to gain quick access to them.

The following example provides access the power socket with the system code `01001` and the unit code `1` under the name `Living_Room_Ambient_Light`.
```json
{
  "Living_Room_Ambient_Light": {
    "systemCode": "01001",
    "unitCode": 1
  }
}
```

Now you can quickly access the power plug using http://host:port/api/v1/switch/Living_Room_Ambient_Light/state. For the `state` and the config values the same restrictions as mentioned in 'Direct device access' section apply.

## License
Copyright (c) 2017 Chris Klinger. Licensed under MIT license, see  [LICENSE](https://github.com/c-klinger/react-life-calendar/blob/master/LICENSE.md) for the full license.

## Bugs
See <https://github.com/c-klinger/node-raspi-rcswitch-api/issues>.

---
_Source: https://npm.io/package/raspi-rcswitch-api · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
