From 59a4f709359b4108bddd68a1ac02be96ef54c2bc Mon Sep 17 00:00:00 2001 From: Alexandre Date: Mon, 1 Nov 2021 22:05:14 +0100 Subject: [PATCH] initial build --- enedisGateway2MQTT/Dockerfile | 59 +++++++++++++++++++++++++++++++ enedisGateway2MQTT/README.md | 37 +++++++++++++++++++ enedisGateway2MQTT/apparmor.txt | 38 ++++++++++++++++++++ enedisGateway2MQTT/config.json | 34 ++++++++++++++++++ enedisGateway2MQTT/icon.png | Bin 0 -> 15361 bytes enedisGateway2MQTT/logo.png | Bin 0 -> 15361 bytes enedisGateway2MQTT/rootfs/run.sh | 57 +++++++++++++++++++++++++++++ 7 files changed, 225 insertions(+) create mode 100644 enedisGateway2MQTT/Dockerfile create mode 100644 enedisGateway2MQTT/README.md create mode 100644 enedisGateway2MQTT/apparmor.txt create mode 100644 enedisGateway2MQTT/config.json create mode 100644 enedisGateway2MQTT/icon.png create mode 100644 enedisGateway2MQTT/logo.png create mode 100644 enedisGateway2MQTT/rootfs/run.sh diff --git a/enedisGateway2MQTT/Dockerfile b/enedisGateway2MQTT/Dockerfile new file mode 100644 index 000000000..8baf4ad10 --- /dev/null +++ b/enedisGateway2MQTT/Dockerfile @@ -0,0 +1,59 @@ +FROM m4dm4rtig4n/enedisgateway2mqtt:latest + +# Base system +ARG BASHIO_VERSION=0.13.1 + +RUN \ + ################ + # Install apps # + ################ + apt-get clean \ + && apt-get update \ + && apt-get install -y \ + jq \ + curl \ + && apt-get clean \ + \ + ################## + # Install bashio # + ################## + && mkdir -p /tmp/bashio \ + && curl -L -f -s "https://github.com/hassio-addons/bashio/archive/v${BASHIO_VERSION}.tar.gz" \ + | tar -xzf - --strip 1 -C /tmp/bashio \ + && mv /tmp/bashio/lib /usr/lib/bashio \ + && ln -s /usr/lib/bashio/bashio /usr/bin/bashio \ + && rm -rf /tmp/bashio + +# Copy root filesystem +COPY rootfs / +RUN chmod 777 /run.sh +ENTRYPOINT [ "/usr/bin/env" ] +CMD ["/run.sh"] +VOLUME [ "/data" ] + +### LABELS +ARG BUILD_ARCH +ARG BUILD_DATE +ARG BUILD_DESCRIPTION +ARG BUILD_NAME +ARG BUILD_REF +ARG BUILD_REPOSITORY +ARG BUILD_VERSION +LABEL \ + io.hass.name="${BUILD_NAME}" \ + io.hass.description="${BUILD_DESCRIPTION}" \ + io.hass.arch="${BUILD_ARCH}" \ + io.hass.type="addon" \ + io.hass.version=${BUILD_VERSION} \ + maintainer="alexbelgium (https://github.com/alexbelgium)" \ + org.opencontainers.image.title="${BUILD_NAME}" \ + org.opencontainers.image.description="${BUILD_DESCRIPTION}" \ + org.opencontainers.image.vendor="Home Assistant Add-ons" \ + org.opencontainers.image.authors="alexbelgium (https://github.com/alexbelgium)" \ + org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.url="https://github.com/alexbelgium" \ + org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \ + org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \ + org.opencontainers.image.created=${BUILD_DATE} \ + org.opencontainers.image.revision=${BUILD_REF} \ + org.opencontainers.image.version=${BUILD_VERSION} diff --git a/enedisGateway2MQTT/README.md b/enedisGateway2MQTT/README.md new file mode 100644 index 000000000..1ed5fef6c --- /dev/null +++ b/enedisGateway2MQTT/README.md @@ -0,0 +1,37 @@ +# Home assistant add-on: Enedisgateway2mqtt + +[![Donate][donation-badge]](https://www.buymeacoffee.com/alexbelgium) + +[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee-%23d32f2f?logo=buy-me-a-coffee&style=flat&logoColor=white + +![Supports + Architecture][aarch64-shield] ![Supports amd64 Architecture][amd64-shield] ![Supports armhf Architecture][armhf-shield] ![Supports armv7 Architecture][armv7-shield] + +## About + +Enedisgateway2mqtt use Enedis Gateway API to send data in your MQTT Broker. +See its github for all informations : https://github.com/m4dm4rtig4n/enedisgateway2mqtt/blob/master/README.md + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Hass.io add-on. + +1. [Add my Hass.io add-ons repository][repository] to your Hass.io instance. +1. Install this add-on. +1. Click the `Save` button to store your configuration. +1. Start the add-on. +1. Check the logs of the add-on to see if everything went well. +1. Carefully configure the add-on to your preferences, see the official documentation for for that. + +### Configuration + +Configure the addon through its options page. +See this page for configuration : https://hub.docker.com/r/m4dm4rtig4n/enedisgateway2mqtt + +[smb-shield]: https://img.shields.io/badge/SMB--green?style=plastic.svg +[repository]: https://github.com/alexbelgium/hassio-addons +[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 diff --git a/enedisGateway2MQTT/apparmor.txt b/enedisGateway2MQTT/apparmor.txt new file mode 100644 index 000000000..4b9ced9e4 --- /dev/null +++ b/enedisGateway2MQTT/apparmor.txt @@ -0,0 +1,38 @@ +#include + +profile inadyn_addon flags=(attach_disconnected,mediate_deleted) { + #include + + capability, + file, + mount, + umount, + remount, + capability setgid, + capability setuid, + + +# S6-Overlay + /bin/** ix, + /usr/bin/** ix, + /usr/lib/bashio/** ix, + /etc/s6/** rix, + /run/s6/** rix, + /etc/services.d/** rwix, + /etc/cont-init.d/** rwix, + /etc/cont-finish.d/** rwix, + /init rix, + /var/run/** mrwkl, + /var/run/ mrwkl, + /dev/i2c-1 mrwkl, + + # Data access + /data/** rw, + + # suppress ptrace denials when using 'docker ps' or using 'ps' inside a container + ptrace (trace,read) peer=docker-default, + + # docker daemon confinement requires explict allow rule for signal + signal (receive) set=(kill,term) peer=/usr/bin/docker, + +} diff --git a/enedisGateway2MQTT/config.json b/enedisGateway2MQTT/config.json new file mode 100644 index 000000000..cb0b4caa5 --- /dev/null +++ b/enedisGateway2MQTT/config.json @@ -0,0 +1,34 @@ +{ + "arch": ["aarch64", "amd64", "armv7", "armhf"], + "description": "use Enedis Gateway API to send data in your MQTT Broker", + "name": "Enedisgateway2mqtt DO NOT USE", + "options": { + "ACCESS_TOKEN": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "PDL": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "MQTT_HOST": "" + }, + "schema": { + "ACCESS_TOKEN": "str", + "PDL": "str", + "MQTT_HOST": "str", + "MQTT_PORT": "str?", + "MQTT_PREFIX": "str?", + "MQTT_CLIENT_ID": "str?", + "MQTT_USERNAME": "str?", + "MQTT_PASSWORD": "str?", + "RETAIN": "str?", + "QOS": "str?", + "GET_CONSUMPTION": "str?", + "GET_PRODUCTION": "str?", + "HA_AUTODISCOVERY": "str?", + "HA_AUTODISCOVERY_PREFIX": "str?", + "CONSUMPTION_PRICE_BASE": "str?", + "CONSUMPTION_PRICE_HC": "str?", + "CONSUMPTION_PRICE_HP": "str?", + "CARD_MYENEDIS": "str?" + }, + "slug": "enedisgateway2mqtt", + "upstream": "0.5.6", + "url": "https://github.com/alexbelgium/hassio-addons", + "version": "0.5.6" +} diff --git a/enedisGateway2MQTT/icon.png b/enedisGateway2MQTT/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d4cb77ea533702a978dc55ab792c96756d6d0361 GIT binary patch literal 15361 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