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.8.tar.gz (12.3 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.8-py3-none-any.whl (19.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: espark_core-0.4.8.tar.gz
  • Upload date:
  • Size: 12.3 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.8.tar.gz
Algorithm Hash digest
SHA256 0a26d00e2f1ccc932dc114fd990cf1afe031c448cc2b07fab57b759473f5ec4d
MD5 02a3748b01a545c65abc40d2f5dc72b0
BLAKE2b-256 6d3a05b452a1b1462405d0e69aed4791fd0dbc4874ec300c6743e36edb415ea1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: espark_core-0.4.8-py3-none-any.whl
  • Upload date:
  • Size: 19.4 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.8-py3-none-any.whl
Algorithm Hash digest
SHA256 2a04475b316725893f379c480a19eaa00d829438b71787f6a7bbb0a018ec52ea
MD5 2c11b01f6a979f18e0a9125ebd03bf54
BLAKE2b-256 ddcaef44248c0201fa526c4d404581d5485856705dae133d419358347467d242

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