From e880a09ba8225c78bb8c2ffd155715f29e4ae784 Mon Sep 17 00:00:00 2001 From: theBigBlase Date: Sun, 17 Dec 2023 13:37:42 -0500 Subject: [PATCH] openhab: config perms shared between docker / host --- .gitignore | 1 + Makefile | 11 +- README.md | 4 +- docker-compose.yml | 29 ++- openhab/Dockerfile | 6 + .../items/IFT605_SmartClothes.items | 38 ---- .../rules/IFT605_SmartClothes.rules | 175 ------------------ .../things/IFT605_SmartClothes.things | 62 ------- .../config/org/apache/karaf/features.config | 2 +- .../config/org/openhab/addons.config | 7 +- ...daff3c-f0c3-4776-a340-a6b0173ed9a1.config} | 2 +- .../config/org/openhab/i18n.config | 6 + ...pache_felix_cm_impl_DynamicBindings.config | 3 +- .../openhab_userdata/config/profile.config | 168 ++++++++--------- .../etc/branding-ssh.properties | 2 +- .../openhab_userdata/etc/branding.properties | 2 +- .../openhab_userdata/etc/config.properties | 2 +- openhab/openhab_userdata/etc/keystore | Bin 606 -> 605 bytes .../etc/org.apache.karaf.features.cfg | 4 +- openhab/openhab_userdata/etc/profile.cfg | 168 ++++++++--------- .../openhab_userdata/etc/version.properties | 6 +- .../jsondb/backup/1702863252265--users.json | 26 +++ openhab/openhab_userdata/jsondb/users.json | 26 +++ .../secrets/rsa_json_web_key.json | 2 +- 24 files changed, 283 insertions(+), 469 deletions(-) create mode 100644 openhab/Dockerfile delete mode 100644 openhab/openhab_conf/items/IFT605_SmartClothes.items delete mode 100644 openhab/openhab_conf/rules/IFT605_SmartClothes.rules delete mode 100644 openhab/openhab_conf/things/IFT605_SmartClothes.things rename openhab/openhab_userdata/config/org/openhab/core/service/WatchService/{4c0ca031-fc00-41d8-8c46-4474cc442330.config => 06daff3c-f0c3-4776-a340-a6b0173ed9a1.config} (64%) create mode 100644 openhab/openhab_userdata/config/org/openhab/i18n.config create mode 100644 openhab/openhab_userdata/jsondb/backup/1702863252265--users.json create mode 100644 openhab/openhab_userdata/jsondb/users.json diff --git a/.gitignore b/.gitignore index 88530cf..89d1597 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ openhab/openhab_userdata/cache openhab/openhab_userdata/logs openhab/openhab_userdata/tmp +NOTES.md diff --git a/Makefile b/Makefile index 29ece41..70dc265 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,12 @@ .PHONY: all test clean build -ID := $(shell id -u) GID := $(shell id -g) +ID := $(shell id -u) -all: - ID=$(ID) GID=$(GID) docker compose up -d +up: + ID=$(ID) GID=$(GID) docker compose up -d --build +down: + docker compose down + +init: + docker network create ift713 --subnet "172.69.0.0/16" --gateway="172.69.1.0" diff --git a/README.md b/README.md index d822904..38cb7bf 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,9 @@ This is the folder for the "main" server, doing all the processing and gathering data. It hosts an openhab instance and mqtt (rumqtt) courier. -To launch it, just `make` in the root, it'll set docker w/ the correct +To init the docker network, `make init` in the root + +To launch it, just `make` in the root, it'll run docker compose w/ the correct permissions. ## TODO diff --git a/docker-compose.yml b/docker-compose.yml index 8af036c..2a54587 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,20 +4,33 @@ services: ports: - 1883:1883 - 1884:1884 + volumes: + - "./mqtt/rumqttd.toml:/rumqttd.toml" + entrypoint: rumqttd -c /rumqttd.toml + networks: + ift713: + ipv4_address: 172.69.1.2 openhab: - image: "openhab/openhab:4.0.3" + build: + dockerfile: openhab/Dockerfile restart: always - network_mode: host - user: "${UID}:${GID}" - volumes: - - "/etc/localtime:/etc/localtime:ro" - - "./openhab/openhab_addons:/openhab/addons" - - "./openhab/openhab_conf:/openhab/conf" - - "./openhab/openhab_userdata:/openhab/userdata" + environment: CRYPTO_POLICY: "unlimited" EXTRA_JAVA_OPTS: "-Duser.timezone=Canada/Eastern" OPENHAB_HTTP_PORT: "8080" OPENHAB_HTTPS_PORT: "8043" + USER_ID: ${ID} + network_mode: host + volumes: + - "/etc/localtime:/etc/localtime:ro" + - "./openhab/openhab_addons:/openhab/addons" + - "./openhab/openhab_conf:/openhab/conf" + - "./openhab/openhab_userdata:/openhab/userdata" + + +networks: + ift713: + external: true diff --git a/openhab/Dockerfile b/openhab/Dockerfile new file mode 100644 index 0000000..190ec15 --- /dev/null +++ b/openhab/Dockerfile @@ -0,0 +1,6 @@ +FROM openhab/openhab:4.0.4 + +ARG ID=1000 + +RUN echo $ID +RUN chown $ID -R /openhab/conf diff --git a/openhab/openhab_conf/items/IFT605_SmartClothes.items b/openhab/openhab_conf/items/IFT605_SmartClothes.items deleted file mode 100644 index c939242..0000000 --- a/openhab/openhab_conf/items/IFT605_SmartClothes.items +++ /dev/null @@ -1,38 +0,0 @@ - -Group Room -Group SmartClothes - -Group Sensors -Group:Number:AVG Luminance "average luminosity" (Sensors) -Group:Number:AVG Noise "average noise" (Sensors) - -Group Actuators -Group Lights (Actuators) - -Group Batteries - -Contact room1 "room 1" - -// Room fixed devices -Number rfidReader "RFID reader" (Sensors, Room) {channel="rfidReader:device:reader1"} - -// smart clothes, mobile devices -Color stripColor "el-wire" (Lights, SmartClothes) {channel="elwire:0210:ewbridge:strip1"} -Dimmer stripIntensity "el-wire" (Lights, SmartClothes) {channel="elwire:0210:ewbridge:strip1"} - -Color stripColor2 "el-wire" (Lights, SmartClothes) {channel="elwire:0210:ewbridge:strip2"} -Dimmer stripIntensity2 "el-wire" (Lights, SmartClothes) {channel="elwire:0210:ewbridge:strip2"} - -Switch vibrationPatch "vibration patch" (Actuators, SmartClothes) {channel="vibrationPatch:device:vibration"} - -Number luminance "luminance level" (Luminance, Sensors, SmartClothes) {channel=zwave:device:luxmeter:node2:sensor_luminance"} -Number luxmeterBattery "luxmeter battery level" (Batteries, SmartClothes) {channel="zwave:device:luxmeter:node2:battery-level"} - -Number noise "noise level" (Noise, Sensors, SmartClothes) {channel="Channel=“zwave:device:noisemeter:node3:sensor_noise”"} -Number noiseSensorBattery "noise sensor battery level" (Batteries, SmartClothes) {channel="zwave:device:noisemeter:node3:battery-level"} - -// optionnel -Number luminanceWristBand "luminance level" (Sensors, SmartClothes) {channel="zwave:device:wristband:node4:luminance"} -Number noiseWristBand "noise level" (Sensors, SmartClothes) {channel="zwave:device:wristband:node4:luminance"} -Contact gsrWristBand "galvanic skin response level" (Sensors, SmartClothes) {channel=“zwave:device:wristband:node4:galvanicSkinResponse"} -Switch vibrationWristBand "noise level" (Actuators, SmartClothes) {channel="zwave:device:wristband:node4:vibration"} diff --git a/openhab/openhab_conf/rules/IFT605_SmartClothes.rules b/openhab/openhab_conf/rules/IFT605_SmartClothes.rules deleted file mode 100644 index 26abcc6..0000000 --- a/openhab/openhab_conf/rules/IFT605_SmartClothes.rules +++ /dev/null @@ -1,175 +0,0 @@ -import org.eclipse.smarthome.model.script.ScriptServiceUtil -// import org.eclipse.smarthome.core.library.items.StringItem -import java.util.HashMap -import java.util.HashSet - -val TAG_FileName = "IFT605SmartClothes.rules" -val smartClothesID = "12345678" - -var Contact currentRoom -var MQTTBroker currentMQTTBroker - -// managing context -var boolean goodConditions = true // of course, only one of good/bad conditions is required -var boolean badConditions = false -var badConditionsStartTime = 0 // in milliseconds -val URGE_TO_CHANGE_ROOM_TIME_TRIGGER = 300000 // 5 minutes - -// managing people in the room -var people = new HashSet() -var luminanceMeasures = new HashMap() -var noiseMeasures = new HashMap() - -// j'entre dans une pièce -val iEnter = [ ContactItem room, String smartClothesID, MQTTBroker broker | - broker.sendCommand(CONNECT); - broker.sendCommand(SUBSCRIBE, "room/1/#"); - broker.sendCommand(SUBSCRIBE, "smartclothes/#"); - broker.sendCommand(SUBSCRIBE, "room/1/tag/+"); - broker.sendCommand(SUBSCRIBE, "smartclothes/+/sensor/luminance"); - broker.sendCommand(SUBSCRIBE, "smartclothes/+/sensor/noise"); - // informer que l'on vient d'entrer dans la pièce - broker.sendCommand(PUBLISH, smartClothesID+"/status", "Online") - vibrationPatch.sendCommand(OFF) -] - -// je sors de une pièce -val iQuit = [ ContactItem room, String smartClothesID, MQTTBroker broker | - broker.sendCommand(UNSUBSCRIBE, "room/1/#"); - broker.sendCommand(UNSUBSCRIBE, "smartclothes/#"); - broker.sendCommand(UNSUBSCRIBE, "room/1/tag/+"); - broker.sendCommand(UNSUBSCRIBE, "smartclothes/+/sensor/luminance"); - broker.sendCommand(UNSUBSCRIBE, "smartclothes/+/sensor/noise"); - // informer que l'on vient d'entrer dans la pièce - broker.sendCommand(PUBLISH, smartClothesID+"/status", "Offline") -] -// le vêtement entre dans une pièce -val someoneEnterInRoom = [ String smartClothesID | - people.add(smartClothesID) -] - -val someoneQuitRoom = [ String smartClothesID | - people.remove(smartClothesID) - noiseMeasures.remove(smartClothesID) - luminanceMeasures.remove(smartClothesID) -] - -// fonctions utilitaires pour la gestion du contexte -// autre solutions pour calculer les moyennes, utiliser les HashMap luminanceMeasures et noiseMeasures -val Integer averageLuminance = [ | Luminance.state -] - -val Integer averagenoise = [ | Noise.state -] - -val boolean checkGoodConditions = [ Integer roomLuminance, Integer roomNoise | - return (LUMINOSITE_MIN < roomLuminance || roomLuminance < LUMINOSITE_MAX) - && (NIVEAU_SONORE_MIN < roomNoise || roomNoise < NIVEAU_SONORE_MAX) -] - -val reactToNewConditions = [ | - goodConditions = checkGoodConditions(averageLuminance(), averageNoise()) - badConditions = !goodConditions - if (goodConditions) { - badConditionsStartTime = 0 - vibrationPatch.sendCommand(OFF) - // rapprocher l'éclairage de la valeur optimale - if (Luminance.state < LUMOINOSITE_OPTIMALE) { - stripIntensity.sendCommand(INCREASE) - } else { - stripIntensity.sendCommand(DECREASE) - } - } else { - // Éviter de rester trop longtemps dans des conditions défavorables - vibrationPatch.sendCommand(ON) - if (badConditionsStartTime == 0){ - badConditionsStartTime = now.getMillis(); - } - if (now.getMillis() - badConditionsStartTime > URGE_TO_CHANGE_ROOM_TIME_TRIGGER) { - vibrationPatch.sendCommand(ON) - } - } -] - - - -rule "Démarrage de openHAB" -when - System started -then - logInfo(TAG_FileName, "Rule : Démarrage de openHAB") - currentRoom = room1 - currentMQTTBroker = room1MQTT - iEnter(currentRoom, smartClothesID, currentMQTTBroker) -end - -// Diffuser les mesures de ses capteurs aux autres vêtements intelligents -rule "lecture d'une mesure de luminosité par le capteur du vêtement" -when - // Item luminance received update - Member of Luminance received update -then - var sensorName = triggeringItem.name - var value = triggeringItem.state - currentMQTTBroker.sendCommand(PUBLISH, "smartclothes/"+smartClothesID+"/sensor/luminance", value) - -end - -rule "lecture d'une mesure de bruit par le capteur du vêtement" -when - // Item noise received update - Member of Noise received update -then - var sensorName = triggeringItem.name - var value = triggeringItem.state - currentMQTTBroker.sendCommand(PUBLISH, "smartclothes/"+smartClothesID+"/sensor/noise", value) -end - -// Gérer son contexte ambiant - -rule "nouvelle mesure de bruit publiée par le courtier MQTT" -when currentMQTTBroker "smartclothes/+/sensor/noise" changed -then - noiseMeasures.put(extractID(triggeringItem.newState.topic), trigerringItem.newState.value) - reactToNewConditions() -end - -rule "nouvelle mesure de bruit publiée par le courtier MQTT" -when currentMQTTBroker "smartclothes/+/sensor/luminance" changed -then - luminanceMeasures.put(extractID(triggeringItem.newState.topic), trigerringItem.newState.value) - reactToNewConditions() -end - -// Tenir compte des arrivées et départs de personnes dans la salle -rule "arrivée d'une personne" -when - // si on n'utilise pas le mécanisme des dernières volontés de MQTT, - // il faut surveiller les éléments pertinents à la main - // currentMQTTBroker "room/+/tag" changed //lecture d'un tag RFID - // or currentMQTTBroker "smartclothes/+/sensor/luminance" changed // member of Luminance changed - // or currentMQTTBroker "smartclothes/+/sensor/noise" changed - currentMQTTBroker "+/status " changed to "Online" //lecture d'un tag RFID - -then - String triggeringSmartClothesID = extractID(triggeringItem.newState.topic) - someoneEnterInRoom(triggeringSmartClothesID) -end - -// Tenir compte des arrivées et départs de personnes dans la salle -rule "départ d'une personne" -when - currentMQTTBroker "+/status " changed to "Offline" //lecture d'un tag RFID -then - String triggeringSmartClothesID = extractID(triggeringItem.newState.topic) - someoneQuitRoom(triggeringSmartClothesID) -end - -rule "Arrêt de openHAB" -when - System shuts down -then - logInfo(TAG_FileName, " Rule : Arrêt de openHAB") - // sauvegarder les états des items et le contexte - iQuit(currentRoom, smartClothesID, currentMQTTBroker) -end diff --git a/openhab/openhab_conf/things/IFT605_SmartClothes.things b/openhab/openhab_conf/things/IFT605_SmartClothes.things deleted file mode 100644 index ca258ca..0000000 --- a/openhab/openhab_conf/things/IFT605_SmartClothes.things +++ /dev/null @@ -1,62 +0,0 @@ -/** - Vêtement intelligent -**/ - -Bridge elwire:bridge:ewbridge [ ipAddress="192.168.3.123" ] { - // gateway el-wire - Thing 0210 strip1 [stripId="1"] //référer par elwire:0210:ewbridge:strip1 - Thing 0220 strip2 [stripId="2"] // référer par elwire:0220:ewbridge:strip2 -} -//vibration patch -Thing vibrationPatch:device:vibration "vibration patch" @ "smart clothes" - - -// voir description à https://www.openhab.org/addons/bindings/zwave/doc/things.html -Bridge zwave:serial_zstick:8c582004 "ZWave Controller" [ port="/dev/ttyACM0", controller_softreset="false", controller_master="true", heal_enable="true", security_networkkey="???" ] { - // ampèremètres placés sur les interrupteurs du plafonnier - Thing luxMeter node2 "luxmeter " @ "smart clothes" [ node_id=2 ] { - Channels: - // sensors - Type number : luminance [ updateInterval=10 ] - Type number : battery-level [ updateInterval=10 ] - } - Thing noiseMeter node3 "noise meter" @ "smart clothes" [ node_id=3 ] - Channels: - // sensors - Type number : noise [ updateInterval=10 ] - Type number : battery-level [ updateInterval=10 ] - Thing wristband node4 "wristBand" @ "smart clothes" [ node_id=4 ] { - Channels: - // sensors - Type number : luminance [ updateInterval=10 ] - Type number : noise [ updateInterval=10 ] - Type string : accelerometer [ updateInterval=10 ] - Type number : speed [ updateInterval=10 ] - Type number : galvanicSkinResponse [ updateInterval=10 ] - // effectors - Type switch : vibration - Type switch : enable - } -} - -/** - Pièce -**/ - -// https://www.smarthomeblog.net/mqtt-openhab/ -// https://gist.github.com/davidgraeff/6c00d2ad5e4bc553f5f209118307d8fd -// https://community.openhab.org/t/solved-oh-2-4-mqtt-binding-generic-thing-statetopic-working-commandtopic-not-working/63619 - -Bridge mqtt:systemBroker:embedded-mqtt-broker [ host="127.0.0.1", secure=false ] -{ - Thing mqtt:topic:room1MQTT { - Channels: - Type string : room1 "all MQTT room events" @ "room 1"[ stateTopic="room/1/#" ] - Type string : smartclothes "all MQTT smart clothes events" @ "room 1"[ stateTopic="smartclothes/#" ] - Type switch : tag "RFID MQTT event" @ "room 1" [ stateTopic="room/+/tag"] - Type string : noise "noise MQTT event" @ "room 1" [ stateTopic="smartclothes/+/sensor/noise" ] - Type string : luminance "luminosity MQTT event" @ "room 1" [ stateTopic="smartclothes/+/sensor/luminance" ] - } -} - -Thing rfidReader:device:reader1 "rfidReader " @ "room 1" diff --git a/openhab/openhab_userdata/config/org/apache/karaf/features.config b/openhab/openhab_userdata/config/org/apache/karaf/features.config index 1f6e214..3ea2239 100644 --- a/openhab/openhab_userdata/config/org/apache/karaf/features.config +++ b/openhab/openhab_userdata/config/org/apache/karaf/features.config @@ -3,7 +3,7 @@ autoRefresh="true" configCfgStore="false" featuresBoot="instance/4.4.3,\ package/4.4.3,\ log/4.4.3,\ ssh/4.4.3,\ framework/4.4.3,\ system/4.4.3,\ eventadmin/4.4.3,\ feature/4.4.3,\ shell/4.4.3,\ service/4.4.3,\ jaas/4.4.3,\ openhab-runtime-base,\ openhab-runtime-ui,\ deployer/4.4.3,\ diagnostic/4.4.3,\ bundle/4.4.3,\ config/4.4.3,\ kar/4.4.3" featuresBootAsynchronous="false" -featuresRepositories="mvn:org.openhab.distro/distro/4.0.3/xml/features,\ mvn:org.openhab.distro/openhab-addons/4.0.3/xml/features,\ mvn:org.apache.karaf.features/framework/4.4.3/xml/features,\ mvn:org.apache.karaf.features/standard/4.4.3/xml/features" +featuresRepositories="mvn:org.openhab.distro/distro/4.0.4/xml/features,\ mvn:org.openhab.distro/openhab-addons/4.0.4/xml/features,\ mvn:org.apache.karaf.features/framework/4.4.3/xml/features,\ mvn:org.apache.karaf.features/standard/4.4.3/xml/features" felix.fileinstall.filename="file:/openhab/userdata/etc/org.apache.karaf.features.cfg" service.bundleLocation="?" service.pid="org.apache.karaf.features" diff --git a/openhab/openhab_userdata/config/org/openhab/addons.config b/openhab/openhab_userdata/config/org/openhab/addons.config index 74bb0fe..7c00540 100644 --- a/openhab/openhab_userdata/config/org/openhab/addons.config +++ b/openhab/openhab_userdata/config/org/openhab/addons.config @@ -1,3 +1,6 @@ -:org.apache.felix.configadmin.revision:=L"1" -_felix_.cm.newConfiguration=B"true" +:org.apache.felix.configadmin.revision:=L"4" +automation="jsscripting" +binding="mqtt" +persistence="rrd4j" service.pid="org.openhab.addons" +ui="basic" diff --git a/openhab/openhab_userdata/config/org/openhab/core/service/WatchService/4c0ca031-fc00-41d8-8c46-4474cc442330.config b/openhab/openhab_userdata/config/org/openhab/core/service/WatchService/06daff3c-f0c3-4776-a340-a6b0173ed9a1.config similarity index 64% rename from openhab/openhab_userdata/config/org/openhab/core/service/WatchService/4c0ca031-fc00-41d8-8c46-4474cc442330.config rename to openhab/openhab_userdata/config/org/openhab/core/service/WatchService/06daff3c-f0c3-4776-a340-a6b0173ed9a1.config index 44fe25e..cea1887 100644 --- a/openhab/openhab_userdata/config/org/openhab/core/service/WatchService/4c0ca031-fc00-41d8-8c46-4474cc442330.config +++ b/openhab/openhab_userdata/config/org/openhab/core/service/WatchService/06daff3c-f0c3-4776-a340-a6b0173ed9a1.config @@ -3,4 +3,4 @@ name="configWatcher" path="/openhab/conf" service.bundleLocation="?" service.factoryPid="org.openhab.core.service.WatchService" -service.pid="org.openhab.core.service.WatchService.4c0ca031-fc00-41d8-8c46-4474cc442330" +service.pid="org.openhab.core.service.WatchService.06daff3c-f0c3-4776-a340-a6b0173ed9a1" diff --git a/openhab/openhab_userdata/config/org/openhab/i18n.config b/openhab/openhab_userdata/config/org/openhab/i18n.config new file mode 100644 index 0000000..84235d2 --- /dev/null +++ b/openhab/openhab_userdata/config/org/openhab/i18n.config @@ -0,0 +1,6 @@ +:org.apache.felix.configadmin.revision:=L"2" +language="en" +location="45.378331973407505,-71.92963600158693" +region="US" +service.pid="org.openhab.i18n" +timezone="America/Toronto" diff --git a/openhab/openhab_userdata/config/org_apache_felix_cm_impl_DynamicBindings.config b/openhab/openhab_userdata/config/org_apache_felix_cm_impl_DynamicBindings.config index e0d0c22..0940473 100644 --- a/openhab/openhab_userdata/config/org_apache_felix_cm_impl_DynamicBindings.config +++ b/openhab/openhab_userdata/config/org_apache_felix_cm_impl_DynamicBindings.config @@ -1 +1,2 @@ -org.openhab.addons="mvn:org.openhab.core.bundles/org.openhab.core.karaf/4.0.3" +org.apache.karaf.http="mvn:org.apache.karaf.http/org.apache.karaf.http.core/4.4.3" +org.openhab.addons="mvn:org.openhab.core.bundles/org.openhab.core.karaf/4.0.4" diff --git a/openhab/openhab_userdata/config/profile.config b/openhab/openhab_userdata/config/profile.config index 89a3f91..7267f3d 100644 --- a/openhab/openhab_userdata/config/profile.config +++ b/openhab/openhab_userdata/config/profile.config @@ -5,8 +5,8 @@ feature.bundle="bundle" feature.config="config" feature.deployer="deployer" feature.diagnostic="diagnostic" -feature.distro-kar/4.0.3="distro-kar/4.0.3" -feature.distro/4.0.3="distro/4.0.3" +feature.distro-kar/4.0.4="distro-kar/4.0.4" +feature.distro/4.0.4="distro/4.0.4" feature.eventadmin="eventadmin" feature.feature="feature" feature.framework="framework" @@ -14,87 +14,87 @@ feature.instance="instance" feature.jaas="jaas" feature.kar="kar" feature.log="log" -feature.openhab-core-addon-marketplace/4.0.3="openhab-core-addon-marketplace/4.0.3" -feature.openhab-core-auth-jaas/4.0.3="openhab-core-auth-jaas/4.0.3" -feature.openhab-core-auth-oauth2client/4.0.3="openhab-core-auth-oauth2client/4.0.3" -feature.openhab-core-automation-module-media/4.0.3="openhab-core-automation-module-media/4.0.3" -feature.openhab-core-automation-module-script-rulesupport/4.0.3="openhab-core-automation-module-script-rulesupport/4.0.3" -feature.openhab-core-automation-module-script/4.0.3="openhab-core-automation-module-script/4.0.3" -feature.openhab-core-automation-rest/4.0.3="openhab-core-automation-rest/4.0.3" -feature.openhab-core-base/4.0.3="openhab-core-base/4.0.3" -feature.openhab-core-io-bin2json/4.0.3="openhab-core-io-bin2json/4.0.3" -feature.openhab-core-io-console-karaf/4.0.3="openhab-core-io-console-karaf/4.0.3" -feature.openhab-core-io-http-auth/4.0.3="openhab-core-io-http-auth/4.0.3" -feature.openhab-core-io-rest-audio/4.0.3="openhab-core-io-rest-audio/4.0.3" -feature.openhab-core-io-rest-auth/4.0.3="openhab-core-io-rest-auth/4.0.3" -feature.openhab-core-io-rest-log/4.0.3="openhab-core-io-rest-log/4.0.3" -feature.openhab-core-io-rest-mdns/4.0.3="openhab-core-io-rest-mdns/4.0.3" -feature.openhab-core-io-rest-sitemap/4.0.3="openhab-core-io-rest-sitemap/4.0.3" -feature.openhab-core-io-rest-swagger/4.0.3="openhab-core-io-rest-swagger/4.0.3" -feature.openhab-core-io-rest-transform/4.0.3="openhab-core-io-rest-transform/4.0.3" -feature.openhab-core-io-rest-voice/4.0.3="openhab-core-io-rest-voice/4.0.3" -feature.openhab-core-io-transport-coap/4.0.3="openhab-core-io-transport-coap/4.0.3" -feature.openhab-core-io-transport-http/4.0.3="openhab-core-io-transport-http/4.0.3" -feature.openhab-core-io-transport-mdns/4.0.3="openhab-core-io-transport-mdns/4.0.3" -feature.openhab-core-io-transport-modbus/4.0.3="openhab-core-io-transport-modbus/4.0.3" -feature.openhab-core-io-transport-mqtt/4.0.3="openhab-core-io-transport-mqtt/4.0.3" -feature.openhab-core-io-transport-serial-javacomm/4.0.3="openhab-core-io-transport-serial-javacomm/4.0.3" -feature.openhab-core-io-transport-upnp/4.0.3="openhab-core-io-transport-upnp/4.0.3" -feature.openhab-core-io-websocket/4.0.3="openhab-core-io-websocket/4.0.3" -feature.openhab-core-model-item-ide/4.0.3="openhab-core-model-item-ide/4.0.3" -feature.openhab-core-model-item/4.0.3="openhab-core-model-item/4.0.3" -feature.openhab-core-model-lsp/4.0.3="openhab-core-model-lsp/4.0.3" -feature.openhab-core-model-persistence-ide/4.0.3="openhab-core-model-persistence-ide/4.0.3" -feature.openhab-core-model-persistence/4.0.3="openhab-core-model-persistence/4.0.3" -feature.openhab-core-model-rule-ide/4.0.3="openhab-core-model-rule-ide/4.0.3" -feature.openhab-core-model-rule/4.0.3="openhab-core-model-rule/4.0.3" -feature.openhab-core-model-script-ide/4.0.3="openhab-core-model-script-ide/4.0.3" -feature.openhab-core-model-script/4.0.3="openhab-core-model-script/4.0.3" -feature.openhab-core-model-sitemap-ide/4.0.3="openhab-core-model-sitemap-ide/4.0.3" -feature.openhab-core-model-sitemap/4.0.3="openhab-core-model-sitemap/4.0.3" -feature.openhab-core-model-thing-ide/4.0.3="openhab-core-model-thing-ide/4.0.3" -feature.openhab-core-model-thing/4.0.3="openhab-core-model-thing/4.0.3" -feature.openhab-core-storage-json/4.0.3="openhab-core-storage-json/4.0.3" -feature.openhab-core-ui-icon/4.0.3="openhab-core-ui-icon/4.0.3" -feature.openhab-core-ui/4.0.3="openhab-core-ui/4.0.3" +feature.openhab-core-addon-marketplace/4.0.4="openhab-core-addon-marketplace/4.0.4" +feature.openhab-core-auth-jaas/4.0.4="openhab-core-auth-jaas/4.0.4" +feature.openhab-core-auth-oauth2client/4.0.4="openhab-core-auth-oauth2client/4.0.4" +feature.openhab-core-automation-module-media/4.0.4="openhab-core-automation-module-media/4.0.4" +feature.openhab-core-automation-module-script-rulesupport/4.0.4="openhab-core-automation-module-script-rulesupport/4.0.4" +feature.openhab-core-automation-module-script/4.0.4="openhab-core-automation-module-script/4.0.4" +feature.openhab-core-automation-rest/4.0.4="openhab-core-automation-rest/4.0.4" +feature.openhab-core-base/4.0.4="openhab-core-base/4.0.4" +feature.openhab-core-io-bin2json/4.0.4="openhab-core-io-bin2json/4.0.4" +feature.openhab-core-io-console-karaf/4.0.4="openhab-core-io-console-karaf/4.0.4" +feature.openhab-core-io-http-auth/4.0.4="openhab-core-io-http-auth/4.0.4" +feature.openhab-core-io-rest-audio/4.0.4="openhab-core-io-rest-audio/4.0.4" +feature.openhab-core-io-rest-auth/4.0.4="openhab-core-io-rest-auth/4.0.4" +feature.openhab-core-io-rest-log/4.0.4="openhab-core-io-rest-log/4.0.4" +feature.openhab-core-io-rest-mdns/4.0.4="openhab-core-io-rest-mdns/4.0.4" +feature.openhab-core-io-rest-sitemap/4.0.4="openhab-core-io-rest-sitemap/4.0.4" +feature.openhab-core-io-rest-swagger/4.0.4="openhab-core-io-rest-swagger/4.0.4" +feature.openhab-core-io-rest-transform/4.0.4="openhab-core-io-rest-transform/4.0.4" +feature.openhab-core-io-rest-voice/4.0.4="openhab-core-io-rest-voice/4.0.4" +feature.openhab-core-io-transport-coap/4.0.4="openhab-core-io-transport-coap/4.0.4" +feature.openhab-core-io-transport-http/4.0.4="openhab-core-io-transport-http/4.0.4" +feature.openhab-core-io-transport-mdns/4.0.4="openhab-core-io-transport-mdns/4.0.4" +feature.openhab-core-io-transport-modbus/4.0.4="openhab-core-io-transport-modbus/4.0.4" +feature.openhab-core-io-transport-mqtt/4.0.4="openhab-core-io-transport-mqtt/4.0.4" +feature.openhab-core-io-transport-serial-javacomm/4.0.4="openhab-core-io-transport-serial-javacomm/4.0.4" +feature.openhab-core-io-transport-upnp/4.0.4="openhab-core-io-transport-upnp/4.0.4" +feature.openhab-core-io-websocket/4.0.4="openhab-core-io-websocket/4.0.4" +feature.openhab-core-model-item-ide/4.0.4="openhab-core-model-item-ide/4.0.4" +feature.openhab-core-model-item/4.0.4="openhab-core-model-item/4.0.4" +feature.openhab-core-model-lsp/4.0.4="openhab-core-model-lsp/4.0.4" +feature.openhab-core-model-persistence-ide/4.0.4="openhab-core-model-persistence-ide/4.0.4" +feature.openhab-core-model-persistence/4.0.4="openhab-core-model-persistence/4.0.4" +feature.openhab-core-model-rule-ide/4.0.4="openhab-core-model-rule-ide/4.0.4" +feature.openhab-core-model-rule/4.0.4="openhab-core-model-rule/4.0.4" +feature.openhab-core-model-script-ide/4.0.4="openhab-core-model-script-ide/4.0.4" +feature.openhab-core-model-script/4.0.4="openhab-core-model-script/4.0.4" +feature.openhab-core-model-sitemap-ide/4.0.4="openhab-core-model-sitemap-ide/4.0.4" +feature.openhab-core-model-sitemap/4.0.4="openhab-core-model-sitemap/4.0.4" +feature.openhab-core-model-thing-ide/4.0.4="openhab-core-model-thing-ide/4.0.4" +feature.openhab-core-model-thing/4.0.4="openhab-core-model-thing/4.0.4" +feature.openhab-core-storage-json/4.0.4="openhab-core-storage-json/4.0.4" +feature.openhab-core-ui-icon/4.0.4="openhab-core-ui-icon/4.0.4" +feature.openhab-core-ui/4.0.4="openhab-core-ui/4.0.4" feature.openhab-runtime-base="openhab-runtime-base" -feature.openhab-runtime-base/4.0.3="openhab-runtime-base/4.0.3" -feature.openhab-runtime-certificate/4.0.3="openhab-runtime-certificate/4.0.3" +feature.openhab-runtime-base/4.0.4="openhab-runtime-base/4.0.4" +feature.openhab-runtime-certificate/4.0.4="openhab-runtime-certificate/4.0.4" feature.openhab-runtime-ui="openhab-runtime-ui" -feature.openhab-runtime-ui/4.0.3="openhab-runtime-ui/4.0.3" -feature.openhab-transport-coap/4.0.3="openhab-transport-coap/4.0.3" -feature.openhab-transport-http/4.0.3="openhab-transport-http/4.0.3" -feature.openhab-transport-mdns/4.0.3="openhab-transport-mdns/4.0.3" -feature.openhab-transport-modbus/4.0.3="openhab-transport-modbus/4.0.3" -feature.openhab-transport-mqtt/4.0.3="openhab-transport-mqtt/4.0.3" -feature.openhab-transport-serial/4.0.3="openhab-transport-serial/4.0.3" -feature.openhab-transport-upnp/4.0.3="openhab-transport-upnp/4.0.3" -feature.openhab.inc-model-core/4.0.3="openhab.inc-model-core/4.0.3" -feature.openhab.tp-asm/4.0.3="openhab.tp-asm/4.0.3" -feature.openhab.tp-base/4.0.3="openhab.tp-base/4.0.3" -feature.openhab.tp-coap/4.0.3="openhab.tp-coap/4.0.3" -feature.openhab.tp-commons-net/4.0.3="openhab.tp-commons-net/4.0.3" -feature.openhab.tp-cxf/4.0.3="openhab.tp-cxf/4.0.3" -feature.openhab.tp-gson/4.0.3="openhab.tp-gson/4.0.3" -feature.openhab.tp-hivemqclient/4.0.3="openhab.tp-hivemqclient/4.0.3" -feature.openhab.tp-httpclient/4.0.3="openhab.tp-httpclient/4.0.3" -feature.openhab.tp-jackson/4.0.3="openhab.tp-jackson/4.0.3" -feature.openhab.tp-jax-rs-whiteboard/4.0.3="openhab.tp-jax-rs-whiteboard/4.0.3" -feature.openhab.tp-jaxb/4.0.3="openhab.tp-jaxb/4.0.3" -feature.openhab.tp-jaxws/4.0.3="openhab.tp-jaxws/4.0.3" -feature.openhab.tp-jbbp/4.0.3="openhab.tp-jbbp/4.0.3" -feature.openhab.tp-jmdns/4.0.3="openhab.tp-jmdns/4.0.3" -feature.openhab.tp-jna/4.0.3="openhab.tp-jna/4.0.3" -feature.openhab.tp-jollyday/4.0.3="openhab.tp-jollyday/4.0.3" -feature.openhab.tp-jose4j/4.0.3="openhab.tp-jose4j/4.0.3" -feature.openhab.tp-jupnp/4.0.3="openhab.tp-jupnp/4.0.3" -feature.openhab.tp-lsp4j/4.0.3="openhab.tp-lsp4j/4.0.3" -feature.openhab.tp-netty/4.0.3="openhab.tp-netty/4.0.3" -feature.openhab.tp-serial-javacomm/4.0.3="openhab.tp-serial-javacomm/4.0.3" -feature.openhab.tp-serial-rxtx/4.0.3="openhab.tp-serial-rxtx/4.0.3" -feature.openhab.tp-swagger-jaxrs/4.0.3="openhab.tp-swagger-jaxrs/4.0.3" -feature.openhab.tp-xtext-ide/4.0.3="openhab.tp-xtext-ide/4.0.3" -feature.openhab.tp-xtext/4.0.3="openhab.tp-xtext/4.0.3" +feature.openhab-runtime-ui/4.0.4="openhab-runtime-ui/4.0.4" +feature.openhab-transport-coap/4.0.4="openhab-transport-coap/4.0.4" +feature.openhab-transport-http/4.0.4="openhab-transport-http/4.0.4" +feature.openhab-transport-mdns/4.0.4="openhab-transport-mdns/4.0.4" +feature.openhab-transport-modbus/4.0.4="openhab-transport-modbus/4.0.4" +feature.openhab-transport-mqtt/4.0.4="openhab-transport-mqtt/4.0.4" +feature.openhab-transport-serial/4.0.4="openhab-transport-serial/4.0.4" +feature.openhab-transport-upnp/4.0.4="openhab-transport-upnp/4.0.4" +feature.openhab.inc-model-core/4.0.4="openhab.inc-model-core/4.0.4" +feature.openhab.tp-asm/4.0.4="openhab.tp-asm/4.0.4" +feature.openhab.tp-base/4.0.4="openhab.tp-base/4.0.4" +feature.openhab.tp-coap/4.0.4="openhab.tp-coap/4.0.4" +feature.openhab.tp-commons-net/4.0.4="openhab.tp-commons-net/4.0.4" +feature.openhab.tp-cxf/4.0.4="openhab.tp-cxf/4.0.4" +feature.openhab.tp-gson/4.0.4="openhab.tp-gson/4.0.4" +feature.openhab.tp-hivemqclient/4.0.4="openhab.tp-hivemqclient/4.0.4" +feature.openhab.tp-httpclient/4.0.4="openhab.tp-httpclient/4.0.4" +feature.openhab.tp-jackson/4.0.4="openhab.tp-jackson/4.0.4" +feature.openhab.tp-jax-rs-whiteboard/4.0.4="openhab.tp-jax-rs-whiteboard/4.0.4" +feature.openhab.tp-jaxb/4.0.4="openhab.tp-jaxb/4.0.4" +feature.openhab.tp-jaxws/4.0.4="openhab.tp-jaxws/4.0.4" +feature.openhab.tp-jbbp/4.0.4="openhab.tp-jbbp/4.0.4" +feature.openhab.tp-jmdns/4.0.4="openhab.tp-jmdns/4.0.4" +feature.openhab.tp-jna/4.0.4="openhab.tp-jna/4.0.4" +feature.openhab.tp-jollyday/4.0.4="openhab.tp-jollyday/4.0.4" +feature.openhab.tp-jose4j/4.0.4="openhab.tp-jose4j/4.0.4" +feature.openhab.tp-jupnp/4.0.4="openhab.tp-jupnp/4.0.4" +feature.openhab.tp-lsp4j/4.0.4="openhab.tp-lsp4j/4.0.4" +feature.openhab.tp-netty/4.0.4="openhab.tp-netty/4.0.4" +feature.openhab.tp-serial-javacomm/4.0.4="openhab.tp-serial-javacomm/4.0.4" +feature.openhab.tp-serial-rxtx/4.0.4="openhab.tp-serial-rxtx/4.0.4" +feature.openhab.tp-swagger-jaxrs/4.0.4="openhab.tp-swagger-jaxrs/4.0.4" +feature.openhab.tp-xtext-ide/4.0.4="openhab.tp-xtext-ide/4.0.4" +feature.openhab.tp-xtext/4.0.4="openhab.tp-xtext/4.0.4" feature.package="package" feature.service="service" feature.shell="shell" @@ -105,8 +105,8 @@ feature.wrapper="wrapper" felix.fileinstall.filename="file:/openhab/userdata/etc/profile.cfg" repository.mvn:org.apache.karaf.features/framework/4.4.3/xml/features="mvn:org.apache.karaf.features/framework/4.4.3/xml/features" repository.mvn:org.apache.karaf.features/standard/4.4.3/xml/features="mvn:org.apache.karaf.features/standard/4.4.3/xml/features" -repository.mvn:org.openhab.distro/distro-kar/4.0.3/xml/features="mvn:org.openhab.distro/distro-kar/4.0.3/xml/features" -repository.mvn:org.openhab.distro/distro/4.0.3/xml/features="mvn:org.openhab.distro/distro/4.0.3/xml/features" -repository.mvn:org.openhab.distro/openhab-addons/4.0.3/xml/features="mvn:org.openhab.distro/openhab-addons/4.0.3/xml/features" +repository.mvn:org.openhab.distro/distro-kar/4.0.4/xml/features="mvn:org.openhab.distro/distro-kar/4.0.4/xml/features" +repository.mvn:org.openhab.distro/distro/4.0.4/xml/features="mvn:org.openhab.distro/distro/4.0.4/xml/features" +repository.mvn:org.openhab.distro/openhab-addons/4.0.4/xml/features="mvn:org.openhab.distro/openhab-addons/4.0.4/xml/features" service.bundleLocation="?" service.pid="profile" diff --git a/openhab/openhab_userdata/etc/branding-ssh.properties b/openhab/openhab_userdata/etc/branding-ssh.properties index df03670..783c521 100644 --- a/openhab/openhab_userdata/etc/branding-ssh.properties +++ b/openhab/openhab_userdata/etc/branding-ssh.properties @@ -4,7 +4,7 @@ welcome = \r\n\ \u001B[91m / _ \\ / _ \\ / _ \\ / _ \\ \u001B[97m| |_| | / _ \\ | _ \\ \u001B[0m\r\n\ \u001B[91m | (_) | (_) | __/| | | |\u001B[97m| _ | / ___ \\ | |_) )\u001B[0m\r\n\ \u001B[91m \\___/| __/ \\___/|_| |_|\u001B[97m|_| |_|/_/ \\_\\|____/ \u001B[0m\r\n\ -\u001B[91m |_| \u001B[0m 4.0.3 - Release Build\u001B[0m\r\n\ +\u001B[91m |_| \u001B[0m 4.0.4 - Release Build\u001B[0m\r\n\ \r\n\ Use '\u001B[1m\u001B[0m' for a list of available commands\r\n\ and '\u001B[1m[cmd] --help\u001B[0m' for help on a specific command.\r\n\ diff --git a/openhab/openhab_userdata/etc/branding.properties b/openhab/openhab_userdata/etc/branding.properties index df03670..783c521 100644 --- a/openhab/openhab_userdata/etc/branding.properties +++ b/openhab/openhab_userdata/etc/branding.properties @@ -4,7 +4,7 @@ welcome = \r\n\ \u001B[91m / _ \\ / _ \\ / _ \\ / _ \\ \u001B[97m| |_| | / _ \\ | _ \\ \u001B[0m\r\n\ \u001B[91m | (_) | (_) | __/| | | |\u001B[97m| _ | / ___ \\ | |_) )\u001B[0m\r\n\ \u001B[91m \\___/| __/ \\___/|_| |_|\u001B[97m|_| |_|/_/ \\_\\|____/ \u001B[0m\r\n\ -\u001B[91m |_| \u001B[0m 4.0.3 - Release Build\u001B[0m\r\n\ +\u001B[91m |_| \u001B[0m 4.0.4 - Release Build\u001B[0m\r\n\ \r\n\ Use '\u001B[1m\u001B[0m' for a list of available commands\r\n\ and '\u001B[1m[cmd] --help\u001B[0m' for help on a specific command.\r\n\ diff --git a/openhab/openhab_userdata/etc/config.properties b/openhab/openhab_userdata/etc/config.properties index c46ef60..59f46f7 100644 --- a/openhab/openhab_userdata/etc/config.properties +++ b/openhab/openhab_userdata/etc/config.properties @@ -304,7 +304,7 @@ karaf.delay.console=false # # Generated command shutdown # -karaf.shutdown.command = 3671966a-c132-484c-b14d-9dfe27d34b1b +karaf.shutdown.command = 1930c756-b498-48ea-b592-94f2b4e26135 # # Enable native Karaf support for systemd's watchdog. diff --git a/openhab/openhab_userdata/etc/keystore b/openhab/openhab_userdata/etc/keystore index 88ff11eac265f375504ea95a521908ec164fc213..d1d1fcb87e4b53a371754263b6fe13417b6f8fc6 100644 GIT binary patch delta 364 zcmcb|a+hU-G)twov&}?#iTdgHA8|?D`Zh1&&Cgh#vqIs*+MB;AEnR*!Hk#l0_B>7P z1L>;C)oa~@L%1FWAK(4nqbmDYpNI_mB<6*M)g2sZT?U&sRlknZJt2BnsE?&D;$Gd# zDS2YkGp~7FTYFJ_%D)o3FRAH?>4kbu>6aN87#JB?BlJuSEEyOWXBadwPBGwXVzgSo z%*4pV#FA@P^kCwV3<*PXLrW6_BaStbbl$@|lQs|b6 za_jZ%n-lBPVhY7itU0hC@@UH9+|5_#ZvTGC+Ocif-oq;O>`(Ioe$`!lka13^y(0G5 z&u4cYpEBTL0o!^|A$vUYG$0Wz3ilCz9GBn_0LY%i|;c9 z4c|<+kMpx#=5bD?UEq)J{Qe!PDKj$skKSDOsN;~EV6JME%RhIQBl`FH!hXFGxuU5v z$>E!39?Q(~k8f;VUjM}U(4)nR%Ut@J##b8#1_nk3)(AaQ14{-5#+e39j8hHxni#DX zFf%bSF|im`{*IY=Btyc$(#X)n)X*qOoY&ac(8$0H%AI&2bn;9_srpOyo`+%<|n{}$5E%~CVfWmf32Y`gmWgna&f zw_h_$#SOUFIJDY4&e^gsGckKI7`QPhGVC$kqF^+a=lYH{CQtIec-ri?