succulent

Collect POST requests

https://github.com/firefly-cpp/succulent

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.4%) to scientific vocabulary

Keywords

data-collection data-preprocessing-pipelines data-science esp32 machine-learning raspberry-pi

Keywords from Contributors

evolutionary-algorithm optimization-algorithms swarm-intelligence nature-inspired-algorithms toml data-mining association-rules association-rule-mining microframework automl
Last synced: 4 months ago · JSON representation ·

Repository

Collect POST requests

Basic Info
  • Host: GitHub
  • Owner: firefly-cpp
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 466 KB
Statistics
  • Stars: 3
  • Watchers: 2
  • Forks: 3
  • Open Issues: 0
  • Releases: 21
Topics
data-collection data-preprocessing-pipelines data-science esp32 machine-learning raspberry-pi
Created over 2 years ago · Last pushed 5 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation

README.md

logo

succulent

Collect POST requests easily

PyPI Version PyPI - Python Version PyPI - Downloads AUR package Fedora package Downloads Packaging status GitHub license Build Documentation status

GitHub repo size GitHub commit activity Average time to resolve an issue Percentage of issues still open All Contributors

DOI

🔍 Detailed Insights📦 Installation🐳 Container🚀 Usage🔧 Configuration📄 Cite us🔑 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:

sh pip install succulent

Alpine Linux

To install succulent on Alpine Linux, use:

sh $ apk add py3-succulent

Arch Linux

To install succulent on Arch Linux, use an AUR helper:

sh $ yay -Syyu python-succulent

Fedora Linux

To install succulent on Fedora, use:

sh $ dnf install python3-succulent

🐳 Container

Create a docker-compose.yml file with the following content in the root directory:

```yml version: '3.8'

services: app: image: codeberg.org/firefly-cpp/succulent:v6 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:

yml 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:

```python 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:

bash docker compose build

Finally, run the Docker container with the following command:

bash docker compose up

🚀 Usage

Example

python 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: yml 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: yml data: - key: # Key in POST request

To store data collection timestamps, define the following setting in the configuration.yml file in the root directory: yml 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: yml 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: yml 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: yml 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.

📄 Cite us

Fister Jr., Iztok, and Tadej Lahovnik. Succulent. 0.4.0, doi:10.5281/zenodo.10402365.

🔑 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
Tadej Lahovnik

💻 🐛 🤔 📖
Ayan Das
Ayan Das

💻 ⚠️
Iztok Fister Jr.
Iztok Fister Jr.

💻 🤔 🧑‍🏫
Oromion
Oromion

🐛 📦
rhododendrom
rhododendrom

🎨
Zala Lahovnik
Zala Lahovnik

📖

This project follows the all-contributors specification. Contributions of any kind welcome!

Owner

  • Name: Iztok Fister Jr.
  • Login: firefly-cpp
  • Kind: user
  • Location: Slovenia

Citation (CITATION.cff)

cff-version: 1.2.0
message: "Please  cite this repository if you use it in your work."
title: "succulent"
abstract: "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."
doi: 10.5281/zenodo.10402365
authors:
  - family-names: Fister Jr.
    given-names: Iztok
    email: iztok@iztok.space
    orcid: 0000-0002-6418-1272
  - family-names: Lahovnik
    given-names: Tadej
    orcid: 0009-0005-9689-2991
license: "MIT License"
repository-code: "https://github.com/firefly-cpp/succulent"
keywords:
  - Raspberry Pi
  - Data Science
  - Machine Learning
  - ESP32
  - Data Collection
  - Data Preprocessing Pipelines
repository: "https://github.com/firefly-cpp/succulent"
version: 0.4.0
languages:
  - Python
preferred-citation:
  type: software
  title: "succulent"
  authors:
    - family-names: Fister Jr.
      given-names: Iztok
      email: iztok@iztok.space
      orcid: 0000-0002-6418-1272
    - family-names: Lahovnik
      given-names: Tadej
      orcid: 0009-0005-9689-2991
  version: 0.4.0
  license: "MIT License"
  repository-code: "https://github.com/firefly-cpp/succulent"

GitHub Events

Total
  • Release event: 1
  • Watch event: 2
  • Delete event: 3
  • Push event: 8
  • Pull request event: 10
  • Create event: 6
Last Year
  • Release event: 1
  • Watch event: 2
  • Delete event: 3
  • Push event: 8
  • Pull request event: 10
  • Create event: 6

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 162
  • Total Committers: 8
  • Avg Commits per committer: 20.25
  • Development Distribution Score (DDS): 0.605
Past Year
  • Commits: 20
  • Committers: 3
  • Avg Commits per committer: 6.667
  • Development Distribution Score (DDS): 0.6
