项目作者: ricreis394

项目描述 :
**DEPRECATED** Python scripts to store the energy consumption daily
高级语言: Python
项目地址: git://github.com/ricreis394/ha-energy-json-storage.git
创建时间: 2020-03-21T09:23:50Z
项目社区:https://github.com/ricreis394/ha-energy-json-storage

开源协议:

下载


DEPRECATED

A better implementation is available https://github.com/ricreis394/ha-daily-insert-mysql

Home Assistant - Energy consumption graph

Introduction

Tested in HA version 0.107.4
This implementation allows HA to save the energy consumption of the entire day. It saves in a json file and can save for several years

To change between months with the input_select, this only allows for Portuguese and English month languages. If you want another language, use another input_select calling this input_select

Requirements

  • [lovelace cards] mini-graph-card
  • [lovelace cards] card-mod
  • Sensor that measures the house consumption and resets everyday, example: utility_meter
  • Place python files into /config/python_scripts/ directory
  • If json file doesn’t exist, it will create but needs the folder
  • So, please ensure you have the folder data in /config -> /config/data/
  • The below code should be added too

HA Code

HA

  1. sensor:
  2. ## Sum of all days to show in graph by default
  3. - platform: template
  4. sensors:
  5. energy_month_consumption_kw:
  6. friendly_name: "Consumo mensal"
  7. unit_of_measurement: "kW"
  8. value_template: >
  9. {{ (states.sensor.energy_kw_day_01.state | float +
  10. states.sensor.energy_kw_day_02.state | float +
  11. states.sensor.energy_kw_day_03.state | float +
  12. states.sensor.energy_kw_day_04.state | float +
  13. states.sensor.energy_kw_day_05.state | float +
  14. states.sensor.energy_kw_day_06.state | float +
  15. states.sensor.energy_kw_day_07.state | float +
  16. states.sensor.energy_kw_day_08.state | float +
  17. states.sensor.energy_kw_day_09.state | float +
  18. states.sensor.energy_kw_day_10.state | float +
  19. states.sensor.energy_kw_day_11.state | float +
  20. states.sensor.energy_kw_day_12.state | float +
  21. states.sensor.energy_kw_day_13.state | float +
  22. states.sensor.energy_kw_day_14.state | float +
  23. states.sensor.energy_kw_day_15.state | float +
  24. states.sensor.energy_kw_day_16.state | float +
  25. states.sensor.energy_kw_day_17.state | float +
  26. states.sensor.energy_kw_day_18.state | float +
  27. states.sensor.energy_kw_day_19.state | float +
  28. states.sensor.energy_kw_day_20.state | float +
  29. states.sensor.energy_kw_day_21.state | float +
  30. states.sensor.energy_kw_day_22.state | float +
  31. states.sensor.energy_kw_day_23.state | float +
  32. states.sensor.energy_kw_day_24.state | float +
  33. states.sensor.energy_kw_day_25.state | float +
  34. states.sensor.energy_kw_day_26.state | float +
  35. states.sensor.energy_kw_day_27.state | float +
  36. states.sensor.energy_kw_day_28.state | float +
  37. states.sensor.energy_kw_day_29.state | float +
  38. states.sensor.energy_kw_day_30.state | float +
  39. states.sensor.energy_kw_day_31.state | float ) | round(2) }}
  40. ## 31 days (calling the script)
  41. - platform: command_line
  42. name: energy_kw_day_01
  43. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 1
  44. - platform: command_line
  45. name: energy_kw_day_02
  46. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 2
  47. - platform: command_line
  48. name: energy_kw_day_03
  49. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 3
  50. - platform: command_line
  51. name: energy_kw_day_04
  52. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 4
  53. - platform: command_line
  54. name: energy_kw_day_05
  55. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 5
  56. - platform: command_line
  57. name: energy_kw_day_06
  58. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 6
  59. - platform: command_line
  60. name: energy_kw_day_07
  61. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 7
  62. - platform: command_line
  63. name: energy_kw_day_08
  64. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 8
  65. - platform: command_line
  66. name: energy_kw_day_09
  67. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 9
  68. - platform: command_line
  69. name: energy_kw_day_10
  70. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 10
  71. - platform: command_line
  72. name: energy_kw_day_11
  73. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 11
  74. - platform: command_line
  75. name: energy_kw_day_12
  76. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 12
  77. - platform: command_line
  78. name: energy_kw_day_13
  79. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 13
  80. - platform: command_line
  81. name: energy_kw_day_14
  82. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 14
  83. - platform: command_line
  84. name: energy_kw_day_15
  85. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 15
  86. - platform: command_line
  87. name: energy_kw_day_16
  88. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 16
  89. - platform: command_line
  90. name: energy_kw_day_17
  91. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 17
  92. - platform: command_line
  93. name: energy_kw_day_18
  94. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 18
  95. - platform: command_line
  96. name: energy_kw_day_19
  97. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 19
  98. - platform: command_line
  99. name: energy_kw_day_20
  100. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 20
  101. - platform: command_line
  102. name: energy_kw_day_21
  103. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 21
  104. - platform: command_line
  105. name: energy_kw_day_22
  106. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 22
  107. - platform: command_line
  108. name: energy_kw_day_23
  109. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 23
  110. - platform: command_line
  111. name: energy_kw_day_24
  112. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 24
  113. - platform: command_line
  114. name: energy_kw_day_25
  115. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 25
  116. - platform: command_line
  117. name: energy_kw_day_26
  118. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 26
  119. - platform: command_line
  120. name: energy_kw_day_27
  121. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 27
  122. - platform: command_line
  123. name: energy_kw_day_28
  124. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 28
  125. - platform: command_line
  126. name: energy_kw_day_29
  127. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 29
  128. - platform: command_line
  129. name: energy_kw_day_30
  130. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 30
  131. - platform: command_line
  132. name: energy_kw_day_31
  133. command: python3 /config/python_scripts/energy_daily_simples_read_values.py {{states.input_select.energy_daily_graph_select.state}} 31
  134. input_select:
  135. energy_daily_graph_select:
  136. name: "Escolher mês"
  137. initial: Atual
  138. options:
  139. - Atual
  140. - Janeiro
  141. - Fevereiro
  142. - Março
  143. - Abril
  144. - Maio
  145. - Junho
  146. - Julho
  147. - Agosto
  148. - Setembro
  149. - Outubro
  150. - Novembro
  151. - Dezembro
  152. automation:
  153. - alias: "Energy daily update total kw"
  154. initial_state: true
  155. trigger:
  156. - platform: state
  157. entity_id: sensor.energy_daily_simples
  158. action:
  159. - service: shell_command.energy_daily_simples_insert_values
  160. - alias: "Energy daily force update after input_select"
  161. initial_state: true
  162. trigger:
  163. - platform: state
  164. entity_id: input_select.energy_daily_graph_select
  165. action:
  166. - service: homeassistant.update_entity
  167. entity_id: sensor.energy_kw_day_01
  168. - service: homeassistant.update_entity
  169. entity_id: sensor.energy_kw_day_02
  170. - service: homeassistant.update_entity
  171. entity_id: sensor.energy_kw_day_03
  172. - service: homeassistant.update_entity
  173. entity_id: sensor.energy_kw_day_04
  174. - service: homeassistant.update_entity
  175. entity_id: sensor.energy_kw_day_05
  176. - service: homeassistant.update_entity
  177. entity_id: sensor.energy_kw_day_06
  178. - service: homeassistant.update_entity
  179. entity_id: sensor.energy_kw_day_07
  180. - service: homeassistant.update_entity
  181. entity_id: sensor.energy_kw_day_08
  182. - service: homeassistant.update_entity
  183. entity_id: sensor.energy_kw_day_09
  184. - service: homeassistant.update_entity
  185. entity_id: sensor.energy_kw_day_10
  186. - service: homeassistant.update_entity
  187. entity_id: sensor.energy_kw_day_11
  188. - service: homeassistant.update_entity
  189. entity_id: sensor.energy_kw_day_12
  190. - service: homeassistant.update_entity
  191. entity_id: sensor.energy_kw_day_13
  192. - service: homeassistant.update_entity
  193. entity_id: sensor.energy_kw_day_14
  194. - service: homeassistant.update_entity
  195. entity_id: sensor.energy_kw_day_15
  196. - service: homeassistant.update_entity
  197. entity_id: sensor.energy_kw_day_16
  198. - service: homeassistant.update_entity
  199. entity_id: sensor.energy_kw_day_17
  200. - service: homeassistant.update_entity
  201. entity_id: sensor.energy_kw_day_18
  202. - service: homeassistant.update_entity
  203. entity_id: sensor.energy_kw_day_19
  204. - service: homeassistant.update_entity
  205. entity_id: sensor.energy_kw_day_20
  206. - service: homeassistant.update_entity
  207. entity_id: sensor.energy_kw_day_21
  208. - service: homeassistant.update_entity
  209. entity_id: sensor.energy_kw_day_22
  210. - service: homeassistant.update_entity
  211. entity_id: sensor.energy_kw_day_23
  212. - service: homeassistant.update_entity
  213. entity_id: sensor.energy_kw_day_24
  214. - service: homeassistant.update_entity
  215. entity_id: sensor.energy_kw_day_25
  216. - service: homeassistant.update_entity
  217. entity_id: sensor.energy_kw_day_26
  218. - service: homeassistant.update_entity
  219. entity_id: sensor.energy_kw_day_27
  220. - service: homeassistant.update_entity
  221. entity_id: sensor.energy_kw_day_28
  222. - service: homeassistant.update_entity
  223. entity_id: sensor.energy_kw_day_29
  224. - service: homeassistant.update_entity
  225. entity_id: sensor.energy_kw_day_30
  226. - service: homeassistant.update_entity
  227. entity_id: sensor.energy_kw_day_31
  228. shell_command:
  229. energy_daily_simples_insert_values: "python3 /config/python_scripts/energy_daily_simples_insert_values.py {{ states.sensor.energy_daily_simples.state }}"

