#!/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 GREE_CONTROLLER_HA_AUTH="supervisor" 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