arenaxr / arena-py

Python library for accessing the ARENA.
https://docs.arenaxr.org/content/python
BSD 3-Clause "New" or "Revised" License
5 stars 9 forks source link

arena-py

Draw objects and run programs in the ARENA using Python!

Documentation

The ARENA Python library user guide and tutorials: ARENA Documentation: Python.

Setup

Install package using pip (https://pypi.org/project/arena-py/):

pip3 install arena-py

Hello ARENA Example Program

Run the hello.py example:

cd examples
python hello.py

hello.py

from arena import *

scene = Scene(host="arenaxr.org", scene="example")

@scene.run_once
def make_box():
    scene.add_object(Box())

scene.run_tasks()

arena-py Library

The above is the simplest example of an ARENA Python program. This library sits above the ARENA pub/sub MQTT message protocol: JSON messages described in more detail at https://github.com/arenaxr/ARENA-core which runs in a browser. That forms a layer, in turn, on top of A-Frame and THREE.js javascript libraries.

Authentication

We have added protection to the ARENA MQTT broker to limit access to change your scenes, which requires Python programs to supply authentication through a Google account.

Sign-In Desktop OS

If you have a web browser available, the arena-py library Scene(host="myhost.com") will launch a web browser the first time and ask you for an account to authenticate you with, before opening a client MQTT connection.

Sign-In Server/Headless OS

For headless environments, the arena-py library Scene(host="myhost.com") will provide you with a url to cut and paste in a browser anywhere, ask you for an account to authenticate you with, and show you a code you can enter on the command line, before opening a client MQTT connection.

Scripts

Some helper script aliases have been added in this library to help you manage authentication and quick command-line (CLI) publish and subscribe to the ARENA.

Sign-Out

arena-py-signout

Show Permissions

arena-py-permissions

CLI Subscribe to Scene Messages

arena-py-sub -mh arenaxr.org -s example

CLI Subscribe to Custom Topic

arena-py-sub -mh arenaxr.org -t realm/g/a

CLI Publish a Scene Object Message

arena-py-pub -mh arenaxr.org -s example -m '{"object_id": "gltf-model_Earth", "action": "create", "type": "object", "data": {"object_type": "gltf-model", "position": {"x":0, "y": 0.1, "z": 0}, "url": "store/models/Earth.glb", "scale": {"x": 5, "y": 5, "z": 5}}}'

CLI Help

arena-py-pub --help
arena-py-sub --help

Changelog

Changelog can be found here.

arena-py Repository Files