From 8fa3a11eb58810a7d0ece642455e372a570b5da3 Mon Sep 17 00:00:00 2001
From: joBr99 <29555657+joBr99@users.noreply.github.com>
Date: Sun, 19 Nov 2023 12:40:49 +0100
Subject: [PATCH] add initial dev version of ha addon
---
.github/dependabot.yaml | 7 +
.github/workflows/builder.yaml | 111 +
.github/workflows/lint.yaml | 41 +
LICENSE | 674 ++
nspanel-lovelace-ui/CHANGELOG.md | 5 +
nspanel-lovelace-ui/DOCS.md | 10 +
nspanel-lovelace-ui/Dockerfile | 12 +
nspanel-lovelace-ui/README.md | 14 +
nspanel-lovelace-ui/apparmor.txt | 57 +
nspanel-lovelace-ui/build.yaml | 14 +
nspanel-lovelace-ui/config.yaml | 20 +
nspanel-lovelace-ui/icon.png | Bin 0 -> 12448 bytes
nspanel-lovelace-ui/logo.png | Bin 0 -> 38152 bytes
.../rootfs/etc/services.d/mqtt-manager/finish | 15 +
.../rootfs/etc/services.d/mqtt-manager/run | 19 +
.../rootfs/usr/bin/mqtt-manager/config.yml | 36 +
.../rootfs/usr/bin/mqtt-manager/ha_cards.py | 253 +
.../rootfs/usr/bin/mqtt-manager/ha_colors.py | 72 +
.../rootfs/usr/bin/mqtt-manager/ha_control.py | 272 +
.../rootfs/usr/bin/mqtt-manager/ha_icons.py | 263 +
.../usr/bin/mqtt-manager/libs/helper.py | 58 +
.../bin/mqtt-manager/libs/home_assistant.py | 276 +
.../usr/bin/mqtt-manager/libs/icon_mapping.py | 6926 +++++++++++++++++
.../usr/bin/mqtt-manager/libs/localization.py | 50 +
.../usr/bin/mqtt-manager/libs/panel_cmd.py | 30 +
.../libs/translations/backend/af.json | 342 +
.../libs/translations/backend/ar.json | 328 +
.../libs/translations/backend/bg.json | 349 +
.../libs/translations/backend/bn.json | 1 +
.../libs/translations/backend/bs.json | 266 +
.../libs/translations/backend/ca.json | 349 +
.../libs/translations/backend/cs.json | 349 +
.../libs/translations/backend/cy.json | 327 +
.../libs/translations/backend/da.json | 349 +
.../libs/translations/backend/de.json | 349 +
.../libs/translations/backend/el.json | 343 +
.../libs/translations/backend/en-GB.json | 1 +
.../libs/translations/backend/en.json | 349 +
.../libs/translations/backend/eo.json | 3 +
.../libs/translations/backend/es.json | 349 +
.../libs/translations/backend/et.json | 343 +
.../libs/translations/backend/eu.json | 281 +
.../libs/translations/backend/fa.json | 335 +
.../libs/translations/backend/fi.json | 343 +
.../libs/translations/backend/fr.json | 349 +
.../libs/translations/backend/fy.json | 1 +
.../libs/translations/backend/gl.json | 1 +
.../libs/translations/backend/gsw.json | 299 +
.../libs/translations/backend/he.json | 349 +
.../libs/translations/backend/hi.json | 196 +
.../libs/translations/backend/hr.json | 343 +
.../libs/translations/backend/hu.json | 349 +
.../libs/translations/backend/hy.json | 343 +
.../libs/translations/backend/iba.json | 3 +
.../libs/translations/backend/id.json | 343 +
.../libs/translations/backend/is.json | 337 +
.../libs/translations/backend/it.json | 349 +
.../libs/translations/backend/ja.json | 288 +
.../libs/translations/backend/ka.json | 1 +
.../libs/translations/backend/ko.json | 349 +
.../libs/translations/backend/lb.json | 349 +
.../libs/translations/backend/lt.json | 196 +
.../libs/translations/backend/lv.json | 343 +
.../libs/translations/backend/nb.json | 343 +
.../libs/translations/backend/nl.json | 349 +
.../libs/translations/backend/nn.json | 343 +
.../libs/translations/backend/no.json | 127 +
.../libs/translations/backend/pl.json | 349 +
.../libs/translations/backend/pt-BR.json | 349 +
.../libs/translations/backend/pt.json | 349 +
.../libs/translations/backend/ro.json | 343 +
.../libs/translations/backend/ru.json | 349 +
.../libs/translations/backend/sk.json | 343 +
.../libs/translations/backend/sl.json | 349 +
.../libs/translations/backend/sr-Latn.json | 32 +
.../libs/translations/backend/sr.json | 39 +
.../libs/translations/backend/sv.json | 349 +
.../libs/translations/backend/ta.json | 266 +
.../libs/translations/backend/te.json | 315 +
.../libs/translations/backend/th.json | 348 +
.../libs/translations/backend/tr.json | 343 +
.../libs/translations/backend/uk.json | 349 +
.../libs/translations/backend/ur.json | 3 +
.../libs/translations/backend/vi.json | 342 +
.../libs/translations/backend/zh-Hans.json | 349 +
.../libs/translations/backend/zh-Hant.json | 349 +
.../libs/translations/frontend/af.json | 1595 ++++
.../libs/translations/frontend/ar.json | 3704 +++++++++
.../libs/translations/frontend/bg.json | 3999 ++++++++++
.../libs/translations/frontend/bn.json | 434 ++
.../libs/translations/frontend/bs.json | 121 +
.../libs/translations/frontend/ca.json | 4673 +++++++++++
.../libs/translations/frontend/cs.json | 4662 +++++++++++
.../libs/translations/frontend/cy.json | 1284 +++
.../libs/translations/frontend/da.json | 4632 +++++++++++
.../libs/translations/frontend/de.json | 4673 +++++++++++
.../libs/translations/frontend/el.json | 4673 +++++++++++
.../libs/translations/frontend/en-GB.json | 107 +
.../libs/translations/frontend/en.json | 4673 +++++++++++
.../libs/translations/frontend/eo.json | 498 ++
.../libs/translations/frontend/es.json | 4672 +++++++++++
.../libs/translations/frontend/et.json | 4673 +++++++++++
.../libs/translations/frontend/eu.json | 656 ++
.../libs/translations/frontend/fa.json | 2171 ++++++
.../libs/translations/frontend/fi.json | 4647 +++++++++++
.../libs/translations/frontend/fr.json | 4662 +++++++++++
.../libs/translations/frontend/fy.json | 492 ++
.../libs/translations/frontend/gl.json | 1174 +++
.../libs/translations/frontend/gsw.json | 340 +
.../libs/translations/frontend/he.json | 4662 +++++++++++
.../libs/translations/frontend/hi.json | 390 +
.../libs/translations/frontend/hr.json | 1486 ++++
.../libs/translations/frontend/hu.json | 4668 +++++++++++
.../libs/translations/frontend/hy.json | 1090 +++
.../libs/translations/frontend/id.json | 4628 +++++++++++
.../libs/translations/frontend/is.json | 3239 ++++++++
.../libs/translations/frontend/it.json | 4662 +++++++++++
.../libs/translations/frontend/ja.json | 4668 +++++++++++
.../libs/translations/frontend/ka.json | 77 +
.../libs/translations/frontend/ko.json | 4659 +++++++++++
.../libs/translations/frontend/lb.json | 3584 +++++++++
.../libs/translations/frontend/lt.json | 2577 ++++++
.../libs/translations/frontend/lv.json | 2042 +++++
.../libs/translations/frontend/nb.json | 4673 +++++++++++
.../libs/translations/frontend/nl.json | 4656 +++++++++++
.../libs/translations/frontend/nn.json | 2303 ++++++
.../libs/translations/frontend/pl.json | 4662 +++++++++++
.../libs/translations/frontend/pt-BR.json | 4650 +++++++++++
.../libs/translations/frontend/pt.json | 4653 +++++++++++
.../libs/translations/frontend/ro.json | 3667 +++++++++
.../libs/translations/frontend/ru.json | 4673 +++++++++++
.../libs/translations/frontend/sk.json | 3954 ++++++++++
.../libs/translations/frontend/sl.json | 4232 ++++++++++
.../libs/translations/frontend/sr-Latn.json | 799 ++
.../libs/translations/frontend/sr.json | 559 ++
.../libs/translations/frontend/sv.json | 4662 +++++++++++
.../libs/translations/frontend/ta.json | 94 +
.../libs/translations/frontend/te.json | 400 +
.../libs/translations/frontend/th.json | 1426 ++++
.../libs/translations/frontend/tr.json | 4668 +++++++++++
.../libs/translations/frontend/uk.json | 4549 +++++++++++
.../libs/translations/frontend/ur.json | 73 +
.../libs/translations/frontend/vi.json | 2312 ++++++
.../libs/translations/frontend/zh-Hans.json | 4662 +++++++++++
.../libs/translations/frontend/zh-Hant.json | 4668 +++++++++++
.../rootfs/usr/bin/mqtt-manager/main.py | 112 +
.../rootfs/usr/bin/mqtt-manager/panel.py | 157 +
.../usr/bin/mqtt-manager/panel_cards.py | 47 +
.../usr/bin/mqtt-manager/requirements.txt | 8 +
.../rootfs/usr/bin/mqtt-manager/run.sh | 10 +
nspanel-lovelace-ui/translations/en.yaml | 4 +
repository.yaml | 4 +
152 files changed, 203040 insertions(+)
create mode 100644 .github/dependabot.yaml
create mode 100644 .github/workflows/builder.yaml
create mode 100644 .github/workflows/lint.yaml
create mode 100644 LICENSE
create mode 100644 nspanel-lovelace-ui/CHANGELOG.md
create mode 100644 nspanel-lovelace-ui/DOCS.md
create mode 100644 nspanel-lovelace-ui/Dockerfile
create mode 100644 nspanel-lovelace-ui/README.md
create mode 100644 nspanel-lovelace-ui/apparmor.txt
create mode 100644 nspanel-lovelace-ui/build.yaml
create mode 100644 nspanel-lovelace-ui/config.yaml
create mode 100644 nspanel-lovelace-ui/icon.png
create mode 100644 nspanel-lovelace-ui/logo.png
create mode 100644 nspanel-lovelace-ui/rootfs/etc/services.d/mqtt-manager/finish
create mode 100644 nspanel-lovelace-ui/rootfs/etc/services.d/mqtt-manager/run
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/config.yml
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/ha_cards.py
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/ha_colors.py
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/ha_control.py
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/ha_icons.py
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/helper.py
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/home_assistant.py
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/icon_mapping.py
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/localization.py
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/panel_cmd.py
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/af.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/ar.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/bg.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/bn.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/bs.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/ca.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/cs.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/cy.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/da.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/de.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/el.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/en-GB.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/en.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/eo.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/es.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/et.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/eu.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/fa.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/fi.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/fr.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/fy.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/gl.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/gsw.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/he.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/hi.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/hr.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/hu.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/hy.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/iba.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/id.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/is.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/it.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/ja.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/ka.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/ko.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/lb.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/lt.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/lv.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/nb.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/nl.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/nn.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/no.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/pl.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/pt-BR.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/pt.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/ro.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/ru.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/sk.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/sl.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/sr-Latn.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/sr.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/sv.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/ta.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/te.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/th.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/tr.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/uk.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/ur.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/vi.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/zh-Hans.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/backend/zh-Hant.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/af.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/ar.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/bg.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/bn.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/bs.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/ca.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/cs.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/cy.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/da.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/de.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/el.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/en-GB.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/en.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/eo.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/es.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/et.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/eu.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/fa.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/fi.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/fr.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/fy.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/gl.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/gsw.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/he.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/hi.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/hr.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/hu.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/hy.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/id.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/is.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/it.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/ja.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/ka.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/ko.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/lb.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/lt.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/lv.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/nb.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/nl.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/nn.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/pl.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/pt-BR.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/pt.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/ro.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/ru.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/sk.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/sl.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/sr-Latn.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/sr.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/sv.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/ta.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/te.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/th.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/tr.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/uk.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/ur.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/vi.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/zh-Hans.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/libs/translations/frontend/zh-Hant.json
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/main.py
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/panel.py
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/panel_cards.py
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/requirements.txt
create mode 100644 nspanel-lovelace-ui/rootfs/usr/bin/mqtt-manager/run.sh
create mode 100644 nspanel-lovelace-ui/translations/en.yaml
create mode 100644 repository.yaml
diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
new file mode 100644
index 00000000..83b26ea5
--- /dev/null
+++ b/.github/dependabot.yaml
@@ -0,0 +1,7 @@
+version: 2
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: weekly
+ time: "06:00"
diff --git a/.github/workflows/builder.yaml b/.github/workflows/builder.yaml
new file mode 100644
index 00000000..136ee12b
--- /dev/null
+++ b/.github/workflows/builder.yaml
@@ -0,0 +1,111 @@
+name: Builder
+
+env:
+ BUILD_ARGS: "--test"
+ MONITORED_FILES: "build.yaml config.yaml Dockerfile rootfs"
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+
+jobs:
+ init:
+ runs-on: ubuntu-latest
+ name: Initialize builds
+ outputs:
+ changed_addons: ${{ steps.changed_addons.outputs.addons }}
+ changed: ${{ steps.changed_addons.outputs.changed }}
+ steps:
+ - name: Check out the repository
+ uses: actions/checkout@v4.1.1
+
+ - name: Get changed files
+ id: changed_files
+ uses: jitterbit/get-changed-files@v1
+
+ - name: Find add-on directories
+ id: addons
+ uses: home-assistant/actions/helpers/find-addons@master
+
+ - name: Get changed add-ons
+ id: changed_addons
+ run: |
+ declare -a changed_addons
+ for addon in ${{ steps.addons.outputs.addons }}; do
+ if [[ "${{ steps.changed_files.outputs.all }}" =~ $addon ]]; then
+ for file in ${{ env.MONITORED_FILES }}; do
+ if [[ "${{ steps.changed_files.outputs.all }}" =~ $addon/$file ]]; then
+ if [[ ! "${changed_addons[@]}" =~ $addon ]]; then
+ changed_addons+=("\"${addon}\",");
+ fi
+ fi
+ done
+ fi
+ done
+
+ changed=$(echo ${changed_addons[@]} | rev | cut -c 2- | rev)
+
+ if [[ -n ${changed} ]]; then
+ echo "Changed add-ons: $changed";
+ echo "changed=true" >> $GITHUB_OUTPUT;
+ echo "addons=[$changed]" >> $GITHUB_OUTPUT;
+ else
+ echo "No add-on had any monitored files changed (${{ env.MONITORED_FILES }})";
+ fi
+ build:
+ needs: init
+ runs-on: ubuntu-latest
+ if: needs.init.outputs.changed == 'true'
+ name: Build ${{ matrix.arch }} ${{ matrix.addon }} add-on
+ strategy:
+ matrix:
+ addon: ${{ fromJson(needs.init.outputs.changed_addons) }}
+ arch: ["aarch64", "amd64", "armhf", "armv7", "i386"]
+
+ steps:
+ - name: Check out repository
+ uses: actions/checkout@v4.1.1
+
+ - name: Get information
+ id: info
+ uses: home-assistant/actions/helpers/info@master
+ with:
+ path: "./${{ matrix.addon }}"
+
+ - name: Check if add-on should be built
+ id: check
+ run: |
+ if [[ "${{ steps.info.outputs.architectures }}" =~ ${{ matrix.arch }} ]]; then
+ echo "build_arch=true" >> $GITHUB_OUTPUT;
+ echo "image=$(echo ${{ steps.info.outputs.image }} | cut -d'/' -f3)" >> $GITHUB_OUTPUT;
+ if [[ -z "${{ github.head_ref }}" ]] && [[ "${{ github.event_name }}" == "push" ]]; then
+ echo "BUILD_ARGS=" >> $GITHUB_ENV;
+ fi
+ else
+ echo "${{ matrix.arch }} is not a valid arch for ${{ matrix.addon }}, skipping build";
+ echo "build_arch=false" >> $GITHUB_OUTPUT;
+ fi
+
+ - name: Login to GitHub Container Registry
+ if: env.BUILD_ARGS != '--test'
+ uses: docker/login-action@v3.0.0
+ with:
+ registry: ghcr.io
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Build ${{ matrix.addon }} add-on
+ if: steps.check.outputs.build_arch == 'true'
+ uses: home-assistant/builder@2023.09.0
+ with:
+ args: |
+ ${{ env.BUILD_ARGS }} \
+ --${{ matrix.arch }} \
+ --target /data/${{ matrix.addon }} \
+ --image "${{ steps.check.outputs.image }}" \
+ --docker-hub "ghcr.io/${{ github.repository_owner }}" \
+ --addon
diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml
new file mode 100644
index 00000000..854eea6b
--- /dev/null
+++ b/.github/workflows/lint.yaml
@@ -0,0 +1,41 @@
+name: Lint
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+ schedule:
+ - cron: "0 0 * * *"
+
+jobs:
+ find:
+ name: Find add-ons
+ runs-on: ubuntu-latest
+ outputs:
+ addons: ${{ steps.addons.outputs.addons_list }}
+ steps:
+ - name: ⤵️ Check out code from GitHub
+ uses: actions/checkout@v4.1.1
+
+ - name: 🔍 Find add-on directories
+ id: addons
+ uses: home-assistant/actions/helpers/find-addons@master
+
+ lint:
+ name: Lint add-on ${{ matrix.path }}
+ runs-on: ubuntu-latest
+ needs: find
+ strategy:
+ matrix:
+ path: ${{ fromJson(needs.find.outputs.addons) }}
+ steps:
+ - name: ⤵️ Check out code from GitHub
+ uses: actions/checkout@v4.1.1
+
+ - name: 🚀 Run Home Assistant Add-on Lint
+ uses: frenck/action-addon-linter@v2.15
+ with:
+ path: "./${{ matrix.path }}"
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..e72bfdda
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
\ No newline at end of file
diff --git a/nspanel-lovelace-ui/CHANGELOG.md b/nspanel-lovelace-ui/CHANGELOG.md
new file mode 100644
index 00000000..b2aea5ee
--- /dev/null
+++ b/nspanel-lovelace-ui/CHANGELOG.md
@@ -0,0 +1,5 @@
+
+
+## 4.7.0
+
+- Initial test of addon
diff --git a/nspanel-lovelace-ui/DOCS.md b/nspanel-lovelace-ui/DOCS.md
new file mode 100644
index 00000000..b8432c3d
--- /dev/null
+++ b/nspanel-lovelace-ui/DOCS.md
@@ -0,0 +1,10 @@
+# Home Assistant Add-on: Example add-on
+
+## How to use
+
+This add-on really does nothing. It is just an example.
+
+When started it will print the configured message or "Hello world" in the log.
+
+It will also print "All done!" in `/share/example_addon_output.txt` to show
+simple example of the usage of `map` in addon config.
diff --git a/nspanel-lovelace-ui/Dockerfile b/nspanel-lovelace-ui/Dockerfile
new file mode 100644
index 00000000..9d1a983c
--- /dev/null
+++ b/nspanel-lovelace-ui/Dockerfile
@@ -0,0 +1,12 @@
+# https://developers.home-assistant.io/docs/add-ons/configuration#add-on-dockerfile
+ARG BUILD_FROM
+FROM $BUILD_FROM
+
+# Execute during the build of the image
+ARG TEMPIO_VERSION BUILD_ARCH
+RUN \
+ curl -sSLf -o /usr/bin/tempio \
+ "https://github.com/home-assistant/tempio/releases/download/${TEMPIO_VERSION}/tempio_${BUILD_ARCH}"
+
+# Copy root filesystem
+COPY rootfs /
diff --git a/nspanel-lovelace-ui/README.md b/nspanel-lovelace-ui/README.md
new file mode 100644
index 00000000..1d6997c1
--- /dev/null
+++ b/nspanel-lovelace-ui/README.md
@@ -0,0 +1,14 @@
+# Home Assistant Add-on: NSPanel Lovelace UI
+
+
+![Supports aarch64 Architecture][aarch64-shield]
+![Supports amd64 Architecture][amd64-shield]
+![Supports armhf Architecture][armhf-shield]
+![Supports armv7 Architecture][armv7-shield]
+![Supports i386 Architecture][i386-shield]
+
+[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
diff --git a/nspanel-lovelace-ui/apparmor.txt b/nspanel-lovelace-ui/apparmor.txt
new file mode 100644
index 00000000..e788a6c0
--- /dev/null
+++ b/nspanel-lovelace-ui/apparmor.txt
@@ -0,0 +1,57 @@
+#include
+
+profile example flags=(attach_disconnected,mediate_deleted) {
+ #include
+
+ # Capabilities
+ file,
+ signal (send) set=(kill,term,int,hup,cont),
+
+ # S6-Overlay
+ /init ix,
+ /bin/** ix,
+ /usr/bin/** ix,
+ /run/{s6,s6-rc*,service}/** ix,
+ /package/** ix,
+ /command/** ix,
+ /etc/services.d/** rwix,
+ /etc/cont-init.d/** rwix,
+ /etc/cont-finish.d/** rwix,
+ /run/{,**} rwk,
+ /dev/tty rw,
+
+ # Bashio
+ /usr/lib/bashio/** ix,
+ /tmp/** rwk,
+
+ # Access to options.json and other files within your addon
+ /data/** rw,
+
+ # Start new profile for service
+ /usr/bin/my_program cx -> my_program,
+
+ profile my_program flags=(attach_disconnected,mediate_deleted) {
+ #include
+
+ # Receive signals from S6-Overlay
+ signal (receive) peer=*_example,
+
+ # Access to options.json and other files within your addon
+ /data/** rw,
+
+ # Access to mapped volumes specified in config.json
+ /share/** rw,
+
+ # Access required for service functionality
+ # Note: List was built by doing the following:
+ # 1. Add what is obviously needed based on what is in the script
+ # 2. Add `complain` as a flag to this profile temporarily and run the addon
+ # 3. Review the audit log with `journalctl _TRANSPORT="audit" -g 'apparmor="ALLOWED"'` and add other access as needed
+ # Remember to remove the `complain` flag when you are done
+ /usr/bin/my_program r,
+ /bin/bash rix,
+ /bin/echo ix,
+ /etc/passwd r,
+ /dev/tty rw,
+ }
+}
\ No newline at end of file
diff --git a/nspanel-lovelace-ui/build.yaml b/nspanel-lovelace-ui/build.yaml
new file mode 100644
index 00000000..cdca3163
--- /dev/null
+++ b/nspanel-lovelace-ui/build.yaml
@@ -0,0 +1,14 @@
+# https://developers.home-assistant.io/docs/add-ons/configuration#add-on-dockerfile
+build_from:
+ aarch64: "ghcr.io/home-assistant/aarch64-base:3.15"
+ amd64: "ghcr.io/home-assistant/amd64-base:3.15"
+ armhf: "ghcr.io/home-assistant/armhf-base:3.15"
+ armv7: "ghcr.io/home-assistant/armv7-base:3.15"
+ i386: "ghcr.io/home-assistant/i386-base:3.15"
+labels:
+ org.opencontainers.image.title: "Home Assistant Add-on: Example add-on"
+ org.opencontainers.image.description: "Example add-on to use as a blueprint for new add-ons."
+ org.opencontainers.image.source: "https://github.com/home-assistant/addons-example"
+ org.opencontainers.image.licenses: "Apache License 2.0"
+args:
+ TEMPIO_VERSION: "2021.09.0"
diff --git a/nspanel-lovelace-ui/config.yaml b/nspanel-lovelace-ui/config.yaml
new file mode 100644
index 00000000..29fdf17d
--- /dev/null
+++ b/nspanel-lovelace-ui/config.yaml
@@ -0,0 +1,20 @@
+# https://developers.home-assistant.io/docs/add-ons/configuration#add-on-config
+name: NSPanel Lovelace UI Addon
+version: "4.7.0"
+slug: nspanel-lovelace-ui
+description: NSPanel Lovelace UI Addon
+url: "https://github.com/home-assistant/addons-example/tree/main/example"
+arch:
+ - armhf
+ - armv7
+ - aarch64
+ - amd64
+ - i386
+init: false
+map:
+ - share:rw
+options:
+ message: "Hello world..."
+schema:
+ message: "str?"
+image: "ghcr.io/joBr99/{arch}-addon-example"
diff --git a/nspanel-lovelace-ui/icon.png b/nspanel-lovelace-ui/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7f062107785b2a1ddaafd8d669f8526623779e7
GIT binary patch
literal 12448
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