Files
gree-controller/ha-addon/run.sh
T

41 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -Eeuo pipefail
CONFIG=/data/options.json
read_option() {
local key="$1" default_value="${2-}"
if [[ -f "$CONFIG" ]]; then
jq -r --arg key "$key" --arg default "$default_value" \
'if has($key) and .[$key] != null then .[$key] else $default end' "$CONFIG"
else
printf '%s\n' "$default_value"
fi
}
GREE_INTERFACE="$(read_option gree_interface '')"
DISCOVERY_BROADCAST="$(read_option discovery_broadcast '255.255.255.255:7000')"
SIMULATE="$(read_option simulate 'false')"
AUTO_SEED="$(read_option auto_seed 'false')"
POLL_INTERVAL="$(read_option poll_interval_seconds '15')"
ZONE_INTERVAL="$(read_option zone_interval_seconds '5')"
DISCOVERY_TIMEOUT="$(read_option discovery_timeout_ms '3000')"
APP_TOKEN="$(read_option app_token '')"
LOG_LEVEL="$(read_option log_level 'info')"
export GREE_CONTROLLER_BIND="0.0.0.0:8787"
export GREE_CONTROLLER_DATABASE="/data/gree-controller.db"
export GREE_CONTROLLER_GREE_INTERFACE="$GREE_INTERFACE"
export GREE_CONTROLLER_DISCOVERY_BROADCAST="$DISCOVERY_BROADCAST"
export GREE_CONTROLLER_SIMULATE="$SIMULATE"
export GREE_CONTROLLER_AUTO_SEED="$AUTO_SEED"
export GREE_CONTROLLER_POLL_INTERVAL_SECONDS="$POLL_INTERVAL"
export GREE_CONTROLLER_ZONE_INTERVAL_SECONDS="$ZONE_INTERVAL"
export GREE_CONTROLLER_DISCOVERY_TIMEOUT_MS="$DISCOVERY_TIMEOUT"
export GREE_CONTROLLER_APP_TOKEN="$APP_TOKEN"
export RUST_LOG="gree_controller=${LOG_LEVEL},tower_http=${LOG_LEVEL}"
printf 'GREE Controller: interface=%s discovery=%s database=%s\n' \
"${GREE_INTERFACE:-auto}" "$DISCOVERY_BROADCAST" "$GREE_CONTROLLER_DATABASE"
exec /usr/local/bin/gree-controller