Repository navigation
Releases: CervezaStallone/ClimateMonitor
Releases · CervezaStallone/ClimateMonitor
Release list
v2.0.2
Fixed
- Installing on Python 3.14 (e.g. a fresh Windows install from python.org) no longer fails with
Unknown compiler(s)while building numpy. numpy is now 2.3.5 on Python 3.11+ (ready-made wheels up to 3.14) and stays 2.2.6 on Python 3.10. pyproject.tomlnow pins the same Dash version asrequirements.txt(3.3.0).
Changed
- CI now also tests on Python 3.14.
Upgrading: pull the new version and run pip install -r requirements.txt again.
v2.0.1 - Climate Monitor
What's new
- New name: Climate Monitor. The project and repository are now called Climate Monitor (github.com/CervezaStallone/ClimateMonitor). Old links redirect automatically.
- Footer "Made by BRDC" with a link to brdc.nl on the dashboard, Settings and login pages.
Existing installations keep working: the service name (xy-md02) and the Windows scheduled task (XY-MD02 WebApp) are unchanged.
See v2.0.0 for the full list of new features in version 2.
v2.0.0 - Browser configuration, multiple sensors and redesigned dashboard
Version 2.0.0 is a large update: everything is now configured in the browser, multiple RS-485 buses with multiple sensors are supported, and the dashboard has been redesigned.
Highlights
Redesigned dashboard
- Board view: every sensor as one row with temperature, humidity, dew point, absolute humidity, comfort, a 24-hour trend and its status: all sensors at a glance.
- Meters view: one panel per sensor with large values.
- Dark and light theme, chosen in Settings; mobile layout for phones and tablets.
- Status per sensor: OK, warning, alarm or offline, with the out-of-limits value highlighted.
- One chart with a tab per quantity; every sensor keeps its own colour everywhere.
Multiple buses and sensors (#18)
- Several USB/RS-485 interfaces, each with several Modbus slaves.
- Per sensor: name, slave ID, function code, registers and scale (XY-MD02, XY-MD04 and similar).
- A failing sensor or unplugged interface no longer affects the others and is retried automatically.
Settings in the browser
- New Settings tab for buses and sensors, display, region, data retention, server and security.
- Admin password for Settings, optionally for the whole app.
Notifications
- Telegram and e-mail (SMTP) alerts when limits are exceeded (for all sensors or per sensor), when values are back to normal and when a sensor goes offline.
MQTT
- Publishes the values of every sensor to an MQTT broker (Home Assistant, Node-RED, SCADA).
Run as a service
- Install scripts for Linux/Raspberry Pi (systemd) and Windows: the app starts at boot, also without anyone logged in.
Translations
- All texts available in Dutch, English, German, French and Spanish.
Fixes
- Negative temperatures are now read correctly (signed registers).
- A missing serial port at startup no longer stops data collection permanently.
- Security hardening of login sessions, redirects and stored passwords.
Upgrading from 1.x
- Existing data is kept. The Modbus settings from
.envbecome Bus 1 / Sensor 1 automatically; all existing measurements belong to that sensor. DATA_RETENTION_DAYS,DEBUG_LOGGING,TIMEZONEandDEFAULT_LANGUAGEfrom.envare taken over once; after that the Settings tab is leading.- Listen address and port are set in the Settings tab (default
0.0.0.0:8050). - On first visit of the Settings tab you create an admin password.
- New dependency:
paho-mqtt— runpip install -r requirements.txt(or re-run the service install script). - Requires Python 3.10 or newer.
See the README for screenshots and full instructions.
v1.6.3
New Features
12 Hour Time Range Option
- Added new 12 hour time period selection between 6h and 24h options
- Fully supported across all 5 languages (Dutch, English, German, French, Spanish)
- Integrates seamlessly with adaptive downsampling system (5 minute intervals)
Comfort Score Visualization
- New 5th graph showing comfort score over time
- Uses Humidex calculation from Environment Canada standards
- Color-coded orange visualization with score range 0-6
- Positioned at bottom of dashboard for optimal layout
- Helps identify comfortable vs uncomfortable periods at a glance
Enhanced Graph Layout
- Increased vertical spacing between graphs for better readability
- Expanded total height to 1100px to accommodate 5 subplots
- Improved visual hierarchy with comfort score at bottom
Debug Tools
- Added conditional debug logging for comfort score calculations
- Controlled via DEBUG_LOGGING environment variable
- Shows temperature, humidity, Humidex, and score for verification
- Useful for troubleshooting and validating calculations
Documentation Updates
- Updated README.md with all environment variables
- Added documentation for TIMEZONE, DEFAULT_LANGUAGE, and DEBUG_LOGGING
- Fixed typo (Server poort Server port)
- Comprehensive wiki updates reflecting current architecture
Technical Details
- Comfort scores based on Humidex formula: T + 0.5555 × (e - 10)
- Score ranges: 0 (extreme), 1-3 (dangerous), 4 (comfortable), 5-6 (uncomfortable)
- Debug output limited to first 5 datapoints when enabled
- Wiki folder excluded from version control
Files Changed
- callbacks.py: +70 lines (comfort calculation, 5th graph, 12h option)
- translations.py: +5 lines (12h translations for all languages)
- README.md: Updated configuration section with missing env vars
- .gitignore: Added .wiki/ exclusion
v1.6.2
Production Server & Performance Optimization
This release adds a production-ready server and dramatically improves performance for long time ranges.
New Features
Adaptive Downsampling
- Problem solved: Loading long time ranges (6+ hours) was extremely slow
- Solution: Intelligent downsampling based on time range:
- 1-6 hours: 1 minute intervals (~360 points, 98% reduction)
- 6-24 hours: 5 minute intervals
- 1-7 days: 15 minute intervals
- 1 month: 1 hour intervals (~720 points)
- 3 months: 3 hour intervals
- 6 months: 6 hour intervals
-
6 months / years: 1 day intervals
- Result: Maximum 1000-2000 points for instant rendering
- Uses pandas
esample()\ for efficient aggregation - Backward compatible - ranges <1 hour remain unchanged
Waitress Production Server
- Cross-platform WSGI server (Windows/Linux/macOS)
- Optimized with 8 threads for multi-user support
- Logging filtered to ERROR level for cleaner output
Improvements
- Graph Spacing: Increased from 0.06 to 0.10 for better readability
- Debug Logging: Configurable logging via .env\ (\DEBUG_LOGGING=True)
- Database query details
- Downsampling statistics (reduction percentages)
Dependency Updates
- pandas: 2.2.3 2.3.3
- numpy: 2.1.3 2.2.6
- Flask: 3.0.3 3.1.2
- python-dotenv: 1.0.1 1.2.1
- waitress: 3.0.1 3.0.2
Security
- Security updates for urllib3 dependency (via pandas/numpy updates)
Technical Details
Performance Impact Example:
- 6 hour data: ~18,720 360 points (98.1% reduction)
- 1 year data: ~27 million 365 points (99.999% reduction)
- Visual quality preserved - trends fully visible
Breaking Changes: None
Requires:
- Python 3.10-3.13
- See
equirements.txt\ for all dependencies
Installation
git clone https://github.com/CervezaStallone/XY-MD02_WebApp.git
cd XY-MD02_WebApp
python -m venv .venv
.venv\\Scripts\\activate # Windows
pip install -r requirements.txt
python app.pyContributors: @dependabot
v1.6.0 - CI/CD & Python 3.10+ Support
What's Changed
Breaking Changes
- Dropped Python 3.9 support - Minimum version is now Python 3.10 due to dependency requirements (click 8.3.1)
Added
- GitHub Actions CI/CD workflows:
- Automated testing on Python 3.10-3.13
- Code quality checks (Black, flake8)
- Translation validation
- Dependabot configuration for automated dependency updates
- Community files: CODE_OF_CONDUCT.md, CONTRIBUTING.md, SECURITY.md
- Issue & PR templates for better collaboration
Fixed
- Lazy serial port initialization - Prevents hardware access during module import (fixes CI testing)
- Tooltip formatting - All language tooltips now show scores on separate lines
- README path corrections - Updated from 'Modbus Graph' to 'XY-MD02_WebApp'
- Workflow permissions - Added proper read permissions to all GitHub Actions workflows
Changed
- Complete requirements.txt - All 36 dependencies now properly frozen
- Updated dependencies: pandas 2.2.3→2.3.3, python-dotenv 1.0.1→1.2.1
- Renamed env.example to .env.example for consistency
Dependencies
- Python >=3.10
- All dependencies updated and frozen in requirements.txt
Full Changelog: v1.5.3...v1.6.0
v1.5.3
fix: Tooltip formatting with proper line breaks for all languages