mirror of
https://github.com/aljazceru/addons.git
synced 2025-12-18 13:44:20 +01:00
80 lines
2.4 KiB
Bash
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[@]}"
|