@betaflight/api-server

0.5.0 • Public • Published

@betaflight/api-server

Betaflight in a graph

A GraphQL server for querying, and mutatating betaflight flight controllers

Try it out!

Usage

$ yarn add @betaflight/api-server graphql@14
import { createServer } from "@betaflight/api-server";

createServer().listen({ port: 9000 })

Then, you can query the graph at http://localhost:9000/graphql

Mocked mode

Mocked mode simulates a device and USB ports instead of actually connecting to them. This way, software can be developed without having to have a flight controller to hand.

import { createServer } from "@betaflight/api-server";

// Start in mocked mode
createServer({ mocked: true }).listen({ port: 9000 })

Ports

query Ports {
    ports
}

Connecting

mutation Connect($port: String!) {
    connect(port: $port, baudRate: 115200) {
        id # the connectionId
        apiVersion # the api version of the flight controller
    }
}

Listen for connection changes

subscription OnChanged($id: ID!) {
    onConnectionChanged(connection: $id)
}

Querying

query Attitude($connection: ID!) {
    connection(connectionId: $connection) {
        device {
            attitude {
                roll
                pitch
                heading
            }
        }
        bytesRead
        bytesWritten
        packetErrors
    }
}

For more usage examples, please refer to @betaflight/configurator which uses this package to communicate with flight controllers

Why?

GraphQL is a powerful langauge, and this structure would have had to be implemented in the configurator for client state anyway. Splitting the flight controller graph into it's own API means we both create a segregated architecture for the configurator and allow other people to use the API for other means.

Package Sidebar

Install

npm i @betaflight/api-server

Weekly Downloads

2

Version

0.5.0

License

MIT

Unpacked Size

226 kB

Total Files

17

Last publish

Collaborators

  • freshollie