# 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/ └── / ├── csv/ │ └── transactions__KW.csv └── json/ └── transactions__KW.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`.