Usage¶
Astoria is designed to be deployed on robots that do not have a traditional keyboard or mouse interface. This page describes the requirements for it to be deployed on such a system. Reference to packages available in Debian Buster will be made, although it is possible for Astoria to be deployed on any Linux system.
System Requirements¶
Python 3.6 + library Requirements
DBus
UDisks 2
- UDiskie (should be run as the same user as Astoria)
It is possible to use other automounting programs, as long as they are compatible with UDisks
MQTT Broker supporting MQTT 3 or later. Mosquitto is recommended
Astoria is targeted for Linux-based OSes, although it may be possible to run on other POSIX-compatible operating systems.
Configuration¶
Astoria is configured using the astoria.toml config file. All components will look for this config file and the location can be specified using the -c command line option.
# Astoria Default Config File
[mqtt]
host = "::1"
port = 1883
enable_tls = false
force_protocol_version_3_1 = true
topic_prefix = "astoria"
[wifi]
interface = "wlan0"
bridge = "br0"
enable_wpa3 = false
[astdiskd]
ignored_mounts = [
"/",
"/boot",
"/boot/efi",
]
[astprocd]
default_usercode_entrypoint = "robot.py"
[system]
cache_dir = ".cache_dir" # Use a directory in /var for production
[env]
EXAMPLE_ENV_VAR=123
Running¶
State Managers should be installed in the path once the package is installed.
For the recommended setup, you will need to run at least astdiskd, astmetad and astprocd.
The state managers should be managed using systemd in a proper deployment, although that is outside of the scope of this documentation. tmux is good for testing.
Command Line Usage¶
astctl¶
Astoria Command Line Utility.
astctl [OPTIONS] COMMAND [ARGS]...
Commands
- list-disks
List information about mounted disks.
- metadata
Interact with metadata.
- static-disk
Interact with metadata.
- usercode
Interact with Usercode.
Metadata USBs¶
Metadata USBs contain a high priority Metadata Source.
The source data should be stored in a file called astoria.json in JSON format.
There should ideally not be any other files on the Metadata USB.
Caution
If a robot.zip is placed on the Metadata USB, the robot will not recognise the Metadata USB as Astdiskd will
recognise it as a usercode disk. See Disk Identification for an explanation of this process.
Example override file:
{"arena": "A", "zone": 2, "mode": "COMP", "game_timeout": 120, "wifi_enabled": false}