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.2.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.2-py3-none-any.whl (23.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: espark_core-0.5.2.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.2.tar.gz
Algorithm Hash digest
SHA256 5fd1183ab5dfb220d94e20bb5ee51bfa7672dca979bb4621b8e75b5f8dd5dd35
MD5 9b4e4d271cf4cf3c23e50cdd00bcf382
BLAKE2b-256 795d9f032708ebc6be49ca1d7337482ea3abce48d90824bc01a7634c6477271a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: espark_core-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 23.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.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7d11f54bb68ccfc60d8e3101dd6644481156769a6925b39481db11fdc0303cf9
MD5 2b6ff8dd5bca400732a2ac2384a8812c
BLAKE2b-256 523d11a1e972756b193744aceb2c91b72db4b4f4381131b86336bfed839fe7f8

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