From 9cbc42553cc08976af33ccdbc2135275b8a7ff43 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 14 Dec 2017 23:41:29 +0100 Subject: [PATCH] Add-on for OCCU (#209) * Create Dockerfile * Create config.json * Update config.json * Update Dockerfile * Create run.sh * Create build.json * Update config.json * Update config.json * Update config.json * Create rfd.conf * Update Dockerfile * Update run.sh * Update run.sh * Update run.sh * Update Dockerfile * Update run.sh * Update Dockerfile * Update Dockerfile * Update Dockerfile * Update Dockerfile * Update run.sh * Update run.sh * Update run.sh * Update run.sh * Update rfd.conf * Update run.sh * Update run.sh * Update config.json * Update Dockerfile * Update run.sh * Update run.sh * Update Dockerfile * Update rfd.conf * Update run.sh * Update rfd.conf * Update config.json * Update run.sh * Update Dockerfile * Update Dockerfile * Update build.json * Update run.sh * Update config.json * Update Dockerfile * Update Dockerfile * Update config.json * Update Dockerfile * Update Dockerfile * Add files via upload --- homematic/Dockerfile | 38 ++++++++++++++++++++++++++++++++++++++ homematic/build.json | 10 ++++++++++ homematic/config.json | 24 ++++++++++++++++++++++++ homematic/logo.png | Bin 0 -> 23144 bytes homematic/rfd.conf | 16 ++++++++++++++++ homematic/run.sh | 33 +++++++++++++++++++++++++++++++++ 6 files changed, 121 insertions(+) create mode 100644 homematic/Dockerfile create mode 100644 homematic/build.json create mode 100644 homematic/config.json create mode 100644 homematic/logo.png create mode 100644 homematic/rfd.conf create mode 100644 homematic/run.sh diff --git a/homematic/Dockerfile b/homematic/Dockerfile new file mode 100644 index 0000000..87a3296 --- /dev/null +++ b/homematic/Dockerfile @@ -0,0 +1,38 @@ +ARG BUILD_FROM +FROM $BUILD_FROM + +# Install packages +RUN apt-get update \ + && apt-get install -y \ + curl \ + jq \ + libusb-1.0 \ + && rm -rf /var/lib/apt/lists/* + +ARG OCCU_VERSION +ARG BUILD_ARCH + +# Install OCCU +WORKDIR /usr/src +RUN curl -L -o occu.tar.gz https://github.com/eq-3/occu/archive/${OCCU_VERSION}.tar.gz \ + && tar xzpf occu.tar.gz \ + && rm -f occu.tar.gz \ + && cd occu-${OCCU_VERSION} \ + && if [ "${BUILD_ARCH}" = "armhf" ]; then cd arm-gnueabihf; else cd X86_32_Debian_Wheezy; fi \ + && mkdir -p /opt/hm \ + && cp -R packages-eQ-3/RFD/* /opt/hm \ + && cp -R packages-eQ-3/LinuxBasis/* /opt/hm \ + && cp -R packages-eQ-3/HS485D/* /opt/hm \ + && ln -s /opt/hm/etc/config /etc/config \ + && cp -r ../firmware /opt/hm/ \ + && rm -rf /usr/src/occu-${OCCU_VERSION} +ENV HM_HOME=/opt/hm LD_LIBRARY_PATH=/opt/hm/lib:${LD_LIBRARY_PATH} + +# Update config files +COPY rfd.conf /etc/config + +# Setup start script +COPY run.sh / +RUN chmod a+x /run.sh + +CMD [ "/run.sh" ] diff --git a/homematic/build.json b/homematic/build.json new file mode 100644 index 0000000..ce82cb6 --- /dev/null +++ b/homematic/build.json @@ -0,0 +1,10 @@ +{ + "build_from": { + "armhf": "multiarch/ubuntu-core:armhf-xenial", + "amd64": "multiarch/ubuntu-core:i386-xenial", + "i386": "multiarch/ubuntu-core:i386-xenial" + }, + "args": { + "OCCU_VERSION": "2.29.22-1" + } +} diff --git a/homematic/config.json b/homematic/config.json new file mode 100644 index 0000000..8506054 --- /dev/null +++ b/homematic/config.json @@ -0,0 +1,24 @@ +{ + "name": "HomeMatic OCCU", + "version": "2.29.22-1-p0", + "slug": "homematic", + "description": "HomeMatic central based on OCCU", + "url": "https://home-assistant.io/addons/homematic/", + "arch": ["armhf", "i386", "amd64"], + "startup": "services", + "boot": "auto", + "auto_uart": true, + "gpio": true, + "ports": { + "2001/tcp": 2001 + }, + "options": { + "type": "CCU2", + "device": "/dev/ttyAMA0" + }, + "schema": { + "type": "match(CCU2)", + "device": "match(^/dev/.*$)" + }, + "image": "homeassistant/{arch}-addon-homeassistant" +} diff --git a/homematic/logo.png b/homematic/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9c030d103265ebf8ba58e489391a8e06a05b04a7 GIT binary patch literal 23144 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

3Ns)P+}sPHXSWWjTkI~oH(zs(f7K6rIMwNUSlcs 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 fV7H)OKY?-qe*> /etc/config/rfd.conf +fi + +# Init folder +mkdir -p /data/firmware + +# Init GPIO +if [ ! -d /sys/class/gpio/gpio18 ]; then + echo 18 > /sys/class/gpio/export + sleep 2 +fi +if [ "$(cat /sys/class/gpio/gpio18/direction)" != "out" ]; then + echo out > /sys/class/gpio/gpio18/direction + sleep 2 +fi + +# Run RFID +"$HM_HOME/bin/rfd" -c -l 0 -f /opt/hm/etc/config/rfd.conf