From 2731d01caf9e5d3caea8a8d7b68199f1b65b78dd Mon Sep 17 00:00:00 2001 From: "Community Hass.io Add-ons Bot" Date: Sat, 22 Sep 2018 19:48:32 +0000 Subject: [PATCH] :arrow_up: Updating add-on MQTT Server & Web client to ca75625 --- README.md | 23 ++++++++++++ mqtt/CHANGELOG.md | 3 ++ mqtt/README.md | 51 +++++++++++++++++++++++++ mqtt/config.json | 94 ++++++++++++++++++++++++++++++++++++++++++++++ mqtt/icon.png | Bin 0 -> 5999 bytes mqtt/logo.png | Bin 0 -> 13169 bytes 6 files changed, 171 insertions(+) create mode 100644 mqtt/CHANGELOG.md create mode 100644 mqtt/README.md create mode 100644 mqtt/config.json create mode 100644 mqtt/icon.png create mode 100644 mqtt/logo.png diff --git a/README.md b/README.md index 8d995bc7a..194c874e1 100644 --- a/README.md +++ b/README.md @@ -236,6 +236,19 @@ Automatically convert your existing UI to the new Lovelace UI [:books: Lovelace Migration add-on documentation][addon-doc-lovelace-migration] +### ✓ [MQTT Server & Web client][addon-mqtt] + +![Latest Version][mqtt-version-shield] +![Supports armhf Architecture][mqtt-armhf-shield] +![Supports aarch64 Architecture][mqtt-aarch64-shield] +![Supports amd64 Architecture][mqtt-amd64-shield] +![Supports i386 Architecture][mqtt-i386-shield] +![Docker Pulls][mqtt-pulls-shield] + +Mosquitto MQTT Server bundled with Hivemq's web client + +[:books: MQTT Server & Web client add-on documentation][addon-doc-mqtt] + ### ✓ [Network UPS Tools][addon-nut] ![Latest Version][nut-version-shield] @@ -466,6 +479,7 @@ on the correct GitHub repository matching the add-on. - [Open an issue for the add-on: Jupyter][jupyter-issue] - [Open an issue for the add-on: Log Viewer][log-viewer-issue] - [Open an issue for the add-on: Lovelace Migration][lovelace-migration-issue] +- [Open an issue for the add-on: MQTT Server & Web client][mqtt-issue] - [Open an issue for the add-on: Network UPS Tools][nut-issue] - [Open an issue for the add-on: Node-RED][node-red-issue] - [Open an issue for the add-on: Octobox][octobox-issue] @@ -665,6 +679,15 @@ SOFTWARE. [lovelace-migration-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg [lovelace-migration-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg [lovelace-migration-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-mqtt]: https://github.com/hassio-addons/addon-mqtt/tree/ca75625 +[addon-doc-mqtt]: https://github.com/hassio-addons/addon-mqtt/blob/ca75625/README.md +[mqtt-issue]: https://github.com/hassio-addons/addon-mqtt/issues +[mqtt-version-shield]: https://img.shields.io/badge/version-ca75625-blue.svg +[mqtt-pulls-shield]: https://img.shields.io/docker/pulls/hassioaddons/mqtt.svg +[mqtt-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[mqtt-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[mqtt-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[mqtt-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg [addon-nut]: https://github.com/hassio-addons/addon-nut/tree/a49c6dd [addon-doc-nut]: https://github.com/hassio-addons/addon-nut/blob/a49c6dd/README.md [nut-issue]: https://github.com/hassio-addons/addon-nut/issues diff --git a/mqtt/CHANGELOG.md b/mqtt/CHANGELOG.md new file mode 100644 index 000000000..b61c6f3fd --- /dev/null +++ b/mqtt/CHANGELOG.md @@ -0,0 +1,3 @@ +2018/09/22 19:38 UTC - [ca75625](https://github.com/hassio-addons/addon-mqtt/commit/ca75625c00dd12438c9fdbfa81dbfa8366e32cb2) by [@ludeeus](https://github.com/ludeeus) +> 👕Fixes shellcheck warnings + diff --git a/mqtt/README.md b/mqtt/README.md new file mode 100644 index 000000000..4a775cb6c --- /dev/null +++ b/mqtt/README.md @@ -0,0 +1,51 @@ +# Community Hass.io Add-ons: MQTT Server & Web client + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee] + +Mosquitto MQTT Server bundled with Hivemq's web client. + +## About + +This add-on combines the power of [Hivemq](https://www.hivemq.com/)'s web based MQTT client, +and the powerfull [Mosquitto](https://mosquitto.org/) broker. +With this you can host your broker, and inspect/publish messages in the Web client! + +[Click here for the full documentation][docs] + +![Screenshot][screenshot] + +## WARNING! THIS IS AN EDGE VERSION! + +This Hass.io Add-ons repository contains edge builds of add-ons. Edge builds +add-ons are based upon the latest development version. + +- They may not work at all. +- They might stop working at any time. +- They could have a negative impact on your system. + +This repository was created for: + +- Anybody willing to test. +- Anybody interested in trying out upcoming add-ons or add-on features. +- Developers. + +If you are more interested in stable releases of our add-ons: + + + +[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg +[buymeacoffee]: https://www.buymeacoffee.com/ludeeus +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[docs]: https://github.com/hassio-addons/addon-mqtt/blob/ca75625/README.md +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io +[maintenance-shield]: https://img.shields.io/maintenance/yes/2018.svg +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +[release-shield]: https://img.shields.io/badge/version-ca75625-blue.svg +[release]: https://github.com/hassio-addons/addon-mqtt/tree/ca75625 +[screenshot]: https://github.com/hassio-addons/addon-mqtt/raw/master/images/image.png \ No newline at end of file diff --git a/mqtt/config.json b/mqtt/config.json new file mode 100644 index 000000000..3345b3916 --- /dev/null +++ b/mqtt/config.json @@ -0,0 +1,94 @@ +{ + "name": "MQTT Server & Web client", + "version": "ca75625", + "slug": "mqtt", + "description": "Mosquitto MQTT Server bundled with Hivemq's web client", + "url": "https://github.com/hassio-addons/addon-mqtt/tree/master/README.md", + "webui": "https://[HOST]:[PORT:5713]", + "startup": "services", + "arch": [ + "aarch64", + "amd64", + "armhf", + "i386" + ], + "boot": "auto", + "hassio_api": true, + "homeassistant_api": false, + "host_network": false, + "ports": { + "5713/tcp": 5713, + "1884/tcp": 1884, + "1883/tcp": 1883, + "4884/tcp": 4884, + "4883/tcp": 4883 + }, + "map": [ + "ssl", + "config" + ], + "options": { + "log_level": "info", + "certfile": "fullchain.pem", + "keyfile": "privkey.pem", + "web": { + "enabled": true, + "username": "", + "password": "", + "ssl": true + }, + "broker": { + "enabled": true, + "enable_ws": true, + "enable_mqtt": true, + "enable_ws_ssl": true, + "enable_mqtt_ssl": true, + "allow_anonymous": false + }, + "mqttusers": [ + { + "username": "", + "password": "", + "readonly": true, + "topics": [ + "#" + ] + } + ] + }, + "schema": { + "log_level": "match(^(trace|debug|info|notice|warning|error|fatal)$)", + "certfile": "str", + "keyfile": "str", + "web": { + "enabled": "bool", + "username": "str", + "password": "str", + "ssl": "bool" + }, + "broker": { + "enabled": "bool", + "enable_ws": "bool", + "enable_mqtt": "bool", + "enable_ws_ssl": "bool", + "enable_mqtt_ssl": "bool", + "allow_anonymous": "bool" + }, + "mqttusers": [ + { + "username": "str", + "password": "str", + "readonly": "bool", + "topics": [ + "str" + ] + } + ], + "i_like_to_be_pwned": "bool?", + "leave_front_door_open": "bool?" + }, + "environment": { + "LOG_FORMAT": "{LEVEL}: {MESSAGE}" + }, + "image": "hassioaddons/mqtt" +} \ No newline at end of file diff --git a/mqtt/icon.png b/mqtt/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..46bed802b9e9b37313b16cc0246db71432a7d63e GIT binary patch literal 5999 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 literal 0 HcmV?d00001 diff --git a/mqtt/logo.png b/mqtt/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..dcc8d542e608060a81e390fd12f0e92536a06f60 GIT binary patch literal 13169 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 literal 0 HcmV?d00001