240 lines
No EOL
4.7 KiB
Markdown
240 lines
No EOL
4.7 KiB
Markdown
# 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
|
|
|
|
```text
|
|
/home/banking/
|
|
├── .ing.conf
|
|
├── bin/
|
|
│ └── balance.py
|
|
└── logs/
|
|
└── balance.log
|
|
```
|
|
|
|
## Konfigurationsdatei
|
|
|
|
Datei:
|
|
|
|
```text
|
|
/home/banking/.ing.conf
|
|
```
|
|
|
|
Inhalt:
|
|
|
|
```ini
|
|
# 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
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
python3 -m pip install --user --break-system-packages fints
|
|
```
|
|
|
|
Prüfen:
|
|
|
|
```bash
|
|
python3 -c "from fints.client import FinTS3PinTanClient; print('OK')"
|
|
```
|
|
|
|
## Manuelle Ausführung
|
|
|
|
```bash
|
|
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:
|
|
|
|
```text
|
|
/home/banking/logs/balance.log
|
|
```
|
|
|
|
Logdatei anzeigen:
|
|
|
|
```bash
|
|
tail -f /home/banking/logs/balance.log
|
|
```
|
|
|
|
## Cronjob
|
|
|
|
Ausführung Montag bis Samstag alle 4 Stunden:
|
|
|
|
```cron
|
|
0 */4 * * 1-6 /usr/bin/python3 /home/banking/bin/balance.py
|
|
```
|
|
|
|
Cronjob bearbeiten:
|
|
|
|
```bash
|
|
crontab -e
|
|
```
|
|
|
|
Cronjobs anzeigen:
|
|
|
|
```bash
|
|
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 `banking` lesbar.
|
|
- 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 `number` sein.
|
|
- 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:
|
|
|
|
```text
|
|
/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
|
|
|
|
```text
|
|
/home/banking/Transaktionen/
|
|
└── <Jahr>/
|
|
├── csv/
|
|
│ └── transactions_<Jahr>_KW<Kalenderwoche>.csv
|
|
└── json/
|
|
└── transactions_<Jahr>_KW<Kalenderwoche>.json
|
|
```
|
|
|
|
Beispiel:
|
|
|
|
```text
|
|
/home/banking/Transaktionen/
|
|
└── 2026/
|
|
├── csv/
|
|
│ └── transactions_2026_KW23.csv
|
|
└── json/
|
|
└── transactions_2026_KW23.json
|
|
```
|
|
|
|
### CSV-Inhalt
|
|
|
|
```csv
|
|
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
|
|
|
|
```json
|
|
[
|
|
{
|
|
"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:
|
|
|
|
```cron
|
|
0 23 * * 0 /usr/bin/python3 /home/banking/bin/transactions.py
|
|
```
|
|
|
|
Cronjobs anzeigen:
|
|
|
|
```bash
|
|
crontab -l
|
|
```
|
|
|
|
Cronjobs bearbeiten:
|
|
|
|
```bash
|
|
crontab -e
|
|
```
|
|
|
|
### Manuelle Ausführung
|
|
|
|
```bash
|
|
python3 /home/banking/bin/transactions.py
|
|
```
|
|
### Update
|
|
```bash
|
|
git -C ~/ING pull
|
|
```
|
|
|
|
### 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.conf` gelesen.
|
|
- Das Skript verwendet dieselbe Konfiguration wie `balance.py`. |