#!/bin/bash

if [ $# -ne 1 ]; then
    echo "Must be invoked with exactly one argument: The JSON configuration." 1>&2
    exit 2
fi

CONFIG="$1"

if ! [ -e "$CONFIG" ]; then
    echo "Error: $CONFIG does not exist." 1>&2
    exit 1
fi

# get MQTT Data
MQTT_BROKER_URL="$(jq -r -e .MQTT_BROKER_URL < "$CONFIG")"
MQTT_PASS="$(jq -r -e .MQTT_PASS < "$CONFIG")"
MQTT_USER="$(jq -r -e .MQTT_USER < "$CONFIG")"

# verify MQTT Data
if [[ "$MQTT_BROKER_URL" == "null" ]]; then
    echo "MQTT_BROKER_URL not found"
    exit 1
fi

if [[ "$MQTT_PASS" == "null" ]]; then
    echo "MQTT_PASS not found"
    exit 1
fi

if [[ "$MQTT_USER" == "null" ]]; then
    echo "MQTT_USER not found"
    exit 1
fi

# generate uuid
UUID=$(cat  /proc/sys/kernel/random/uuid)

# generate mqtt.config
echo "generating $UUID.conf"

cat >/data/openems.d/Bridge/Mqtt/$UUID.conf <<EOF
:org.apache.felix.configadmin.revision:=L"11"
alias=""
basepath=""
brokerUrl="${MQTT_BROKER_URL}"
cleanSessionFlag=B"true"
clientId="OpenEMS-1"
connection="Wss"
enabled=B"true"
id="MqttBridge"
ipBroker=""
keepAlive=I"60"
lastWillSet=B"false"
locale="Europe/Berlin"
mqttPriorities=[ \
  "URGENT", \
  "HIGH", \
  "LOW", \
  ]
mqttTypes=[ \
  "TELEMETRY", \
  "COMMAND", \
  "EVENT", \
  ]
password="${MQTT_PASS}"
payloadLastWill="Status\ :\ Connected"
portBroker=""
qosLastWill=I"0"
retainedFlag=B"true"
service.factoryPid="Bridge.Mqtt"
service.pid="Bridge.Mqtt.${$UUID}"
timeStampEnabled=B"true"
topicLastWill="OpenEMS/Leaflet_0/Status/"
useCoreCycleTime=B"false"
username="${MQTT_USER}"
EOF



