ARENA-py notable changes. Started 2021-02-19 (version 0.1.12).
- Device sensor connections:
device=Device(host="arena.org", device="robot1")
. - More error handling for network configuration issues.
- Improved auth flow when CWD is Home.
- Check for expired local MQTT token.
- CLI option for all apps:
Scene(cli-args=True)
.
- Revert using orjson library.
- Use orjson library for faster JSON parsing.
- Attribute
jitsi-video
. - MQTT CLI pub/sub scripts:
arena-py-pub
andarena-py-sub
.
- Remove local objects when receiving
delete
message. - MQTT CLI auto-generates topic from
object_id
when undefined.
- Auth scripts:
arena-py-signout
andarena-py-permissions
. - Ability to request video token.
- Improved auto-detect signout when server changes.
- Google OAuth localhost flow restored.
- Google OAuth localhost flow removed, replaced with console flow.
- MQTT broker connection uses encrypted TLS.
- Remove default color from
Object
s.
Object
s start with a default color of(128,128,128)
.- Add first draft of ARENA-py CLI (similar to mosquitto_pub/sub)!
Usage:
python3 -m arena -s <scene> -a <pub/sub> ...
Typepython3 -m arena -h
for options.
- Do not accept None for host, realm, scene in
Scene
constructor.
- Programs will now disconnect and exit on an exception.
- Added try except block on message parsing.
WindowsSelectorEventLoopPolicy
added for Windows Python >=3.8
add_msg_callback
auto subscribes to topic.- Possibly fix
Color
bug with invalid colors.
- Remove top-level landmark type.
- Replace with new landmark attribute.
- Auto-detect headless auth from SSH terminal.
- Remove localhost tests from debug flag.
- Color bug fix (blue and green were flipped).
- Reworked env/local token storage.
- Better timing on
scene.run_forever
. - Move MQTT token check to work better on ARTS.
- Fix additional numpy and scipy version issues.
- Downgrade numpy and scipy versions.
- Bug fix with
ThickLine
.
- Add various example programs for every attribute and object.
- Add
TextInput
attribute and example.
- Queue all incoming MQTT messages for processing and remove
network_loop_interval
.
- Add
end_program_callback
, which is called whenever client disconnects.
- Remove
Color
inMaterial
deprecation. - Fix undeclared variable
password
bug.
- Async MQTT loop cancellation bug fixes.
- Event loop bug fixes.
on_msg_callback
receives all messages, including duplicates from other callbacks.- Object children now have the class variable
object_type
which is the name of the object_type for the class.
- Library calls
get_persisted_objs
on connect to cache persisted objects. - Object instances now all have
clickable
property which checks if the Object is clickable. - Improved event loop using more advanced asyncio for MQTT client loop and message processing.
- Use
scene.get_persisted_objs()
to get all persisted objects in a scene.
- Improved message parsing and Object creation whenever a message arrives.
- Callbacks and event handlers now take three arguments (
scene
,obj
/evt
,msg
).scene
is a reference to the scene.obj
/evt
is anObject
orEvent
(depending on the callback/handler).msg
is the raw JSON message if needed by user.
- Event handler bug fix.
- Bug fix with turning dictionaries into Material as.
- Bug fix with get_persisted_obj. Ensures that
persist
is True.
- Allow user defined username and passwords with env vars
ARENA_USERNAME
,ARENA_PASSWORD
. Need to specify both to bypass auth.
- scene callbacks (
on_msg
,new_obj
,delete_obj
, etc.) have anObject
instance as an argument rather than dict. get_persisted_obj
returns anObject
.
- Support for scene landmarks with the
scene.add_landmark
method.
- Bug fix with
scene.new_obj_callback
which didn't work well with code that updatedscene.users
.
- Support for user callbacks (
user_join_callback
,user_left_callback
). - Use these callbacks to handle when a user joins and leaves, respectively.
scene.users
will give now you a dictionary of users, mappingobject_id
's toCamera
objects.- Add Changelog.md to keep track of changes.
Arena
class renamed toScene
, but usingArena
is still allowed. Updated examples to reflect this.- Tiny bug fix with
update_objects
.