lirc-client
Version:
Connect to LIRC Daemon (Infrared)
176 lines (124 loc) • 6.27 kB
Markdown
# lirc-client
[](https://badge.fury.io/js/lirc-client)
[](https://gemnasium.com/github.com/hobbyquaker/lirc-client)
[](https://travis-ci.org/hobbyquaker/lirc-client)
[](https://github.com/sindresorhus/xo)
[![License][mit-badge]][mit-url]
Node.js module to connect to a [LIRC](http://www.lirc.org/) daemon.
**BREAKING CHANGE in v2.0 - Promises instead of Callbacks**
If you prefer using callbacks or want to use Node < 6.12 you can still install the "old" v1.0:
`npm install lirc-client@1.0.0`.
## Usage
`$ npm install lirc-client`
```Javascript
const lirc = require('lirc-client')({
host: '127.0.0.1',
port: 8765
});
lirc.on('connect', () => {
lirc.send('VERSION').then(res => {
console.log('LIRC Version', res);
});
lirc.sendOnce('Remote1', 'Key1').catch(error => {
if (error) console.log(error);
});
});
lirc.on('receive', function (remote, button, repeat) {
console.log('button ' + button + ' on remote ' + remote + ' was pressed!');
});
```
you can also connect to a unix domain socket via path option:
```Javascript
const lirc = require('lirc-client')({
path: '/var/run/lirc/lircd'
});
```
## API
<a name="Lirc"></a>
## Lirc
**Kind**: global class
* [Lirc](#Lirc)
* [new module.exports.Lirc([config])](#new_Lirc_new)
* [.send()](#Lirc+send) ⇒ <code>Promise.<array.<string>></code>
* [.sendOnce(remote, button, [repeat])](#Lirc+sendOnce) ⇒ <code>Promise.<array.<string>></code>
* [.sendStart(remote, button)](#Lirc+sendStart) ⇒ <code>Promise.<array.<string>></code>
* [.sendStop(remote, button)](#Lirc+sendStop) ⇒ <code>Promise.<array.<string>></code>
* [.list([remote])](#Lirc+list) ⇒ <code>Promise.<array.<string>></code>
* [.version()](#Lirc+version) ⇒ <code>Promise.<array.<string>></code>
* [.connect()](#Lirc+connect) ⇒ <code>Promise</code>
* [.disconnect()](#Lirc+disconnect) ⇒ <code>Promise</code>
<a name="new_Lirc_new"></a>
### new module.exports.Lirc([config])
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| [config] | <code>object</code> | | Configuration object. |
| [config.autoconnect] | <code>boolean</code> | <code>true</code> | Automatically connect. |
| [config.host] | <code>string</code> | <code>"'127.0.0.1'"</code> | Host running LIRC. |
| [config.port] | <code>number</code> | <code>8765</code> | Port of running LIRC daemon. |
| [config.path] | <code>string</code> | | Path to LIRC socket. |
| [config.reconnect] | <code>boolean</code> | <code>true</code> | Automatically reconnect. |
| [config.reconnect_delay] | <code>number</code> | <code>5000</code> | Delay when reconnecting. |
<a name="Lirc+send"></a>
### lirc.send() ⇒ <code>Promise.<array.<string>></code>
Send a command.
**Kind**: instance method of [<code>Lirc</code>](#Lirc)
**Returns**: <code>Promise.<array.<string>></code> - Resulting response from LIRC daemon.
| Param | Type | Description |
| --- | --- | --- |
| ...args | <code>string</code> | Command to send, or individual parameters. |
<a name="Lirc+sendOnce"></a>
### lirc.sendOnce(remote, button, [repeat]) ⇒ <code>Promise.<array.<string>></code>
Tell LIRC to emit a button press.
**Kind**: instance method of [<code>Lirc</code>](#Lirc)
**Returns**: <code>Promise.<array.<string>></code> - Response from LIRC.
| Param | Type | Description |
| --- | --- | --- |
| remote | <code>string</code> | Remote name. |
| button | <code>string</code> | Button name. |
| [repeat] | <code>number</code> | Number of times to repeat. |
<a name="Lirc+sendStart"></a>
### lirc.sendStart(remote, button) ⇒ <code>Promise.<array.<string>></code>
Tell LIRC to start emitting button presses.
**Kind**: instance method of [<code>Lirc</code>](#Lirc)
**Returns**: <code>Promise.<array.<string>></code> - Response from LIRC.
| Param | Type | Description |
| --- | --- | --- |
| remote | <code>string</code> | Remote name. |
| button | <code>string</code> | Button name. |
<a name="Lirc+sendStop"></a>
### lirc.sendStop(remote, button) ⇒ <code>Promise.<array.<string>></code>
Tell LIRC to stop emitting a button press.
**Kind**: instance method of [<code>Lirc</code>](#Lirc)
**Returns**: <code>Promise.<array.<string>></code> - Response from LIRC.
| Param | Type | Description |
| --- | --- | --- |
| remote | <code>string</code> | Remote name. |
| button | <code>string</code> | Button name. |
<a name="Lirc+list"></a>
### lirc.list([remote]) ⇒ <code>Promise.<array.<string>></code>
If a remote is supplied, list available buttons for remote, otherwise
return list of remotes.
**Kind**: instance method of [<code>Lirc</code>](#Lirc)
**Returns**: <code>Promise.<array.<string>></code> - Response from LIRC.
| Param | Type | Description |
| --- | --- | --- |
| [remote] | <code>string</code> | Remote name. |
<a name="Lirc+version"></a>
### lirc.version() ⇒ <code>Promise.<array.<string>></code>
Get LIRC version from server.
**Kind**: instance method of [<code>Lirc</code>](#Lirc)
**Returns**: <code>Promise.<array.<string>></code> - Response from LIRC.
<a name="Lirc+connect"></a>
### lirc.connect() ⇒ <code>Promise</code>
Connect to a running LIRC daemon.
**Kind**: instance method of [<code>Lirc</code>](#Lirc)
**Returns**: <code>Promise</code> - Resolves upon connection to server.
<a name="Lirc+disconnect"></a>
### lirc.disconnect() ⇒ <code>Promise</code>
Disconnect from LIRC daemon and clean up socket.
**Kind**: instance method of [<code>Lirc</code>](#Lirc)
**Returns**: <code>Promise</code> - Resolves upon disconnect.
## License
MIT © [Sebastian Raff](https://hobbyquaker.github.io)
[mit-badge]: https://img.shields.io/badge/License-MIT-blue.svg?style=flat
[mit-url]: LICENSE