Hallo Zusammen,
gibt es die Möglichkeit eine Modulkonfiguration schon beim Packen der Jar vorzugeben, sodass beim Ausführen der Jar schon diverse Geräte, Controller etc. konfiguriert und aktiviert sind?
Hallo Zusammen,
gibt es die Möglichkeit eine Modulkonfiguration schon beim Packen der Jar vorzugeben, sodass beim Ausführen der Jar schon diverse Geräte, Controller etc. konfiguriert und aktiviert sind?
Hallo Andreas,
ich sehe drei Möglichkeiten:
Zu 1 und 2: siehe http://blog.vogella.com/2016/09/26/configuring-osgi-declarative-services/
#!/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
Hallo Stefan,
danke für deinen Input!
Ich habs nun etwas anders gemacht und zwar mit Hilfe des Configuration Admin.
Da gibts in diesem Blog ebenfalls ein gutes Beispiel:
http://blog.vogella.com/2017/02/24/control-osgi-ds-component-instances-via-configuration-admin/
Man kann recht einfach prüfen, ob es schon eine Configuration gibt, diese entsprechend updaten oder eine neue erstellen.
Liebe Grüße
Andy
Hallo Andy,
ok, super. Das heißt du erstellst die Konfiguration jetzt direkt per Code? Anstatt das alles selbst zu machen, wäre es evtl. sinnvoll, die JSON-RPC Api des ComponentManager zu nutzen: https://github.com/OpenEMS/openems/blob/develop/io.openems.edge.core/src/io/openems/edge/core/componentmanager/ComponentManagerImpl.java#L174
Gruß,
Stefan