Top Committers
Name Email Commits
Tadej Lahovnik t****k@s****i 64
firefly-cpp i****k@i****u 64
allcontributors[bot] 4****] 14
dependabot[bot] 4****] 12
Ayan Das d****8@g****m 4
zala-lahovnik z****k@g****m 2
rhododendrom b****2@p****m 1
Carlos Aznarán Laos c****l@u****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 5 months ago

All Time
  • Total issues: 28
  • Total pull requests: 25
  • Average time to close issues: 13 days
  • Average time to close pull requests: 11 days
  • Total issue authors: 3
  • Total pull request authors: 6
  • Average comments per issue: 1.5
  • Average comments per pull request: 0.6
  • Merged pull requests: 23
  • Bot issues: 0
  • Bot pull requests: 19
Past Year
  • Issues: 2
  • Pull requests: 5
  • Average time to close issues: about 22 hours
  • Average time to close pull requests: 17 days
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 0.5
  • Average comments per pull request: 0.0
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 5
Top Authors
Issue Authors
  • firefly-cpp (21)
  • lahovniktadej (2)
  • carlosal1015 (1)
Pull Request Authors
  • dependabot[bot] (22)
  • allcontributors[bot] (7)
  • AyanDas348 (2)
  • zala-lahovnik (1)
  • carlosal1015 (1)
Top Labels
Issue Labels
enhancement (2) bug (1) good first issue (1) documentation (1) help wanted (1)
Pull Request Labels
dependencies (22) python (6)

Packages

  • Total packages: 15
  • Total downloads:
    • pypi 84 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 79
  • Total maintainers: 3
alpine-edge: py3-succulent-doc

Collect POST requests (documentation)

  • Versions: 8
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Average: 8.0%
Dependent packages count: 16.0%
Maintainers (1)
Last synced: 4 months ago
pypi.org: succulent

Collect POST requests easily

  • Versions: 20
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 84 Last month
Rankings
Dependent packages count: 10.1%
Downloads: 12.7%
Forks count: 15.4%
Average: 17.0%
Dependent repos count: 21.5%
Stargazers count: 25.1%
Maintainers (2)
Last synced: 4 months ago
alpine-edge: py3-succulent

Collect POST requests

  • Versions: 20
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 13.3%
Average: 20.3%
Forks count: 33.7%
Stargazers count: 34.2%
Maintainers (1)
Last synced: 4 months ago
alpine-edge: py3-succulent-pyc

Precompiled Python bytecode for py3-succulent

  • Versions: 20
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 13.3%
Average: 20.3%
Forks count: 33.7%
Stargazers count: 34.2%
Maintainers (1)
Last synced: 4 months ago
alpine-v3.21: py3-succulent-doc

Collect POST requests (documentation)

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 0.0%
Average: 100%
Maintainers (1)
Last synced: 4 months ago
alpine-v3.22: py3-succulent

Collect POST requests

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 0.0%
Average: 100%
Maintainers (1)
Last synced: 4 months ago
alpine-v3.21: py3-succulent

Collect POST requests

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 0.0%
Average: 100%
Maintainers (1)
Last synced: 4 months ago
alpine-v3.19: py3-succulent

Collect POST requests easily

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 0.0%
Average: 100%
Last synced: 4 months ago
alpine-v3.19: py3-succulent-pyc

Precompiled Python bytecode for py3-succulent

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 0.0%
Average: 100%
Last synced: 4 months ago
alpine-v3.22: py3-succulent-pyc

Precompiled Python bytecode for py3-succulent

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 0.0%
Average: 100%
Maintainers (1)
Last synced: 4 months ago
alpine-v3.22: py3-succulent-doc

Collect POST requests (documentation)

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 0.0%
Average: 100%
Maintainers (1)
Last synced: 4 months ago
alpine-v3.20: py3-succulent

Collect POST requests

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 0.0%
Average: 100%
Maintainers (1)
Last synced: 4 months ago
alpine-v3.21: py3-succulent-pyc

Precompiled Python bytecode for py3-succulent

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 0.0%
Average: 100%
Maintainers (1)
Last synced: 4 months ago
alpine-v3.20: py3-succulent-pyc

Precompiled Python bytecode for py3-succulent

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 0.0%
Average: 100%
Maintainers (1)
Last synced: 4 months ago
alpine-v3.20: py3-succulent-doc

Collect POST requests (documentation)

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 0.0%
Average: 100%
Maintainers (1)
Last synced: 4 months ago

Dependencies

.github/workflows/test.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
docs/requirements.txt pypi
  • Sphinx *
  • flask *
  • pandas *
  • pyyaml *
  • sphinx-rtd-theme *
  • sphinxcontrib-bibtex *
pyproject.toml pypi
  • pytest ^6.2 develop
  • Sphinx ^4.4.0
  • flask ^2.3.2
  • pandas ^2.0.1
  • python ^3.8
  • pyyaml ^6.0
  • sphinx-rtd-theme ^1.0.0
  • sphinxcontrib-bibtex ^2.4.1