Skip to main content

wpilib-ws-py

This library is an implementation of the WPILib simulation WebSocket, used for controlling non-frc hardware or simulation software using WPILib. The specification of this protocol is found here.

My own dive into the source code for the websocket, which has some undocumented information: https://github.com/AM2i9/wpilib-ws-py/payloads.md

Example Sever Usage:

from wpilib_ws import WPILibWsServer

server = WPILibWsServer()

# The on_message decorator will let you create handlers for message events.
# Optionally a device type can be entered to only handle messages for that
# specific device type. A list of device types and other hardware messages can
# be found here:
# https://github.com/wpilibsuite/allwpilib/blob/main/simulation/halsim_ws_core/doc/hardware_ws_api.md#hardware-messages


@server.on_message("PWM")
async def pwm_handler(message):
    payload = message.data
    print(f"Recieved PWM event: {payload}")
    # ...


@server.on_message("CANMotor")
async def can_motor_handler(message):
    payload = message.data
    print(f"Recieved CANMotor event: {payload}")
    # ...


# Optionally, a device name can be entered to `on_message()`:


@server.on_message("SimDevice", "SPARK MAX")
async def spark_max_handler(message):

    # SimDevices are arbitrary devices sent over the websocket, which can be
    # used by vendor libraries to be able to use their controllers in robot
    # simulation. For example, SPARK MAX and other REV controllers will not
    # show as CAN devices, but as SimDevices.

    payload = message.data
    print(f"Recieved update for SPARK MAX controller: {payload}")


@server.on_message("CANMotor", "Victor SPX")
async def victor_handler(message):
    payload = message.data
    print(f"Recieved update for Victor SPX controller: {payload}")


# The while_connected decorator is a loop that runs alongside the server, and
# can be used for periodic tasks, such as sending battery voltage, like below.
@server.while_connected()
async def while_connected():
    await server.send_payload(
        {"type": "RoboRIO", "device": "", "data": {">vin_voltage": 12.0}}
    )


server.run()

Metadata

Release files for wpilib-ws-py 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wpilib-ws-py 0.3.0
File Size Uploaded
wpilib-ws-py-0.3.0.tar.gz 5.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wpilib-ws-py 0.3.0
File Interpreter ABI Platform
wpilib_ws_py-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.0 kB

Release files / wpilib-ws-py-0.3.0.tar.gz

Download URL wpilib-ws-py-0.3.0.tar.gz
Size 5.8 kB
Tags Source
SHA-256 checksum
How to use checksums
1ca26adbd84945434afd3e87a70a18170e25c609761e7bf28532a1e34f7b71c9
BLAKE2b-256 checksum
How to use checksums
3515d10a5671fa9604299cfc5346d24ffa46314d7e58d11106596ff9133432ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.11 CPython/3.10.0 Linux/5.13.19-2-MANJARO

Release files / wpilib_ws_py-0.3.0-py3-none-any.whl

Download URL wpilib_ws_py-0.3.0-py3-none-any.whl
Size 7.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e36fe820b7b5a0de6be48d5edf0ea3865f0d50b1bcdd52002c99f10a75793fce
BLAKE2b-256 checksum
How to use checksums
0eab72180a9e816970388b793ccc7a0575f979f5b1cb72b2afa964ab9291b5b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.11 CPython/3.10.0 Linux/5.13.19-2-MANJARO

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page