Skip to content

IQTLabs/edgetech-core

Repository files navigation

Contributors Forks Stargazers Issues MIT License


Logo

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

Python Poetry Docker

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

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b dev)
  3. Commit your Changes (git commit -m 'adding some feature')
  4. 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.

  1. Push to the Branch (git push origin dev)
  2. Open a Pull Request

See CONTRIBUTING.md for more information.

License

Distributed under the Apache 2.0. See LICENSE for more information.

Contact IQTLabs

See our other projects: https://github.com/IQTLabs/

(back to top)

About

EdgeTech-Core is a unified platform bringing functionality to edge-based devices with minimal development effort.

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published