SteVe Transaction Report Generator
Python script voor het genereren van gedetailleerde rapporten van laadtransacties uit je SteVe OCPP backoffice.
Installatie
Vereisten
- Python 3
- MySQL Connector voor Python
Installeer MySQL Connector
Optie 1: Via pip (aanbevolen)
pip3 install mysql-connector-python --break-system-packages
Optie 2: Via apt
sudo apt update
sudo apt install python3-mysql-connector
Script installeren
# Maak een directory voor het script
mkdir -p ~/reports
# Plaats het script in de directory
# Upload steve_transaction_report.py naar ~/reports/
# Maak het uitvoerbaar
chmod +x ~/reports/steve_transaction_report.py
Gebruik
Standaard: Alle transacties gedetailleerd
Zonder specifieke opties toont het script de laatste transacties met volledige details:
python3 steve_transaction_report.py \
--host 192.168.178.201 \
--port 3307 \
--password 'JOUW_WACHTWOORD'
Dit toont standaard de laatste 10 transacties met volledige details inclusief verbruik per uur.
Aantal transacties aanpassen
# Laatste 5 transacties gedetailleerd
python3 steve_transaction_report.py \
--host 192.168.178.201 \
--port 3307 \
--password 'JOUW_WACHTWOORD' \
--limit 5
# Laatste 20 transacties gedetailleerd
python3 steve_transaction_report.py \
--host 192.168.178.201 \
--port 3307 \
--password 'JOUW_WACHTWOORD' \
--limit 20
Compact overzicht (tabel format)
Voor een snel overzicht zonder details:
python3 steve_transaction_report.py \
--host 192.168.178.201 \
--port 3307 \
--password 'JOUW_WACHTWOORD' \
--list
# Met meer transacties
python3 steve_transaction_report.py \
--host 192.168.178.201 \
--port 3307 \
--password 'JOUW_WACHTWOORD' \
--list --limit 20
Specifieke transactie
python3 steve_transaction_report.py \
--host 192.168.178.201 \
--port 3307 \
--password 'JOUW_WACHTWOORD' \
--transaction 1
Eenvoudig rapport (zonder uurdetails)
python3 steve_transaction_report.py \
--host 192.168.178.201 \
--port 3307 \
--password 'JOUW_WACHTWOORD' \
--transaction 1 \
--simple
Parameters
| Parameter | Default | Verplicht | Beschrijving |
|---|---|---|---|
| --host | localhost | Nee | Database server IP of hostname |
| --port | 3306 | Nee | MySQL/MariaDB poort |
| --database | stevedb | Nee | Database naam |
| --user | steve | Nee | Database gebruikersnaam |
| --password | - | Ja | Database wachtwoord |
| --list | - | Nee | Toon compact overzicht (tabel) |
| --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
Gedetailleerd rapport bevat:
- Laadpaal informatie
- Gebruiker en RFID tag
- Start en stop tijden
- Duur van de laadsessie
- Totaal verbruik in kWh
- Verbruik en kosten per uur met echte prijzen
- Statistieken:
- Aantal actieve laaduren
- Provider informatie
- Gemiddeld verbruik per uur
- Piekuur (meeste verbruik)
- Duurste en goedkoopste uur
- Totale kosten (met echte prijzen!)
- Gemiddelde prijs per kWh
Compact overzicht bevat:
- Transactie ID
- Start datum/tijd
- Duur
- Totaal kWh
- 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 providersdynamic_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- AllAboutAIP- All in PowerANWB- ANWB EnergieBE- Budget EnergieEE- Essent EnergieEN- EnecoEVO- EVO EnergieEZ- EngieFR- Frank EnergieGSL- GreenchoiceMDE- Mijndomein EnergieTI- TibberVDB- VandebronVON- VattenfallWE- Welkom EnergieZG- ZonneplanZP- Pure Energie
Provider instellen
# 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:
# 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
- Voor elk uur tijdens het laden wordt de prijs opgehaald
- De kosten worden berekend: verbruik (kWh) × prijs (€/kWh)
- Het rapport toont prijzen en kosten per uur
- Het totaal wordt berekend met de werkelijke prijzen
- Als prijzen ontbreken voor een bepaald uur, wordt dit aangegeven
Alias maken (aanbevolen)
Voor gemakkelijk gebruik maak je een alias aan:
# Voeg toe aan ~/.bashrc
echo "alias steve-report='python3 ~/reports/steve_transaction_report.py --host 192.168.178.201 --port 3307 --user steve --password \"JOUW_WACHTWOORD\"'" >> ~/.bashrc
# Herlaad bashrc
source ~/.bashrc
Nu kun je simpel gebruik maken van:
steve-report # Laatste 10 transacties gedetailleerd
steve-report --list # Compact overzicht
steve-report --limit 5 # Laatste 5 transacties
steve-report --transaction 3 # Specifieke transactie
Voorbeelden
Voorbeeld 1: Dagelijks overzicht
steve-report --limit 1
Voorbeeld 2: Wekelijks overzicht
steve-report --list --limit 50
Voorbeeld 3: Export naar bestand
steve-report --transaction 5 > laadrapport_$(date +%Y%m%d).txt
Voorbeeld 4: Automatisch dagelijks rapport via cron
# Voeg toe aan crontab (crontab -e)
# Elke dag om 08:00 uur
0 8 * * * python3 ~/reports/steve_transaction_report.py --host 192.168.178.201 --port 3307 --password 'XXX' --limit 1 > ~/laadrapport_$(date +\%Y\%m\%d).txt
Voorbeeld 5: Rapport via email
# Installeer mailutils
sudo apt install mailutils
# Voeg toe aan crontab
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
# 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
================================================================================
LAADSESSIE RAPPORT - Transactie #1
================================================================================
Laadpaal: VAN_01971
Alfen Single S-Line thuis
Connector: 1
RFID Tag: 04BB29EAFD0F94
Gebruiker: kors
Start: 28-10-2025 18:27:42
Einde: 29-10-2025 06:12:43
Duur: 11u 45m
Start meterstand: 5518.267 kWh
Eind meterstand: 5540.121 kWh
Totaal geladen: 21.85 kWh
================================================================================
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 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)
TOTALE KOSTEN: €3.35
Gemiddelde prijs: €0.22913/kWh
================================================================================
Troubleshooting
"Access denied" error
- Controleer of het wachtwoord correct is (gebruik enkele quotes:
'wachtwoord') - Controleer of de gebruiker toegang heeft tot de database
- Test de verbinding:
mysql -h 192.168.178.201 -P 3307 -u steve -p
"Can't connect to MySQL server"
- Controleer of host en poort correct zijn
- Controleer of de database server draait
- Controleer firewall instellingen
"No module named 'mysql.connector'"
Installeer de MySQL connector:
pip3 install mysql-connector-python --break-system-packages
Geen transacties gevonden
- Controleer of er transacties in de database staan
- Controleer of de database naam correct is (standaard: stevedb)
- Test met:
mysql -h HOST -P PORT -u USER -p -e "SELECT COUNT(*) FROM stevedb.transaction"
Speciale tekens in wachtwoord
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
mysql -h 192.168.178.201 -P 3307 -u steve -p -e "SHOW DATABASES LIKE 'alfen'"
Stap 2: Controleer tabellen
mysql -h 192.168.178.201 -P 3307 -u steve -p alfen -e "SHOW TABLES"
Stap 3: Test prijzen query
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:
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:
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:
transaction- Hoofd transactie gegevensconnector_meter_value- Meterwaarden per tijdstipconnector- Connector informatiecharge_box- Laadpaal informatieuser- Gebruikersocpp_tag- RFID tagsuser_ocpp_tag- Koppeling tussen gebruikers en tags
Features
✅ 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
Voor vragen of problemen:
- Controleer eerst de troubleshooting sectie
- Test de database verbinding handmatig
- Controleer of alle parameters correct zijn
Licentie
Open source - vrij te gebruiken en aan te passen voor persoonlijk gebruik.
Versie
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
- Betere voorbeelden en documentatie