Python SDK for Zorb Engine
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Python library for integrating with the Somatic Zorb Engine

license Twitter


This library only currently supports macOS and Linux, as Windows is not currently supported by the underlying BLE package used for this library.

Supported Linux builds include all those that are compatible with the BluefruitLE package used with this library, including the Raspberry Pi operating system Raspbian.

Troubleshooting & Contributions

  • If you need help, send us an email.
  • If you'd like to ask a general question, send us an email.
  • If you found a bug, open an issue.
  • If you have a feature request, open an issue.
  • If you want to contribute, submit a pull request.


First install the Adafruit BluefruitLE library.

After installing the BluefruitLE library, installation of ZorbPy using pip is simple:

pip install zorb

Library Usage

For a quick example on how to use the ZorbPy library, please reference

To use the ZorbPy library, you must wrap the functionality of your program in a function that is passed to the function call.

Any usage of the functions provided by this library outside of the process started by will produce error behavior.

The ZorbPy library provides three main functionalities:

  • connecting to advertising Zorb devices

  • triggering presets on the Zorb device

  • directly controlling actuator intensity on the Zorb device

To connect to an advertising Zorb device:


To trigger one of the available presets:


Note that preset haptic emojis are exist for the following emojis:

🎊, 👈, 👉, 🤛, 🤜, ⏮️, ⏭️, 🙌, 👋, 😯, 😳, 😬, 😊, 😄, 🤣

To directly set the actuator values:

duration = 100
top_left = 0
top_right = 0
bottom_left = 25
bottom_right = 25

zorb.writeActuators(duration, top_left, top_right, bottom_left, bottom_right)

Below is a more comprehensive example of a simple program that connects to a Zorb device, plays a confetti pattern upon successful connection, and then updates actuator values based on some hypothetical sensor output.

import zorb

def mainloop():
    # perform initial connection to Zorb device

    # trigger confetti effect upon successful connection

    # enter infinte loop for updating Zorb device
    while True:
        top_left = hypothetical_sensor_1.val()
        top_right = hypothetical_sensor_2.val()
        bottom_left = hypothetical_sensor_3.val()
        bottom_right = hypothetical_sensor_4.val()
        zorb.writeActuators(10, top_left, top_right, bottom_left, bottom_right)

def main():

if __name__ == '__main__':

Style Guide

Contributions to this project should conform to this Python Style Guide.


ZorbPy is released under the GPL license.

Contact us for a commercial license if the GPL does not work well for your use cases.