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
Keywords from Contributors
Repository
Collect POST requests
Basic Info
Statistics
- Stars: 3
- Watchers: 2
- Forks: 3
- Open Issues: 0
- Releases: 21
Topics
Metadata Files
README.md
succulent
Collect POST requests easily
🔍 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 💻 🐛 🤔 📖 ✅ |
Ayan Das 💻 ⚠️ |
Iztok Fister Jr. 💻 🤔 🧑🏫 |
Oromion 🐛 📦 |
rhododendrom 🎨 |
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
- Website: http://www.iztok-jr-fister.eu/
- Repositories: 28
- Profile: https://github.com/firefly-cpp
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
Top Committers
| Name | 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
Pull Request Labels
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)
- Homepage: https://github.com/firefly-cpp/succulent
- License: MIT
-
Latest release: 0.4.2-r0
published 5 months ago
Rankings
Maintainers (1)
pypi.org: succulent
Collect POST requests easily
- Homepage: https://github.com/firefly-cpp/succulent
- Documentation: https://succulent.readthedocs.io/en/latest/
- License: MIT
-
Latest release: 0.4.2
published 5 months ago
Rankings
Maintainers (2)
alpine-edge: py3-succulent
Collect POST requests
- Homepage: https://github.com/firefly-cpp/succulent
- License: MIT
-
Latest release: 0.4.2-r0
published 5 months ago
Rankings
Maintainers (1)
alpine-edge: py3-succulent-pyc
Precompiled Python bytecode for py3-succulent
- Homepage: https://github.com/firefly-cpp/succulent
- License: MIT
-
Latest release: 0.4.2-r0
published 5 months ago
Rankings
Maintainers (1)
alpine-v3.21: py3-succulent-doc
Collect POST requests (documentation)
- Homepage: https://github.com/firefly-cpp/succulent
- License: MIT
-
Latest release: 0.4.0-r0
published over 1 year ago
Rankings
Maintainers (1)
alpine-v3.22: py3-succulent
Collect POST requests
- Homepage: https://github.com/firefly-cpp/succulent
- License: MIT
-
Latest release: 0.4.1-r0
published 11 months ago
Rankings
Maintainers (1)
alpine-v3.21: py3-succulent
Collect POST requests
- Homepage: https://github.com/firefly-cpp/succulent
- License: MIT
-
Latest release: 0.4.0-r0
published over 1 year ago
Rankings
Maintainers (1)
alpine-v3.19: py3-succulent
Collect POST requests easily
- Homepage: https://github.com/firefly-cpp/succulent
- License: MIT
-
Latest release: 0.2.6-r0
published about 2 years ago
Rankings
alpine-v3.19: py3-succulent-pyc
Precompiled Python bytecode for py3-succulent
- Homepage: https://github.com/firefly-cpp/succulent
- License: MIT
-
Latest release: 0.2.6-r0
published about 2 years ago
Rankings
alpine-v3.22: py3-succulent-pyc
Precompiled Python bytecode for py3-succulent
- Homepage: https://github.com/firefly-cpp/succulent
- License: MIT
-
Latest release: 0.4.1-r0
published 11 months ago
Rankings
Maintainers (1)
alpine-v3.22: py3-succulent-doc
Collect POST requests (documentation)
- Homepage: https://github.com/firefly-cpp/succulent
- License: MIT
-
Latest release: 0.4.1-r0
published 11 months ago
Rankings
Maintainers (1)
alpine-v3.20: py3-succulent
Collect POST requests
- Homepage: https://github.com/firefly-cpp/succulent
- License: MIT
-
Latest release: 0.3.3-r1
published over 1 year ago
Rankings
Maintainers (1)
alpine-v3.21: py3-succulent-pyc
Precompiled Python bytecode for py3-succulent
- Homepage: https://github.com/firefly-cpp/succulent
- License: MIT
-
Latest release: 0.4.0-r0
published over 1 year ago
Rankings
Maintainers (1)
alpine-v3.20: py3-succulent-pyc
Precompiled Python bytecode for py3-succulent
- Homepage: https://github.com/firefly-cpp/succulent
- License: MIT
-
Latest release: 0.3.3-r1
published over 1 year ago
Rankings
Maintainers (1)
alpine-v3.20: py3-succulent-doc
Collect POST requests (documentation)
- Homepage: https://github.com/firefly-cpp/succulent
- License: MIT
-
Latest release: 0.3.3-r1
published over 1 year ago
Rankings
Maintainers (1)
Dependencies
- actions/cache v3 composite
- actions/checkout v3 composite
- actions/setup-python v3 composite
- Sphinx *
- flask *
- pandas *
- pyyaml *
- sphinx-rtd-theme *
- sphinxcontrib-bibtex *
- 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