Virtual Object python implementation using a W3C WoT Runtime and the WoT Scripting API
Project description
VO-WoT
This repository is based on the Web of Things Python implementation WoTPy.
Introduction
This repository is a fork of the original WoTPy repository.
VO-WoT is an experimental implementation of a W3C WoT Runtime and the W3C WoT Scripting API in Python.
Inspired by the exploratory implementations located in the Eclipse thingweb GitHub page.
Features
- Supports Python 3 with versions >= 3.8
- Fully-implemented
WoT
interface. - Asynchronous I/O programming model based on coroutines.
- Multiple client and server Protocol Binding implementations.
Feature support matrix
Feature | Python 3 | Implementation based on |
---|---|---|
HTTP binding | :heavy_check_mark: | tornadoweb/tornado |
WebSockets binding | :heavy_check_mark: | tornadoweb/tornado |
CoAP binding | :heavy_check_mark: | chrysn/aiocoap |
MQTT binding | :heavy_check_mark: | Yakifo/amqtt |
Installation
pip install vo-wot
Development
To install in development mode with all the test dependencies:
pip install -U -e .[tests,docs]
Some WoTPy features (e.g. CoAP binding) are not available outside of Linux. If you have Docker available in your system, and want to easily run the tests in a Linux environment (whether you're on macOS or Windows) you can use the Docker-based test script:
$ WOTPY_TESTS_MQTT_BROKER_URL=mqtt://192.168.1.141 ./pytest-docker-all.sh
...
+ docker run --rm -it -v /var/folders/zd/02pk7r3954s_t03lktjmvbdc0000gn/T/wotpy-547bed6bacf34ddc95b41eceb46553dd:/app -e WOTPY_TESTS_MQTT_BROKER_URL=mqtt://192.168.1.141 python:3.9 /bin/bash -c 'cd /app && pip install -U .[tests] && pytest -v --disable-warnings'
...
Python 3.8 :: OK
Python 3.9 :: OK
Python 3.10 :: OK
Python 3.11 :: OK
WOTPY_TESTS_MQTT_BROKER_URL
defines the url of the MQTT broker. It will listen to port 1883
by default. If your broker is set up in a different way, you can provide the port in the url as well.
You can also test only for a specific Python version with the PYTHON_TAG
variable and the pytest-docker.sh
script like this:
$ WOTPY_TESTS_MQTT_BROKER_URL=mqtt://192.168.1.141 PYTHON_TAG=3.8 ./pytest-docker.sh
Development in VSCode with devcontainers
We have also provided a convenient devcontainer
configuration to better recreate your local development environment. VSCode should detect it if you have the Remote - Containers extension installed.
Docs
The documentation is currently hosted here.
Alternatively to build the documentation, move to the docs
folder and run:
make html
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.