#!/bin/bash

set -e

STATE="$1"
FOLDER="$2"/files

case "$STATE" in

    NeedsArtifactReboot)
        echo "No"
    ;;

    SupportsRollback)
        echo "No"
    ;;

    ArtifactInstall)
        echo "Processing OpenEMS Telemetry Configs..."

        if [ ! -d "$FOLDER" ]; then
            echo "Directory $FOLDER not found, aborting"
            exit 1
        else
            files=($FOLDER/*)
            JSON_FILE=${files[0]}

            echo "Working with payload file $JSON_FILE"
        fi

        # get MQTT Data
        DEVICE_TYPE="$(jq -r .device_type < "$JSON_FILE")"
        DEVICE_NAME="$(jq -r .device_name < "$JSON_FILE")"
        DATA_SOURCE_COMPONENT="$(jq -r .data_source_component < "$JSON_FILE")"
        PAYLOADS="$(jq -r .payloads < "$JSON_FILE")"

        # verify MQTT Data
        # DEVICE_TYPE wird aktuell nicht ausgewertet

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

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

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

        echo "Creating OpenEMS TelemetryComponent"

        curl -X POST -H 'Authorization: Basic QWRtaW46YWRtaW4=' \
            -H 'Content-Type: application/json' \
            -d '{"jsonrpc":"2.0","method":"createComponentConfig","params":{
            "factoryPid": MqttTelemetryComponent,
            "properties": [
            {
                "name": "id",
                "value": "mqtt_telemetry_component_'${DEVICE_NAME}'"
            },
            {
                "name": "otherComponentId",
                "value": "'${DATA_SOURCE_COMPONENT}'"
            },
            {
                "name": "mqttBridgeId",
                "value": "mqtt_bridge_consolinno_cloud"
            },
            {
                "name": "mqttId",
                "value": "'${DEVICE_NAME}'"
            },
            {
                "name": "payloads",
                "value": "'${PAYLOADS}'"
            },
            {
                "name": "subscriptionList",
                "value": [
                    "LOW!control/'${DEVICE_NAME}'/setPower!1!true!true!1!1"
                ]
            },
            {
                "name": "publishList",
                "value": [
                    "LOW!telemetry/'${DEVICE_NAME}'!0!true!true!0!2"
                ]
            },
            {
                "name": "configurationDone",
                "value": "true"
            },
            {
                "name": "createdByOsgi",
                "value": "true"
            }
            ]}}' \
            http://localhost:8086/jsonrpc
esac
