{"id":22509136,"url":"https://github.com/lukaspustina/luftpost","last_synced_at":"2025-08-03T13:31:18.637Z","repository":{"id":54965439,"uuid":"94544340","full_name":"lukaspustina/luftpost","owner":"lukaspustina","description":"Watches luftdaten.info particulates sensors and sends E-Mails if measurements exceed thresholds ","archived":false,"fork":false,"pushed_at":"2021-01-19T07:14:43.000Z","size":460,"stargazers_count":8,"open_issues_count":10,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-24T13:16:19.491Z","etag":null,"topics":["air-quality","luftdaten","particulates-sensors","pollution","rust"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lukaspustina.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-06-16T13:01:57.000Z","updated_at":"2023-05-19T18:11:45.000Z","dependencies_parsed_at":"2022-08-14T07:40:15.122Z","dependency_job_id":null,"html_url":"https://github.com/lukaspustina/luftpost","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukaspustina%2Fluftpost","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukaspustina%2Fluftpost/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukaspustina%2Fluftpost/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukaspustina%2Fluftpost/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lukaspustina","download_url":"https://codeload.github.com/lukaspustina/luftpost/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228547865,"owners_count":17935142,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["air-quality","luftdaten","particulates-sensors","pollution","rust"],"created_at":"2024-12-07T01:27:37.842Z","updated_at":"2024-12-07T01:27:38.409Z","avatar_url":"https://github.com/lukaspustina.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# luftpost\n\nWatches [luftdaten.info](http://luftdaten.info) particulates sensors and sends E-Mails if measurements exceed thresholds.\n\n[![Linux \u0026 OS X Build Status](https://img.shields.io/travis/lukaspustina/luftpost.svg?label=Linux%20%26%20OS%20X%20Build%20Status)](https://travis-ci.org/lukaspustina/luftpost) [![Windows Build status](https://img.shields.io/appveyor/ci/lukaspustina/luftpost.svg?label=Windows%20Build%20Status)](https://ci.appveyor.com/project/lukaspustina/luftpost/branch/master) [![GitHub release](https://img.shields.io/github/release/lukaspustina/luftpost.svg)](https://github.com/lukaspustina/luftpost/releases) [![](https://img.shields.io/crates/v/luftpost.svg)](https://crates.io/crates/luftpost) [![Ansible Role](https://img.shields.io/badge/ansible--galaxy-luftpost-blue.svg)](https://galaxy.ansible.com/lukaspustina/luftpost/) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg?label=License)](./LICENSE)\n\n[luftdaten.info](http://luftdaten.info) offers a very easy do-it-yourself instruction on how to build an inexpensive yet powerful particulates sensor together with a fully functional firmware. This firmware regularly measures the particulates concentration and transmits the resulting data to luftdaten.info where it is processed and displayed on a world map. Even though most sensors are deployed in [Germany](http://deutschland.maps.luftdaten.info/#6/51.165/10.455) you can find sensors [all over the world](http://deutschland.maps.luftdaten.info/#8/-0.811/36.781).\n\n_luftpost_ is a simple program that monitors luftdaten.info sensors and notifies you via E-Mail in case a particulates concentration measurement exceeds a thresholds. The E-Mail is nicely formatted and may contain the very same graphs that luftdaten.info offers -- see below for an example. The notification can be triggered to be send on every measurement, only when a measurement exceeds a threshold, or on changes only, i.e., once after exceeding a threshold and then after returning back below a threshold -- see the [Configuration](#configuration) section for details.\n\nThere are binaries for Linux, Raspberry Pi, and Windows as well as Debian packages for and a Homebrew recipe. Furthermore, there is an Ansible role for easy installation on Linux and Raspberry Pi -- see the [Installation](#Installation) section for details.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"docs/example_email.png\"\u003e\u003c/p\u003e\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n**Table of Contents**\n\n- [Configuration](#configuration)\n- [Installation](#installation)\n  - [Ubuntu [x86_64 and Raspberry Pi]](#ubuntu-x86_64-and-raspberry-pi)\n  - [Linux Binaries [x86_64 and Raspberry Pi]](#linux-binaries-x86_64-and-raspberry-pi)\n  - [Windows Binaries [x86_64 and i686]](#windows-binaries-x86_64-and-i686)\n  - [macOS](#macos)\n  - [Sources](#sources)\n  - [Ansible](#ansible)\n- [Postcardware](#postcardware)\n- [Future Work](#future-work)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## Configuration\n\nPlease see this [example](tests/luftpost.example.conf) for a full description of all available configuration parameters. This [example](tests/luftpost-minimal.example.conf) shows the minimal configuration required to run _luftpost_.\n\n_luftpost_ uses the [Handlebars](https://handlebarsjs.com) templating language provided through [handlebars-rust](https://github.com/sunng87/handlebars-rust). Please mind that handlebars-rust has a few [limitations](https://github.com/sunng87/handlebars-rust#limitations) compared to the original JavaScript Handlebars implementation. Please check the respective documentation if you want to develop your own templates.\n\n## Installation\n\n### Ubuntu [x86_64 and Raspberry Pi]\n\nPlease add my [PackageCloud](https://packagecloud.io/lukaspustina/opensource) open source repository and install _luftpost_ via apt.\n\n```bash\ncurl -s https://packagecloud.io/install/repositories/lukaspustina/opensource/script.deb.sh | sudo bash\nsudo apt-get install luftpost\n```\n\n### Linux Binaries [x86_64 and Raspberry Pi]\n\nThere are binaries available at the GitHub [release page](https://github.com/lukaspustina/luftpost/releases). The binaries get compiled on Ubuntu.\n\n### Windows Binaries [x86_64 and i686]\n\nThere are binaries available at the GitHub [release page](https://github.com/lukaspustina/luftpost/releases).\n\n### macOS\n\nPlease use [Homebrew](https://brew.sh) to install _luftpost_ on your system.\n\n```bash\nbrew install lukaspustina/os/luftpost\n```\n\n### Sources\n\nPlease install Rust via [rustup](https://www.rustup.rs) and then run\n\n```bash\ncargo install luftpost\n```\n\n### Ansible\n\nThere is also an Ansible role available at [Ansible Galaxy](https://galaxy.ansible.com/lukaspustina/luftpost/) that automates the installation of _luftpost_.\n\n\n## Postcardware\n\nYou're free to use _luftpost_. If you find it useful, I would highly appreciate you sending me a postcard from your hometown mentioning how you use _luftpost_. My work address is\n\n```\nLukas Pustina\nCenterDevice GmbH\nRheinwerkallee 3\n53227 Bonn\nGermany\n```\n\n## Future Work\n\n  * Move sending E-Mails to futures once lettre 0.7 is released\n\n  * Maybe support for directly queuering a sensor\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukaspustina%2Fluftpost","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flukaspustina%2Fluftpost","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukaspustina%2Fluftpost/lists"}