Releases: NREL/alfalfa
v1.0.0
This is the first major release of Alfalfa!
Alfalfa is now in a new phase of it's development. Now that the basic feature set is complete we will be pursuing more incremental updates (keeping up with OpenStudio releases, new Python Versions, etc). We are also planning on implementing more features requested by the community using Alfalfa, where time and resources allow.
What's Changed
- Adopted new python energyplus API for runtime interaction by @TShapinsky in #541
- GoAWS has been replaced by a Redis Queue
- Replace BCVTB/ExternalInterface/MLEP with Energy Plus Python API for model interaction and remove MLEP Alfalfa codebase. by @TShapinsky in #541
- Remove Alfalfa Ruby gem from Alfalfa codebase and utilize OpenStudio Alfalfa metadata parsing released with OpenStudio v3.9.0. See Documentation
- Create test suite for different failure modes of pyeneregyplus to make sure cases are handled.
- LOGLEVEL environment variable determines which logs are seen via stdout.
- Remove Haystack dependency from modelica.
- Add Framework for created stepped simulation jobs which have external processes which want to control the main thread.
- Upgrade dependencies (excluding influxdb package).
- Changes to docker environment to work better with kubernetes deployment by @TShapinsky in #546
Full Changelog: v0.7.1...v1.0.0
v0.7.1
What's Changed
- Add import of json in ruby mixin to prevent crashes by @TShapinsky in #523
- Multiplatform support by @TShapinsky in #520
Full Changelog: v0.7.0...v0.7.1
v0.7.0
What's Changed
- Update OpenStudio to v3.8.0
- Update EnergyPlus to v24.1.0
- Update PyFMI to 2.11.0
- New REST API structure
- New API tests beyond the scope of the
alfalfa-client
- Replaced SQS queue with Redis for distributing jobs
- Building name extraction now happens after E+ measures instead of OS measures
- Whole building energy now reads Watts instead of Joules
- Various bugfixes and stability improvements
Full Changelog: v0.6.0...v0.7.0
v0.6.0
Note that with this release we moved from DockerHub to GitHub Container Registry for image hosting. The REGISTRY_BASE_URI has been updated in the .env file. If you are not using the .env for deployment, you will need to update REGISTRY_BASE_URI in your own deployment scripts. No other changes are required.
What's Changed
- Report preprocessing errors and consolidate site information collection by @TShapinsky in #437
- add ability to disable control points by @TShapinsky in #439
- Add Schedule Generation Tests and Support for more Schedule Types by @TShapinsky in #442
- Externalize Worker dependencies and improve CI speed by @TShapinsky in #423
- Create Alfalfa Gem from alfalfa-lib folder by @tanushree04 in #448
- Redis v4 Refactor by @axelstudios in #392
- Add download site button by @TShapinsky in #453
- Bump mongo to version 6 by @TShapinsky in #454
- Update AWS dependencies by @axelstudios in #452
- update to alfalfa lib gem by @tanushree04 in #455
- Bump redis from 3.5.3 to 4.5.4 by @dependabot in #429
- Ruby library tweaks by @TShapinsky in #456
- Prune dependencies in pyproject.toml by @TShapinsky in #460
- Bump version to 0.6.0 by @TShapinsky in #458
New Contributors
- @tanushree04 made their first contribution in #448
Full Changelog: v0.5.1...v0.6.0
v0.5.1
What's Changed
- Temporarily remove automatic natural gas metering by @TShapinsky (#424)
Full Changelog: v0.5.0...v0.5.1
v0.5.0
What's Changed
- Replace GraphQL with REST API @axelstudios (#383, #415) @TShapinsky (#390)
- Added comprehensive REST API documentation at
/docs
endpoint @axelstudios - Models have database instances and can be used to create runs without reuploading @TShapinsky (#390)
- Error log is visible in Web UI @axelstudios (#415)
- Extend timeout during warmup with EnergyPlus runs @TShapinsky (#399)
- Fix bug where OSWs with empty steps would crash @TShapinsky (#401)
- Overhauled point generation. Adding site meters, zone sensors, and schedule controls @TShapinsky (#406)
- Better reporting for certain EnergyPlus errors @TShapinsky
- Added run aliases @TShapinsky (#410)
- Update dependencies @axelstudios (#413)
- Signed URLs point to correct download URL @axelstudios (#415 #422)
- Lock versions for dependent docker containers @nllong (#393)
- Added error handling and validation to all REST API endpoints @axelstudios (#415)
- OSW and FMU sites can be operated on simultaneously from the UI @axelstudios (#415)
- Bug fixes @axelstudios @TShapinsky
Full Changelog: v0.4.1...v0.5.0
v0.4.1
What's Changed
- Add fix for incorrect timesteps when days roll over by @TShapinsky in #364
- Small Optimization for Point Writing by @TShapinsky in #365
- Remove worker container_name by @TShapinsky in #370
- Fix Failing Tests by @TShapinsky in #376
- Change python measure name by @TShapinsky in #373
- Move sim_time to redis by @TShapinsky in #374
- Bump pytoml version to 0.4.1 by @TShapinsky in #379
- Move from sklearn to scikit-learn in test by @TShapinsky in #381
- Bump web version to 0.4.1 by @TShapinsky in #382
- Bump loader-utils from 2.0.2 to 2.0.3 in /alfalfa_web by @dependabot in #384
- API Refactor and Improvements by @axelstudios in #383
- Switch from zipfile to shutil to improve structure of uploaded models by @TShapinsky in #368
- Merge 0.4.1 into Main by @TShapinsky in #380
Full Changelog: v0.4.0...v0.4.1
v0.4.0
Worker Updates
- Substantial upgrades to database interaction:
- Move read/write operations of write arrays,
curVal
, andcurStatus
from Mongo to Redis, reducing latencies associated with model advance. - Add Mongo engine ORM and associated database schema per the object specification.
- Revised Mongo indexes.
- Consolidate explicit MongoDB interactions throughout codebase.
- Creates a database schema per the Mongo engine object specification.
- Creates a new site object which is extracted during the
recs
writing. - Creates relationships between objects.
- Enables cascading deletes (if called from the Python side of the code). e.g.,
site.delete()
now removes all models, runs, recs, writearrays, etc. - Adds unit test with basic mock data for mongoengine/mongo
- Move read/write operations of write arrays,
- Python updates
- Worker Python and E+ Python upgraded to 3.8
- Required packaged for Python plugins can be specified in a requirements.txt file, documented in wiki.
- Improved error handling and logging:
- Jobs that experience errors now upload the contents of the run to S3
- E+ error logs are now exposed to the user when simulation fails.
- Bug fixes:
- Fixes intermittent E+ bug where models would sometimes skip a time step.
- Timescale runs now stop at the specified stop time.
- Improved handing of
writearray
andwriteVal
.
Web Updates
- Fixed React routing to redirect to home on unknown routes
- Restricted uploads to .zip and .fmu file extensions
- Added favicon
- Resolved all high-security vulnerabilities
What's Changed
- InfluxDB auth breaks in Grafana 9. This fixes the historian stack fo… by @anyaelena in #328
- hotfix - pin grafana in 0.3.0 release by @anyaelena in #329
- Centralized License by @axelstudios in #331
- Check in run when error in job is experienced by @TShapinsky in #325
- pull in latest FMU-related libraries from boptest by @nllong in #333
- Python dependency management by @TShapinsky in #335
- Add Basic Model I/O Test by @TShapinsky in #337
- Fix job_history recording by @TShapinsky in #341
- Pass realtime, external_clock, and timescale as string by @nllong in #342
- Watch JS files in development docker compose by @nllong in #351
- Fix model advance bug by @TShapinsky in #338
- Alfalfa with custom e+9.6 w/ py3.8 build by @TShapinsky in #344
- Add test for automatic virtual environment creation by @TShapinsky in #343
- Timescale fixes by @TShapinsky in #340
- Add automatic handling of eplus error logs and test case by @TShapinsky in #353
- Write to Redis by @axelstudios in #356
- Add Mongo ORM/ODM by @nllong in #352
- 0.4.0 Release by @anyaelena in #362
Full Changelog: v0.3.0...v0.4.0
v0.3.0
The 0.3.0 release of Alfalfa includes substantial updates to both worker and web containers. These are detailed in dedicated sections below and include the following breaking changes:
- Worker updates to EnergyPlus, OpenStudio, and Python may require model updates to run without errors.
- Web update to namespace the Project Haystack API mean that any coded API integrations will need url updates to add the `/haystack' prefix.
- Any integrations using alfalfa-client must be updated to use alfalfa-client 0.3.1 which includes updates to API calls for run administration.
Worker Updates
- Update Ubuntu from 18.04 to 20.04.
- Update Python from 3.6 to 3.7.
- Removed Python 2 entirely.
- Update EnergyPlus from 9.4.0 to 9.60.
- Update OpenStudio from 3.1.0 to 3.3.0.
- More granular run statuses, including error status. Status list defined in lib/run.py.
- Introduced Mocks and expanded test coverage.
- FMU and OSW runs now use same base class for timescale and external_clock runs.
Web Updates
- Update base image from Ubuntu 18.04 to Alpine 3.16.
- Webpack 5 upgrade
- Resolves all dependency vulnerabilities.
- Added REST API (/api/v2/*), with live documentation at /docs.
- Project Haystack API moved to namespace: (/haystack/*)
- Added LOGGING toggle to .env
- Fixes unexpected UI behavior bugs.
Deployment Updates
- Run logs scraped and browsable via Kibana.
What's Changed
- Release 0.2.0 by @anyaelena in #272
- Add in Log Stack (ELK) for docker-compose by @tijcolem in #285
- Bump moment from 2.26.0 to 2.29.2 in /alfalfa_web by @dependabot in #287
- Upgrade to Python 3.7 by @TShapinsky in #296
- upgrade IDFs to 9.6.0 by @nllong in #295
- 3 min timeout for warm up by @anyaelena in #298
- configure filebeat to harvest sim logs by @tijcolem in #300
- Bump pillow from 9.1.0 to 9.1.1 by @dependabot in #304
- Web Dependency Refactor by @axelstudios in #305
- Small tweaks to job refactor by @nllong in #306
- Don't Generate Precompressed Assets by @axelstudios in #307
- Alfalfa Job Refactor by @TShapinsky in #299
- Pin minio as workaround for #230. by @anyaelena in #309
- 0.3.0 Release by @anyaelena in #317
- Alfalfa REST API + Documentation by @axelstudios in #316
- Fix error handling during FMU time parsing by @TShapinsky in #315
- Fix Run Download Location for OpenStudio Runs by @TShapinsky in #318
- 0.3.0 Release by @anyaelena in #319
New Contributors
Full Changelog: v0.2.0...v0.3.0
v0.2.0
Summary of updates
Worker:
- Install Spawn of EnergyPlus
- Alfalfa workers upgrade to PyFMI 2.9.5 and now use exclusively Python 3
- OS and FMU operations have improved separation
- Message to add a site now uses ‘model_name’ instead of ‘osm_name’ as a parameter
- FMU timestep updated to 60s.
- Timescale option now working for FMUs
Web:
- Resolved security vulnerabilities
- Windows compatible
- Isolated devDependencies
- Replaced deprecated Roboto dependency
- Localized Material Icons font
- ES6 refactor
- Reformat
- Added missing dependencies
- Replaced moment with luxon for tree shaking
- Replaced hardcoded browser targets with dynamic .browserslistrc
- Fixed invalid json
- Resolved all compilation warnings
Deployment:
- The alfalfa-helm repo now provides resources for deploying Alfalfa to Kubernetes.
What's Changed
- Print the error and traceback if worker dies during startup. by @anyaelena in #173
- lock version of poetry and force install nodejs by @nllong in #186
- Bump path-parse from 1.0.6 to 1.0.7 in /alfalfa_web by @dependabot in #184
- Bump browserslist from 4.13.0 to 4.16.6 in /alfalfa_web by @dependabot in #183
- Bump hosted-git-info from 2.8.8 to 2.8.9 in /alfalfa_web by @dependabot in #182
- Bump redis from 3.0.2 to 3.1.1 in /alfalfa_web by @dependabot in #180
- Bump ssri from 6.0.1 to 6.0.2 in /alfalfa_web by @dependabot in #179
- Bump y18n from 4.0.0 to 4.0.3 in /alfalfa_web by @dependabot in #187
- Bump lodash from 4.17.19 to 4.17.21 in /alfalfa_web by @dependabot in #181
- Update web dependencies by @kbenne in #190
- Bump aws-sdk from 2.715.0 to 2.814.0 in /alfalfa_web by @dependabot in #191
- Increase advance timeout to 1 minute by @kbenne in #193
- remove unused Dockerfile-test by @nllong in #215
- upgrade dependencies by @nllong in #214
- Support dev environment with docker-compose and docker by @nllong in #216
- rename docker-compose.historian.yml by @nllong in #217
- Break out files into worker fmu and worker openstudio folders by @nllong in #219
- move dbops.js out of generic lib folder by @nllong in #225
- Update copyrights and use prettier formatting pre-commit by @nllong in #226
- Remove .osm workflow from workers by @TShapinsky in #227
- rename osmName to modelName to support osm and fmu by @nllong in #223
- Update alfalfa-client branch by @nllong in #235
- Bump node-sass from 4.14.1 to 7.0.0 in /alfalfa_web by @dependabot in #232
- isort precommit by @nllong in #240
- Create dispatcher class by @nllong in #239
- Increase timeout for mlep to 1 min by @kbenne in #243
- Give E+ a minute to warm up. by @anyaelena in #246
- Remove redundant code in Alfalfa Workers by @TShapinsky in #244
- Update install commands for Spawn by @kbenne in #255
- Remove Python 2 by @TShapinsky in #251
- Web Refactor by @axelstudios in #267
- Bump ajv from 6.6.1 to 6.12.6 in /alfalfa_web by @dependabot in #269
- Main into develop by @anyaelena in #271
- Fixed datetime picker by @axelstudios in #277
- Add SuperLU with Sundials to fix spawn support by @TShapinsky in #278
- Bump paramiko from 2.9.2 to 2.10.1 by @dependabot in #281
- 263 fix fmutimescale by @anyaelena in #280
New Contributors
- @TShapinsky made their first contribution in #227
- @axelstudios made their first contribution in #267