
Wenn Sie sich ernsthaft dazu entschließen, persönliche Finanzen zu berücksichtigen, ist die Datenerfassung wahrscheinlich eine der ersten Schwierigkeiten für Sie. In den Kommentaren zum vorherigen Artikel , in denen ich erfolglos versucht habe, die Notwendigkeit eines Geldmanagements zu rechtfertigen, wurden Personen mit der höchsten Selbstdisziplin erwähnt, für die diese Frage keine Frage ist. Sie schreiben ihre Ausgaben viele Jahre lang Tag für Tag diszipliniert in ihr Handy. Persönlich kann ich für mich selbst sagen, dass es mir nie gelungen ist, und um ehrlich zu sein, werde ich in Zukunft wahrscheinlich nie anfangen, Erfolg zu haben. Daher ist dieser Weg eindeutig nichts für mich. Aber ich habe eine Lösung gefunden!
Glücklicherweise zeichnet mein Telefon alle meine Ausgaben ohne meine Teilnahme auf. Für jede Operation auf meiner Karte erhalte ich eine SMS-Benachrichtigung von der Bank, die die meisten erforderlichen Informationen enthält:
- Zahlungsbetrag
- Händlerterminalcode
- Zahlungszeit
- Balance Balance
- Gebühren-ID
Um Primärdaten für die Analyse zu erhalten, müssen wir daher SMS-Nachrichten entladen. Ich bin ein Geek und habe daher ein verwurzeltes Android-Handy. In meinem Fall ist diese Aufgabe trivial:
$ adb shell "su -c 'cp /data/data/com.android.providers.telephony/databases/mmssms.db /mnt/sdcard'" $ adb pull /mnt/sdcard/mmssms.db > /dev/null $ adb shell "rm /mnt/sdcard/mmssms.db"
(adb [android debug bridge] ist ein Programm, das im Android SDK enthalten ist. Es gibt Implementierungen für Windows und Linux / Mac. Um auf die Datenbank mmssms.db zugreifen zu können, benötigen Sie Root-Rechte. Wenn jemand weiß, wie man dies erhält Datei ohne root, bitte in den Kommentaren schreiben)
Als Ergebnis des Skripts verfügen wir über eine reguläre SQLite3-Datenbank. Sie können damit mit dem SQLite-Paket arbeiten, dessen Implementierung auch unter Linux, Windows und Mac verfügbar ist. In dieser Datenbank interessiert uns die SMS-Tabelle, die die Adress- und Körperspalten enthält.
$ sqlite3 mmssms.db SQLite version 3.22.0 2018-01-22 18:45:57 Enter ".help" for usage hints. sqlite> PRAGMA table_info(sms); 0|_id|INTEGER|0||1 1|thread_id|INTEGER|0||0 2|address|TEXT|0||0 3|m_size|INTEGER|0||0 4|person|INTEGER|0||0 5|date|INTEGER|0||0 6|date_sent|INTEGER|0|0|0 7|protocol|INTEGER|0||0 8|read|INTEGER|0|0|0 9|status|INTEGER|0|-1|0 10|type|INTEGER|0||0 11|reply_path_present|INTEGER|0||0 12|subject|TEXT|0||0 13|body|TEXT|0||0 14|service_center|TEXT|0||0 15|locked|INTEGER|0|0|0 16|sim_id|INTEGER|0|-1|0 17|error_code|INTEGER|0|0|0 18|seen|INTEGER|0|0|0 19|ipmsg_id|INTEGER|0|0|0
Mit einer regulären SQL-Anfrage können wir von Sberbank gesendete SMS-Nachrichten auswählen:
$ echo "select trim(body, X'0A') from sms where address = '900' order by date asc" | sqlite3 mmssms.db
Hier ist 900 die Nummer, von der aus die Sberbank Benachrichtigungen verschickt. Die Trimmfunktion entfernt die Wagenübertragung am Ende der Nachricht, die einige Banken aus irgendeinem Grund angegeben haben. Hier ist eine Beispielausgabe:
VISA2222 01.01.18 08:43 1245 GAZPROMNEFT : 1985.29 VISA2222 01.01.18 12:05 176.50 YARCHE : 1808.79 VISA2222 01.01.18 12:16 504 FRUKTY : 1304.79 VISA2222 01.01.18 15:09 441 KFC : 863.79 ECMC1111 01.01.18 17:52 15.09EUR HOSTING COMPANY : 66679.05 ECMC1111 02.01.18 19:41 104 MCDONALDS : 66583.47 ECMC1111 03.01.18 08:49 205.10 MARIYA-RA : 66378.37 ECMC1111 03.01.18 09:16 810 FIT SERVICE : 65568.37 VISA2222 03.01.18 09:17 220 EKSKLYUZIV : 643.79 ECMC1111 03.01.18 09:18 4200 FIT SERVICE : 61368.37
Meine Frau und ich benutzen verschiedene Karten. Anhand der Karten-ID können Sie den Zahler unterscheiden. Anhand des Terminalcodes können Sie herausfinden, wofür genau das Geld und der ausgegebene Betrag ausgegeben wurden. Im Prinzip reicht dies völlig aus, um ein statistisches Bild zu erhalten.
Datenverarbeitung
Ab diesem Zeitpunkt kann jeder seinen eigenen Weg gehen. Jemand kann ein Python-Skript zum Parsen und Analysieren schreiben. Jemand kann AWK verwenden, um Daten in CSV zu überholen und in Excel zu analysieren. Ich benutze Ledger Cli für die Analyse. Zum Thema Ledger on Habré gibt es nur einen Artikel "Finanzbuchhaltung in einer Textkonsole" von estet . Wenn Sie gerne anfangen möchten, empfehle ich Ihnen, diesen Artikel zu lesen.
Im nächsten Artikel werde ich Ihnen erklären, wie ich Daten von SMS-Nachrichten in das Ledger-Textformat übertrage und wie ich diese Datei organisiere.