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.lacrosse;
15 import org.openhab.binding.jeelink.internal.RollingReadingAverage;
18 * Computes a rolling average of readings.
20 * @author Volker Bier - Initial contribution
22 public class LaCrosseRollingReadingAverage extends RollingReadingAverage<LaCrosseTemperatureReading> {
23 public LaCrosseRollingReadingAverage(int bufferSize) {
24 super(new LaCrosseTemperatureReading[bufferSize]);
28 protected LaCrosseTemperatureReading add(LaCrosseTemperatureReading value1, LaCrosseTemperatureReading value2) {
30 return new LaCrosseTemperatureReading(value2.getSensorId(), value2.getSensorType(), value2.getChannel(),
31 value1.getTemperature() + value2.getTemperature(), value1.getHumidity() + value2.getHumidity(),
32 value2.isBatteryNew(), value2.isBatteryLow());
35 return new LaCrosseTemperatureReading(value1.getSensorId(), value1.getSensorType(), value1.getChannel(),
36 value1.getTemperature(), value1.getHumidity(), value1.isBatteryNew(), value1.isBatteryLow());
40 protected LaCrosseTemperatureReading substract(LaCrosseTemperatureReading from, LaCrosseTemperatureReading value) {
41 float newTemp = from.getTemperature();
42 int newHum = from.getHumidity();
45 newTemp -= value.getTemperature();
46 newHum -= value.getHumidity();
49 return new LaCrosseTemperatureReading(from.getSensorId(), from.getSensorType(), from.getChannel(), newTemp,
50 newHum, from.isBatteryNew(), from.isBatteryLow());
54 protected LaCrosseTemperatureReading divide(LaCrosseTemperatureReading value, int number) {
55 return new LaCrosseTemperatureReading(value.getSensorId(), value.getSensorType(), value.getChannel(),
56 value.getTemperature() / number, value.getHumidity() / number, value.isBatteryNew(),
57 value.isBatteryLow());