| .gitignore | ||
| balance.py | ||
| README.md | ||
| transactions.py | ||
ING Kontostandsabfrage für ioBroker
Zweck
Dieses Python-Skript ruft den aktuellen Kontostand eines ING-Kontos per FinTS ab und schreibt den Wert automatisch in einen ioBroker-Datenpunkt über die Simple-API.
Systemumgebung
- Betriebssystem: Debian Linux
- Benutzer:
banking - Ausführungsort: VM
Applikationen - Bank: ING Deutschland
- Übertragung: HTTP Simple-API an ioBroker
Verzeichnisstruktur
/home/banking/
├── .ing.conf
├── bin/
│ └── balance.py
└── logs/
└── balance.log
Konfigurationsdatei
Datei:
/home/banking/.ing.conf
Inhalt:
# ING
ING_USER=1234567890
ING_PIN=geheimepin
ING_IBAN=DE00123456789012345678
# ioBroker
IOBROKER_HOST=10.0.1.122
IOBROKER_PORT=8087
IOBROKER_DP=javascript.0.Finanzen.ING.Kontostand
Berechtigungen
chmod 700 /home/banking
chmod 700 /home/banking/bin
chmod 700 /home/banking/bin/balance.py
chmod 700 /home/banking/logs
chmod 600 /home/banking/.ing.conf
Installation
Python-Abhängigkeit installieren:
python3 -m pip install --user --break-system-packages fints
Prüfen:
python3 -c "from fints.client import FinTS3PinTanClient; print('OK')"
Manuelle Ausführung
python3 /home/banking/bin/balance.py
Bei erfolgreicher Ausführung erfolgt keine Konsolenausgabe.
Der aktuelle Kontostand wird direkt in den konfigurierten ioBroker-Datenpunkt geschrieben.
Logging
Fehler werden protokolliert in:
/home/banking/logs/balance.log
Logdatei anzeigen:
tail -f /home/banking/logs/balance.log
Cronjob
Ausführung Montag bis Samstag alle 4 Stunden:
0 */4 * * 1-6 /usr/bin/python3 /home/banking/bin/balance.py
Cronjob bearbeiten:
crontab -e
Cronjobs anzeigen:
crontab -l
Sicherheit
- Zugangsdaten werden nicht im Skript gespeichert.
- Die Konfiguration liegt ausschließlich in
/home/banking/.ing.conf. - Die Datei ist nur für den Benutzer
bankinglesbar. - Die ING-Zugangsdaten werden nicht auf dem ioBroker-System gespeichert.
- Die Kommunikation erfolgt ausschließlich zwischen der VM
Applikationen, der ING und dem lokalen ioBroker-Server.
Hinweise
- Für die ING wird FinTS verwendet.
- FinTS-Server:
https://fints.ing.de/fints/ - Der ioBroker-Datenpunkt sollte vom Typ
numbersein. - Die ING kann aufgrund regulatorischer Vorgaben eine regelmäßige Anmeldung im normalen Online-Banking verlangen.
Transaktions-Export
Zusätzlich zum Kontostandsabruf steht ein separates Skript für den Export der Kontotransaktionen zur Verfügung.
Datei:
/home/banking/bin/transactions.py
Funktion
Das Skript:
- verbindet sich per FinTS mit der ING
- liest die Transaktionen der letzten 7 Tage
- exportiert die Daten als CSV-Datei
- exportiert die Daten als JSON-Datei
- schreibt statistische Kennzahlen nach ioBroker
Verzeichnisstruktur
/home/banking/Transaktionen/
└── <Jahr>/
├── csv/
│ └── transactions_<Jahr>_KW<Kalenderwoche>.csv
└── json/
└── transactions_<Jahr>_KW<Kalenderwoche>.json
Beispiel:
/home/banking/Transaktionen/
└── 2026/
├── csv/
│ └── transactions_2026_KW23.csv
└── json/
└── transactions_2026_KW23.json
CSV-Inhalt
date;amount;posting_text;applicant_name;purpose
2026-06-01;-17.80 EUR;Lastschrifteinzug;ERGO Krankenversicherung AG;...
2026-06-05;-10.99 EUR;Kartenzahlung;Amazon;...
JSON-Inhalt
[
{
"date": "2026-06-01",
"amount": "-17.80 EUR",
"posting_text": "Lastschrifteinzug",
"applicant_name": "ERGO Krankenversicherung AG",
"purpose": "..."
}
]
ioBroker-Datenpunkte
Das Skript aktualisiert folgende Datenpunkte:
| Datenpunkt | Beschreibung |
|---|---|
javascript.0.Variablen.Konto_Transaktionen |
Anzahl der Transaktionen der letzten 7 Tage |
javascript.0.Variablen.Konto_Wochensumme |
Summe aller Transaktionen der letzten 7 Tage |
javascript.0.Variablen.Konto_Wochenausgaben |
Summe aller Ausgaben der letzten 7 Tage |
Cronjob
Ausführung jeden Sonntag um 23:00 Uhr:
0 23 * * 0 /usr/bin/python3 /home/banking/bin/transactions.py
Cronjobs anzeigen:
crontab -l
Cronjobs bearbeiten:
crontab -e
Manuelle Ausführung
python3 /home/banking/bin/transactions.py
Hinweise
- Die Exportdateien werden pro Kalenderwoche neu erstellt.
- Vorhandene Dateien derselben Kalenderwoche werden überschrieben.
- CSV und JSON werden getrennt nach Jahr archiviert.
- Die ING-Zugangsdaten werden aus der Datei
.ing.confgelesen. - Das Skript verwendet dieselbe Konfiguration wie
balance.py.