99 lines
2.7 KiB
Python
99 lines
2.7 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import api_call
|
|
import api_prometheus
|
|
import os
|
|
import datum_umrechnen
|
|
|
|
|
|
|
|
# Prompt user for CSV file location
|
|
filename = input("Please enter the path to your CSV file: ")
|
|
if filename == '':
|
|
filename = '/Users/sven/Downloads/Eve.csv'
|
|
if not os.path.exists(filename):
|
|
print("Error: File does not exist.")
|
|
exit(1)
|
|
|
|
kosten_pro_kwh = input("Kosten pro kW/h in Euro (z.B. 0.31)")
|
|
# kosten_pro_kwh = input('Kosten pro kWh (0.31) ')
|
|
if kosten_pro_kwh == '':
|
|
kosten_pro_kwh = 0.31
|
|
|
|
# Datei öffnen
|
|
file = open(filename, 'r')
|
|
|
|
# Zeilenweise einlesen
|
|
#inhalt = file.read().splitlines()
|
|
|
|
inhalt = file.readlines()
|
|
file.close()
|
|
|
|
# Zeilenweise abloopen
|
|
counter = 0
|
|
kosten_gesamt = 0
|
|
verbrauch_gesamt = 0
|
|
|
|
for zeile in inhalt:
|
|
spalte = zeile.strip().split(',')
|
|
if counter > 0:
|
|
rfidkarte = spalte[0].strip()
|
|
if rfidkarte != '04D56A2A577484':
|
|
rfidkarte = '04D56A2A577484'
|
|
# Kosten pro Ladevorgang ermitteln
|
|
verbrauch = spalte[4].strip()
|
|
verbrauch = verbrauch.replace('kWh','')
|
|
verbrauch = float(verbrauch)
|
|
kosten_zeile = verbrauch * kosten_pro_kwh
|
|
kosten_gesamt = kosten_gesamt + kosten_zeile
|
|
verbrauch_gesamt = verbrauch_gesamt + verbrauch
|
|
|
|
# Kilometerstand ermitteln und anfügen
|
|
datum_von = datum_umrechnen.umrechnen(spalte[1].strip() + ' ' + spalte[2].strip())
|
|
|
|
# Homeassistant API rufen
|
|
api_response = api_call.send_request(datum_von)
|
|
|
|
apitext = api_response.text
|
|
position = apitext.find("state")
|
|
kilometer = apitext[position+8:position+13]
|
|
|
|
# Prometheus API rufen
|
|
if kilometer == '':
|
|
kilometer = api_prometheus.api_prom(datum_von)
|
|
if kilometer == '':
|
|
kilometer = "n/a"
|
|
kosten_zeile = str(kosten_zeile)
|
|
kilometer = str(kilometer)
|
|
|
|
# Formatierungen anpassen
|
|
zeile = zeile + ', ' + kilometer + ' , ' + kosten_zeile
|
|
zeile = zeile.replace(' ','')
|
|
zeile = zeile.replace('kWh', ' kWh')
|
|
zeile = zeile.replace(',',', ')
|
|
zeile = zeile.replace('Min.','Min. ')
|
|
print(zeile)
|
|
counter = counter + 1
|
|
else:
|
|
zeile = zeile + ', ' + "Kilometerstand, " + "Kosten"
|
|
print(zeile)
|
|
|
|
print(zeile)
|
|
counter = counter + 1
|
|
continue
|
|
|
|
print(" ")
|
|
|
|
# Fusszeile mit Gesamtkosten und Gesamtverbrauch
|
|
print('Kosten Gesamt: ', kosten_gesamt)
|
|
strkostenkwh = str(kosten_pro_kwh)
|
|
print("Kosten pro kWh: " + strkostenkwh + " €")
|
|
verbrauch_gesamt = str(verbrauch_gesamt)
|
|
try:
|
|
formatted = "{:.3f}".format(float(verbrauch_gesamt)).replace('.', ',')
|
|
except:
|
|
formatted = verbrauch_gesamt
|
|
print("Verbrauch Gesamt: " + formatted)
|
|
|