@jcoreio/iron-pi-device-client

2.7.0 • Public • Published

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

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:

const client = new IronPiDeviceClient({ unixSocketPath: '/volume/socket-iron-pi' })

Getting detected hardware

client.on('devicesDetected', hardware => console.log(hardware))

Output:

{
  "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

client.on('deviceInputStates', deviceInputStates => console.log(deviceInputStates))
{
  "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

client.setOutputs({outputs: [
  {
    address: 1,
    levels: [true, true, true, true, false, false, false, false]
  },
]})

Sending LED messages

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

Readme

Keywords

Package Sidebar

Install

npm i @jcoreio/iron-pi-device-client

Weekly Downloads

16

Version

2.7.0

License

Apache-2.0

Unpacked Size

403 kB

Total Files

8

Last publish

Collaborators

  • gravitate1838
  • avramdodson
  • forrest-keller
  • jrmclaurin
  • jedwards1211
  • eladendorf