external prices added

This commit is contained in:
Mark Kors
2025-10-29 19:16:07 +01:00
parent 58409ba783
commit 6a722f6bf2
2 changed files with 337 additions and 44 deletions

213
README.md
View File

@@ -114,6 +114,12 @@ python3 steve_transaction_report.py \
| --transaction | - | Nee | Specifieke transactie ID |
| --limit | 10 | Nee | Aantal transacties |
| --simple | - | Nee | Zonder uurdetails |
| --provider | NE | Nee | Energie provider code voor prijzen |
| --price-db | alfen | Nee | Database naam voor prijsgegevens |
| --price-host | (zelfde) | Nee | Database host voor prijzen |
| --price-port | (zelfde) | Nee | Database poort voor prijzen |
| --price-user | (zelfde) | Nee | Database gebruiker voor prijzen |
| --price-password | (zelfde) | Nee | Database wachtwoord voor prijzen |
## Rapport Inhoud
@@ -123,12 +129,15 @@ python3 steve_transaction_report.py \
- Start en stop tijden
- Duur van de laadsessie
- Totaal verbruik in kWh
- **Verbruik per uur** met meterwaarden
- **Verbruik en kosten per uur** met echte prijzen
- Statistieken:
- Aantal actieve laaduren
- Provider informatie
- Gemiddeld verbruik per uur
- Piekuur (meeste verbruik)
- Geschatte kosten
- Duurste en goedkoopste uur
- **Totale kosten (met echte prijzen!)**
- Gemiddelde prijs per kWh
### Compact overzicht bevat:
- Transactie ID
@@ -138,6 +147,89 @@ python3 steve_transaction_report.py \
- Laadpaal
- RFID tag
## Prijzen Functionaliteit
Het script gebruikt **echte dynamische prijzen** uit je prijzen database in plaats van geschatte kosten!
### Prijzen Database
Het script haalt prijzen op uit twee tabellen:
- `dynamic_price_data` - Historische en huidige dagprijzen voor alle providers
- `dynamic_price_data_tommorow` - Prijzen voor de volgende dag (alleen NextEnergy)
### Providers
Standaard wordt NextEnergy (NE) gebruikt, maar je kunt elke provider kiezen:
**Beschikbare providers:**
- `NE` - NextEnergy (standaard)
- `AA` - AllAbout
- `AIP` - All in Power
- `ANWB` - ANWB Energie
- `BE` - Budget Energie
- `EE` - Essent Energie
- `EN` - Eneco
- `EVO` - EVO Energie
- `EZ` - Engie
- `FR` - Frank Energie
- `GSL` - Greenchoice
- `MDE` - Mijndomein Energie
- `TI` - Tibber
- `VDB` - Vandebron
- `VON` - Vattenfall
- `WE` - Welkom Energie
- `ZG` - Zonneplan
- `ZP` - Pure Energie
### Provider instellen
```bash
# Gebruik NextEnergy (standaard)
steve-report --transaction 1
# Gebruik een andere provider
steve-report --transaction 1 --provider AA
steve-report --transaction 1 --provider FR
```
### Aparte prijzen database credentials
Als je prijzen database andere login credentials heeft:
```bash
# Zelfde server, andere database en gebruiker
python3 steve_transaction_report.py \
--host 192.168.178.201 \
--port 3307 \
--user steve \
--password 'steve_wachtwoord' \
--price-user prijzen_user \
--price-password 'prijzen_wachtwoord' \
--transaction 1
# Andere server voor prijzen
python3 steve_transaction_report.py \
--host 192.168.178.201 \
--port 3307 \
--user steve \
--password 'steve_wachtwoord' \
--price-host 192.168.178.202 \
--price-port 3306 \
--price-user prijzen_user \
--price-password 'prijzen_wachtwoord' \
--transaction 1
# Via alias (voeg prijzen credentials toe aan alias)
alias steve-report='python3 ~/reports/steve_transaction_report.py \
--host 192.168.178.201 --port 3307 --user steve --password "steve_pass" \
--price-user prijzen_user --price-password "prijzen_pass"'
```
**Let op:** Als je geen prijzen credentials opgeeft, gebruikt het script automatisch dezelfde credentials als voor de SteVe database (alleen de database naam wijzigt naar `alfen`).
### Hoe het werkt
1. Voor elk uur tijdens het laden wordt de prijs opgehaald
2. De kosten worden berekend: **verbruik (kWh) × prijs (€/kWh)**
3. Het rapport toont prijzen en kosten per uur
4. Het totaal wordt berekend met de werkelijke prijzen
5. Als prijzen ontbreken voor een bepaald uur, wordt dit aangegeven
## Alias maken (aanbevolen)
Voor gemakkelijk gebruik maak je een alias aan:
@@ -192,6 +284,18 @@ sudo apt install mailutils
0 8 * * * python3 ~/reports/steve_transaction_report.py --host 192.168.178.201 --port 3307 --password 'XXX' --transaction 1 | mail -s "Laadrapport" jouw@email.nl
```
### Voorbeeld 6: Aparte prijzen database credentials
```bash
# Prijzen database heeft andere gebruiker
steve-report --price-user prijzen_user --price-password 'geheim2' --transaction 1
# Prijzen database op andere server
python3 steve_transaction_report.py \
--host 192.168.178.201 --port 3307 --password 'pass1' \
--price-host 192.168.178.202 --price-user prijzen_user --price-password 'pass2' \
--transaction 1
```
## Output Voorbeeld
```
@@ -212,26 +316,29 @@ Eind meterstand: 5540.121 kWh
Totaal geladen: 21.85 kWh
================================================================================
VERBRUIK PER UUR:
--------------------------------------------------------------------------------
Uur Start (kWh) Eind (kWh) Geladen (kWh)
--------------------------------------------------------------------------------
28-10 18:27 5518.267 5518.796 0.529
29-10 01:12 5520.027 5522.945 2.918
29-10 02:12 5525.658 5529.181 3.523
29-10 03:12 5531.738 5539.881 8.143
--------------------------------------------------------------------------------
TOTAAL 5518.267 5540.121 21.854
VERBRUIK EN KOSTEN PER UUR:
----------------------------------------------------------------------------------------------------
Uur Start (kWh) Eind (kWh) Geladen (kWh) Prijs (€/kWh) Kosten (€)
----------------------------------------------------------------------------------------------------
28-10 18:27 5518.267 5518.796 0.529 0.29124 0.15
29-10 01:12 5520.027 5522.945 2.918 0.22685 0.66
29-10 02:12 5525.658 5529.181 3.523 0.22166 0.78
29-10 03:12 5531.738 5539.881 8.143 0.21564 1.76
----------------------------------------------------------------------------------------------------
TOTAAL 5518.267 5540.121 21.854 €3.35
================================================================================
STATISTIEKEN:
--------------------------------------------------------------------------------
Actieve laaduren: 4
Provider: NE
Gemiddeld per actief uur: 3.78 kWh
Piekuur: 29-10 03:00 (8.14 kWh)
Piekuur verbruik: 29-10 03:00 (8.14 kWh)
Duurste uur: 28-10 18:00 (€0.29124/kWh)
Goedkoopste uur: 29-10 03:00 (€0.21564/kWh)
Geschatte kosten (€0.30/kWh): €6.56
Geschatte kosten (€0.10/kWh): €2.19
TOTALE KOSTEN: €3.35
Gemiddelde prijs: €0.22913/kWh
================================================================================
```
@@ -264,6 +371,52 @@ Gebruik altijd enkele quotes rond het wachtwoord:
--password 'Mijn$Wachtw00rd!'
```
### Prijzen database problemen
Als je melding krijgt dat prijzen ontbreken of verbinding mislukt:
**Stap 1: Controleer of prijzen database bestaat**
```bash
mysql -h 192.168.178.201 -P 3307 -u steve -p -e "SHOW DATABASES LIKE 'alfen'"
```
**Stap 2: Controleer tabellen**
```bash
mysql -h 192.168.178.201 -P 3307 -u steve -p alfen -e "SHOW TABLES"
```
**Stap 3: Test prijzen query**
```bash
mysql -h 192.168.178.201 -P 3307 -u steve -p alfen -e "SELECT COUNT(*) FROM dynamic_price_data WHERE provider_code='NE'"
```
**Als prijzen database andere credentials heeft:**
Gebruik de prijzen database parameters:
```bash
python3 steve_transaction_report.py \
--host 192.168.178.201 --port 3307 --user steve --password 'pass1' \
--price-user andere_user --price-password 'pass2' \
--transaction 1
```
**Als prijzen database op andere server staat:**
```bash
python3 steve_transaction_report.py \
--host 192.168.178.201 --port 3307 --user steve --password 'pass1' \
--price-host 192.168.178.202 --price-port 3306 \
--price-user prijzen_user --price-password 'pass2' \
--transaction 1
```
Als prijzen voor een ander uur ontbreken:
- Het script markeert dit automatisch met "n.v.t."
- Je ziet een waarschuwing: "Let op: Voor X uur ontbreken prijsgegevens"
- De totale kosten zijn dan gebaseerd op de beschikbare prijzen
### Verkeerde provider
Als je provider code niet werkt:
- Controleer of de provider code bestaat: `mysql -h HOST -P PORT -u USER -p alfen -e "SELECT DISTINCT provider_code FROM dynamic_price_data"`
- Gebruik één van de beschikbare codes (zie README voor lijst)
## Database Structuur
Het script maakt gebruik van de volgende SteVe database tabellen:
@@ -275,15 +428,23 @@ Het script maakt gebruik van de volgende SteVe database tabellen:
- `ocpp_tag` - RFID tags
- `user_ocpp_tag` - Koppeling tussen gebruikers en tags
## Toekomstige Features
## Features
Mogelijke uitbreidingen:
- [ ] Echte prijzen integratie vanuit prijzen database
- [ ] CSV export functionaliteit
- [ ] Grafische weergave van verbruik
- [ ] Vergelijking tussen transacties
- [ ] Maandelijkse/jaarlijkse samenvattingen
- [ ] CO2 besparing berekening
**Geïmplementeerd:**
- Echte dynamische prijzen uit database
- Meerdere energie providers ondersteund
- Verbruik en kosten per uur
- Duurste en goedkoopste laaduren identificeren
- Gemiddelde prijs berekening
- Automatische detectie van ontbrekende prijzen
🔜 **Toekomstige uitbreidingen:**
- CSV export functionaliteit
- Grafische weergave van verbruik en prijzen
- Vergelijking tussen transacties
- Maandelijkse/jaarlijkse samenvattingen
- CO2 besparing berekening
- Email alerts bij te hoge prijzen
## Support
@@ -298,7 +459,11 @@ Open source - vrij te gebruiken en aan te passen voor persoonlijk gebruik.
## Versie
Versie 1.1 - Oktober 2025
Versie 2.0 - Oktober 2025
-**Echte dynamische prijzen uit database**
-**Meerdere energie providers ondersteund**
-**Kosten berekening per uur**
-**Duurste en goedkoopste uren identificeren**
- Verbeterde prijsberekening
- Standaard gedrag: alle transacties tonen
- --limit werkt overal