4.7 KiB
Changelog
All notable changes to this project will be documented in this file.
Added : for new features.
Changed : for changes in existing functionality.
Deprecated: for soon-to-be removed features.
Removed : for now removed features.
Fixed : for any bug fixes.
Security : in case of vulnerabilities.
[0.1.0] - 2023-12-29
- First working version. But without pressure sensor. Physical RS485 bus untested, but did test ModBus over TTL serial.
[0.2.0] - 2024-01-04
Added
- BMP280 pressure sensor via I2C
Fixed
- Calibrated wind vane (analog input)
Changed
- Heater of humidiy sensor only on when humidity is above 96% (was 80%). When heater is on temperature sensor also heats up, so use temperature sensor of BMP280 when heater is on.
[0.2.1] - 2024-01-17
Changed
- Heater algorithm updated. Idea from datasheet of humidity sensor from Temco Controls HUM-M2 humidity sensor module.
- ModBus read register 1: Scaled wind direction by 10 in order to also get the decimal position of the direction
Added
- ModBus read register 12: Raw rain meter
- ModBus read register 13: Temperature from pressure sensor
- ModBus read register 14: Status bits
- ModBus coil register 0 : enable/disable heather algorithm
[0.2.2] - 2024-01-21
Fixed
- Buffer overflow when calculating average wind speed in AverageOfArray(). Fix: use 32 bit register for average_value.
Changed
- Changed some variables to the propper standard (uint8_t, uint16_t, etc.)
- SparkFun wind interrupt now calculates over 3 seconds in stead of 1 second (KNMI standard)]
[0.2.3] - 2024-02-28
Changed
- Humidity often got stuck at 100%. Heater algorithm now heats for 10 minutes and cools down for 10 minutes (was 5min/15min)
[0.2.4] - 2024-03-08
Changed
- Humidity timer back to 5/15 minutes: shorter cooling times give false temperature readings.
Fixed
- Classic 0/1 error in max and average calculating routine, which resulted in a buffer overflow.
[0.2.5] - 2024-03-11
Fixed
- 0/1 error in max and average (again, or better said: still!).
Changed
- Humidity threshold heater is now a define instead of hard coded numbers in the source.
[0.2.6] - 2024-03-13
Fixed
There is a bug in the Si7021 chip: when the sensor is exposed to extreme environmental conditions for a longer period (very high or very low humidity), the humidity register will wrap around and give wrong values. (https://community.silabs.com/s/question/0D51M00007xeOo9SAE/si7021-relative-humidity-reading-underflowing-?language=en_US). Workaround: let's assume the humidity will never go below 15%. In the Netherlands a humidity below 20% is rare, but can occur and the minimum value ever measured in De Bilt was 6% (on 1 april 1965). At several other sites in the Netherlands the humidity went as low as 10%. But as this was a one time event and the measurements are doubtful, this event was not registered in the original database. (https://nl.wikipedia.org/wiki/Relatieve_luchtvochtigheid) In rare cases, the humidity value could creep up above 15% (when the actual humidity is 100%) and still give wrong values.
[0.3.0] - 2024-05-02
This is the latest release from 2024.
Added
Support for HYT-221 humidity sensor
Removed
Support for si7021 humidity sensor (this sensor was not suited for outdoor measurments)
[0.3.1] - 2025-01-14
Changed
- Cleanup of code
- Debounce rainfall meter from 100ms to 250mms
- Main temperature and backup temperature registers switched: the sensor on the HYT221 heats up by the circuitry and is therefore about 1.5 degrees above ambient temperature. The BMP280 does not heat up.
Added
- Debug messages can be switched on and off with the DEBUG variable
- SEN0562 luminosity sensor
[0.3.2] - 2025-01-26
Fixed
The first hour, the ModBus register SensorRainIreg is instable. This is because in setup(), the variable RainPerHourCounter is set to the current millis() value. The RainPerHourCounter is the index for the array RainPerHour, which can hold 24 values. But the index is set to the millis() value, which can have a value abouve 23. This causes a buffer overflow. After the first hour, the index is reset and from thereon the register SensorRainIreg holds the proper rainfall value. The solution is that the variable HourTimer should be set to the current millis() value in setup().
-- ts = millis();
-- RainPerHourCounter = ts;
++ ts = millis();
++ HourTimer = ts;
Buffer roll over luminosity sensor. This happened because the raw value was mutiplied by 100. But that was wrong: copied this section of the code from the temperature sensor code, which uses this mutiply by 100 to gain precision.