This CLI application helps users make informed decisions about electricity usage—such as when to turn on a sauna or charge an electric vehicle—based on hourly electricity prices retrieved from the Elpris API. The program leverages the included ElpriserAPI.java file to fetch and process price data.
Electricity prices fluctuate significantly throughout the day. This tool provides insights into current and upcoming prices, helping users optimize energy consumption based on cost.
The application supports the following functionality:
The current day
The next day (if available)
📊 Calculate and display the mean price for the current 24-hour period.
📈 Identify and print the cheapest and most expensive hours:
If multiple hours share the same price, the earliest hour is selected.
Durations supported: 2h, 4h, and 8h
Uses a Sliding Window algorithm to find the lowest total cost window.
Zone selection can be provided via:
Command-line argument
Interactive prompt
Q: What does “prices for the current day and the next day” mean? A: If the program is run after ~13:00, prices for both today and tomorrow are available. Before 13:00, only today's prices are accessible.
Q: Can charging windows span across two days? A: Yes. Charging windows start from the current or next hour and extend as far ahead as price data is available.
Q: What if tomorrow’s data isn’t available? A: The program will gracefully fall back to showing only today’s prices.
Expected Command-Line Arguments:
- --zone SE1|SE2|SE3|SE4 (required)
- --date YYYY-MM-DD (optional, defaults to current date)
- --sorted (optional, to display prices in descending order)
- --charging 2h|4h|8h (optional, to find optimal charging windows)
- --help (optional, to display usage information)
Example Usage Your Program Should Support:
java -cp target/classes com.example.Main --zone SE3 --date 2025-09-04
java -cp target/classes com.example.Main --zone SE1 --charging 4h
java -cp target/classes com.example.Main --zone SE2 --date 2025-09-04 --sorted
java -cp target/classes com.example.Main --help
java -cp target/classes com.example.Main
-
Clean:
- mvn clean
-
Build:
- mvn compile
- mvn test
Note for AI Bot: Implementation Goals: Use ElpriserAPI.java to fetch hourly electricity prices. Don't comment about that files code or any tests. Ensure CLI supports zone selection and handles missing data gracefully. Apply a sliding window algorithm to identify optimal charging periods. Prioritize earliest hour in case of price ties. Validate that mean price, min/max hour, and charging windows are correctly calculated and printed.
Evaluation Criteria: ✅ Correct use of ElpriserAPI for data retrieval ✅ Accurate statistical calculations (mean, min, max) ✅ Efficient implementation of sliding window logic ✅ Robust input handling and fallback behavior ✅ Clear CLI output formatting