Collect POST requests easily
Project description
succulent - Collect POST requests easily
🔍 Detailed Insights • 📦 Installation • 🐳 Container • 🚀 Usage • 🔧 Configuration • 🔑 License • 🫂 Contributors
Do you ever find it challenging and tricky to send sensor measurements 📏, data 📊, or GPS positions from embedded devices 📱, microcontrollers, and smartwatches to a central server? 📡 Setting up the primary data collection scripts can be a time-consuming ⏳ process, involving selecting a protocol, framework, API, and testing them out. Moreover, these scripts are often tailored for specific tasks, making them difficult to adapt to different scenarios.
But fear not! Introducing succulent 🌵, a pure Python framework that simplifies the configuration, management, collection, and preprocessing of data collected via POST requests. This framework draws inspiration from real-world data collection challenges in smart agriculture 🧠🌿, specifically plant monitoring using ESP32 devices. The main goal behind succulent is to streamline the process of configuring various data parameters and provide a range of useful functions for data transformations. By leveraging succulent, you can set up your entire data collection endpoint within minutes, freeing you from the hassle of dealing with server-side scripts. 🚀🔧
- Free software: MIT license
- Documentation: https://succulent.readthedocs.io/en/latest
- Python versions: 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x
- Tested OS: Windows, Ubuntu, Fedora, Alpine, Arch, macOS. However, that does not mean it does not work on others
🔍 Detailed Insights
The current version of succulent comes packed with exciting features, including, but not limited to:
- Hassle-free generation of request URLs for seamless data collection 🌐
- Effortless data retrieval from POST requests 📥
- Versatile data storage options, such as CSV, JSON, SQLite, XML, and even images 🗂️📊🖼️
- Customisable boundaries for collected data, allowing you to set minimum and maximum thresholds ⚙️
With succulent, the process of collecting, managing, and preprocessing data becomes a breeze, empowering you to focus on what truly matters—gaining valuable insights from your embedded devices, microcontrollers, and smartwatches. ⌚ So why waste precious time? ⏳ Dive into the world of succulent and unlock the true potential of your data! 💪📈
📦 Installation
pip
To install succulent
with pip, use:
pip install succulent
Alpine Linux
To install succulent
on Alpine Linux, use:
$ apk add py3-succulent
Arch Linux
To install succulent
on Arch Linux, use an AUR helper:
$ yay -Syyu python-succulent
Fedora Linux
To install succulent
on Fedora, use:
$ dnf install python3-succulent
🐳 Container
Create a docker-compose.yml
file with the following content in the root directory:
version: '3.8'
services:
app:
image: codeberg.org/firefly-cpp/succulent:v4
ports:
- "8080:8080"
volumes:
- ./run.py:/succulent-app/run.py
- ./configuration.yml:/succulent-app/configuration.yml
environment:
- GUNICORN_WORKERS=2
Next create a configuration.yml
file in the root directory. Here's an example of a configuration file:
data:
- name: 'temperature'
- name: 'humidity'
- name: 'light'
results:
- enable: true
- export: true
timestamp: true
More information regarding the configuration file and its settings can be found in the configuration section.
Then create a Python file named run.py
with the following content in the root directory:
from succulent.api import SucculentAPI
api = SucculentAPI(config='configuration.yml', format='csv')
# Flask app instance, called by gunicorn
app = api.app
Once you have set up the configuration file and the Python file, build the Docker image with the following command:
docker compose build
Finally, run the Docker container with the following command:
docker compose up
🚀 Usage
Example
from succulent.api import SucculentAPI
api = SucculentAPI(host='0.0.0.0', port=8080, config='configuration.yml', format='csv')
api.start()
🔧 Configuration
Data collection
In the root directory, create a configuration.yml
file and define the following:
data:
- name: # Measure name
min: # Minimum value (optional)
max: # Maximum value (optional)
To collect images, create a configuration.yml
file in the root directory and define the following:
data:
- key: # Key in POST request
To store data collection timestamps, define the following setting in the configuration.yml
file in the root directory:
timestamp: true # false by default
To access the URL for data collection, send a GET request (or navigate) to http://localhost:8080/measure.
To restrict access to the collected data, define the following setting in the configuration.yml
file in the root directory:
password: 'password' # Password for data access
To store data using a password, append the password parameter to the request URL: ?password=password
.
Data access
To access data via the Succulent API, define the following setting in the configuration.yml
file in the root directory:
results:
- enable: true # false by default
To access the collected data, send a GET request (or navigate) to http://localhost:8080/data. To access password-protected data, append the password parameter to the request URL: ?password=password
.
Data export
To export the data, enable the export option in the configuration file:
results:
- export: true # false by default
To export the data, send a GET request (or navigate) to http://localhost:8080/export. To export password-protected data, append the password parameter to the request URL: ?password=password
. The data will be downloaded in the format specified in the configuration file.
🔑 License
This package is distributed under the MIT License. This license can be found online at http://www.opensource.org/licenses/MIT.
Disclaimer
This framework is provided as-is, and there are no guarantees that it fits your purposes or that it is bug-free. Use it at your own risk!
🫂 Contributors
Thanks goes to these wonderful people (emoji key):
Tadej Lahovnik 💻 🐛 🤔 📖 ✅ |
Ayan Das 💻 ⚠️ |
Iztok Fister Jr. 💻 🤔 🧑🏫 |
Oromion 🐛 📦 |
rhododendrom 🎨 |
Zala Lahovnik 📖 |
This project follows the all-contributors specification. Contributions of any kind welcome!
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
Built Distribution
File details
Details for the file succulent-0.4.0.tar.gz
.
File metadata
- Download URL: succulent-0.4.0.tar.gz
- Upload date:
- Size: 121.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.4 Linux/6.9.12-200.fc40.x86_64
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40e915da0f44fc7aaeadb812b460de1c1a4d9fcc837579422ee7ed95ee09fac6 |
|
MD5 | 718e56b0b6d35b9bef74a5a31cbaf2bc |
|
BLAKE2b-256 | b705fc716a1b6d979e146b5fba2c000b33b8415ce71fffc747691ef5b5de0816 |
File details
Details for the file succulent-0.4.0-py3-none-any.whl
.
File metadata
- Download URL: succulent-0.4.0-py3-none-any.whl
- Upload date:
- Size: 118.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.4 Linux/6.9.12-200.fc40.x86_64
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aeef9f7fcfdac377072b98897ce62302719b4955cbfd8e302dfb96c98922d006 |
|
MD5 | 36c6de4466ffde5abfffc5b3898d7c28 |
|
BLAKE2b-256 | 6186147372da6367085635dda0604968c8bc889255eb99d43386cabd56feb1d0 |