Skip to main content

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

  1. Add espark-core as a dependency in your FastAPI project.
  2. Configure database connections and MQTT settings as environment variables.
  3. Implement additional data models, repositories, routers, and business logic if needed.
  4. Add the DeviceRouter, TelemetryRouter, and other additional routers to your FastAPI app.

Setting up the ESP32 application

  1. Clone the espark-node repository to your local machine.
  2. Copy espark-core/Makefile.template to Makefile and customize it for your device.
  3. Run make upgrade to copy the espark-core library to your device project.
  4. Implement device-specific actions, sensors, and triggers as needed.
  5. Run make flash to upload the firmware to your ESP32 device.
  6. Run make deploy to upload the application to the device.

Setting up the frontend

  1. Add espark-react as a dependency in your React project.
  2. Render <EsparkApp /> in your main application file.

Configurations

  • espark-core: Use environment variables, or .env file, for database and MQTT configurations.
  • espark-node: Use esparknode.configs for device-specific configurations.
  • espark-react: Customise EsparkApp props for application settings.

Examples and Patterns

  • Router Example: device_router.py in espark-core/esparkcore/routers/ demonstrates how to create API endpoints for device management.
  • Respository Example: device_repository.py in espark-core/esparkcore/data/repositories/ shows how to implement data access logic for devices.
  • Action Example: esp32_relay.py in espark-node/esparknode/actions/ illustrates how to define actions for ESP32 devices.
  • Sensor Example: sht20_sensor.py in espark-node/esparknode/sensors/ demonstrates how to read data from a SHT20 sensor.
  • Trigger Example: gpio_trigger.py in espark-node/esparknode/triggers/ shows how to create GPIO-based triggers for device actions.
  • List, Show, Edit Screens Example: DeviceList, DeviceShow, and DeviceEdit components in espark-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


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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

espark_core-0.5.8-py3-none-any.whl (23.2 kB view details)

Uploaded Python 3

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

Hashes for espark_core-0.5.8.tar.gz
Algorithm Hash digest
SHA256 f30b603a187557a0184543cea08405820fa977e970c7cdffea37f58266ca0a0d
MD5 949bd420934c4e3955288624cf61edaf
BLAKE2b-256 a4df6eec62838b7249e22e11f3ed258fd94e797ae5bc8cd6a315c40361489597

See more details on using hashes here.

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

Hashes for espark_core-0.5.8-py3-none-any.whl
Algorithm Hash digest
SHA256 a8b8adcf6b991a2dff00b4a4d9bb0c493597964216de0cc5add82432bf6fb109
MD5 85e48bc374e087df16c5a71f2d429cff
BLAKE2b-256 966a57d509691b85a4d412fdc95dfdf406bc59b3f3c59c724f879900b40b9a70

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page