add_home_assistant_connect #4

Merged
Dmitrium12 merged 2 commits from add_home_assistant_connect into master 2024-05-04 20:14:48 +07:00
6 changed files with 54 additions and 4 deletions
Showing only changes of commit 8f1aa07507 - Show all commits
+4
View File
@@ -72,3 +72,7 @@ weather:
- возможен дождь сегодня? - возможен дождь сегодня?
- прогноз погоды на сегодня - прогноз погоды на сегодня
- погода - погода
home_assistant:
- включи телевизор
- выключи телевизор
- начни уборку
+7 -2
View File
@@ -1,5 +1,10 @@
VA_ALIAS = ('джарвис',) VA_ALIAS = ("джарвис",)
VA_TBR = ('скажи', 'покажи', 'ответь', 'произнеси', 'расскажи', 'сколько', 'слушай') VA_TBR = ("скажи", "покажи", "ответь", "произнеси", "расскажи", "сколько", "слушай")
MODEL_NAME = "vosk-model-small-ru-0.22" # vosk-model-ru-0.42 MODEL_NAME = "vosk-model-small-ru-0.22" # vosk-model-ru-0.42
MICROPHONE_INDEX = -1 MICROPHONE_INDEX = -1
PICOVOICE_TOKEN = "4xbwaZwZmSHeTiowFl5Rgqsc8CR4FKGV8YueJUlR4Zt2e1kB64IDcA==" PICOVOICE_TOKEN = "4xbwaZwZmSHeTiowFl5Rgqsc8CR4FKGV8YueJUlR4Zt2e1kB64IDcA=="
# home assistant
HOME_ASSISTANT_URL = "http://192.168.0.112:9999/api"
HOME_ASSISTANT_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI5NjczNDZjYjc2YzI0YWQzODdhMmUwMmM2MjViZGVjZCIsImlhdCI6MTcxNDQ3MzkzNywiZXhwIjoyMDI5ODMzOTM3fQ.TATpIMXivJOioCtUI8PKg6gyTQYMG6bur6enm6NxjtY"
+31
View File
@@ -0,0 +1,31 @@
import requests
from data import config
class HomeAssistant:
def __init__(self):
self.url = "http://192.168.0.112:9999/api"
self.token = config.HOME_ASSISTANT_TOKEN
def get_info(self, state):
response = requests.get(
url=f"{self.url}/states",
headers={
"Authorization": "Bearer " + self.token
}
)
return response
def send_process(self, command="выключи телевизор"):
response = requests.post(
url=f"{self.url}/services/conversation/process",
json={"text": command},
headers={
"Authorization": "Bearer " + self.token,
"content-type": "application/json"
},
)
if response.status_code == 200:
return True
return False
+4 -1
View File
@@ -11,6 +11,7 @@ from fuzzywuzzy import fuzz
from pvrecorder import PvRecorder from pvrecorder import PvRecorder
from data import config from data import config
from modules.HomeAssistant import HomeAssistant
from utils import download_models, execute_cmd, play from utils import download_models, execute_cmd, play
@@ -20,6 +21,7 @@ class Jarvis:
self.recorder = None self.recorder = None
self.CDIR = os.getcwd() self.CDIR = os.getcwd()
self.VA_CMD_LIST = yaml.safe_load(open('data/commands.yaml', encoding='utf8')) self.VA_CMD_LIST = yaml.safe_load(open('data/commands.yaml', encoding='utf8'))
self.home_assistant = HomeAssistant()
self.porcupine = pvporcupine.create( self.porcupine = pvporcupine.create(
access_key=config.PICOVOICE_TOKEN, access_key=config.PICOVOICE_TOKEN,
keywords=['jarvis'], keywords=['jarvis'],
@@ -71,6 +73,7 @@ class Jarvis:
if vrt > rc['percent']: if vrt > rc['percent']:
rc['cmd'] = c rc['cmd'] = c
rc['percent'] = vrt rc['percent'] = vrt
rc['recognized_phrase'] = x
if len(rc['cmd'].strip()) <= 0: if len(rc['cmd'].strip()) <= 0:
return False return False
elif rc['percent'] < 70 or rc['cmd'] not in self.VA_CMD_LIST.keys(): elif rc['percent'] < 70 or rc['cmd'] not in self.VA_CMD_LIST.keys():
@@ -78,7 +81,7 @@ class Jarvis:
time.sleep(1) time.sleep(1)
return False return False
else: else:
execute_cmd.execute_cmd(self, rc['cmd']) execute_cmd.execute_cmd(self, rc['cmd'], rc['recognized_phrase'], voice)
return True return True
def play(self, phrase, wait_done=True): def play(self, phrase, wait_done=True):
+5
View File
@@ -0,0 +1,5 @@
from modules.HomeAssistant import HomeAssistant
home_assistant = HomeAssistant()
response = home_assistant.get_info("")
print(response.text)
+3 -1
View File
@@ -1,4 +1,4 @@
def execute_cmd(self, cmd: str): def execute_cmd(self, cmd: str, recognized_phrase: str, voice: str):
if cmd == 'thanks': if cmd == 'thanks':
self.play("thanks") self.play("thanks")
elif cmd == 'stupid': elif cmd == 'stupid':
@@ -7,3 +7,5 @@ def execute_cmd(self, cmd: str):
self.play("off", True) self.play("off", True)
self.porcupine.delete() self.porcupine.delete()
exit(0) exit(0)
elif cmd == 'home_assistant':
self.home_assistant.send_process(recognized_phrase)