From de33ab1f713a81afb5b0e60c6d63aa0feba316e4 Mon Sep 17 00:00:00 2001 From: Maximilian Stiefel Date: Sat, 26 Oct 2024 17:11:29 +0200 Subject: [PATCH] Initial commit --- .gitignore | 140 ++++++++++++++++++++++++++++++++++ LICENSE | 14 ++++ README.md | 2 + ecar.py | 166 +++++++++++++++++++++++++++++++++++++++++ example_0.json | 28 +++++++ pictures/plot_ex_0.png | Bin 0 -> 53083 bytes 6 files changed, 350 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 ecar.py create mode 100644 example_0.json create mode 100644 pictures/plot_ex_0.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f8b73e7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,140 @@ +# ---> Python +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..effdf2c --- /dev/null +++ b/LICENSE @@ -0,0 +1,14 @@ +Copyright (c) . All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. All advertising materials mentioning features or use of this software must display the following acknowledgement: +This product includes software developed by the the organization. + +4. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..ef226fb --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# EconomicsOfAHeatPump + diff --git a/ecar.py b/ecar.py new file mode 100644 index 0000000..9dea358 --- /dev/null +++ b/ecar.py @@ -0,0 +1,166 @@ +import matplotlib.pyplot as plt +import numpy as np +import json +import sys +import argparse +__author__ = 'm3x1m0m' + +class c_settings_extractor: + def __init__(self, fname): + with open(fname, "r") as rf: + settings = json.load(rf) + kilometer_price_ccar = settings["ccar"]["litres_per_kilometer"] * settings["juice_litre_price"] + self.labels = [settings["ecar"]["label"], settings["ccar"]["label"]] + self.purchase = np.array([settings["ecar"]["price"], settings["ccar"]["price"]]) + self.taxes = np.array([settings["ecar"]["taxes"], settings["ccar"]["taxes"]]) + self.insurance = np.array([settings["ecar"]["insurance"], settings["ccar"]["insurance"]]) + kilometer_price_ecar = ( settings["ecar"]["charging_behaviour"]["percent_home_charges"] * settings["kwh_price_home"] + + settings["ecar"]["charging_behaviour"]["percent_commercial_charges"] * settings["kwh_price_commercial"]) / 100.0 + self.driving = np.array([kilometer_price_ecar * settings["kilometers_per_year"], kilometer_price_ccar * settings["kilometers_per_year"]]) + self.maintenance = np.array([settings["ecar"]["maintenance"], settings["ccar"]["maintenance"]]) + self.kilometers = settings["kilometers_per_year"] + self.currency = settings["currency"] + def get_labels(self): + return self.labels + def get_purchase(self): + return self.purchase + def get_taxes(self): + return self.taxes + def get_insurance(self): + return self.insurance + def get_driving(self): + return self.driving + def get_maintenance(self): + return self.maintenance + def get_kilometers(self): + return self.kilometers + def get_currency(self): + return self.currency + +class c_ecar_comparator: + def __init__(self, fname): + self.settings_extractor = c_settings_extractor(fname) + def calculate_costs_a_year(self): + taxes = self.settings_extractor.get_taxes() + insurance = self.settings_extractor.get_insurance() + driving = self.settings_extractor.get_driving() + maintenance = self.settings_extractor.get_maintenance() + return taxes + insurance + driving + maintenance + def calculate_costs(self, years, months): + months_a_year = 12.0 + costs_a_year = self.calculate_costs_a_year() + return costs_a_year * (years + months/months_a_year) + def calculate_break_even(self): + total_costs = self.settings_extractor.get_purchase() + months_a_year = 12.0 + increment = self.calculate_costs_a_year() / months_a_year + months = 0 + while total_costs[0] > total_costs[1]: + total_costs = total_costs + increment + months += 1 + kilometers = self.settings_extractor.get_kilometers() * months / months_a_year + return [months//months_a_year, months%months_a_year, kilometers] # years, months + def calculate_amortization_point(self): + y = 0 + m = 1 + months_a_year = 12.0 + # Insurance and taxes need to be payed anyway + relevant_costs_a_year = self.settings_extractor.get_driving() + self.settings_extractor.get_maintenance() + savings_a_month = (relevant_costs_a_year[1]-relevant_costs_a_year[0]) / months_a_year + months_till_amortized = self.settings_extractor.get_purchase()[0] / savings_a_month + kilometers = months_till_amortized * self.settings_extractor.get_kilometers() / months_a_year + months_till_amortized = np.ceil(months_till_amortized) + return months_till_amortized//months_a_year, months_till_amortized%months_a_year, round(kilometers, ndigits=2) + +def main(): + parser = argparse.ArgumentParser(description='This script allows to calculate if an electric car makes sense financially for you.') + parser.add_argument('-a','--settings', help='Settings file.', required=True, metavar=('FILENAME')) + parser.add_argument('-b','--break_even', help='Calculate the break even point (when the EV becomes cheaper).', action='store_true') + parser.add_argument('-c','--amortization', help='Calculate the point in time when the electric vehicle is amortized completely by savings.', action='store_true') + parser.add_argument('-d','--savings_per_month', help='Calculate savings per month.', action='store_true') + parser.add_argument('-e','--savings_per_year', help='Calculate savings per year.', action='store_true') + parser.add_argument('-f','--savings_per_kilometer', help='Calculate savings per 100 kilometers (only driving, no maintenance, taxes or insurance).', action='store_true') + parser.add_argument('-g','--plot', help='Visualize costs over one or multiple years.', type=int, metavar=('YEARS')) + args = parser.parse_args() + if not args.break_even and not args.savings_per_year and not args.savings_per_month and not args.plot: + sys.exit("Please choose one or multiple options") + comparator = c_ecar_comparator(args.settings) + extractor = c_settings_extractor(args.settings) + be_years = None + be_months = None + be_kilometers = None + if args.break_even: + be_years, be_months, be_kilometers = comparator.calculate_break_even() + print("Break even after {} years and {} months.".format(be_years, be_months)) + if args.savings_per_month: + years = 0 + months = 1 + savings = comparator.calculate_costs(years, months) + print("Savings per month based on yearly spending: {}.".format(round(savings[1]-savings[0], ndigits=2))) + if args.savings_per_year: + years = 1 + months = 0 + savings = comparator.calculate_costs(years, months) + print("Savings per year: {}.".format(round(savings[1]-savings[0], ndigits=2))) + if args.savings_per_kilometer: + hundred_km = 100.0 + driving = hundred_km * extractor.get_driving() / extractor.get_kilometers() + labels = extractor.get_labels() + print("Costs driving 100 km in the {}: {}. Costs driving 100 km in the {}: {}.".format(labels[0], round(driving[0], ndigits=2), labels[1], round(driving[1]), ndigits=2)) + am_years = None + am_months = None + am_kilometers = None + if args.amortization: + am_years, am_months, am_kilometers = comparator.calculate_amortization_point() + print("The electric vehicle will be amortized by savings after {} years, {} months or exactely at {} kilometres.".format(am_years, am_months, am_kilometers)) + if args.plot != None: + width = 0.3 + plt_colors = ["#8ecae6", "#219ebc", "#023047", "#ffb703", "#fb8500"]; + color_ind = 0 + labels = extractor.get_labels() + purchase = extractor.get_purchase() + taxes = extractor.get_taxes() + insurance = extractor.get_insurance() + driving = extractor.get_driving() + maintenance = extractor.get_maintenance() + fig, ax = plt.subplots() + ax.bar(labels, purchase, width, label = "Price", color = plt_colors[0]) + current_y = extractor.get_purchase() + y = 0 + for i in range(args.plot): + ax.bar(labels, taxes, width, bottom = current_y, label = "Taxes".format(y), color = plt_colors[1]) + current_y = current_y + taxes + ax.bar(labels, insurance, width, bottom = current_y, label = "Insurance".format(y), color = plt_colors[2]) + current_y = current_y + insurance + ax.bar(labels, driving, width, bottom = current_y, label = "Driving".format(y), color = plt_colors[3]) + current_y = current_y + driving + ax.bar(labels, maintenance, width, bottom = current_y, label = "Maintenance".format(y), color = plt_colors[4]) + current_y = current_y + maintenance + y += 1 + labels = ["Purchase", "Taxes", "Insurance", "Driving", "Maintenance"] + lnspace_start = -0.2 + lnspace_stop = 1.2 + lnspace_n = 10 + x_text = 0.2 + if args.break_even: + months_a_year = 12.0 + be_money = (be_years + be_months/months_a_year) * comparator.calculate_costs_a_year() + be_money = be_money[1] + extractor.get_purchase() + ax.plot(np.linspace(lnspace_start, lnspace_stop, lnspace_n), [be_money[1]]*lnspace_n, "--", color = plt_colors[2], label = "Break even") + ax.text(x_text, be_money[1] + 100, "Break even: {} years, {} months, {} kilometers".format(be_years, be_months, be_kilometers)) + labels = ["Break even"] + labels + if args.amortization: + months_a_year = 12.0 + am_money = (am_years + am_months/months_a_year) * comparator.calculate_costs_a_year() + am_money = am_money[1] + extractor.get_purchase() + ax.plot(np.linspace(lnspace_start, lnspace_stop, lnspace_n), [am_money[1]]*lnspace_n, "--", color = plt_colors[2], label = "Amortization") + ax.text(x_text, am_money[1] + 100, "Amortization: {} years, {} months, {} kilometers".format(am_years, am_months, am_kilometers)) + labels = ["Amortization"] + labels + ax.set_ylabel(extractor.get_currency()) + ax.set_title("Comparision of economics: Electric vs. combustion car") + ax.legend(labels) + ax.grid(axis = "y") + plt.show() + +if __name__ == "__main__": + main() diff --git a/example_0.json b/example_0.json new file mode 100644 index 0000000..73e4532 --- /dev/null +++ b/example_0.json @@ -0,0 +1,28 @@ +{ + "currency": "CHF", + "kwh_price_home": 0.2, + "kwh_price_commercial": 0.5, + "juice_litre_price": 1.75, + "kilometers_per_year": 20000.0, + "ecar": { + "label": "Nissan Leaf 2013", + "price": 7600, + "taxes": 0, + "insurance": 354, + "kwh_per_kilometer": 0.16, + "maintenance": 100, + "charging_behaviour": { + "percent_free_charges": 90, + "percent_home_charges": 5, + "percent_commercial_charges": 5 + } + }, + "ccar": { + "label": "Suzuki Grand Vitara 2008", + "price": 7000, + "taxes": 350, + "insurance": 362, + "litres_per_kilometer": 0.08, + "maintenance": 1000 + } +} diff --git a/pictures/plot_ex_0.png b/pictures/plot_ex_0.png new file mode 100644 index 0000000000000000000000000000000000000000..47804b19087a201ee62e295ccb0a080fa65a533f GIT binary patch literal 53083 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 O_lJdl3;S->PyYj}qT}iS literal 0 HcmV?d00001