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.4.1.tar.gz (11.5 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.4.1-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file espark_core-0.4.1.tar.gz.

File metadata

  • Download URL: espark_core-0.4.1.tar.gz
  • Upload date:
  • Size: 11.5 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.4.1.tar.gz
Algorithm Hash digest
SHA256 b18d64b86b6a332e49ddde5676b2f426035ad597259b05f4f18ab367e1d83960
MD5 3d539e22b09768ff31c62ff5a1df22b4
BLAKE2b-256 b7d5fad79c983976ba587f86dde3aa19460d5870e1fdff8ea159c11fa132b2c1

See more details on using hashes here.

File details

Details for the file espark_core-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: espark_core-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 18.1 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.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 17b878e67a720eeb819f4a15e07706caf0c59e1ca02cbab094d90e2e0464d656
MD5 c54fec7caf3f2d1551491dcd2a7c6846
BLAKE2b-256 b75a4824f92a79a25a380c1fd2efc3fbb910d2f838e3ac81f68b07d5ae1ccbf3

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