![Logo](https://raw.githubusercontent.com/arichadda/edgetech-core/main/images/logo.png)
EdgeTech-Core
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!
Core Services:
- 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)
Auxiliary Services:
- edgetech-daisy
- edgetech-filesaver
- edgetech-audio-recorder
- edgetech-c2
- edgetech-telemetry-pinephone
- edgetech-s3-uploader
- edgetech-couchdb-startup
- edgetech-couchdb-saver
- edgetech-http-uploader
Projects that use Core:
- aisonobuoy-collector-pinephone
Make Contribution · Report Bug · Request Feature
Built With
Getting Started
To run this repo, simply run:
docker-compose up
The core module is containerized and dependencies are managed using poetry.
Prerequisites
Running this repo requires that you have Docker installed.
Usage + Building on Core
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.
Container Options via Watchtower
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.
EdgeTech Core Tests
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
.
Roadmap
- TBA
See the open issues for a full list of proposed features (and known issues).
Contributing
- 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.
License
Distributed under the Apache 2.0. See LICENSE
for more information.
Contact IQTLabs
- Twitter: @iqtlabs
- Email: info@iqtlabs.org
See our other projects: https://github.com/IQTLabs/