VO-WoT
This repository is an updated version of WoTPy.
Introduction
This repository is a fork of the original WoTPy repository.
WoTPy 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 thingweb GitHub page.
Features
- Supports Python 3 with versions >= 3.7
- Fully-implemented
WoT
interface. - Multicast discovery based on mDNS.
- 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 | ✔️ | tornadoweb/tornado |
WebSockets binding | ✔️ | tornadoweb/tornado |
CoAP binding | ✔️ | chrysn/aiocoap |
MQTT binding | ✔️ | Yakifo/amqtt |
mDNS discovery | ✔️ | jstasiak/python-zeroconf |
Installation
⚠️ For the moment, this is not the current version, and it won't be until we have reached some stability in the development.
pip install wotpy
Development
To install in development mode with all the test dependencies:
pip install -U -e .[tests]
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.7 :: OK
Python 3.8 :: OK
Python 3.9 :: OK
Python 3.10 :: 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
Move to the docs
folder and run:
make html