Hallo Andreas,
ich sehe drei Möglichkeiten:
- Über “Inline Component Properties”, d.h. über die Component-Annotation
- Über “Component Properties from resource files”, d.h. über Java properties Dateien im Bundle
Zu 1 und 2: siehe http://blog.vogella.com/2016/09/26/configuring-osgi-declarative-services/
- Du kannst die Konfigurationsdateien für den Componentmanager über ein Shell-Script vordefinieren. Das ist zwar dann nicht in der Jar-Datei, aber man bleibt flexibler und kann die Konfiguration auch ändern. Hier ein kurzer Ausschnitt, wie wir das machen:
#!/bin/bash
#
# Script to automatically setup a FEMS.
set -e
# Define environment variables
BASE_PATH="/etc/openems.d"
CONF_SCHEDULER="Scheduler/AllAlphabetically/d0ec9992-e625-4ee4-b252-c9d9d417d78c.config"
CONF_CORE_PROHYBRID10="Kaco/BlueplanetHybrid10/Core/b11f6d44-631d-49a7-a9eb-fd063aa1ed3e.config"
CONF_ESS0_PROHYBRID10="Kaco/BlueplanetHybrid10/Ess/0bb53c70-83ff-40ba-b351-1c4df781ab4f.config"
CONF_METER0_PROHYBRID10="Kaco/BlueplanetHybrid10/GridMeter/008bcc03-a824-4cad-9fcd-993bbbb6f4ad.config"
CONF_CHARGER0_PROHYBRID10="Kaco/BlueplanetHybrid10/Charger/30b51193-e256-42b9-a743-b1c043c713fa.config"
CONF_CTRL_DEBUG_LOG="Controller/Debug/Log/28233476-3bb6-4773-b8f5-c2a7a47b85a2.config"
CONF_CTRL_API_REST="Controller/Api/Rest/bbcd5803-e577-4d88-b8eb-53c5d772687c.config"
CONF_CTRL_API_WEBSOCKET="Controller/Api/Websocket/9dc51b52-feb6-4f5d-a3b3-5ee6997b20c9.config"
#
# Setup configuration that is valid for every system
#
function setup_generic {
if [ -d $BASE_PATH ]; then
read -p "Press enter to delete $BASE_PATH"
echo "# Deleting $BASE_PATH"
find $BASE_PATH ! -wholename "$BASE_PATH" ! -name 'config.json' -exec rm -rf {} +
fi
echo "# Creating $BASE_PATH"
mkdir -p $BASE_PATH
cd $BASE_PATH
setup_ctrl_debug_log
setup_ctrl_api_rest
setup_ctrl_api_websocket
}
#
# Setup scheduler configuration for read-only systems (Mini, Pro Hybrid)
#
function setup_scheduler_readonly {
echo "# Creating $CONF_SCHEDULER"
mkdir -p "$(dirname $CONF_SCHEDULER)"
cat >$CONF_SCHEDULER <<EOL
controllers.ids=[]
cycleTime=I"1000"
enabled=B"true"
id="scheduler0"
service.factoryPid="Scheduler.AllAlphabetically"
service.pid="Scheduler.AllAlphabetically.d0ec9992-e625-4ee4-b252-c9d9d417d78c"
EOL
}
#
# Setup Controller Debug.Log
#
function setup_ctrl_debug_log {
echo "# Creating $CONF_CTRL_DEBUG_LOG"
mkdir -p "$(dirname $CONF_CTRL_DEBUG_LOG)"
cat >$CONF_CTRL_DEBUG_LOG <<EOL
enabled=B"true"
id="ctrlDebugLog0"
service.factoryPid="Controller.Debug.Log"
service.pid="Controller.Debug.Log.28233476-3bb6-4773-b8f5-c2a7a47b85a2"
EOL
}
#
# Setup Controller Api.Rest
#
function setup_ctrl_api_rest {
echo "# Creating $CONF_CTRL_API_REST"
mkdir -p "$(dirname $CONF_CTRL_API_REST)"
cat >$CONF_CTRL_API_REST <<EOL
apiTimeout="60"
enabled="true"
id="ctrlApiRest0"
port="8084"
service.factoryPid="Controller.Api.Rest"
service.pid="Controller.Api.Rest.bbcd5803-e577-4d88-b8eb-53c5d772687c"
EOL
}
#
# Setup Controller Api.Websocket
#
function setup_ctrl_api_websocket {
echo "# Creating $CONF_CTRL_API_WEBSOCKET"
mkdir -p "$(dirname $CONF_CTRL_API_WEBSOCKET)"
cat >$CONF_CTRL_API_WEBSOCKET <<EOL
apiTimeout=I"60"
enabled=B"true"
id="ctrlApiWebsocket0"
port=I"8085"
service.factoryPid="Controller.Api.Websocket"
service.pid="Controller.Api.Websocket.9dc51b52-feb6-4f5d-a3b3-5ee6997b20c9"
EOL
}
#
# Setup FENECON Pro Hybrid 10-Serie Components
#
function setup_pro_hybrid_10_components {
echo "# Creating $CONF_CORE_PROHYBRID10"
mkdir -p "$(dirname $CONF_CORE_PROHYBRID10)"
cat >$CONF_CORE_PROHYBRID10 <<EOL
enabled=B"true"
id="kacoCore0"
service.factoryPid="Kaco.BlueplanetHybrid10.Core"
service.pid="Kaco.BlueplanetHybrid10.Core.b11f6d44-631d-49a7-a9eb-fd063aa1ed3e"
userkey="user"
EOL
echo "# Creating $CONF_ESS0_PROHYBRID10"
mkdir -p "$(dirname $CONF_ESS0_PROHYBRID10)"
cat >$CONF_ESS0_PROHYBRID10 <<EOL
core.id="kacoCore0"
core.target="(&(enabled\=true)(!(service.pid\=Kaco.BlueplanetHybrid10.Ess.0bb53c70-83ff-40ba-b351-1c4df781ab4f))(|(id\=kacoCore0)))"
enabled=B"true"
id="ess0"
maxP=I"4000"
readOnly=B"true"
service.factoryPid="Kaco.BlueplanetHybrid10.Ess"
service.pid="Kaco.BlueplanetHybrid10.Ess.0bb53c70-83ff-40ba-b351-1c4df781ab4f"
EOL
echo "# Creating $CONF_METER0_PROHYBRID10"
mkdir -p "$(dirname $CONF_METER0_PROHYBRID10)"
cat >$CONF_METER0_PROHYBRID10 <<EOL
core.id="kacoCore0"
core.target="(&(enabled\=true)(!(service.pid\=Kaco.BlueplanetHybrid10.GridMeter.008bcc03-a824-4cad-9fcd-993bbbb6f4ad))(|(id\=kacoCore0)))"
enabled=B"true"
id="meter0"
service.factoryPid="Kaco.BlueplanetHybrid10.GridMeter"
service.pid="Kaco.BlueplanetHybrid10.GridMeter.008bcc03-a824-4cad-9fcd-993bbbb6f4ad"
EOL
echo "# Creating $CONF_CHARGER0_PROHYBRID10"
mkdir -p "$(dirname $CONF_CHARGER0_PROHYBRID10)"
cat >$CONF_CHARGER0_PROHYBRID10 <<EOL
core.id="kacoCore0"
core.target="(&(enabled\=true)(!(service.pid\=Kaco.BlueplanetHybrid10.Charger.30b51193-e256-42b9-a743-b1c043c713fa))(|(id\=kacoCore0)))"
enabled=B"true"
id="charger0"
service.factoryPid="Kaco.BlueplanetHybrid10.Charger"
service.pid="Kaco.BlueplanetHybrid10.Charger.30b51193-e256-42b9-a743-b1c043c713fa"
EOL
}
function setup_pro_hybrid_10 {
setup_generic
setup_scheduler_readonly
setup_pro_hybrid_10_components
}
function choose_setup {
CHOICE=$(whiptail --menu "Select:" 20 45 12 \
"FENECON Pro Hybrid 10-Serie" "" \
3>&1 1>&2 2>&3)
case $CHOICE in
"FENECON Pro Hybrid 10-Serie") setup_pro_hybrid_10;;
esac
}
choose_setup
Gruß,
Stefan