Basic Home Assistant wrapper

This commit is contained in:
2020-10-24 21:31:16 -04:00
parent 4b91be7b57
commit b33f2586b8
3 changed files with 187 additions and 0 deletions

28
scripts/homeassistant.py Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env python3
# Python wrapper for REST API for Home Assistant.
from requests import get, post
import json
class HomeAssistant(object):
def __init__(self, ip, token):
self.url = 'http://{}:8123'.format(ip)
self.headers = {
'Authorization': 'Bearer {}'.format(token),
'content-type': 'application/json',
}
def postService(self, domain, service, data):
response = post("{}/api/services/{}/{}".format(self.url, domain, service),
headers=self.headers, data=json.dumps(data))
response.raise_for_status()
return response
def getRequest(self, domain, data):
response = get("{}/api/{}".format(self.url, domain),
headers=self.headers, data=json.dumps(data))
return json.loads(response.text)
def getServices(self):
return self.getRequest('services', '')
def runScene(self, entityId):
data = {'entity_id': entityId}
self.postService('scene', 'turn_on', data)

20
scripts/synth-power.py Normal file
View File

@ -0,0 +1,20 @@
#!/usr/bin/env python3
# Program to control synth power state.
import configparser
from homeassistant import HomeAssistant
# Parse settings config
configString = '[Settings]\n' + open('../settings.conf').read()
configParser = configparser.RawConfigParser()
configParser.read_string(configString)
# Load needed credentials
HA_IP = configParser.get('Settings', 'HA_IP')
HA_TOKEN = configParser.get('Settings', 'HA_TOKEN')
ha = HomeAssistant(HA_IP, HA_TOKEN)
ha.runScene('scene.synths_on')