]> git.basschouten.com Git - openhab-addons.git/blob
d717ae2441d95c5a380fba9b23bdc88428427d27
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.jeelink.internal.ec3k;
14
15 import org.openhab.binding.jeelink.internal.RollingReadingAverage;
16
17 /**
18  * Computes a rolling average of readings.
19  *
20  * @author Volker Bier - Initial contribution
21  */
22 public class Ec3kRollingReadingAverage extends RollingReadingAverage<Ec3kReading> {
23     public Ec3kRollingReadingAverage(int bufferSize) {
24         super(new Ec3kReading[bufferSize]);
25     }
26
27     @Override
28     protected Ec3kReading add(Ec3kReading value1, Ec3kReading value2) {
29         if (value2 != null) {
30             return new Ec3kReading(value2.getSensorId(), value1.getCurrentWatt() + value2.getCurrentWatt(),
31                     value2.getMaxWatt(), value2.getConsumptionTotal(), value2.getApplianceTime(),
32                     value2.getSensorTime(), value2.getResets());
33         }
34
35         return new Ec3kReading(value1.getSensorId(), value1.getCurrentWatt(), value1.getMaxWatt(),
36                 value1.getConsumptionTotal(), value1.getApplianceTime(), value1.getSensorTime(), value1.getResets());
37     }
38
39     @Override
40     protected Ec3kReading substract(Ec3kReading from, Ec3kReading value) {
41         float newCurrWatt = from.getCurrentWatt();
42
43         if (value != null) {
44             newCurrWatt -= value.getCurrentWatt();
45         }
46
47         return new Ec3kReading(from.getSensorId(), newCurrWatt, from.getMaxWatt(), from.getConsumptionTotal(),
48                 from.getApplianceTime(), from.getSensorTime(), from.getResets());
49     }
50
51     @Override
52     protected Ec3kReading divide(Ec3kReading value, int number) {
53         return new Ec3kReading(value.getSensorId(), value.getCurrentWatt() / number, value.getMaxWatt(),
54                 value.getConsumptionTotal(), value.getApplianceTime(), value.getSensorTime(), value.getResets());
55     }
56 }