CCCPaste

HA API - automation list

# 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)