The core module of the Espark ESP32-based IoT device management framework.
Project description
Espark
Espark is a lightweight framework for building scalable and efficient ESP32-based IoT applications. It provides a modular architecture, easy-to-use APIs, and built-in support for common IoT protocols.
Project Goals
- Simplify the development of ESP32 applications.
- Provide a modular and extensible architecture.
- Support common IoT protocols like MQTT.
- Ensure efficient resource management for low-power devices.
- Provide a clean and easy-to-use API.
- Provide an user-friendly UI for configuration and monitoring.
Features
- Device Provisioning: Easy setup and configuration of ESP32 devices.
- Telemetry Collection: Built-in support for collecting and sending telemetry data.
- Scalable Architecture: Designed to handle a large number of devices efficiently.
- Seamless Communication: Support for MQTT protocol.
Hardware Requirements
- ESP32 Development Board
- USB Cable for programming and power
- Optional: Sensors and triggers for specific applications
Project Structure
espark/
├── espark-core/
│ ├── esparkcore/ # FastAPI backend framework
│ │ ├── data/ # Models, repositories
│ │ ├── routers/ # API endpoints
│ │ ├── schedules/ # Background tasks
│ │ ├── services/ # Business logic, MQTT handling
│ │ └── utils/ # Utility functions
│ └── Makefile
├── espark-node/
│ ├── esparknode/ # MicroPython application framework
│ │ ├── actions/ # Action handlers
│ │ ├── data/ # Data storage
│ │ ├── libraries/ # External libraries
│ │ ├── networks/ # Network management
│ │ ├── sensors/ # Sensor interfaces
│ │ ├── triggers/ # Trigger interfaces
│ │ ├── utils/ # Utility functions
│ │ └── base_node.py # Main application file
│ └── Makefile
└── espark-react/ # React frontend application
├── src/
│ ├── data/ # Data models and data providers
│ ├── i18n/ # Internationalization files
│ ├── pages/ # Application pages
│ ├── routes/ # Application routing
│ ├── utils/ # Utility functions
│ ├── App.tsx # Main application component
│ └── index.tsx # Application entry point
└── package.json
Development Workflows
Setting up the backend
- Add espark-core as a dependency in your FastAPI project.
- Configure database connections and MQTT settings as environment variables.
- Implement additional data models, repositories, routers, and business logic if needed.
- Add the
DeviceRouter,TelemetryRouter, and other additional routers to your FastAPI app.
Setting up the ESP32 application
- Clone the espark-node repository to your local machine.
- Copy
espark-core/Makefile.templatetoMakefileand customize it for your device. - Run
make upgradeto copy the espark-core library to your device project. - Implement device-specific actions, sensors, and triggers as needed.
- Run
make flashto upload the firmware to your ESP32 device. - Run
make deployto upload the application to the device.
Setting up the frontend
- Add espark-react as a dependency in your React project.
- Render
<EsparkApp />in your main application file.
Configurations
- espark-core: Use environment variables, or
.envfile, for database and MQTT configurations. - espark-node: Use
esparknode.configsfor device-specific configurations. - espark-react: Customise
EsparkAppprops for application settings.
Examples and Patterns
- Router Example:
device_router.pyinespark-core/esparkcore/routers/demonstrates how to create API endpoints for device management. - Respository Example:
device_repository.pyinespark-core/esparkcore/data/repositories/shows how to implement data access logic for devices. - Action Example:
esp32_relay.pyinespark-node/esparknode/actions/illustrates how to define actions for ESP32 devices. - Sensor Example:
sht20_sensor.pyinespark-node/esparknode/sensors/demonstrates how to read data from a SHT20 sensor. - Trigger Example:
gpio_trigger.pyinespark-node/esparknode/triggers/shows how to create GPIO-based triggers for device actions. - List, Show, Edit Screens Example:
DeviceList,DeviceShow, andDeviceEditcomponents inespark-react/src/pages/devices/demonstrate how to create CRUD screens for device management.
Example Projects
- Espartan: A smart thermostat and open-door alert automation system using ESP32-C3 devices, leveraging espark for device management and telemetry, available at https://github.com/ayltai/Espartan.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
espark_core-0.5.8.tar.gz
(14.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file espark_core-0.5.8.tar.gz.
File metadata
- Download URL: espark_core-0.5.8.tar.gz
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f30b603a187557a0184543cea08405820fa977e970c7cdffea37f58266ca0a0d
|
|
| MD5 |
949bd420934c4e3955288624cf61edaf
|
|
| BLAKE2b-256 |
a4df6eec62838b7249e22e11f3ed258fd94e797ae5bc8cd6a315c40361489597
|
File details
Details for the file espark_core-0.5.8-py3-none-any.whl.
File metadata
- Download URL: espark_core-0.5.8-py3-none-any.whl
- Upload date:
- Size: 23.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8b8adcf6b991a2dff00b4a4d9bb0c493597964216de0cc5add82432bf6fb109
|
|
| MD5 |
85e48bc374e087df16c5a71f2d429cff
|
|
| BLAKE2b-256 |
966a57d509691b85a4d412fdc95dfdf406bc59b3f3c59c724f879900b40b9a70
|