xAAL Python stack

Requirements

To install xAAL for Python, you need Python3.

Un*x like

Install the following packages:

For Debian / Ubuntu users:

$ apt-get install subversion python3-dev libsodium-dev python3-setuptools gcc
# recommended
$ apt-get install python3-venv python3-pip

Install

Right now, there is no public release (pip based) of xAAL Python binding, so you have to install things from SVN or archive.

You can use virtualenv (recommended).

First build a virtualenv :

$ python3 -m venv xaal_env

Everytime, you want to use the binding, you must source the activate script.

$ source xaal_env/bin/activate

Download sources from SVN:

$ svn checkout https://redmine.telecom-bretagne.eu/svn/xaal/code/Python/trunk/ xaal_svn

First, install the xaal.lib package:

$ cd xaal_svn/libs/lib/
$ python setup.py develop

Install the monitor lib (needed by Dashboard, REST API..)

$ cd xaal_svn/libs/monitor/
$ python setup.py develop

Install the schemas (needed by some devices)

$ cd xaal_svn/libs/schemas/
$ python setup.py develop

Install the tools

$ cd xaal_svn/apps/tools
$ python setup.py develop

You can use the python setup.py install instead of develop, but modification in source files, won't be applied, you have to re-install it. Right now develop, is the best option.

Create the configuration file in your home directory:

$ mkdir ~/.xaal/
$ cp xaal_svn/libs/lib/xaal.ini.sample ~/.xaal/xaal.ini
$ xaal-keygen

xaal-keygen will compute an key for a given passphrase. Edit the xaal.ini file according to your needs.

Tests

First, you can launch a message dumper with this tools

$ xaal-dumper
$ or xaal-tail 0

To start an fake lamp:

$ cd xaal_svn/devices/test/DummyDevices/
$ python lamp.py

To check devices, you can use:

# search alive devices
$ xaal-isalive

# search lamp.basic devices
$ xaal-isalive lamp.basic

# search any kind of lamp
$ xaal-isalive lamp.any

# display description / attribute
$ xaal-info xxxxxxxxxxxxxx <- uuid

# display description / attribute for all devices
$ xaal-walker

# same but on for lamp devices
$ xaal-walker lamp.any

Windows

This code can be used w/ Windows (tested w/ Win10 and Python 3.8). You can build the virtualenv with the same way. To activate the venv, you should run Scriptsactivate.bat. For Powershell users (recommanded), you must tweak the ExecutionPolicy to be able to run Activate.ps1.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

To install libsodium. You can dowload it here: https://download.libsodium.org/libsodium/releases/ Extract the DLL from the zip file (libsodium-1.0.18-stable-msvc.ziplibsodiumx64Releasev142dynamic) in the Win32 DLL folder.

If everything is fine, you can use exactly the same commands on Un*x and Windows. The xaal-* commands are just renamed with an exe extension (ie: xaal-dumper.exe)

Issues:

Right now some gateways won't work on Windows due to missing libaries (openZwave ie)

Coding style

Every xAAL program (device, gateway, apps) use a namespace. For example, xaal.rest, or xaal.zwave. By convention, you can run everything just by calling the namespace module.

# to run the meta data sever:
$ python -m xaal.metadb

# to run the dashboard (web interface)
$ python -m xaal.dashboard

# to run the Zwave gateway
$ python -m xaal.zwave

Of course, you need to install packages first.

Notes

FAQ