EdgeTech-Core is a unified platform bringing functionality to edge-based devices with minimal development effort. The core is a dynamic message/event-based infrastructure that is enabled via MQTT. All of this functionality is wrapped in a Docker containers for cross-platform compatibility. Using the containers built on EdgeTech-Core, defining the software stack of an edge-deployable device should be as easy as dropping those containers into your docker-compose file and tuning environment variables to fit your needs. If you don't find that, come help us make it better by contributing!
- MQTT Broker (this module is dependent on the eclipse-mosquitto docker container running and uses mqtt-paho to interact with this broker)
- Heartbeat Monitor (keep the TCP/IP connection with the MQTT broker alive)
- Core Library (python library for interacting with MQTT e.g. adding publishers/subscribers, connecting, disconnecting, etc.)
- Containerized certificate authentication (traffic on MQTT bus is TLS encrypted through generating and managing certificates)
- edgetech-daisy
- edgetech-filesaver
- edgetech-audio-recorder
- edgetech-c2
- edgetech-telemetry-pinephone
- edgetech-s3-uploader
- edgetech-couchdb-startup
- edgetech-couchdb-saver
- edgetech-http-uploader
- aisonobuoy-collector-pinephone
Make Contribution · Report Bug · Request Feature
To run this repo, simply run:
docker-compose up
The core module is containerized and dependencies are managed using poetry.
Running this repo requires that you have Docker installed.
Spinning up this system requires an MQTT server and this container to be included in your docker-compose.yml
. You can find an example of this workflow in this repository's docker-compose.yml
. As the core module is meant to be built upon, you can find a template of how to do so in the edgetech-template repository.
Image tags for desired services can be set using the SERVICES_VERSION
environment variable. Current images are published using tags latest
, stable
, and production
for the latest image updates, last stable image updates, and production/deployment-ready images respectively.
cd
into the core
directory, add a line: CMD pytest BaseMQTTPubSubTest.py
to the bottom of the Dockerfile
and then run: cd .. && docker-compose up
.
- TBA
See the open issues for a full list of proposed features (and known issues).
- Fork the Project
- Create your Feature Branch (
git checkout -b dev
) - Commit your Changes (
git commit -m 'adding some feature'
) - Run (and make sure they pass):
black --diff --check *.py
pylint --disable=all --enable=unused-import *.py
mypy --allow-untyped-decorators --ignore-missing-imports --no-warn-return-any --strict --allow-subclassing-any *.py
If you do not have them installed, you can install them with pip install "black<23" pylint==v3.0.0a3 mypy==v0.991
.
- Push to the Branch (
git push origin dev
) - Open a Pull Request
See CONTRIBUTING.md
for more information.
Distributed under the Apache 2.0. See LICENSE
for more information.
- Twitter: @iqtlabs
- Email: [email protected]
See our other projects: https://github.com/IQTLabs/