lovelace

  1. - type: entities
  2. entities:
  3. - input_select.energy_daily_graph_select
  4. - type: 'custom:mini-graph-card'
  5. name: "Consumo do mês"
  6. style: |
  7. .state__time {
  8. display: none;
  9. }
  10. entities:
  11. - entity: sensor.energy_month_consumption_kw
  12. show_graph: false
  13. - entity: sensor.energy_kw_day_01
  14. color: "var(--light-primary-color)"
  15. - entity: sensor.energy_kw_day_02
  16. color: "var(--light-primary-color)"
  17. - entity: sensor.energy_kw_day_03
  18. color: "var(--light-primary-color)"
  19. - entity: sensor.energy_kw_day_04
  20. color: "var(--light-primary-color)"
  21. - entity: sensor.energy_kw_day_05
  22. color: "var(--light-primary-color)"
  23. - entity: sensor.energy_kw_day_06
  24. color: "var(--light-primary-color)"
  25. - entity: sensor.energy_kw_day_07
  26. color: "var(--light-primary-color)"
  27. - entity: sensor.energy_kw_day_08
  28. color: "var(--light-primary-color)"
  29. - entity: sensor.energy_kw_day_09
  30. color: "var(--light-primary-color)"
  31. - entity: sensor.energy_kw_day_10
  32. color: "var(--light-primary-color)"
  33. - entity: sensor.energy_kw_day_11
  34. color: "var(--light-primary-color)"
  35. - entity: sensor.energy_kw_day_12
  36. color: "var(--light-primary-color)"
  37. - entity: sensor.energy_kw_day_13
  38. color: "var(--light-primary-color)"
  39. - entity: sensor.energy_kw_day_14
  40. color: "var(--light-primary-color)"
  41. - entity: sensor.energy_kw_day_15
  42. color: "var(--light-primary-color)"
  43. - entity: sensor.energy_kw_day_16
  44. color: "var(--light-primary-color)"
  45. - entity: sensor.energy_kw_day_17
  46. color: "var(--light-primary-color)"
  47. - entity: sensor.energy_kw_day_18
  48. color: "var(--light-primary-color)"
  49. - entity: sensor.energy_kw_day_19
  50. color: "var(--light-primary-color)"
  51. - entity: sensor.energy_kw_day_20
  52. color: "var(--light-primary-color)"
  53. - entity: sensor.energy_kw_day_21
  54. color: "var(--light-primary-color)"
  55. - entity: sensor.energy_kw_day_22
  56. color: "var(--light-primary-color)"
  57. - entity: sensor.energy_kw_day_23
  58. color: "var(--light-primary-color)"
  59. - entity: sensor.energy_kw_day_24
  60. color: "var(--light-primary-color)"
  61. - entity: sensor.energy_kw_day_25
  62. color: "var(--light-primary-color)"
  63. - entity: sensor.energy_kw_day_26
  64. color: "var(--light-primary-color)"
  65. - entity: sensor.energy_kw_day_27
  66. color: "var(--light-primary-color)"
  67. - entity: sensor.energy_kw_day_28
  68. color: "var(--light-primary-color)"
  69. - entity: sensor.energy_kw_day_29
  70. color: "var(--light-primary-color)"
  71. - entity: sensor.energy_kw_day_30
  72. color: "var(--light-primary-color)"
  73. - entity: sensor.energy_kw_day_31
  74. color: "var(--light-primary-color)"
  75. unit: kW
  76. font_size_header: 14px
  77. font_size: 80
  78. bar_spacing: 1
  79. height: 120
  80. # aggregate_func: last
  81. fixed_value: true
  82. group_by: date
  83. show:
  84. graph: bar
  85. icon: false
  86. legend: false
  87. average: false
  88. extrema: false
  89. labels: false
  90. labels_secondary: false
  91. - type: 'custom:hui-markdown-card'
  92. style: |
  93. .markdown {
  94. padding: 0px 0px !important;
  95. }
  96. table {
  97. table-layout: fixed;
  98. width: 100%;
  99. border-spacing: 1.014px 0 !important;
  100. }
  101. table td:first-child {
  102. border-left: 0;
  103. }
  104. table td:last-child {
  105. border-right: 0;
  106. }
  107. thead {
  108. display: none;
  109. }
  110. td {
  111. text-align: center;
  112. font-size: 9px;
  113. }
  114. content: |
  115. | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
  116. |-|-|-|-|-|-|-|-|-|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
  117. |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|