UNPKG

@jcoreio/iron-pi-device-client

Version:

Client library for reading and writing Iron Pi input and output states

136 lines (106 loc) 2.61 kB
# Iron Pi Device Client Client library for reading and writing Iron Pi input and output states ## Installation `npm install --save @jcoreio/iron-pi-device-client` or `yarn add @jcoreio/iron-pi-device-client` ## Usage ```js const {IronPiDeviceClient} = require('@jcoreio/iron-pi-device-client') const client = new IronPiDeviceClient() client.start() ``` #### Overriding the default socket path By default, the client connects to a UNIX socket at `/tmp/socket-iron-pi`. If you're running in a container and the socket is mapped to a different location, use the optional `unixSocketPath` parameter to specify the path to the socket: ```js const client = new IronPiDeviceClient({ unixSocketPath: '/volume/socket-iron-pi' }) ``` #### Getting detected hardware ```js client.on('devicesDetected', hardware => console.log(hardware)) ``` Output: ```json { "devices": [ { "address": 1, "ioOffset": 0, "model": { "name": "iron-pi-cm8", "version": "1.0.0", "numDigitalInputs": 8, "numDigitalOutputs": 8, "numAnalogInputs": 4, "hasConnectButton": true } }, { "address": 2, "ioOffset": 8, "model": { "name": "iron-pi-io16", "version": "1.0.0", "numDigitalInputs": 16, "numDigitalOutputs": 16, "numAnalogInputs": 8, "hasConnectButton": false } } ], "serialNumber": "ABCDEF", "accessCode": "MNOPQRST" } ``` #### Getting device input states ```js client.on('deviceInputStates', deviceInputStates => console.log(deviceInputStates)) ``` ```json { "inputStates": [ { "address": 1, "ioOffset": 0, "digitalInputs": [true, false, false, false, false, true, true, false], "digitalInputEventCounts": [1, 0, 0, 0, 0, 2, 2, 0], "digitalOutputs": [false, false, false, false, false, false, false, false], "analogInputs": [4.98, 0, 0, 0], "connectButtonPressed": false, "connectButtonEventCount": 0 } ] } ``` #### Setting output states ```js client.setOutputs({outputs: [ { address: 1, levels: [true, true, true, true, false, false, false, false] }, ]}) ``` #### Sending LED messages ```js client.setLEDs({leds: [ { address: 1, colors: 'ggr' }, { address: 2, colors: 'ggr' }, ]}) ``` Messages are sent independently to each board. The `colors` field indicates a sequence of colors. For example, `ggr` would flash a pattern of green, green, and red. Supported colors are: - `g`: green - `r`: red - `y`: yellow ## License [Apache-2.0](LICENSE)