Horologium es una herramienta simple de biblioteca GO y línea de comandos que ayuda a realizar un seguimiento del consumo y los costos. Actualmente, aborda principalmente consumibles facturados por medidores, por ejemplo, Power, Water, ...
La aplicación de línea de comandos es una herramienta simple para obtener una visión general sobre los costos y el consumo en los últimos meses:
$ > horologium -lastMonths 6 powerConsumption.yml
| MONTH | YEAR | CONSUMPTION | COSTS |
| ----------- | ------ | ------------- | --------- |
| January | 2020 | 22.11 | 1987.52 |
| February | | 33.59 | 2292.43 |
| March | | 48.41 | 2686.05 |
| April | | 44.59 | 2584.59 |
| May | | 48.61 | 2691.36 |
| June | | 66.58 | 3168.64 |
| July | | 0.00 | 1400.28 |
El ejemplo anterior se ejecutó en julio de 2020, por lo que se evalúan los últimos seis meses.
Las lecturas del medidor y los planes de precios deben administrarse en un archivo YAML que tenga el siguiente formato:
name : " A pseudo power consumption for testing "
consumptionFormat : " %.2f " # Optional, defaults to %.2f
currencyFormat : " %.2f " # Optional, defaults to %.2f
plans :
- {name: 2018, basePrice: 1241.34, unitPrice: 26.32, validFrom: "2018-01-01", validTo: "2018-01-01"}
- {name: 2019, basePrice: 1341.12, unitPrice: 27.28, validFrom: "2019-01-01", validTo: "2019-01-01"}
- {name: 2020, basePrice: 1400.28, unitPrice: 26.56, validFrom: "2020-01-01", validTo: "2020-01-01"}
readings :
- {date: 2019-12-01, count: 1104.25}
- {date: 2020-01-01, count: 1201.23}
- {date: 2020-02-01, count: 1223.34}
- {date: 2020-03-01, count: 1256.93}
- {date: 2020-04-01, count: 1305.34}
- {date: 2020-05-01, count: 1349.93}
- {date: 2020-06-01, count: 1398.54}
- {date: 2020-07-01, count: 1465.12}Por lo general, cada mes hay una lectura del medidor agregada al archivo (con un editor externo).
Esta aplicación interpreta las fechas como al comienzo del día. Por lo tanto, el rango 2020-01-04 a 2020-01-06 abarca 48 horas, del 4 de enero de 0:00 al 5 de enero 24:00 o enero, 6 de las 0:00.
El código también se puede usar en otro programa GO como biblioteca. Las funciones exportadas están completamente documentadas.
Este es un proyecto de pasatiempo mío. Hay algunas cosas que me gusta mejorar y agregar, no sé cuándo o si esto sucederá.