Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/david-lor/mqtt2notifysend

🌉Bridge between MQTT and 🖥️Freedesktop.org Notify-Send desktop notifications (Ubuntu & other distros)🐧 - Send notifications from MQTT directly to your desktop!
https://github.com/david-lor/mqtt2notifysend

debian desktop-notifications freedesktop freedesktop-notifications linux linux-desktop mqtt notification notifications notify-send ubuntu

Last synced: about 1 month ago
JSON representation

🌉Bridge between MQTT and 🖥️Freedesktop.org Notify-Send desktop notifications (Ubuntu & other distros)🐧 - Send notifications from MQTT directly to your desktop!

Awesome Lists containing this project

README

        

# MQTT2NotifySend

🌉Bridge between MQTT and 🖥️Freedesktop.org Notify-Send desktop notifications (Ubuntu & other distros)🐧, to send notifications to your desktop over MQTT.

## Getting started

```bash
# Dependencies are: libnotify-bin, mosquitto-clients, jq, coreutils
sudo apt install libnotify-bin mosquitto-clients jq coreutils

# Download the script & set as executable (optional)
curl -O https://raw.githubusercontent.com/David-Lor/MQTT2NotifySend/master/mqtt2notifysend.sh
chmod u+x mqtt2notifysend.sh

# Run!
./mqtt2notifysend.sh -h localhost -t notifications

# Send a message to the broker from other terminal window
mosquitto_pub -h localhost -t notifications -m "{\"title\": \"Custom notification\", \"text\": \"Hello world\"}"
```

- Script arguments for MQTT connection are the same used with the `mosquitto_sub` command (run `./mqt2notifysend.sh --help` to know more).
- The script expects a JSON string as payload, with the following tags:
- `title`: notification title (optional)
- `text`: notification body (required)
- `level`: notification urgency level (optional; one of: `low`, `normal`, `critical`; default: `normal`)
- `iconB64`: notification icon image, encoded as Base64 string (optional)

### Environment variables

Certain settings can be tweaked using the following environment variables:

- `RECONNECTION_DELAY`: time to wait between connection attempts, in seconds (default: `5`)
- `DEFAULT_TITLE`: default title for notifications sent without title (default: `MQTT2NotifySend`)
- `DEFAULT_LEVEL`: default notify-send level for notifications sent without level (default: `normal`)
- `LOG_ENABLE`: if `true` or `1`, enable script logs (default: `false`)
- `ICON_BASE_PATH`: where the notification icon file is downloaded, for each notification. This is an absolute/relative path of the file, used as prefix (default: `/tmp/mqtt2notifysend-icon`)
- `ICON_DELETE_DELAY`: seconds to wait between the icon is decoded and deleted. Cannot be zero, as notifysend command may delay a bit and the icon may be removed when the notification pops up, not showing the icon (default: `5`)

Usage:

```bash
LOG_ENABLE=true RECONNECTION_DELAY=1 DEFAULT_TITLE="Very important notification" DEFAULT_LEVEL=critical \
bash mqtt2notifysend.sh -h localhost -t notifications
```

## Changelog

- 0.3.0 - Support sending icon for notifications, as base64-encoded string
- 0.2.1 - Allow to disable logs; logs disabled by default; amends on script syntax; describe environment variables on README
- 0.2.0 - Initial new Bash version from scratch
- _v0.1.0 - (Deprecated) Initial new version from scratch (branch [python/develop](https://github.com/David-Lor/MQTT2NotifySend/tree/python/develop))_
- _v0.1 - (Deprecated) Initial version (branch [python/master](https://github.com/David-Lor/MQTT2NotifySend/tree/python/master))_

## TODO

- Support non-JSON payloads (only text and title-text split by delimiter)
- Identify when mosquitto_sub fails due to connection error or user input (args) error
- Validate dependencies installed before connecting
- Support icons sent by URL