2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.jeelink.internal.ec3k;
15 import org.openhab.binding.jeelink.internal.RollingReadingAverage;
18 * Computes a rolling average of readings.
20 * @author Volker Bier - Initial contribution
22 public class Ec3kRollingReadingAverage extends RollingReadingAverage<Ec3kReading> {
23 public Ec3kRollingReadingAverage(int bufferSize) {
24 super(new Ec3kReading[bufferSize]);
28 protected Ec3kReading add(Ec3kReading value1, Ec3kReading value2) {
30 return new Ec3kReading(value2.getSensorId(), value1.getCurrentWatt() + value2.getCurrentWatt(),
31 value2.getMaxWatt(), value2.getConsumptionTotal(), value2.getApplianceTime(),
32 value2.getSensorTime(), value2.getResets());
35 return new Ec3kReading(value1.getSensorId(), value1.getCurrentWatt(), value1.getMaxWatt(),
36 value1.getConsumptionTotal(), value1.getApplianceTime(), value1.getSensorTime(), value1.getResets());
40 protected Ec3kReading substract(Ec3kReading from, Ec3kReading value) {
41 float newCurrWatt = from.getCurrentWatt();
44 newCurrWatt -= value.getCurrentWatt();
47 return new Ec3kReading(from.getSensorId(), newCurrWatt, from.getMaxWatt(), from.getConsumptionTotal(),
48 from.getApplianceTime(), from.getSensorTime(), from.getResets());
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());