]> git.basschouten.com Git - openhab-addons.git/blob
9a00700d1fffd857fe0bebabb763b0c342415260
[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.lacrosse;
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 LaCrosseRollingReadingAverage extends RollingReadingAverage<LaCrosseTemperatureReading> {
23     public LaCrosseRollingReadingAverage(int bufferSize) {
24         super(new LaCrosseTemperatureReading[bufferSize]);
25     }
26
27     @Override
28     protected LaCrosseTemperatureReading add(LaCrosseTemperatureReading value1, LaCrosseTemperatureReading value2) {
29         if (value2 != null) {
30             return new LaCrosseTemperatureReading(value2.getSensorId(), value2.getSensorType(), value2.getChannel(),
31                     value1.getTemperature() + value2.getTemperature(), value1.getHumidity() + value2.getHumidity(),
32                     value2.isBatteryNew(), value2.isBatteryLow());
33         }
34
35         return new LaCrosseTemperatureReading(value1.getSensorId(), value1.getSensorType(), value1.getChannel(),
36                 value1.getTemperature(), value1.getHumidity(), value1.isBatteryNew(), value1.isBatteryLow());
37     }
38
39     @Override
40     protected LaCrosseTemperatureReading substract(LaCrosseTemperatureReading from, LaCrosseTemperatureReading value) {
41         float newTemp = from.getTemperature();
42         int newHum = from.getHumidity();
43
44         if (value != null) {
45             newTemp -= value.getTemperature();
46             newHum -= value.getHumidity();
47         }
48
49         return new LaCrosseTemperatureReading(from.getSensorId(), from.getSensorType(), from.getChannel(), newTemp,
50                 newHum, from.isBatteryNew(), from.isBatteryLow());
51     }
52
53     @Override
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());
58     }
59 }