From 79d9cb9d3cd15cda01a317b6913d4dfd8f1ad702 Mon Sep 17 00:00:00 2001 From: "Community Hass.io Add-ons Bot" Date: Wed, 26 Sep 2018 20:12:06 +0000 Subject: [PATCH] :tada: Release of add-on MQTT Server & Web client 0.1.0 --- README.md | 23 ++++++++++ mqtt/CHANGELOG.md | 1 + mqtt/README.md | 51 ++++++++++++++++++++++ mqtt/config.json | 109 ++++++++++++++++++++++++++++++++++++++++++++++ mqtt/icon.png | Bin 0 -> 15147 bytes mqtt/logo.png | Bin 0 -> 15147 bytes 6 files changed, 184 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 4deb704d..0a9add8d 100644 --- a/README.md +++ b/README.md @@ -233,6 +233,19 @@ Generate certificate to control Lutron Caseta bridge locally [:books: Lutron Certificate add-on documentation][addon-doc-lutron-cert] +### ✓ [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] + ### ✓ [Node-RED][addon-node-red] ![Latest Version][node-red-version-shield] @@ -458,6 +471,7 @@ on the correct GitHub repository matching the add-on. - [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: Lutron Certificate][lutron-cert-issue] +- [Open an issue for the add-on: MQTT Server & Web client][mqtt-issue] - [Open an issue for the add-on: Node-RED][node-red-issue] - [Open an issue for the add-on: Octobox][octobox-issue] - [Open an issue for the add-on: Pi-hole][pi-hole-issue] @@ -656,6 +670,15 @@ SOFTWARE. [lutron-cert-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg [lutron-cert-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg [lutron-cert-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-mqtt]: https://github.com/hassio-addons/addon-mqtt/tree/v0.1.0 +[addon-doc-mqtt]: https://github.com/hassio-addons/addon-mqtt/blob/v0.1.0/README.md +[mqtt-issue]: https://github.com/hassio-addons/addon-mqtt/issues +[mqtt-version-shield]: https://img.shields.io/badge/version-v0.1.0-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-node-red]: https://github.com/hassio-addons/addon-node-red/tree/v0.7.0 [addon-doc-node-red]: https://github.com/hassio-addons/addon-node-red/blob/v0.7.0/README.md [node-red-issue]: https://github.com/hassio-addons/addon-node-red/issues diff --git a/mqtt/CHANGELOG.md b/mqtt/CHANGELOG.md new file mode 100644 index 00000000..ececd805 --- /dev/null +++ b/mqtt/CHANGELOG.md @@ -0,0 +1 @@ +🎉 Initial release! \ No newline at end of file diff --git a/mqtt/README.md b/mqtt/README.md new file mode 100644 index 00000000..e8254d44 --- /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][hivemq]'s +web-based MQTT client, and the powerful [Mosquitto][mosquitto] +broker (MQTT Server). With this, you can host your own MQTT server, +and inspect/publish messages using the built-in web client! + +[Click here for the full documentation][docs] + +![Screenshot][screenshot] + +## WARNING! THIS IS A BETA VERSION! + +This Hass.io Add-ons repository contains beta releases of add-ons. + +- 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. + +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/v0.1.0/README.md +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/community-hass-io-add-ons-mqtt-server-web-client/70376 +[hivemq]: https://www.hivemq.com/ +[maintenance-shield]: https://img.shields.io/maintenance/yes/2018.svg +[mosquitto]: https://mosquitto.org/ +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +[release-shield]: https://img.shields.io/badge/version-v0.1.0-blue.svg +[release]: https://github.com/hassio-addons/addon-mqtt/tree/v0.1.0 +[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 00000000..cf09b600 --- /dev/null +++ b/mqtt/config.json @@ -0,0 +1,109 @@ +{ + "name": "MQTT Server & Web client", + "version": "0.1.0", + "slug": "mqtt", + "timeout": 10, + "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", + "docker_api": false, + "hassio_api": true, + "hassio_role": "default", + "homeassistant_api": false, + "host_network": false, + "host_ipc": false, + "host_dbus": false, + "host_pid": false, + "auto_uart": false, + "privileged": [], + "full_access": false, + "apparmor": false, + "audio": false, + "gpio": false, + "devicetree": false, + "stdin": false, + "legacy": 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": false, + "enable_mqtt": false, + "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..539d37bc4c052d39c9da38e49b52f73441daa439 GIT binary patch literal 15147 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 literal 0 HcmV?d00001 diff --git a/mqtt/logo.png b/mqtt/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..539d37bc4c052d39c9da38e49b52f73441daa439 GIT binary patch literal 15147 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 literal 0 HcmV?d00001