Pedal Pi - WebService is a Pedal Pi component that offers a Pedal Pi management over REST + WebSocket.
WebService also supports auto discover: by publishing to the network using zeroconf, it offers a certain level of location transparency, allowing applications to connect to the WebService with minimal user effort.
- Documentation:
- http://pedalpi.github.io/WebService/
- Code:
- https://github.com/PedalPi/WebService
- Python Package Index:
- https://pypi.org/project/PedalPi-WebService
- License:
- Apache License 2.0
Most dependencies will be installed through pip
pip install PedalPi-WebService
WebService, for its publication in the network for auto discover, needs the installation of pybonjour-python3. On debian/ubuntu-based systems, run:
sudo apt-get install libavahi-compat-libdnssd1
pip3 install git+https://github.com/depl0y/pybonjour-python3
PedalPi components enable the extension of Pedal Pi - Application. Through them, opening services are offered. A list of components can be found in the Components repository.
To use this component, two steps are required:
The registration must occur before application initialization (application.start
)
from application.application import Application
application = Application(path_data="data/", address='localhost')
from webservice.webservice import WebService
application.register(WebService(application, port))
The Application documentation suggests using signal.pause so that the program does not terminate at the end of initialization: signal.pause causes the program to be terminated only when it is requested (Ctrl + C).
When we use PedalPi-WebService, we must replace the use of signal.pause by initializing the web server. This is done using the following lines of code:
application.start()
import tornado
try:
tornado.ioloop.IOLoop.current().start()
except KeyboardInterrupt:
application.stop()
# Not more necessary
#from signal import pause
#try:
# pause()
#except KeyboardInterrupt:
# application.stop()
The code for starting the Application using the WebService component look like the following code:
from application.application import Application
application = Application(path_data="data/", address='localhost')
from webservice.webservice import WebService
application.register(WebService(application, port))
application.start()
import tornado
tornado.ioloop.IOLoop.current().start()
API documentation can be found at http://pedalpi.github.io/WebService/
Communication via WebService basically consists of receiving updates about the state of the application.
WebService API documentation can be found at http://pedalpi.github.io/WebService/#websocket
WebService disposes the Application features in a web service. These projects uses it for control:
- Apk: App controller for smart devices and navigators.
If you are using too, please, send a pull request for this project.
# Installing dependencies
npm install -g aglio
# Generate doc
cd docs/
aglio -i documentation.apib --theme-variables streak --theme-template triple -o index.html
# View documentation
firefox index.html
# if number != 0 error
sh -c 'coverage3 run --source=webservice wstest/config.py test'; echo $?
coverage3 run --source=webservice wstest/config.py test
coverage3 report
coverage3 html
firefox htmlcov/index.html