@jcoreio/iron-pi-device-client

    2.5.2 • 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

    Keywords

    Install

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

    DownloadsWeekly Downloads

    41

    Version

    2.5.2

    License

    Apache-2.0

    Unpacked Size

    399 kB

    Total Files

    8

    Last publish

    Collaborators

    • mbrigdan
    • ngutzmann
    • jrmclaurin
    • jedwards1211
    • eladendorf
    • prudhvitella
    • brayden-arthur
    • rossjbartlett
    • anton.biryukov
    • etbci
    • awinkler
    • dsorensen
    • emily-stener