-
Notifications
You must be signed in to change notification settings - Fork 159
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
runner
committed
Jul 28, 2024
1 parent
121280b
commit 8951888
Showing
33 changed files
with
5,096 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,201 @@ | ||
Unreleased | ||
========== | ||
- Nothing! | ||
|
||
.v2.4.0 - 2024-07-20 | ||
==================== | ||
- Bump tj-actions/branch-names from 2.2 to 7.0.7 in /.github/workflows by @dependabot in https://github.com/flyte/mqtt-io/pull/339 | ||
- # Fix for poetry/docutils related bug by @BenjiU in https://github.com/flyte/mqtt-io/pull/367 | ||
- upgrade DHT11/DHT22 backing library by @pansila in https://github.com/flyte/mqtt-io/pull/297 | ||
- Install gcc for slim docker to build rpi.gpio on demand by @BenjiU in https://github.com/flyte/mqtt-io/pull/368 | ||
- Remove lint warnings from bmp085.py by @BenjiU in https://github.com/flyte/mqtt-io/pull/375 | ||
- Add support for YF-S201 flow rate sensor by @linucks in https://github.com/flyte/mqtt-io/pull/370 | ||
- Support for ENS160 digital multi-gas sensor with multiple IAQ data (TVOC, eCO2, AQI) by @linucks in https://github.com/flyte/mqtt-io/pull/371 | ||
- feat: add MH-Z19 sensor module by @kleest in https://github.com/flyte/mqtt-io/pull/365 | ||
- Add Support for Sunxi Linux Boards by @fabys77 in https://github.com/flyte/mqtt-io/pull/100 | ||
|
||
.v2.3.0 - 2024-03-01 | ||
==================== | ||
- 324 pinned pyyaml version incompatible with latest cython 300 by @BenjiU in #325 | ||
- fix pipeline for tagging by @BenjiU in #323 | ||
- pin pyyaml to v6.0.1 by @BenjiU in #326 | ||
- Add new module for sensor adxl345 by @birdie1 in #223 | ||
- Sensor INA219: Use optional i2c_bus_num by @mschlenstedt in #328 | ||
- Update ads1x15.py by @maxthebuch in #329 | ||
- repeat subscribe when reconnected to MQTT broker by @JohannesHennecke in #337 | ||
- Fix non-unique identifiers reporting to HA by @dolai1 in #345 | ||
- docker: use a "slim" base image by @chatziko in #342 | ||
- Fix applying mqtt.reconnect_count by reordering except clauses by @zzeekk in #331 | ||
- Add PMS5003 Particulate Sensor by @johnwang16 in #346 | ||
- gpiod: enable pullup/pulldown by @chatziko in #341 | ||
- docker: slim image, use rustup, build deps only on armv7 by @chatziko in #352 | ||
|
||
.v2.2.9d - 2023-07-18 | ||
==================== | ||
- new sensors | ||
- fix for reconnection problem | ||
|
||
.v2.2.8 - 2023-01-19 | ||
==================== | ||
- Fix for #280 by @rlehfeld in #281 | ||
- Fix reconnects_remaining referenced before assignment by @SamLeatherdale in #274 | ||
- Only create one instance of sensor_module for ADS1x15 by @shbatm in #286 | ||
- PN532 NFC/RFID reader implementation by @vytautassurvila in #269 | ||
- Update README.md by @OzGav in #264 | ||
- FIX OrangePi module by @neatherweb in #285 | ||
- New DockerPi 4 Channel Relay GPIO module by @claudegel in #246 | ||
- Digital Output: fix initial state inconsistency by @hacker-cb in #238 | ||
- Add module mcp3xxx by @koleo9am in #227 | ||
- Always remove finished transient_tasks. by @gmsoft-tuxicoman in #301 | ||
|
||
.v2.2.7 - 2022-07-07 | ||
==================== | ||
- Fix some minor pylint issues and silence some others. | ||
- Fix bug with changing reference to 'edge' in raspberrypi module. #268 @vytautassurvila | ||
- Add INA219 sensor module. #221 @birdie1 | ||
- Implement PinPUD.OFF for pcf8574/5. #217 @IlmLV | ||
- Ensure HCSR04 distance cannot be None. #215 @joseffallman | ||
- Add GPIOZero module. #212 @fipwmaqzufheoxq92ebc | ||
- Render config with confp to allow dynamic configuration based on environment/redis/etcd vars. #210 @fipwmaqzufheoxq92ebc | ||
- Log uncaught exceptions to configured logging handlers. #206 @fipwmaqzufheoxq92ebc | ||
|
||
v2.2.6 - 2021-04-23 | ||
=================== | ||
- Create docs in a tempdir to stop them from being clobbered when changing branches. | ||
|
||
v2.2.5 - 2021-04-23 | ||
=================== | ||
- Sort versions in docs. Use git pull properly. | ||
|
||
v2.2.4 - 2021-04-23 | ||
=================== | ||
- Generate docs versions and root index to strings and write them after switching branches | ||
|
||
v2.2.3 - 2021-04-23 | ||
=================== | ||
- Add docs root index to git separately | ||
|
||
v2.2.2 - 2021-04-23 | ||
=================== | ||
- Fix version regex for docs index generation | ||
|
||
v2.2.1 - 2021-04-23 | ||
=================== | ||
- Handle tags in generate docs script. | ||
|
||
v2.2.0 - 2021-04-23 | ||
=================== | ||
- Multi-versioned documentation. | ||
- Auto-reconnect to MQTT server on disconnection. #207 @fipwmaqzufheoxq92ebc | ||
|
||
v2.1.8 - 2021-04-21 | ||
=================== | ||
- Fix broken hcsr04 sensor that I (@flyte) broke when rewriting for v2.x. #211 @r00tat | ||
- Fix inversion not taken into account when publishing initial digital output value. #203 @r00tat | ||
- Fix #198 where Future wasn't created from the right thread. #205 @fipwmaqzufheoxq92ebc | ||
|
||
v2.1.7 - 2021-04-01 | ||
=================== | ||
- Add install_requirements config option to skip installing missing module requirements. #199 | ||
|
||
v2.1.6 - 2021-04-01 | ||
=================== | ||
- Add ADS1x15 module. #200 @r00tat | ||
|
||
v2.1.5 - 2021-04-01 | ||
=================== | ||
- Update PyYAML version to 5.4 CVE-2020-14343 | ||
|
||
v2.1.4 - 2021-03-26 | ||
=================== | ||
- Add version to 'model' field of HA Discovery config payload. #196 @pbill2003 | ||
|
||
v2.1.3 - 2021-03-26 | ||
=================== | ||
- Add missing `spi_device` config schema entry for MCP3008 sensor module. #194 | ||
|
||
v2.1.2 - 2021-03-24 | ||
=================== | ||
- Remove config validation that checks usage of the same numbered pin used twice. #191 | ||
|
||
v2.1.1 - 2021-03-16 | ||
=================== | ||
- Fix bodged BH1750 sensor value reading code. #189 | ||
|
||
v2.1.0 - 2021-03-11 | ||
=================== | ||
- Add *OPT-IN* error reporting to sentry. Bumps minor version because it adds a config entry. | ||
|
||
v2.0.1 - 2021-03-11 | ||
=================== | ||
- Fix bug where sensor config was retrieved from the wrong place https://github.com/flyte/mqtt-io/issues/185 | ||
|
||
v2.0.0 - 2021-03-07 | ||
=================== | ||
- Rewrite core with asyncio | ||
- Change MQTT client to asyncio-mqtt | ||
- Add better validation for config | ||
- [Move some config values around](https://flyte.github.io/mqtt-io/#/config/v2-changes), but mostly stay compatible with existing configs | ||
- Add MCP23017 module | ||
- [Rework interrupts](https://flyte.github.io/mqtt-io/#/config/interrupts) to allow for pins to be interrupts for other pins on other modules | ||
- Enable extra values to be added to the [Home Assistant Discovery](https://flyte.github.io/mqtt-io/#/config/ha_discovery) config payloads | ||
- Rename package from pi-mqtt-gpio to mqtt-io since it's not just for Raspberry Pi, and not just for GPIO | ||
- Create generated documentation for the config file options ("Section Reference" section of [the documentation](https://flyte.github.io/mqtt-io/#/)) | ||
- Tons more stuff, too varied to list here. It's safe to say that almost everything has been improved (hopefully) in some way | ||
|
||
v0.5.3 - 2020-10-17 | ||
=================== | ||
- Add PCF8575 support. #121 | ||
- Add MCP3008 sensor support. #115 | ||
- Add AHT20 sensor support. #122 | ||
- Add BME280 sensor support. #132 | ||
- Install requirements using current Python executable. #134 | ||
- Add sensors to HASS discovery. #133 | ||
- Add option to publish output value on startup. #125 | ||
|
||
v0.5.2 - 2020-10-17 | ||
=================== | ||
- Update PyYAML to a version that doesn't suffer from CVE-2020-1747 vulnerability. | ||
- Add 'stream' IO. | ||
|
||
v0.3.1 - 2019-03-10 | ||
=================== | ||
- Pin safe version of PyYAML in requirements. | ||
|
||
v0.3.0 - 2019-03-10 | ||
=================== | ||
- Merge PR from @BenjiU which implements a new sensor interface. #52 | ||
|
||
v0.0.12 - 2017-07-26 | ||
==================== | ||
- Add cleanup function to modules which are called before program exit. #16 | ||
|
||
v0.0.11 - 2017-07-26 | ||
==================== | ||
- Decode received MQTT message payload as utf8 before trying to match with on/off payload values. #14 | ||
|
||
v0.0.10 - 2017-07-26 | ||
==================== | ||
- Fix bug with selection of pullup value in raspberrypi module when none set. #15 | ||
|
||
v0.0.9 - 2017-07-26 | ||
=================== | ||
- Successful fix for bug with loading config schema. #13 | ||
|
||
v0.0.8 - 2017-07-26 | ||
=================== | ||
- Failed fix for bug with loading config schema. #13 | ||
|
||
v0.0.7 - 2017-07-17 | ||
=================== | ||
|
||
- Implement `set_on_ms` and `set_off_ms` topic suffixes. Closes #10 | ||
|
||
v0.0.6 - 2017-07-17 | ||
=================== | ||
|
||
- Large refactor and tidyup. | ||
- Implement config validation using cerberus. | ||
- Enable configuration of MQTT protocol. Closes #11. | ||
- Deploy Python Wheel as well as source package. | ||
- Add some (not exhaustive) tests. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,177 @@ | ||
<!-- | ||
*************************************************************************************** | ||
DO NOT EDIT README.md DIRECTLY, IT'S GENERATED FROM README.md.j2 USING generate_docs.py | ||
*************************************************************************************** | ||
--> | ||
|
||
# MQTT IO | ||
|
||
_Documentation version: `2.5.0`_ | ||
|
||
[![Discord](https://img.shields.io/discord/713749043662290974.svg?label=Chat%20on%20Discord&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/gWyV9W4) | ||
|
||
Exposes general purpose inputs and outputs (GPIO), hardware sensors and serial devices to an MQTT server. Ideal for single-board computers such as the Raspberry Pi. | ||
|
||
## Supported Hardware | ||
|
||
Hardware support is provided by specific GPIO, Sensor and Stream modules. It's easy to add support for new hardware and the list is growing fast. | ||
|
||
### GPIO Modules | ||
|
||
- Beaglebone GPIO (`beaglebone`) | ||
- DockerPi 4 Channel Relay GPIO (`dockerpi`) | ||
- Linux Kernel 4.8+ libgpiod (`gpiod`) | ||
- GPIO Zero (`gpiozero`) | ||
- MCP23017 IO expander (`mcp23017`) | ||
- Orange Pi GPIO (`orangepi`) | ||
- PCF8574 IO expander (`pcf8574`) | ||
- PCF8575 IO expander (`pcf8575`) | ||
- PiFace Digital IO 2 (`piface2`) | ||
- Raspberry Pi GPIO (`raspberrypi`) | ||
- Sunxi Board (`sunxi`) | ||
|
||
### Sensors | ||
|
||
- ADS1x15 analog to digital converters (`ads1x15`) | ||
- ADXL345 Digital Accelerometer Sensor | ||
|
||
Mandatory: | ||
- chip_addr | ||
|
||
Optional: | ||
- output_g (set True if output in g). default:m*s² | ||
|
||
Output: | ||
- x (in m*s²) | ||
- y (in m*s²) | ||
- z (in m*s²) (`adxl345`) | ||
- AHT20 temperature and humidity sensor (`aht20`) | ||
- BH1750 light level sensor (`bh1750`) | ||
- BME280 temperature, humidity and pressure sensor (`bme280`) | ||
- BME680 temperature, humidity and pressure sensor (`bme680`) | ||
- BMP085 temperature and pressure sensor (`bmp085`) | ||
- DHT11/DHT22/AM2302 temperature and humidity sensors (`dht22`) | ||
- DS18S20/DS1822/DS18B20/DS1825/DS28EA00/MAX31850K temperature sensors (`ds18b`) | ||
- ENS160 Air Quality Sensor | ||
|
||
sensor_modules: | ||
- name: ens160 | ||
module: ens160 | ||
chip_addr: 0x53 | ||
temperature_compensation: 25 | ||
humidity_compensation: 50 | ||
|
||
sensor_inputs: | ||
- name: air_quality | ||
module: ens160 | ||
interval: 10 | ||
digits: 0 | ||
type: aqi | ||
|
||
- name: volatile_organic_compounds | ||
module: ens160 | ||
interval: 10 | ||
digits: 0 | ||
type: tvoc | ||
|
||
- name: eco2 | ||
module: ens160 | ||
interval: 10 | ||
digits: 0 | ||
type: eco2 (`ens160`) | ||
- HCSR04 ultrasonic range sensor (connected to the Raspberry Pi on-board GPIO) (`hcsr04`) | ||
- INA219 DC current sensor (`ina219`) | ||
- LM75 temperature sensor (`lm75`) | ||
- MCP3008 analog to digital converter (`mcp3008`) | ||
- MCP3xxx analog to digital converter via GPIOZero (`mcp3xxx`) | ||
- MH-Z19 NDIR CO2 sensor (`mhz19`) | ||
- PMS5003 Particulate Matter Sensor (`pms5003`) | ||
- SHT4x temperature and humidity sensor (`sht4x`) | ||
- YF-S201 Flow Rate Sensor | ||
|
||
Example configuration: | ||
|
||
sensor_modules: | ||
- name: yfs201 | ||
module: yfs201 | ||
|
||
sensor_inputs: | ||
- name: flow_rate1 | ||
module: yfs201 | ||
pin: 0 | ||
digits: 0 | ||
interval: 10 (`yfs201`) | ||
|
||
### Streams | ||
|
||
- PN532 NFC/RFID reader (`pn532`) | ||
- Serial port (`serial`) | ||
|
||
## Installation | ||
|
||
_Requires Python 3.6+_ | ||
|
||
`pip3 install mqtt-io` | ||
|
||
## Execution | ||
|
||
`python3 -m mqtt_io config.yml` | ||
|
||
## Configuration Example | ||
|
||
Configuration is written in a YAML file which is passed as an argument to the server on startup. | ||
|
||
|
||
|
||
The following example will configure the software to do the following: | ||
|
||
- Publish MQTT messages on the `home/input/doorbell` topic when the doorbell is pushed and released. | ||
- Subscribe to the MQTT topic `home/output/port_light/set` and change the output when messages are received on it. | ||
- Periodically read the value of the LM75 sensor and publish it on the MQTT topic `home/sensor/porch_temperature`. | ||
- Publish any data received on the `/dev/ttyUSB0` serial port to the MQTT topic `home/serial/alarm_system`. | ||
- Subscribe to the MQTT topic `home/serial/alarm_system/send` and send any data received on that topic to the serial port. | ||
|
||
```yaml | ||
mqtt: | ||
host: localhost | ||
topic_prefix: home | ||
|
||
# GPIO | ||
gpio_modules: | ||
# Use the Raspberry Pi built-in GPIO | ||
- name: rpi | ||
module: raspberrypi | ||
|
||
digital_inputs: | ||
# Pin 0 is an input connected to a doorbell button | ||
- name: doorbell | ||
module: rpi | ||
pin: 0 | ||
|
||
digital_outputs: | ||
# Pin 1 is an output connected to a light | ||
- name: porch_light | ||
module: rpi | ||
pin: 1 | ||
|
||
# Sensors | ||
sensor_modules: | ||
# An LM75 sensor attached to the I2C bus | ||
- name: lm75_sensor | ||
module: lm75 | ||
i2c_bus_num: 1 | ||
chip_addr: 0x48 | ||
|
||
sensor_inputs: | ||
# The configuration of the specific sensor value to use (LM75 only has temperature) | ||
- name: porch_temperature | ||
module: lm75_sensor | ||
|
||
# Streams | ||
stream_modules: | ||
# A serial port to communicate with the house alarm system | ||
- name: alarm_system | ||
module: serial | ||
device: /dev/ttyUSB0 | ||
baud: 9600 | ||
``` |
Oops, something went wrong.