cafehub-client
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

cafehub-client

Custom WebSocket client for CafeHub.

Connect to the backend

Let's say you have an instance of cafehub WebSocket server running on ws://192.168.0.10:8765. We can connect to it using CafeHubClient#connect(url[, options]) method. Example:

import CafeHubClient from 'cafehub-client'

const ch = new CafeHubClient()async function connect() {
    await ch.connect('ws://192.168.0.10:8765', {
        retry: 3,
    })
}

connect()

Connect to DE1

We can combine it with scanning and connecting to a DE1 machine.

import CafeHubClient from 'cafehub-client'
import {
    Device,
    isScanResultUpdate,
    RequestCommand,
    UpdateMessage,
} from 'cafehub-client/types'

const ch = new CafeHubClient()

async function autoPair() {
    console.log('Connecting to cafehub…')

    await ch.connect('ws://192.168.0.10:8765', {
        retry: 3,
    })

    console.log('Looking for DE1…')

    const msg: UpdateMessage = await client.sendRequest(
        {
            command: RequestCommand.Scan,
            params: {
                Timeout: timeout,
            },
        },
        {
            resolveIf(msg) {
                if (!isScanResultUpdate(msg)) {
                    return false
                }

                return !msg.results.MAC || msg.results.Name === 'DE1'
            },
        }
    )

    if (!isScanResultUpdate(msg) || !msg.results.MAC) {
        throw new Error('DE1 was not found.')
    }

    console.log('Connecting cafehub to DE1…')

    const msg: UpdateMessage = yield client.sendRequest({
        command: RequestCommand.GATTConnect,
        params: {
            MAC: msg.results.MAC,
        },
    })

    console.log('Done.')
}

autoPair()

At this point we're ready to send other instructions to the CafeHub instance.

tbc.

Readme

Keywords

none

Package Sidebar

Install

npm i cafehub-client

Weekly Downloads

2

Version

1.0.0

License

MIT

Unpacked Size

36.8 kB

Total Files

10

Last publish

Collaborators

  • mariusz_io