# -*- coding: utf-8 -*-
from setuptools import setup

packages = \
['pvpcbill']

package_data = \
{'': ['*']}

install_requires = \
['aiopvpc==2.0.1',
 'cattrs>=1.0.0,<2.0.0',
 'matplotlib>=3.2.1,<4.0.0',
 'pandas>=1.0.3,<2.0.0']

setup_kwargs = {
    'name': 'pvpcbill',
    'version': '1.0.0',
    'description': 'Electrical billing for small consumers in Spain using PVPC',
    'long_description': '[![PyPi](https://pypip.in/v/pvpcbill/badge.svg)](https://pypi.org/project/pvpcbill/)\n[![Wheel](https://pypip.in/wheel/pvpcbill/badge.svg)](https://pypi.org/project/pvpcbill/)\n[![Travis Status](https://travis-ci.org/azogue/pvpcbill.svg?branch=master)](https://travis-ci.org/azogue/pvpcbill)\n[![codecov](https://codecov.io/gh/azogue/pvpcbill/branch/master/graph/badge.svg)](https://codecov.io/gh/azogue/pvpcbill)\n\n# pvpcbill\n\n**Electrical billing simulation for small consumers in Spain using PVPC** (electricity hourly prices).\n\nIt uses **[`aiopvpc`](https://github.com/azogue/aiopvpc)** to download PVPC data, and _the usual suspects_ ([`pandas`](https://pandas.pydata.org) & [`matplotlib`](https://matplotlib.org)) to deal with time-series data and plotting.\n\n<span class="badge-buymeacoffee"><a href="https://www.buymeacoffee.com/azogue" title="Donate to this project using Buy Me A Coffee"><img src="https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg" alt="Buy Me A Coffee donate button" /></a></span>\n\n## Install\n\nInstall from pypi with **`pip install pvpcbill`**, or clone it to run tests or anything else ;-)\n\n## Usage\n\nFrom a _jupyter notebook_, just call the `create_bill` async helper to instantiate a new \'bill\' object:\n\n```python\nfrom pvpcbill import create_bill\n\n# Creación directa de factura\nfactura = await create_bill(\n    path_csv_consumo="/path/to/elec_data/consumo_facturado18_02_2020-18_03_2020-R.csv",\n    potencia_contratada=4.6,  # kW\n    tipo_peaje="NOC",         # GEN / NOC / VHC\n    zona_impuestos="IVA",     # IVA / IGIC / IPSI\n)\n\nprint(factura)\n```\n\n** If using it from a non-async script,\nuse `asyncio.run(create_bill(**params))` to run the async method.\n\n_Output:_\n\n```text\nFACTURA ELÉCTRICA:\n--------------------------------------------------------------------------------\n* CUPS             \t        ES0012345678901234SN\n* Fecha inicio             \t17/02/2020\n* Fecha final              \t18/03/2020\n* Peaje de acceso          \t2.0DHA (Nocturna)\n* Potencia contratada      \t4.60 kW\n* Consumo periodo          \t472.93 kWh\n* ¿Bono Social?            \tNo\n* Equipo de medida         \t0.80 €\n* Impuestos                \tPenínsula y Baleares (IVA)\n* Días facturables         \t30\n--------------------------------------------------------------------------------\n\n- CÁLCULO DEL TÉRMINO FIJO POR POTENCIA CONTRATADA:\n  Peaje acceso potencia:\n   4.60 kW x 0.103944 €/kW/día x 30 días (366/2020) = 14.34 €\n  Comercialización:\n   4.60 kW x 0.008505 €/kW/día x 30 días (366/2020) = 1.17 €\n  ==> Término fijo                                                     15.51 €\n\n- CÁLCULO DEL TÉRMINO VARIABLE POR ENERGÍA CONSUMIDA (TARIFA 2.0DHA):\n    Periodo 1: 0.111867 €/kWh                             ---> 19.02€(P1)\n    - Peaje de acceso:     170 kWh * 0.062012 €/kWh = 10.54€\n    - Coste de la energía: 170 kWh * 0.049855 €/kWh = 8.48€\n    Periodo 2: 0.045617 €/kWh                             ---> 13.82€(P2)\n    - Peaje de acceso:     303 kWh * 0.002215 €/kWh = 0.67€\n    - Coste de la energía: 303 kWh * 0.043402 €/kWh = 13.15€\n  ==> Término de consumo                                               32.84 €\n\n- IMPUESTO ELÉCTRICO:\n    5.11269632% x (15.51€ + 32.84€ = 48.35€)                           2.47 €\n  ==> Subtotal                                                         50.82 €\n\n- EQUIPO DE MEDIDA:\n    30 días x 0.026667 €/día                                           0.80 €\n  ==> Importe total                                                    51.62 €\n\n- IVA O EQUIVALENTE:\n    21% de 51.62€                                                      10.84 €\n\n################################################################################\n# TOTAL FACTURA                                                        62.46 €\n################################################################################\nConsumo medio diario en el periodo facturado: 2.08 €/día\n```\n\nBut there is much more:\n\n```python\n# Reparto de costes en la factura\np_imp = (\n    + factura.data.termino_impuesto_electrico\n    + factura.data.termino_equipo_medida\n    + factura.data.termino_iva_total\n) / factura.data.total\np_ener = factura.data.termino_variable_total / factura.data.total\np_pot = factura.data.termino_fijo_total / factura.data.total\n\nprint(\n    f"El coste de la factura se reparte en:\\n  "\n    f"* un {100*p_ener:.1f} % por energía consumida,\\n  "\n    f"* un {100*p_pot:.1f} % por potencia contratada,\\n  "\n    f"* un {100*p_imp:.1f} % por impuestos aplicados\\n\\n"\n)\n\nprint(factura.data.to_json())\n```\n\n_Output:_\n\n```text\nEl coste de la factura se reparte en:\n  * un 52.6 % por energía consumida,\n  * un 24.8 % por potencia contratada,\n  * un 22.6 % por impuestos aplicados\n```\n\n```json\n{\n  "config": {\n    "tipo_peaje": "NOC",\n    "potencia_contratada": 4.6,\n    "con_bono_social": false,\n    "zona_impuestos": "IVA",\n    "alquiler_anual": 9.72,\n    "impuesto_electrico": 0.0511269632,\n    "cups": "ES0012345678901234SN"\n  },\n  "num_dias_factura": 30,\n  "start": "2020-02-17 00:00:00",\n  "end": "2020-03-18 00:00:00",\n  "periodos_fact": [\n    {\n      "billed_days": 30,\n      "year": 2020,\n      "termino_fijo_peaje_acceso": 14.34,\n      "termino_fijo_comercializacion": 1.17,\n      "termino_fijo_total": 15.51,\n      "energy_periods": [\n        {\n          "name": "P1",\n          "coste_peaje_acceso_tea": 10.544458468,\n          "coste_energia_tcu": 8.477372039999999,\n          "energia_total": 170.03900000000002\n        },\n        {\n          "name": "P2",\n          "coste_peaje_acceso_tea": 0.67090578,\n          "coste_energia_tcu": 13.146024950000003,\n          "energia_total": 302.892\n        }\n      ]\n    }\n  ],\n  "descuento_bono_social": 0.0,\n  "termino_impuesto_electrico": 2.47,\n  "termino_equipo_medida": 0.8,\n  "termino_iva_gen": 10.6722,\n  "termino_iva_medida": 0.168,\n  "termino_iva_total": 10.84,\n  "total": 62.46\n}\n```\n\n### Examples\n\n- [Quick example to simulate a bill (jupyter notebook)](Notebooks/Ejemplo%20rápido.ipynb)\n- [Detailed example to simulate a bill (jupyter notebook)](Notebooks/Ejemplo%20simulación%20de%20facturación%20eléctrica%20con%20PVPC.ipynb)\n',
    'author': 'Eugenio Panadero',
    'author_email': 'eugenio.panadero@gmail.com',
    'maintainer': None,
    'maintainer_email': None,
    'url': 'https://github.com/azogue/pvpcbill',
    'packages': packages,
    'package_data': package_data,
    'install_requires': install_requires,
    'python_requires': '>=3.7,<4.0',
}


setup(**setup_kwargs)
