Skip to main content
Sign in
Snippets Groups Projects
Commit bd104d8b authored by René Schöne's avatar René Schöne
Browse files

Update Item.sendState()

parent 66fb1fac
No related branches found
No related tags found
No related merge requests found
......@@ -263,7 +263,7 @@ aspect ItemHandling {
protected void Item.stateUpdated(boolean shouldSendState) {
if (shouldSendState) {
try {
// sendState() defined in MQTT aspect
// sendState() refined in MQTT and Influx aspect
sendState();
} catch (Exception e) {
logger.catching(e);
......@@ -277,6 +277,13 @@ aspect ItemHandling {
}
}
//--- sendState ---
protected void Item.sendState() throws Exception {
for (MachineLearningModel model : getRelevantInMachineLearningModels()) {
model.getEncoder().newData(getRoot(), java.util.Collections.singletonList(this));
}
}
//--- stateEquals ---
public abstract boolean Item.stateEquals(Object otherState);
public boolean ItemWithBooleanState.stateEquals(Object otherState) {
......
......
......@@ -96,7 +96,7 @@ aspect ItemHistory {
}
// override Item.sendState from MQTT aspect
refine MQTT public void Item.sendState() throws Exception {
refine MQTT protected void Item.sendState() throws Exception {
refined();
getRoot().getInfluxRoot().influxAdapter().write(pointFromState());
}
......
......
......@@ -160,4 +160,7 @@ aspect MachineLearning {
return this.decoder;
}
// refine Item.stateUpdated
}
......@@ -14,10 +14,12 @@ rel RecognitionEvent.Activity -> Activity ;
ManualChangeEvent : ChangeEvent ;
abstract MachineLearningModel ::= ;
rel MachineLearningModel.RelevantItem* <-> Item.RelevantInMachineLearningModel* ;
rel MachineLearningModel.TargetItem* <-> Item.TargetInMachineLearningModel* ;
ExternalMachineLearningModel : MachineLearningModel ;
abstract InternalMachineLearningModel : MachineLearningModel ::= <OutputApplication:DoubleDoubleFunction> ;
rel InternalMachineLearningModel.RelevantItem* <-> Item.RelevantInMachineLearningModel* ;
rel InternalMachineLearningModel.TargetItem* <-> Item.TargetInMachineLearningModel* ;
abstract ItemPreference ::= ;
rel ItemPreference.Item -> Item ;
......
......
......@@ -59,7 +59,8 @@ aspect MQTT {
/**
* Sends the current state via MQTT.
*/
public void Item.sendState() throws Exception {
refine ItemHandling protected void Item.sendState() throws Exception {
refined();
if (getTopic() != null) {
getTopic().send(getStateAsString());
}
......
......
......@@ -85,13 +85,11 @@ public class MqttTests {
createMqttReceiver(expectedTopic);
sut.setState(firstState);
sut.sendState();
assertTimeoutEquals(2, 1, messages::size);
Assert.assertEquals(Double.toString(firstState), messages.get(0));
sut.setState(secondState);
sut.sendState();
assertTimeoutEquals(2, 2, messages::size);
Assert.assertEquals(Double.toString(secondState), messages.get(1));
......@@ -110,16 +108,14 @@ public class MqttTests {
MqttTopic alternativeB = createAndAddMqttTopic(modelAB.model.getRoot().getMqttRoot(),alternativeFirstPart + "/" + secondPart);
NumberItem item2 = TestUtils.addItemTo(modelAB.model, 0);
NumberItem item2 = TestUtils.addItemTo(modelAB.model, 0, true);
item2.setTopic(alternativeB);
createMqttReceiver(expectedTopic1, expectedTopic2);
item1.setState(firstState);
item1.sendState();
item2.setState(firstState);
item2.sendState();
assertTimeoutEquals(2, 2, messages::size);
Assert.assertEquals(Double.toString(firstState), messages.get(0));
......@@ -127,8 +123,6 @@ public class MqttTests {
item1.setState(secondState);
item2.setState(thirdState);
item1.sendState();
item2.sendState();
assertTimeoutEquals(3, 4, messages::size);
// TODO actually this does not test, whether the topic was correct for each state
......@@ -168,7 +162,7 @@ public class MqttTests {
}
private ModelItemAndTwoTopics createAB() {
TestUtils.ModelAndItem mai = TestUtils.createModelAndItem(0);
TestUtils.ModelAndItem mai = TestUtils.createModelAndItem(0, true);
OpenHAB2Model model = mai.model;
MqttRoot mqttRoot = new MqttRoot();
mqttRoot.setIncomingPrefix("inc");
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment