Home Assistant - Python API Client: Difference between revisions
From ETCwiki
Jump to navigationJump to search
Created page with "This script allows us to access our Home Assistant server (HASS) through Python scripts. I posted this on GitHub and will keep it more updated there, so please check it out th..." |
No edit summary |
||
| Line 1: | Line 1: | ||
This script allows us to access our Home Assistant server (HASS) through Python scripts. I posted this on GitHub and will keep it more updated there, so please check it out there. | This script allows us to access our Home Assistant server (HASS) through Python scripts. I posted this on GitHub and will keep it more updated there, so please check it out there. | ||
== Updated Python API Client == | |||
Go here. It is more updated. | |||
https://github.com/ddxfish/home-assistant-python-api-client | https://github.com/ddxfish/home-assistant-python-api-client | ||
== Original v1 client == | |||
from requests import get, post | from requests import get, post | ||
Revision as of 19:37, 24 October 2021
This script allows us to access our Home Assistant server (HASS) through Python scripts. I posted this on GitHub and will keep it more updated there, so please check it out there.
Updated Python API Client
Go here. It is more updated. https://github.com/ddxfish/home-assistant-python-api-client
Original v1 client
from requests import get, post
import json
class HassRestAPIClient:
def __init__(self):
#Change to your Home Assistant API URL (ex. http://192.168.1.100:8123/api )
self.hassurl = "http://192.168.1.100:8123/api"
#Make sure you enter your own Long Time Access token (Bearer token) from Home Assistant
self.headers = {
"Authorization": "Bearer BEARERTOKENGOESHERE",
"content-type": "application/json",
}
#Get information from home assistant states
def getHassStates(self, entitysearch="", key="all", exactmatch=0):
url = self.hassurl + "/states"
response = get(url, headers=self.headers)
entities = response.json()
result = []
for entity in entities:
if exactmatch == 0:
if entitysearch.lower() in entity['entity_id'].lower() or entitysearch.lower() in entity['attributes']['friendly_name'].lower():
if key == "all":
result.append(entity)
if key == "basic":
result.append([entity['entity_id'],entity['attributes']['friendly_name'],entity['state']])
else:
try:
result.append(entity[key])
except KeyError:
try:
result.append(entity['attributes'][key])
except KeyError:
result.append("no key named " + key)
if exactmatch == 1:
if entitysearch.lower() == entity['entity_id'].lower() or entitysearch.lower() == entity['attributes']['friendly_name'].lower():
if key == "all":
return entity
if key == "basic":
return [entity['entity_id'],entity['attributes']['friendly_name'],entity['state']]
else:
try:
return entity[key]
except KeyError:
try:
return entity['attributes'][key]
except KeyError:
return "no key named " + key
return result
#Custom service call
def callHassService(self, entity_id, service, action):
payload = json.dumps({"entity_id": entity_id})
entityurl = self.hassurl + "/services/" + service + "/" + action
result = post(entityurl, headers=self.headers, data=payload)
return result
External Links
- https://github.com/ddxfish/home-assistant-python-api-client/blob/master/hass-api-client.py - Python API Client - Github - more updated version of this