Files
addons/homematic/run.sh
Pascal Vizeli e465bdc45f Bugfix homematic (#236)
* Update run.sh

* Update config.json

* Update CHANGELOG.md
2018-01-19 20:46:38 +01:00

80 lines
2.4 KiB
Bash

#!/bin/bash
set -e
CONFIG_PATH=/data/options.json
RF_ENABLE=$(jq --raw-output '.rf_enable' $CONFIG_PATH)
RF_DEVICES=$(jq --raw-output '.rf | length' $CONFIG_PATH)
WIRED_ENABLE=$(jq --raw-output '.wired_enable' $CONFIG_PATH)
WIRED_DEVICES=$(jq --raw-output '.wired | length' $CONFIG_PATH)
WAIT_PIDS=()
# Init folder
mkdir -p /data/firmware
# RF support
if [ "$RF_ENABLE" == "true" ]; then
for (( i=0; i < "$RF_DEVICES"; i++ )); do
TYPE=$(jq --raw-output ".rf[$i].type" $CONFIG_PATH)
# Update config
if [ "$TYPE" == "CCU2" ]; then
DEVICE=$(jq --raw-output ".rf[$i].device" $CONFIG_PATH)
(
echo "[Interface $1]"
echo "Type = CCU2"
echo "ComPortFile = $DEVICE"
echo "AccessFile = /dev/null"
echo "ResetFile = /sys/class/gpio/gpio18/value"
) >> /etc/config/rfd.conf
# Init GPIO
RESET=$(jq --raw-output ".rf[$i].reset // false" $CONFIG_PATH)
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
if [ "$RESET" == "true" ]; then
echo 1 > /sys/class/gpio/gpio18/value || echo "Can't reset module!"
sleep 0.5
fi
echo 0 > /sys/class/gpio/gpio18/value || echo "Can't set default value!"
sleep 0.5
fi
done
# Run RFD
"$HM_HOME/bin/rfd" -c -l 0 -f /opt/hm/etc/config/rfd.conf &
WAIT_PIDS+=($!)
fi
# Wired support
if [ "$WIRED_ENABLE" == "true" ]; then
for (( i=0; i < "$WIRED_DEVICES"; i++ )); do
SERIAL=$(jq --raw-output ".wired[$i].serial" $CONFIG_PATH)
KEY=$(jq --raw-output ".wired[$i].key" $CONFIG_PATH)
IP=$(jq --raw-output ".wired[$i].ip" $CONFIG_PATH)
# Update config
(
echo "[Interface $1]"
echo "Type = HMWLGW"
echo "Serial Number = $SERIAL"
echo "Encryption Key = $KEY"
echo "IP Address = $IP"
) >> /etc/config/hs485d.conf
done
# Run hs485d
"$HM_HOME/bin/hs485d" -g -i 0 -f /opt/hm/etc/config/hs485d.conf &
WAIT_PIDS+=($!)
fi
# Wait until all is done
wait "${WAIT_PIDS[@]}"