An application framework with built-in drivers (Controllers), data holders (Sources) and config parsers (Rules). Also includes a web interface for configuration and troubleshooting.
Project description
Documentation: https://netdef.readthedocs.io/en/latest/
License: GNU Lesser General Public License v3 or later (LGPLv3+)
Summary
An application framework with built-in drivers (Controllers), data holders (Sources) and config parsers (Rules). Also includes a web interface for configuration and troubleshooting.
Features
Abstract base classes for creating custom controllers, sources and rules
The configuration is done using configparser with extended interpolation
Start a new netdef project with cookiecutter or make-project. Templates available at https://gitlab.com/fholmer/netdef-project/
Built-in Controllers:
OpcUa server / client (freeopcua)
TcpModbus server / client (pymodbus)
icmp ping / url ping
XmlRpc client
trigger events by using crontab format (crontab)
disk, memory and CPU monitoring (psutil)
MQTT client (using a simple messaging format called DataMessage) (paho-mqtt)
Simple RESTJson client
Simple Influxdb logger (influxdb)
Built-in Rules:
Generic CSV config parser
Generic INI config parser
Generic Yaml config parser (PyYAML)
Built-in application engines:
threaded engine with stdout/stderr only
threaded engine with web-interface (webadmin)
serve webadmin behind nginx reverse proxy
Use Cases
Netdef is useful if you want to create a middleware that can translate a protocol into a completely different protocol or data format into a completely different data format.
Getting started
First install make-project:
$ python3 -m pip install --user make
Create your first application:
$ python3 -m make project gl:fholmer/netdef-project/minimal-app
When asked for project_name type Test-App:
project_name? [First-App]: Test-App
Setup development environment for your application:
$ cd Test-App $ python3 -m venv venv $ source venv/bin/activate $ pip install wheel $ pip install -r requirements-dev.txt $ pip install -r requirements.txt $ python -m test_app -i .
Run:
$ python -m test_app -r .
CTRL-C to exit
Package your application:
$ python setup.py bdist_wheel
Exit development environment:
$ deactivate
Prepare deployment:
$ sudo mkdir -p /opt/test-app $ sudo chown $USER:$USER /opt/test-app/ $ python3 -m venv /opt/test-app/
Deploy your application:
$ source /opt/test-app/bin/activate $ pip install ./dist/Test_App-0.1.0-py3-none-any.whl $ python -m test_app -i /opt/test-app/
Install as service:
$ sudo /opt/test-app/bin/Test-App-Service -u $USER --install /opt/test-app/
Enable and run:
$ sudo systemctl --system daemon-reload $ sudo systemctl enable test-app-service.service $ sudo systemctl start test-app-service.service
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.