|
4 | 4 |
|
5 | 5 | It brings together **solar asset monitoring**, **simulations**, and **IBEX electricity market integration**. The platform uses a **centralized virtual battery system** and a **decoupled data API** to manage and optimize energy usage and trading. |
6 | 6 |
|
7 | | -> ⚡ Created by **Deniz Ivanov** |
8 | | -> 🎓 ASP.NET Advanced Final Project – June 2025 (SoftUni) |
| 7 | +> ⚡ Created by **Deniz Ivanov** |
| 8 | +> 🎓 ASP.NET Advanced Final Project – June 2025 (SoftUni) |
9 | 9 | > 📡 Market data powered by [IBEX-Scraper-API](https://github.com/JacksonJS12/IBEX-Scraper-API) |
10 | 10 |
|
11 | 11 | --- |
12 | 12 |
|
13 | 13 | ## 🔍 Key Features |
14 | 14 |
|
15 | 15 | ### ⚙️ Solar Asset Monitoring |
16 | | -- Manage solar systems (Grid-Tied, Off-Grid, Hybrid) |
17 | | -- Track real-time performance: generation, capacity, and efficiency |
18 | | -- Use built-in simulation engine for forecasting and analysis |
| 16 | + |
| 17 | +* Manage solar systems (Grid-Tied, Off-Grid, Hybrid) |
| 18 | +* Track real-time performance: generation, capacity, and efficiency |
| 19 | +* Use built-in simulation engine for forecasting and analysis |
19 | 20 |
|
20 | 21 | ### 🔋 Virtual Battery Wallet (Energy-as-Currency) |
| 22 | + |
21 | 23 | All energy generated by a user’s solar assets is routed into a **shared virtual wallet**: |
22 | 24 |
|
23 | | -- Modeled as a **battery collection**, decoupled from the grid |
24 | | -- Surplus energy is stored and shown as a **balance** |
25 | | -- This balance can later be **sold like cryptocurrency** on the energy market |
26 | | -- The energy is stored into batteries on one place |
27 | | -- The electricity travels trough the grid into one place where is stored |
28 | | -- Wallet capacity depends on user subscription plan (Small, Medium, Large) |
| 25 | +* Modeled as a **battery collection**, decoupled from the grid |
| 26 | +* Surplus energy is stored and shown as a **balance** |
| 27 | +* This balance can later be **sold like cryptocurrency** on the energy market |
| 28 | +* The energy is stored into batteries on one place |
| 29 | +* The electricity travels through the grid into one place where it is stored |
| 30 | +* Wallet capacity depends on user subscription plan (Small, Medium, Large) |
29 | 31 |
|
30 | 32 | ### 📈 Smart Market Integration |
31 | | -- Fetches **daily IBEX Day-Ahead prices** automatically |
32 | | -- Calculates optimal hourly **trading targets** for each solar asset |
33 | | -- Visualizes actual vs. target prices using **Chart.js** |
34 | | -- Enables users to optimize profit by selling energy at peak hours |
| 33 | + |
| 34 | +* Fetches **daily IBEX Day-Ahead prices** automatically |
| 35 | +* Calculates optimal hourly **trading targets** for each solar asset |
| 36 | +* Visualizes actual vs. target prices using **Chart.js** |
| 37 | +* Enables users to optimize profit by selling energy at peak hours |
35 | 38 |
|
36 | 39 | --- |
37 | 40 |
|
38 | 41 | ## 🛰 Powered by IBEX-Scraper-API |
39 | 42 |
|
40 | | -SunNext **does not scrape IBEX directly**.: |
| 43 | +SunNext **does not scrape IBEX directly**: |
41 | 44 |
|
42 | | -> [`IBEX-Scraper-API`](https://github.com/JacksonJS12/IBEX-Scraper-API) – An ASP.NET Core Web API that scrapes **IBEX Day-Ahead segment prices** and stores them in an Azure SQL database. |
| 45 | +> [`IBEX-Scraper-API`](https://github.com/JacksonJS12/IBEX-Scraper-API) – An ASP.NET Core Web API that scrapes **IBEX Day-Ahead segment prices** and stores them in a remote SQL Server database. |
43 | 46 |
|
44 | 47 | ### 🧠 Why a Separate API? |
45 | | -- **Decouples scraping logic** from the main platform |
46 | | -- Ensures **secure**, **stable**, and **reusable** data access |
47 | | -- Makes it easy to extend to other platforms or external tools |
| 48 | + |
| 49 | +* **Decouples scraping logic** from the main platform |
| 50 | +* Ensures **secure**, **stable**, and **reusable** data access |
| 51 | +* Makes it easy to extend to other platforms or external tools |
48 | 52 |
|
49 | 53 | ### 🔄 How It Works: |
50 | | -- Scrapes **next-day hourly prices** |
51 | | -- Triggered daily at **14:00 BG time** via **Azure Logic App** |
52 | | -- Calls `POST /api/Scrape/scrape-and-save` only if new data |
53 | | -- Stores data as: |
54 | | - - `Date` (`dd/MM/yyyy`) |
55 | | - - `Hour` (1–24 CET) |
56 | | - - `PricePerMWh` |
57 | 54 |
|
58 | | -🔗 **Live API Docs:** [Swagger UI](http://ibex-scraper.somee.com/swagger/index.html) |
| 55 | +* Scrapes **next-day hourly prices** |
| 56 | +* Triggered daily at **14:00 BG time** via an **external scheduler** ([cron-job.org](https://cron-job.org)) |
| 57 | +* Calls `POST /api/Scrape/scrape-and-save` only if new data is available |
| 58 | +* Stores data as: |
| 59 | + |
| 60 | + * `Date` (`dd/MM/yyyy`) |
| 61 | + * `Hour` (1–24 CET/EET/EEST) |
| 62 | + * `PricePerMWh` |
| 63 | + |
| 64 | +🔗 **Live API Docs:** [Swagger UI](http://ibex-scraper.somee.com/swagger/index.html) *(HTTP only – free hosting plan limitation)* |
59 | 65 |
|
60 | 66 | --- |
61 | 67 |
|
62 | 68 | ## 🧱 Tech Stack |
63 | 69 |
|
64 | | -| Layer | Technology | |
65 | | -|--------------------|-------------------------------------------------| |
66 | | -| Platform Backend | ASP.NET Core 8.0 MVC (based on [Nikolay Kostov’s Template](https://github.com/NikolayIT/ASP.NET-Core-Template)) | |
67 | | -| Models | Data Models / Prototypes / ViewModels Separation | |
68 | | -| Market Integration | [IBEX-Scraper-API](https://github.com/JacksonJS12/IBEX-Scraper-API) | |
69 | | -| Scraping | AngleSharp + Azure Logic App Scheduler | |
70 | | -| Storage | Azure SQL + Local MS SQL + EF Core 8 | |
71 | | -| UI & Charts | Bootstrap 5 + Chart.js | |
72 | | -| Authentication | ASP.NET Identity with Roles | |
| 70 | +| Layer | Technology | |
| 71 | +| ------------------ | --------------------------------------------------------------------------------------------------------------- | |
| 72 | +| Platform Backend | ASP.NET Core 8.0 MVC (based on [Nikolay Kostov’s Template](https://github.com/NikolayIT/ASP.NET-Core-Template)) | |
| 73 | +| Models | Data Models / Prototypes / ViewModels Separation | |
| 74 | +| Market Integration | [IBEX-Scraper-API](https://github.com/JacksonJS12/IBEX-Scraper-API) | |
| 75 | +| Scraping | AngleSharp + [cron-job.org](https://cron-job.org) Scheduler | |
| 76 | +| Storage | Remove SQL Db + Local MS SQL + EF Core 8 | |
| 77 | +| UI & Charts | Bootstrap 5 + Chart.js | |
| 78 | +| Authentication | ASP.NET Identity with Roles | |
0 commit comments