ING/README.md
2026-06-16 13:17:04 +02:00

251 lines
No EOL
4.9 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
```
### Bedienung
```
# Aktualisieren
git -C ~/ING pull
# Kontostand abrufen
python3 ~/ING/balance.py
# Transaktionen abrufen
python3 ~/ING/transactions.py
# Kategorisieren
python3 ~/ING/categorize_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.conf` gelesen.
- Das Skript verwendet dieselbe Konfiguration wie `balance.py`.