# przed uruchomieniem programu nalezy w tym samym folderze utworzyć następujące pliki:
# - HA_API_automations.json - pusty plik, w którym będzie zapisywana lista automatyzacji
# - HA_API_KEY.txt - plik z wygenerowanym w HA "Long-Lived Access Tokens"
from requests import get
import json
import os
import datetime
end_time = datetime.datetime.now()
start_time = end_time - datetime.timedelta(days=1)
# definicja END_POINT w API HA
END_POINT = "history/period/{}?end_time={}".format(start_time, end_time)
# adres serwera z HA
url = "http://192.168.1.5:8123/api/{}".format(END_POINT)
# otwieramy plik i czytamy "Long-Lived Access Tokens" wygenerowany w HA
# Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
f = open("HA_API_KEY.txt", "r")
HA_API_KEY = f.readline()
f.close()
headers={
"Authorization": HA_API_KEY,
"content-type": "application/json"
}
response = get(url, headers=headers)
# zapis odpowiedzi do formatu JSON
response_json = response.json()
table = []
dict = {}
for x in range(len(response_json)):
if "automation." in response_json[x][0]["entity_id"]:
dict = {
"entity_name": response_json[x][0]["entity_id"],
"state": response_json[x][0]["state"],
"last_triggered": response_json[x][0]["attributes"]["last_triggered"][0:19].replace("T", " ")
}
table.append(dict)
# utworzenie posortowanej po dacie liście encji "automation" z danego okresu
new_table = sorted(table, key=lambda k: datetime.datetime.strptime(k["last_triggered"], "%Y-%m-%d %H:%M:%S"), reverse=True)
#zapis wygenerowanej listy do pliku
json_object = json.dumps(new_table, indent = 4)
with open("HA_API_automations.json", "w") as outfile:
outfile.write(json_object)