bco's People
Forkers
harmageddonbco's Issues
testAbsenceEnergySavingAgent fails with execution state can not be reached.
Test fails with:
org.openbase.jul.exception.CouldNotPerformException: PH Hue E27 Device Stairway - stop waiting because state[EXECUTING] cannot be reached from state[REJECTED]
at app//org.openbase.bco.dal.remote.action.RemoteAction.waitForActionState(RemoteAction.java:1017)
at app//org.openbase.bco.dal.remote.action.RemoteAction.waitForActionState(RemoteAction.java:997)
at app//org.openbase.bco.dal.remote.action.RemoteAction.waitForActionState(RemoteAction.java:973)
at app//org.openbase.bco.dal.test.AbstractBCOTest.waitForExecution(AbstractBCOTest.java:217)
at app//org.openbase.bco.app.preset.agent.AbsenceEnergySavingAgentTest.testAbsenceEnergySavingAgent(AbsenceEnergySavingAgentTest.java:112)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at [email protected]/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Issue can as well be reproduced by:
org.openbase.bco.dal.test.layer.unit.scene.SceneRemoteTest
Test testTriggerSceneWithLocationActionPerRemoteAndVerifiesUnitModification() FAILED (4.5s)
org.openbase.jul.exception.CouldNotPerformException: location On Test Scene - stop waiting because state[EXECUTING] cannot be reached from state[REJECTED]
at app//org.openbase.bco.dal.test.layer.unit.scene.SceneRemoteTest.testTriggerSceneWithLocationActionPerRemoteAndVerifiesUnitModification(SceneRemoteTest.java:576)
Test testTriggerSceneWithAllDevicesOfLocationActionPerRemoteAndVerifiesUnitModification() FAILED (2.9s)
org.openbase.jul.exception.CouldNotPerformException: location Devices On Test Scene - stop waiting because state[EXECUTING] cannot be reached from state[REJECTED]
at app//org.openbase.bco.dal.test.layer.unit.scene.SceneRemoteTest.testTriggerSceneWithAllDevicesOfLocationActionPerRemoteAndVerifiesUnitModification(SceneRemoteTest.java:509)
Test testIntermediaryActionCancellationOnSceneDeactivation() FAILED (1.8s)
Fix MqttIntegrationTest by locking JPS manipulation
In tests it can happen that properties are manipulated in parallel.
Thus we have to lock the java property manipulation to avoid JPS issues.
Websockets for GraphQL Subscriptions don't work
Currently, you cannot make use of GraphQL Subscriptions because the server does not allow Websocket connections. This is because the required spring boot dependency spring-boot-starter-websocket
is missing from the classpath.
Feature: Improv Scene Deactivation Responsiveness.
The required action observer should be base on the REQUESTED
service state as well to improve responsiveness of switching between scenes that interfere.
Cleanup for version 2.0
With the upgrade to version 2.0 deprecated methods should be removed and everything cleaned up.
Implement Individual Agent Action Adjustment Learner
Port openhab-device-manager to latest openhab version `v3.2.0`
Some adjustments are required, such as porting device sync from ThingDTO
to EnhancedThingDTO
,
Apply 2.0 data type changes
The following types has been refactored:
- UserPresenceState -> UserTransitState
- ActionAuthority
- ticket -> user id
- BlindState
- MovementState -> State
- field movement_state -> value
- ActionDescription
- Transaction id has been removed
- InventoryState
- owner_id -> borrower_id
The following deprecated types has been removed:
- IntensityState
- BrightnessState
The following deprecated methods has been removed:
- PresenceState.last_presence has been replaced by the new last_value_occurrence field
- ButtonState.last_pressed has been replaced by the new last_value_occurrence field
- TamperState.last_detection has been replaced by the new last_value_occurrence field
Review Usage of `mergeFrom` on Protobuf Types
Issue #75 was caused by using the mergeFrom
method of Protobuf. Naturally, this method cannot replace values in repeated fields but only extends them. Thus, we should review all usages and likely replace them with a more sophisticated merge strategy.
Implement State Request Handler
ServicesTest.testComputeActionImpact still fails
Now that #65 is fixed the test seems to consistently fail with the following issue:
org.opentest4j.AssertionFailedError: impacted unit id list differs as expected ==> expected: <[colorablelight-66950dd0, colorablelight-7f27f060, colorablelight-83fcdc9f, colorablelight-8bb6bc6b, dimmablelight-9e1df0ab, dimmer-7e6edf4b, light-d7b2c8a8, location-heaven-9c7c6bdb, location-hell-0404a49d, location-stairway_to_heaven-ee454d29, powerswitch-489dcee3]> but was: <[colorablelight-66950dd0, colorablelight-7f27f060, colorablelight-83fcdc9f, colorablelight-8bb6bc6b, dimmablelight-9e1df0ab, dimmer-7e6edf4b, light-d7b2c8a8, location-heaven-9c7c6bdb, location-hell-0404a49d, location-home-93a825b0, location-stairway_to_heaven-ee454d29, powerswitch-489dcee3]>
at app//org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:55)
at app//org.junit.jupiter.api.AssertionUtils.failNotEqual(AssertionUtils.java:62)
at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1152)
at app//org.openbase.bco.dal.lib.layer.service.provider.ServicesTest.testComputeActionImpact(ServicesTest.java:79)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at [email protected]/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at [email protected]/java.lang.reflect.Method.invoke(Method.java:568)
at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)
at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at app//org.junit.jupiter.engine.extension.TimeoutInvocation.proceed(TimeoutInvocation.java:46)
at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at app//org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at app//org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at app//org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at app//org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214)
at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210)
at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135)
at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at [email protected]/java.util.ArrayList.forEach(ArrayList.java:1511)
at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at [email protected]/java.util.ArrayList.forEach(ArrayList.java:1511)
at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at [email protected]/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at [email protected]/java.lang.reflect.Method.invoke(Method.java:568)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Remove deprecated API
This major release contains some API cleanup. To optimize the code overview and maintainability we remove nearly all deprecated API within this release.
Some removals:
-
Datatypes
- BrightnessSensorData.proto
-
Methods
-
Other
Port Jul from Maven to Gradle
Units deadlock on configuration change
Sometimes if the configuration of a unit changes, which induces a scope change, the unit controller does not restart.
Remove replace label by alias list in all unit data types.
- Because a label does not identify anymore units those are not a part of the unit data anymore.
- If you need a label used the registry to quest the label by passing the id or the alias of an unit.
- Aliases are now included in the unit data type which are more reliable than using labels.
Develop Semantic Automation/State Model
Migration to OpenHAB 2
Implement Agent Behaviour Model
Merge 2.0 feature branches into the master branches
Implement Reasoner
Individual Behaviour Adjustment
Implement the communication with openhab items
Blocked by #5 because first the method for the communication has to be decided.
Implement Action Adaption
Skip sending actions to OpenHAB if they do not cause a state change
Examples
- If a light is off because the terminating action is executing and then an agent puts on another off action, this action causes an action to be send to OpenHAB.
- Turning the root location off will likely trigger many commands to OpenHAB for devices that are already off.
Advantages
- By Skipping to send such an action to OpenHAB, we should generally be more efficient.
- We could avoid issues with mapping feedback from OpenHAB to our actions
Possible Disadvantages
- There could be problems if we are out of sync with OpenHAB. E.g. a lamp is on for real, but our representation is that it is still off. As a consequence we would not send an off command.
Bug in ActionDescription description generation
While debugging the unit tests I found a weird behaviour that the descriptions (english and german) are generated multiple times for the same action.
Action [action_id: "action-low-815f2fa3"
label {
entry {
key: "en"
value: "$UNIT_LABEL[SERVICE_STATE]"
}
entry {
key: "en"
value: "$UNIT_LABEL[SERVICE_STATE]"
}
}
description {
entry {
key: "de"
value: "Admin hat color von PH Hue E27 Device Stairway zu red ge\303\244ndert."
}
entry {
key: "en"
value: "Admin changed color of PH Hue E27 Device Stairway to red."
}
entry {
key: "de"
value: "Admin hat color von PH Hue E27 Device Stairway zu red ge\303\244ndert."
}
entry {
key: "en"
value: "Admin changed color of PH Hue E27 Device Stairway to red."
}
}
action_initiator {
initiator_id: "user-admin-054e9aec"
initiator_type: HUMAN
authorized_by: "user-admin-054e9aec"
authenticated_by: "user-admin-054e9aec"
}
action_state {
value: EXECUTING
last_value_occurrence {
key: INITIALIZED
value {
time: 1665519535040000
}
}
last_value_occurrence {
key: INITIATING
value {
time: 1665519535040000
}
}
last_value_occurrence {
key: EXECUTING
value {
time: 1665519535088000
}
}
last_value_occurrence {
key: SUBMISSION
value {
time: 1665519535058000
}
}
}
action_impact {
action_id: "PRECOMPUTED_ACTION"
service_state_description {
unit_id: "unitgroup-allcolorablelights-d82eb836"
service_type: COLOR_STATE_SERVICE
service_state_class_name: "org.openbase.type.domotic.state.ColorStateType$ColorState"
service_state: "{\"color\": {\"type\": \"HSB\",\"hsb_color\": {\"hue\": 0.0,\"saturation\": 1.0,\"brightness\": 1.0}}}"
}
}
action_impact {
action_id: "PRECOMPUTED_ACTION"
service_state_description {
unit_id: "location-home-5fdb311e"
service_type: COLOR_STATE_SERVICE
service_state_class_name: "org.openbase.type.domotic.state.ColorStateType$ColorState"
service_state: "{\"color\": {\"type\": \"HSB\",\"hsb_color\": {\"hue\": 0.0,\"saturation\": 1.0,\"brightness\": 1.0}}}"
}
}
action_impact {
action_id: "PRECOMPUTED_ACTION"
service_state_description {
unit_id: "location-stairway_to_heaven-d0d899a8"
service_type: COLOR_STATE_SERVICE
service_state_class_name: "org.openbase.type.domotic.state.ColorStateType$ColorState"
service_state: "{\"color\": {\"type\": \"HSB\",\"hsb_color\": {\"hue\": 0.0,\"saturation\": 1.0,\"brightness\": 1.0}}}"
}
}
action_impact {
action_id: "PRECOMPUTED_ACTION"
service_state_description {
unit_id: "unitgroup-allcolorablelights-d82eb836"
service_type: COLOR_STATE_SERVICE
service_state_class_name: "org.openbase.type.domotic.state.ColorStateType$ColorState"
service_state: "{\"color\": {\"type\": \"HSB\",\"hsb_color\": {\"hue\": 0.0,\"saturation\": 1.0,\"brightness\": 1.0}}}"
}
}
action_impact {
action_id: "PRECOMPUTED_ACTION"
service_state_description {
unit_id: "location-home-5fdb311e"
service_type: COLOR_STATE_SERVICE
service_state_class_name: "org.openbase.type.domotic.state.ColorStateType$ColorState"
service_state: "{\"color\": {\"type\": \"HSB\",\"hsb_color\": {\"hue\": 0.0,\"saturation\": 1.0,\"brightness\": 1.0}}}"
}
}
action_impact {
action_id: "PRECOMPUTED_ACTION"
service_state_description {
unit_id: "location-stairway_to_heaven-d0d899a8"
service_type: COLOR_STATE_SERVICE
service_state_class_name: "org.openbase.type.domotic.state.ColorStateType$ColorState"
service_state: "{\"color\": {\"type\": \"HSB\",\"hsb_color\": {\"hue\": 0.0,\"saturation\": 1.0,\"brightness\": 1.0}}}"
}
}
service_state_description {
unit_id: "colorablelight-61ddaad0"
service_type: COLOR_STATE_SERVICE
service_state_class_name: "org.openbase.type.domotic.state.ColorStateType$ColorState"
service_state: "{\"color\": {\"type\": \"HSB\",\"hsb_color\": {\"hue\": 0.0,\"saturation\": 1.0,\"brightness\": 1.0}}}"
}
priority: LOW
execution_time_period: 900000000
interruptible: true
schedulable: true
auto_continue_with_low_priority: true
timestamp {
time: 1665519535039000
}
last_extension_timestamp {
time: 1665519535039000
}
] is no longer scheduled but EXECUTING
- entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
- entry {
key: "de"
value: "Admin hat color von PH Hue E27 Device Stairway zu red ge\303\244ndert."
}
entry {
key: "en"
value: "Admin changed color of PH Hue E27 Device Stairway to red."
}
entry {
key: "de"
value: "Admin hat color von PH Hue E27 Device Stairway zu red ge\303\244ndert."
}
entry {
key: "en"
value: "Admin changed color of PH Hue E27 Device Stairway to red."
}
- entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
value: "BCO hat power von PH Hue E27 Device Stairway zu aus ge\303\244ndert."
}
entry {
key: "en"
value: "BCO changed power of PH Hue E27 Device Stairway to off."
}
entry {
key: "de"
Implement Homematic -> Google Assistent Pipeline to control heaters
- Setup Openhab
- Setup BCO
- Create new DeviceClasses for available heater devices
- Setup BCO Cloud
- Setup BCO Google Assistent integration
5.1 Google Assistent Authentication needs to be fixed. - Validation:
6.1 Heater can be controlled via Openhab
6.2 Heater can be controlled via bco-visual-remote
6.3 Heater can be controlled via Google
Implement Feedback Handler
Implement openhab config generation via the REST API
Introduce Unit Groups as Members of other Unit Groups
Currently it is not possible to add unit groups as members to other unit groups. This is a powerful feature which should be allowed. However care should be taken to avoid recursions.
- Write a unit test which add unit groups as members to others and provokes a recursion
- Fix consistency handlers so that it is possible to add unit groups to members of others
- Add a consistency handler to check for recursions
Restructure maven group and artifact ids
The bco part of the group id should be moved to the start of the artifact id.
E.g:
GroupId: org.openbase.bco ArtifactId: manager
should become
GroupId: org.openbase ArtifactId: bco.manager
Further minor API changes
API Changes:
- UnitRemote
- getParentLocationConfig()
UnitConfig getParentLocationConfig() throws NotAvailableException, InterruptedException
UnitConfig getBaseLocationConfig() throws NotAvailableException
- getParentLocationRemote()
UnitConfig getParentLocationRemote() throws NotAvailableException, InterruptedException
UnitConfig getBaseLocationRemote() throws NotAvailableException
- getParentLocationConfig()
Memory Leak because of AuthenticationFutures
Running bco-test --simuate
and observing its memory usage in VisualVM reveals a memory leak. The Heap Dump reveals that the static list authenticatedFutureList
in the class AbstractAuthenticationFuture
makes up a large amount of this memory and the number of futures in this list is always increasing.
The idea with this list is that it is required to call get on these futures to update the users session (this is a problem if the future is created but no one calls get on it). Thus we keep a list of these features and regularly call get on futures which are already done. These futures and canceled futures are then removed from the list.
We should investigate why some futures on this list are never removed (are they never done?). If they never finish we could still remove all futures which are older than a timeout (e.g. 30 seconds, or simply the session timeout) since it is unusual that these could still help in keeping the users session alive.
ServicesTest.testComputeActionImpact fails
This unit test sometimes fails with the following error:
org.openbase.jul.exception.FatalImplementationErrorException: Fatal implementation error in or by using UnitRegistryRemote[scope:/test/thuxohl/registry/unit]: Location Paradise refers to itself as a child unit!
at org.openbase.bco.registry.unit.lib.UnitRegistry.isServiceAvailable(UnitRegistry.java:1469)
at org.openbase.bco.dal.lib.layer.service.provider.ServicesTest.testLocationLoop(ServicesTest.java:54)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestTemplateMethod(TimeoutExtension.java:92)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:226)
at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:204)
at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:139)
at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.lambda$execute$2(TestTemplateTestDescriptor.java:107)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base/java.util.stream.IntPipeline$1$1.accept(IntPipeline.java:180)
at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Streams.java:104)
at java.base/java.util.Spliterator$OfInt.forEachRemaining(Spliterator.java:711)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:107)
at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:42)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Fix action locking issue that causes an invalid transition from rejected to aborted
Once the registration test count of the testPowerStateServicePerformance
is increased from 100
to 1000
we run into an invalid transition from rejected to abording. Investigate test and fix issue.
The remote connection gets lost since the controller seems to be to busy.
21:35:55.042 [pool-1-thread-93] WARN o.o.b.d.r.l.u.PowerSwitchRemote Remote connection to Controller[/location-1/powerswitch/powerswitch-1] lost!
21:35:59.729 [pool-1-thread-97] ERROR o.o.b.d.c.a.ActionImpl Can not finalize ActionImpl[action-normal-8ebaf922|POWER_STATE_SERVICE|{"value": "ON"}|powerswitch-ea87da4a|user-bco-f19a7c8d(SYSTEM)|INITIATING] it seems the execution has stuck.
21:35:59.735 [pool-1-thread-97] WARN o.o.b.d.c.a.ActionImpl Can not change the state to ABORTING of an already rejected action!
21:35:59.736 [pool-1-thread-97] WARN o.o.b.d.c.a.ActionImpl
=== Stacktrace ===
org.openbase.jul.exception.StackTracePrinter.printStackTrace(StackTracePrinter.java:72)
org.openbase.bco.dal.control.action.ActionImpl.updateActionState(ActionImpl.java:763)
org.openbase.bco.dal.control.action.ActionImpl.updateActionStateWhileHoldingWriteLock(ActionImpl.java:744)
org.openbase.bco.dal.control.action.ActionImpl.abort(ActionImpl.java:559)
org.openbase.bco.dal.lib.action.SchedulableAction.abort(SchedulableAction.java:64)
org.openbase.bco.dal.control.layer.unit.AbstractUnitController.reschedule(AbstractUnitController.java:1080)
org.openbase.bco.dal.control.layer.unit.AbstractUnitController.scheduleAction(AbstractUnitController.java:858)
org.openbase.bco.dal.control.layer.unit.AbstractUnitController.applyAction(AbstractUnitController.java:675)
org.openbase.bco.dal.control.layer.unit.AbstractUnitController.internalApplyActionAuthenticated(AbstractUnitController.java:1278)
org.openbase.bco.dal.control.layer.unit.AbstractUnitController.lambda$applyActionAuthenticated$5(AbstractUnitController.java:1226)
org.openbase.bco.authentication.lib.AuthenticatedServiceProcessor.authenticatedAction(AuthenticatedServiceProcessor.java:135)
org.openbase.bco.authentication.lib.AuthenticatedServiceProcessor.authenticatedAction(AuthenticatedServiceProcessor.java:90)
org.openbase.bco.authentication.lib.AuthenticatedServiceProcessor.authenticatedAction(AuthenticatedServiceProcessor.java:69)
org.openbase.bco.dal.control.layer.unit.AbstractUnitController.applyActionAuthenticated(AbstractUnitController.java:1244)
jdk.internal.reflect.GeneratedMethodAccessor760.invoke(Unknown Source)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:568)
kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97)
kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:113)
kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108)
org.openbase.jul.communication.mqtt.RPCMethod.invoke(RPCMethod.kt:223)
org.openbase.jul.communication.mqtt.RPCServerImpl.handleRemoteCall(RPCServerImpl.kt:141)
org.openbase.jul.communication.mqtt.RPCServerImpl.activate$lambda-2$lambda-1(RPCServerImpl.kt:65)
com.hivemq.client.internal.mqtt.MqttAsyncClient$CallbackSubscriber.onNext(MqttAsyncClient.java:303)
com.hivemq.client.internal.mqtt.MqttAsyncClient$CallbackSubscriber.onNext(MqttAsyncClient.java:288)
com.hivemq.client.rx.FlowableWithSingle$SingleFutureSubscriber.onNext(FlowableWithSingle.java:406)
com.hivemq.client.internal.rx.operators.FlowableWithSingleCombine$SplitSubscriber$Default.tryOnNextActual(FlowableWithSingleCombine.java:235)
com.hivemq.client.internal.rx.operators.FlowableWithSingleCombine$SplitSubscriber.tryOnNext(FlowableWithSingleCombine.java:200)
io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnConditionalSubscriber.runAsync(FlowableObserveOn.java:649)
io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:288)
io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:253)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
java.base/java.lang.Thread.run(Thread.java:833)
==================
21:35:59.739 [pool-1-thread-97] INFO o.o.j.p.JPVerbose Verbose is enabled!
21:35:59.742 [pool-1-thread-97] INFO o.o.b.d.c.l.u.PowerSwitchController ActionImpl[action-normal-bdc604a5|POWER_STATE_SERVICE|{"value": "OFF"}|powerswitch-ea87da4a|user-bco-f19a7c8d(SYSTEM)|REJECTED] was postponed because of ActionImpl[action-termination-economy-0b796e97|POWER_STATE_SERVICE|{"value": "OFF"}|powerswitch-ea87da4a|user-bco-f19a7c8d(SYSTEM)|SUBMISSION] and added to the scheduling queue of PowerSwitchController[POWER_SWITCH[PW Power Plug Device]] at position 36.
21:35:59.745 [pool-1-thread-989] INFO o.o.b.d.c.l.u.PowerSwitchController PW Power Plug Device is updated from off to off.
21:35:59.745 [pool-1-thread-97] ERROR o.o.b.a.l.AuthenticatedServerManager ═══⚀ Request timestamp [21.7.2022 - 21:35:54:89] differs more than 5 seconds from server time [21.7.2022 - 21:35:59:743]
21:35:59.746 [pool-1-thread-97] ERROR o.o.b.a.l.AuthenticatedServerManager =====================================
21:35:59.749 [pool-1-thread-97] ERROR o.o.b.a.l.AuthenticatedServerManager Request timestamp [21.7.2022 - 21:35:54:89] differs more than 5 seconds from server time [21.7.2022 - 21:35:59:743]
org.openbase.bco.authentication.lib.exception.SessionExpiredException: Request timestamp [21.7.2022 - 21:35:54:89] differs more than 5 seconds from server time [21.7.2022 - 21:35:59:743]
at org.openbase.bco.authent
Introduce Docker Compose for BCO DIstribution
In order to simplify the bco docker setup process, it would be nice to provide a docker compose file that handle the entire setup.
Investigate whether item updates and commands should be accessed via the REST API or the MQTT binding
Semantic State Explainability
SeviceState percentage fields should be defined and handled between [0-1] as double type.
Pro arguments:
- this improves any math operations because the values are already normalized.
- nearly all ui components are using this range which avoids transformations.
Types to modify:
- ColorState
- BatteryState
- BlindState
- BrightnessState
- SmokeState
Steps to perform on dedicated feature branch
- adjust dal service validation
- enable dal service validation to detect outdated values and auto adjust its range while printing a warning.
- adjust openhab transformer
- adjust registry editor scene edit panes
- adjust dal.visual.remote panes
- adjust bcozy panes
- adjust bcomfy panes
Generating default aliases for units skips uneven numbers
Since the recent changes to the consistency handler that generates default aliases, the unit tests fail, because aliases with uneven numbers (ReedContact-1
) are expected to exists. A debugging outputs revealed that only even numbers were taken ReedContact-2
, ReedContact-4
and so on.
RemoteActionTest sometimes waits endlessly on exeuction state
Sometimes the remote action test fails on waiting for the execution state. This only happens seldom. Using a debugger, we could see that the state of the action in the data type of the unit remote is EXECUTING
. Therefore the following things have to be investigated:
- Is the event filtered because of a permission issue?
- Can it happen that the notification of the state change is skipped? 👎
- Does the RemoteAction handle the notifications correctly?
Implement config synchronization between openhab and bco via the REST API
Implement Individual Agent Action Adjustment Model
Performance improvements and JUL + RCT upgrade
Performance Improvement
- Reduce amount of worker tasks used for state synchronisation.
- Fix a bug where sometimes the action list was not properly synced into the data builder.
- Improve interrupt handling
- Make sure only interruptable locks are used for state monitoring.
- Simplify Controller state locking by removing notification lock.
- Make ButtonRemoteTest more stable.
Upstream Dependencies
- switch to jul v3.2
- switch to rct v3.2
Implement Agent Behaviour Model Learner
fix testThatScenesDoNotInterfereEachOther() test
Fails with:
org.opentest4j.AssertionFailedError: Light is not red but: BCO changed power of PH Hue E27 Device Stairway to off. ==> expected: <type: HSB
hsb_color {
hue: 0.0
saturation: 1.0
brightness: 1.0
}
> but was: <type: HSB
hsb_color {
hue: 0.0
saturation: 1.0
brightness: 0.0
}
>
at app//org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:55)
at app//org.junit.jupiter.api.AssertionUtils.failNotEqual(AssertionUtils.java:62)
at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1152)
at app//org.openbase.bco.dal.test.layer.unit.scene.SceneRemoteTest.testThatScenesDoNotInterfereEachOther(SceneRemoteTest.java:855)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at [email protected]/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at [email protected]/java.lang.reflect.Method.invoke(Method.java:568)
at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)
at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at app//org.junit.jupiter.engine.extension.TimeoutInvocation.proceed(TimeoutInvocation.java:46)
at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at app//org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at app//org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at app//org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at app//org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214)
at app//org.junit.platfor
output
?[0;39m17:50:57.643 [pool-1-thread-3] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.s.SceneControllerImpl?[0;39m ?[39mGroup Trigger Scene is updated from unknown to inactive.
?[0;39m17:50:57.647 [pool-1-thread-3] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed activation of Group Trigger Scene to inactive.
?[0;39m17:50:57.654 [pool-1-thread-47] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.UnitControllerRegistrySynchronizer?[0;39m ?[39m1 changes synchronized.
?[0;39m17:50:57.672 [pool-1-thread-40] ?[34mINFO ?[0;39m ?[36mo.o.j.p.JPTestMode?[0;39m ?[39mTest mode enabled!
?[0;39m17:50:57.879 [pool-1-thread-82] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.s.SceneControllerImpl?[0;39m ?[39mBlue Test Scene is updated from inactive to active.
?[0;39m17:50:57.976 [pool-1-thread-88] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Heaven is updated from black to blue.
?[0;39m17:50:58.013 [pool-1-thread-88] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device Heaven to blue.
?[0;39m17:50:58.014 [pool-1-thread-37] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Hell is updated from black to blue.
?[0;39m17:50:58.019 [pool-1-thread-59] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device is updated from black to blue.
?[0;39m17:50:58.068 [pool-1-thread-61] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Stairway is updated from black to blue.
?[0;39m17:50:58.104 [pool-1-thread-37] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device Hell to blue.
?[0;39m17:50:58.143 [pool-1-thread-59] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device to blue.
?[0;39m17:50:58.174 [pool-1-thread-61] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device Stairway to blue.
?[0;39m17:50:58.580 [pool-1-thread-82] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed activation of Blue Test Scene to active.
?[0;39m17:50:59.055 [pool-1-thread-82] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.s.SceneControllerImpl?[0;39m ?[39mRed Test Scene is updated from inactive to active.
?[0;39m17:50:59.264 [pool-1-thread-100] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Hell is updated from blue to red.
?[0;39m17:50:59.311 [pool-1-thread-26] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device is updated from blue to red.
?[0;39m17:50:59.332 [pool-1-thread-87] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Heaven is updated from blue to red.
?[0;39m17:50:59.336 [pool-1-thread-71] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Stairway is updated from blue to red.
?[0;39m17:50:59.340 [pool-1-thread-100] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device Hell to red.
?[0;39m17:50:59.377 [pool-1-thread-87] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device Heaven to red.
?[0;39m17:50:59.385 [pool-1-thread-26] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device to red.
?[0;39m17:50:59.385 [pool-1-thread-71] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device Stairway to red.
?[0;39m17:50:59.880 [pool-1-thread-82] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed activation of Red Test Scene to active.
?[0;39m17:51:00.032 [pool-1-thread-76] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.s.SceneControllerImpl?[0;39m ?[39mBlue Test Scene is updated from active to inactive.
?[0;39m17:51:00.895 [pool-1-thread-76] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed activation of Blue Test Scene to inactive.
?[0;39m17:51:01.166 [pool-1-thread-25] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.s.SceneControllerImpl?[0;39m ?[39mBlue Test Scene is updated from inactive to active.
?[0;39m17:51:01.482 [pool-1-thread-24] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device is updated from red to blue.
?[0;39m17:51:01.493 [pool-1-thread-91] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Stairway is updated from red to blue.
?[0;39m17:51:01.508 [pool-1-thread-92] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Hell is updated from red to blue.
?[0;39m17:51:01.558 [pool-1-thread-67] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Heaven is updated from red to blue.
?[0;39m17:51:01.571 [pool-1-thread-91] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device Stairway to blue.
?[0;39m17:51:01.592 [pool-1-thread-24] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device to blue.
?[0;39m17:51:01.595 [pool-1-thread-92] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device Hell to blue.
?[0;39m17:51:01.656 [pool-1-thread-67] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device Heaven to blue.
?[0;39m17:51:02.191 [pool-1-thread-25] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed activation of Blue Test Scene to active.
?[0;39m17:51:02.355 [pool-1-thread-37] ?[33mWARN ?[0;39m ?[36mo.o.b.d.r.l.u.l.LocationRemote?[0;39m ?[33mRemote connection to Controller[/location-1] lost!
?[0;39m17:51:03.188 [pool-1-thread-46] ?[34mINFO ?[0;39m ?[36mo.o.b.d.r.l.u.l.LocationRemote?[0;39m ?[39mConnection reestablished LocationRemote[scope:/location-1]
?[0;39m17:51:03.201 [pool-1-thread-70] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.s.SceneControllerImpl?[0;39m ?[39mBlue Test Scene is updated from active to inactive.
?[0;39m17:51:03.436 [pool-1-thread-79] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device is updated from blue to red.
?[0;39m17:51:03.438 [pool-1-thread-77] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Stairway is updated from blue to red.
?[0;39m17:51:03.496 [pool-1-thread-79] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device to red.
?[0;39m17:51:03.505 [pool-1-thread-77] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device Stairway to red.
?[0;39m17:51:03.534 [pool-1-thread-89] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Hell is updated from blue to red.
?[0;39m17:51:03.611 [pool-1-thread-88] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Heaven is updated from blue to red.
?[0;39m17:51:03.634 [pool-1-thread-89] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device Hell to red.
?[0;39m17:51:03.656 [pool-1-thread-88] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed color of PH Hue E27 Device Heaven to red.
?[0;39m17:51:04.057 [pool-1-thread-59] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.s.SceneControllerImpl?[0;39m ?[39mRed Test Scene is updated from active to inactive.
?[0;39m17:51:04.195 [pool-1-thread-66] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Hell is updated from on to off.
?[0;39m17:51:04.221 [pool-1-thread-66] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed power of PH Hue E27 Device Hell to off.
?[0;39m17:51:04.252 [pool-1-thread-92] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Stairway is updated from on to off.
?[0;39m17:51:04.265 [pool-1-thread-44] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device Heaven is updated from on to off.
?[0;39m17:51:04.334 [pool-1-thread-92] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed power of PH Hue E27 Device Stairway to off.
?[0;39m17:51:04.347 [pool-1-thread-81] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.ColorableLightController?[0;39m ?[39mPH Hue E27 Device is updated from on to off.
?[0;39m17:51:04.349 [pool-1-thread-44] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed power of PH Hue E27 Device Heaven to off.
?[0;39m17:51:04.383 [pool-1-thread-81] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed power of PH Hue E27 Device to off.
?[0;39m17:51:04.425 [pool-1-thread-70] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed activation of Blue Test Scene to inactive.
?[0;39m17:51:04.539 [Test worker] ?[34mINFO ?[0;39m ?[36mo.o.b.d.t.l.u.s.SceneRemoteTest?[0;39m ?[39mCancel all ongoing actions...
?[0;39m17:51:04.551 [pool-1-thread-48] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.DimmerController?[0;39m ?[39mHA TYA663A Device is updated from off to off.
?[0;39m17:51:04.553 [pool-1-thread-48] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed power of HA TYA663A Device to off.
?[0;39m17:51:04.567 [pool-1-thread-66] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.DimmableLightController?[0;39m ?[39mHA ABC Device is updated from off to off.
?[0;39m17:51:04.586 [pool-1-thread-66] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed power of HA ABC Device to off.
?[0;39m17:51:04.609 [pool-1-thread-74] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.LightController?[0;39m ?[39mF FGS221 Device is updated from off to off.
?[0;39m17:51:04.611 [pool-1-thread-74] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed power of F FGS221 Device to off.
?[0;39m17:51:04.663 [pool-1-thread-52] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.PowerSwitchController?[0;39m ?[39mPW Power Plug Device is updated from off to off.
?[0;39m17:51:04.666 [pool-1-thread-52] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed power of PW Power Plug Device to off.
?[0;39m17:51:04.788 [Test worker] ?[34mINFO ?[0;39m ?[36mo.o.b.d.t.AbstractBCOTest?[0;39m ?[39mCancel 3 ongoing test actions ...
?[0;39m17:51:04.864 [pool-1-thread-97] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.s.SceneControllerImpl?[0;39m ?[39mBlue Test Scene is updated from inactive to inactive.
?[0;39m17:51:04.886 [pool-1-thread-97] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed activation of Blue Test Scene to inactive.
?[0;39mtestTriggerSceneWithLocationActionPerRemoteAndVerifiesUnitModification
17:51:05.011 [pool-1-thread-6] ?[34mINFO ?[0;39m ?[36mo.o.j.p.JPTestMode?[0;39m ?[39mTest mode enabled!
?[0;39m17:51:05.059 [pool-1-thread-80] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.l.u.LightController?[0;39m ?[39mF FGS221 Device is updated from off to on.
?[0;39m17:51:05.059 [pool-1-thread-80] ?[34mINFO ?[0;39m ?[36mo.o.b.d.c.a.ActionImpl?[0;39m ?[39mBCO changed power of F FGS221 Device to on.
Generated by Gradle 7.5 at Aug 5, 2022, 5:51:11 PM
Agent trigger action pool race condition can lead to activated termination action
Since a provider state notification can lead to several agent actions and its order is nearly random.
Thus, it can happen that the standby agent is removing its off
state while the action of the presence agent is still processing. In this case the termination action gets active and lights are shortly turned off.
Multi Session Management
Components like the cloud connector need multi session management. This includes executing actions as different users as well as using tokens to execute actions with permissions different then the user logged in.
Error while building Debian package
[ERROR] Failed to create debian package /home/ppekala/workspace/openbase/bco/target/bco_1.6.0~20180420153740_all.deb org.vafer.jdeb.PackagingException: Failed to create debian package /home/ppekala/workspace/openbase/bco/target/bco_1.6.0~20180420153740_all.deb at org.vafer.jdeb.DebMaker.makeDeb(DebMaker.java:348) at org.vafer.jdeb.maven.DebMojo.execute(DebMojo.java:583) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: org.vafer.jdeb.PackagingException: Could not create deb package at org.vafer.jdeb.DebMaker.createSignedDeb(DebMaker.java:573) at org.vafer.jdeb.DebMaker.createDeb(DebMaker.java:463) at org.vafer.jdeb.DebMaker.makeDeb(DebMaker.java:344) ... 23 more Caused by: java.io.FileNotFoundException: Data source not found : /home/ppekala/workspace/openbase/bco/target/appassembler/share/bco/lib at org.vafer.jdeb.maven.Data.produce(Data.java:189) at org.vafer.jdeb.DataBuilder.buildData(DataBuilder.java:265) at org.vafer.jdeb.DebMaker.createSignedDeb(DebMaker.java:489) ... 25 more [ERROR] Failed to execute goal org.vafer:jdeb:1.6:jdeb (default) on project bco: Failed to create debian package /home/ppekala/workspace/openbase/bco/target/bco_1.6.0~20180420153740_all.deb: Could not create deb package: Data source not found : /home/ppekala/workspace/openbase/bco/target/appassembler/share/bco/lib -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Fix Scene Remote Test Deadlocks
Deadlocks occur within the ActionImpl.cancelAction method during notification.
The list is notified by the thread that cancels the action which requires the action builder to sync the action list into the controller data builder. However during the tests, another thread is canceling the action that already locked the action builder again.
InfluxDB Connector APP - Index Out of Bounds
The following index out of bounds occurs
2022-08-21 18:52:26.824 WARN 46 --- [ol-1-thread-863] o.b.d.r.l.u.PowerConsumptionSensorRemote : ═╦═⚀ Could not notify state update for service[POWER_CONSUMPTION_STATE_SERVICE] in tempus[CURRENT] 2022-08-21 18:52:26.830 WARN 46 --- [ol-1-thread-863] o.b.d.r.l.u.PowerConsumptionSensorRemote : ╚══╦═⚀ Could not notify Data[consumption: 0.0current: 0.0voltage: 230.0timestamp { time: 166110074654600 [...]] to all observer! 2022-08-21 18:52:26.844 WARN 46 --- [ol-1-thread-863] o.b.d.r.l.u.PowerConsumptionSensorRemote : ╚══╦═⚀ Observer[CustomUnitPool$$Lambda$237/0x000000080118ec30] update failed! 2022-08-21 18:52:26.844 WARN 46 --- [ol-1-thread-863] o.b.d.r.l.u.PowerConsumptionSensorRemote : ╚══╦═⚀ Could not notify Data[consumption: 0.0current: 0.0voltage: 230.0timestamp { time: 166110074654600 [...]] to all observer! 2022-08-21 18:52:26.845 WARN 46 --- [ol-1-thread-863] o.b.d.r.l.u.PowerConsumptionSensorRemote : ╚══╦═⚀ Observer[InfluxDbconnectorApp$$Lambda$631/0x00000008014f2768] update failed! 2022-08-21 18:52:26.845 WARN 46 --- [ol-1-thread-863] o.b.d.r.l.u.PowerConsumptionSensorRemote : ╚════⚀ Index 0 out of bounds for length 0 2022-08-21 18:52:26.869 WARN 46 --- [ol-1-thread-863] o.b.d.r.l.u.PowerConsumptionSensorRemote : ===================================== 2022-08-21 18:52:26.881 WARN 46 --- [ol-1-thread-863] o.b.d.r.l.u.PowerConsumptionSensorRemote : Could not notify state update for service[POWER_CONSUMPTION_STATE_SERVICE] in tempus[CURRENT] org.openbase.jul.exception.CouldNotPerformException: Could not notify state update for service[POWER_CONSUMPTION_STATE_SERVICE] in tempus[CURRENT] at org.openbase.jul.exception.printer.ExceptionPrinter.printHistory(ExceptionPrinter.java:159) ~[jul.exception-3.2-SNAPSHOT.jar:na] at org.openbase.bco.dal.remote.layer.unit.AbstractUnitRemote.lambda$new$1(AbstractUnitRemote.java:154) ~[bco.dal.remote-3.1-SNAPSHOT.jar:na] at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:271) ~[jul.pattern-3.2-SNAPSHOT.jar:na] at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:200) ~[jul.pattern-3.2-SNAPSHOT.jar:na] at org.openbase.bco.dal.remote.layer.unit.AbstractUnitRemote.lambda$new$0(AbstractUnitRemote.java:128) ~[bco.dal.remote-3.1-SNAPSHOT.jar:na] at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:271) ~[jul.pattern-3.2-SNAPSHOT.jar:na] at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:200) ~[jul.pattern-3.2-SNAPSHOT.jar:na] at org.openbase.jul.communication.controller.AbstractRemoteClient.applyDataUpdate(AbstractRemoteClient.java:1553) ~[jul.communication.controller-3.2-SNAPSHOT.jar:na] at org.openbase.jul.communication.controller.AbstractRemoteClient$SyncTaskCallable.call(AbstractRemoteClient.java:1901) ~[jul.communication.controller-3.2-SNAPSHOT.jar:na] at org.openbase.jul.communication.controller.AbstractRemoteClient$SyncTaskCallable.call(AbstractRemoteClient.java:1760) ~[jul.communication.controller-3.2-SNAPSHOT.jar:na] at java.base/java.util.concurrent.FutureTask.run(Unknown Source) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na] at java.base/java.lang.Thread.run(Unknown Source) ~[na:na] Caused by: org.openbase.jul.exception.MultiException: Could not notify Data[consumption: 0.0 current: 0.0 voltage: 230.0 timestamp { time: 166110074654600 [...]] to all observer! at org.openbase.jul.exception.MultiException.checkAndThrow(MultiException.java:82) ~[jul.exception-3.2-SNAPSHOT.jar:na] at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:325) ~[jul.pattern-3.2-SNAPSHOT.jar:na] at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:200) ~[jul.pattern-3.2-SNAPSHOT.jar:na] at org.openbase.bco.dal.remote.layer.unit.AbstractUnitRemote.lambda$new$1(AbstractUnitRemote.java:152) ~[bco.dal.remote-3.1-SNAPSHOT.jar:na] ... 12 common frames omitted Caused by: org.openbase.jul.exception.CouldNotPerformException: Observer[CustomUnitPool$$Lambda$237/0x000000080118ec30] update failed! at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:285) ~[jul.pattern-3.2-SNAPSHOT.jar:na] ... 14 common frames omitted Caused by: org.openbase.jul.exception.MultiException: Could not notify Data[consumption: 0.0 current: 0.0 voltage: 230.0 timestamp { time: 166110074654600 [...]] to all observer! at org.openbase.jul.exception.MultiException.checkAndThrow(MultiException.java:82) ~[jul.exception-3.2-SNAPSHOT.jar:na] at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:325) ~[jul.pattern-3.2-SNAPSHOT.jar:na] at org.openbase.bco.dal.remote.layer.unit.CustomUnitPool.lambda$new$2(CustomUnitPool.java:88) ~[bco.dal.remote-3.1-SNAPSHOT.jar:na] at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:271) ~[jul.pattern-3.2-SNAPSHOT.jar:na] ... 14 common frames omitted Caused by: org.openbase.jul.exception.CouldNotPerformException: Observer[InfluxDbconnectorApp$$Lambda$631/0x00000008014f2768] update failed! at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:285) ~[jul.pattern-3.2-SNAPSHOT.jar:na] ... 16 common frames omitted Caused by: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0 at java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source) ~[na:na] at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Unknown Source) ~[na:na] at java.base/jdk.internal.util.Preconditions.checkIndex(Unknown Source) ~[na:na] at java.base/java.util.Objects.checkIndex(Unknown Source) ~[na:na] at java.base/java.util.ArrayList.get(Unknown Source) ~[na:na] at com.google.protobuf.LazyStringArrayList.get(LazyStringArrayList.java:112) ~[protobuf-java-3.19.2.jar:na] at com.google.protobuf.LazyStringArrayList.get(LazyStringArrayList.java:61) ~[protobuf-java-3.19.2.jar:na] at org.openbase.type.language.LabelType$Label$MapFieldEntry.getValue(LabelType.java:461) ~[type-1.1.3.jar:na] at org.openbase.bco.app.influxdbconnector.InfluxDbconnectorApp.storeServiceState(InfluxDbconnectorApp.java:354) ~[bco.app.influxdb.connector-3.1-SNAPSHOT.jar:na] at org.openbase.bco.app.influxdbconnector.InfluxDbconnectorApp.storeServiceState(InfluxDbconnectorApp.java:295) ~[bco.app.influxdb.connector-3.1-SNAPSHOT.jar:na] at org.openbase.bco.app.influxdbconnector.InfluxDbconnectorApp.lambda$new$0(InfluxDbconnectorApp.java:99) ~[bco.app.influxdb.connector-3.1-SNAPSHOT.jar:na] at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:271) ~[jul.pattern-3.2-SNAPSHOT.jar:na] ... 16 common frames omitted
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.