From 7ecaf11ef96eaf6785f942942389cde2fedd7d5e Mon Sep 17 00:00:00 2001 From: "Community Hass.io Add-ons Bot" Date: Fri, 23 Sep 2022 10:36:32 +0000 Subject: [PATCH] :tada: Release of add-on EMQX 0.1.0 --- README.md | 23 ++++++++ emqx/CHANGELOG.md | 3 ++ emqx/DOCS.md | 130 ++++++++++++++++++++++++++++++++++++++++++++++ emqx/README.md | 55 ++++++++++++++++++++ emqx/config.yaml | 27 ++++++++++ emqx/icon.png | Bin 0 -> 2468 bytes emqx/logo.png | Bin 0 -> 5522 bytes 7 files changed, 238 insertions(+) create mode 100644 emqx/CHANGELOG.md create mode 100644 emqx/DOCS.md create mode 100644 emqx/README.md create mode 100644 emqx/config.yaml create mode 100644 emqx/icon.png create mode 100644 emqx/logo.png diff --git a/README.md b/README.md index 6b2f3308..14d8eaa0 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,19 @@ Simple & Free Wiki Software [:books: Bookstack add-on documentation][addon-doc-bookstack] +### ✓ [EMQX][addon-emqx] + +![Latest Version][emqx-version-shield] +![Supports armhf Architecture][emqx-armhf-shield] +![Supports armv7 Architecture][emqx-armv7-shield] +![Supports aarch64 Architecture][emqx-aarch64-shield] +![Supports amd64 Architecture][emqx-amd64-shield] +![Supports i386 Architecture][emqx-i386-shield] + +The most scalable open-source MQTT broker for IoT. An alternative for the Mosquitto add-on + +[:books: EMQX add-on documentation][addon-doc-emqx] + ### ✓ [Example][addon-example] ![Latest Version][example-version-shield] @@ -604,6 +617,7 @@ on the correct GitHub repository matching the add-on. - [Open an issue for the add-on: AirSonos][airsonos-issue] - [Open an issue for the add-on: AppDaemon][appdaemon-issue] - [Open an issue for the add-on: Bookstack][bookstack-issue] +- [Open an issue for the add-on: EMQX][emqx-issue] - [Open an issue for the add-on: Example][example-issue] - [Open an issue for the add-on: FTP][ftp-issue] - [Open an issue for the add-on: Folding@home][foldingathome-issue] @@ -732,6 +746,15 @@ SOFTWARE. [bookstack-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg [bookstack-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg [bookstack-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-emqx]: https://github.com/hassio-addons/addon-emqx/tree/v0.1.0 +[addon-doc-emqx]: https://github.com/hassio-addons/addon-emqx/blob/v0.1.0/README.md +[emqx-issue]: https://github.com/hassio-addons/addon-emqx/issues +[emqx-version-shield]: https://img.shields.io/badge/version-v0.1.0-blue.svg +[emqx-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[emqx-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[emqx-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg +[emqx-armv7-shield]: https://img.shields.io/badge/armv7-no-red.svg +[emqx-i386-shield]: https://img.shields.io/badge/i386-no-red.svg [addon-example]: https://github.com/hassio-addons/addon-example/tree/v5.1.1 [addon-doc-example]: https://github.com/hassio-addons/addon-example/blob/v5.1.1/README.md [example-issue]: https://github.com/hassio-addons/addon-example/issues diff --git a/emqx/CHANGELOG.md b/emqx/CHANGELOG.md new file mode 100644 index 00000000..72095741 --- /dev/null +++ b/emqx/CHANGELOG.md @@ -0,0 +1,3 @@ +## What’s changed + +🎉 Initial add-on release! diff --git a/emqx/DOCS.md b/emqx/DOCS.md new file mode 100644 index 00000000..4edc3b8f --- /dev/null +++ b/emqx/DOCS.md @@ -0,0 +1,130 @@ +# Home Assistant Community Add-on: EMQX + +[EMQX][emqx] is an Open-source MQTT broker with a high-performance real-time +message processing engine, powering event streaming for IoT devices at massive +scale. As the most scalable MQTT broker, EMQX can help you connect any device, +at any scale (including your home). + +The [EMQX MQTT broker][emqx] is an advanced alternative to the Mosquitto MQTT +broker/add-on that is generally used in Home Assistant. It has a UI +to configure, manage, and debug your MQTT broker, clients, and traffic. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Click the Home Assistant My button below to open the add-on on your Home + Assistant instance. + + [![Open this add-on in your Home Assistant instance.][addon-badge]][addon] + +1. Click the "Install" button to install the add-on. +1. Start the "EMQX" add-on. +1. Check the logs of the "EMQX" to see if everything went well. +1. Open the Web UI. + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +env_vars: + - name: EMQX_NODE__NAME + value: "something@else.local" +``` + +**Note**: _This is just an example, don't copy and paste it! Create your own!_ + +### Option: `env_vars` + +This option allows you to tweak every aspect of EMQX by setting +configuration options using environment variables. See the example at the +start of this chapter to get an idea of how the configuration looks. + +For more information about using these variables, see the official EMQX +documentation: + + + +**Note**: _Only environment variables starting with `EMQX_` are accepted.\_ + +## Known issues and limitations + +- This add-on cannot run simultaneously with the Mosquitto add-on. + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2022 Franck Nijhof + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +[addon-badge]: https://my.home-assistant.io/badges/supervisor_addon.svg +[addon]: https://my.home-assistant.io/redirect/supervisor_addon/?addon=a0d7b954_emqx&repository_url=https%3A%2F%2Fgithub.com%2Fhassio-addons%2Frepository +[contributors]: https://github.com/hassio-addons/addon-emqx/graphs/contributors +[create-db]: https://github.com/hassio-addons/addon-influxdb/blob/main/influxdb/DOCS.md#integrating-into-home-assistant +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[emqx]: https://www.emqx.io/ +[forum]: https://community.home-assistant.io/?u=frenck +[frenck]: https://github.com/frenck +[influxdb-addon]: https://github.com/hassio-addons/addon-influxdb +[issue]: https://github.com/hassio-addons/addon-emqx/issues +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-emqx/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/emqx/README.md b/emqx/README.md new file mode 100644 index 00000000..59dd1b18 --- /dev/null +++ b/emqx/README.md @@ -0,0 +1,55 @@ +# Home Assistant Community Add-on: EMQX + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +The most scalable open-source MQTT broker for IoT, IIoT, and connected vehicles. + +## About + +[EMQX][emqx] is an Open-source MQTT broker with a high-performance real-time +message processing engine, powering event streaming for IoT devices at massive +scale. As the most scalable MQTT broker, EMQX can help you connect any device, +at any scale (including your home). + +The [EMQX MQTT broker][emqx] is an advanced alternative to the Mosquitto MQTT +broker/add-on that is generally used in Home Assistant. It has a UI +to configure, manage, and debug your MQTT broker, clients, and traffic. + +![EMQX in the Home Assistant Frontend][screenshot] + +## WARNING! THIS IS A BETA VERSION! + +This Home Assistant 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: + + + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[emqx]: https://www.emqx.io/ +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2022.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[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-emqx/tree/v0.1.0 +[screenshot]: https://github.com/hassio-addons/addon-emqx/raw/main/images/screenshot.png \ No newline at end of file diff --git a/emqx/config.yaml b/emqx/config.yaml new file mode 100644 index 00000000..2a8972a3 --- /dev/null +++ b/emqx/config.yaml @@ -0,0 +1,27 @@ +arch: +- aarch64 +- amd64 +codenotary: codenotary@frenck.dev +description: The most scalable open-source MQTT broker for IoT. An alternative for + the Mosquitto add-on +host_network: true +image: ghcr.io/hassio-addons/emqx/{arch} +ingress: true +ingress_port: 18083 +ingress_stream: true +init: false +map: +- ssl +name: EMQX +options: + env_vars: [] +panel_icon: mdi:pipe +panel_title: EMQX +schema: + env_vars: + - name: match(^EMQX_([A-Z0-9_])+$) + value: str +slug: emqx +startup: services +url: https://github.com/hassio-addons/addon-emqx +version: 0.1.0 diff --git a/emqx/icon.png b/emqx/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..420a912f5285f43576f0327e8c5d8820a7d934b0 GIT binary patch literal 2468 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 literal 0 HcmV?d00001