Как связать Алису
Вид для печати
Как связать Алису
Я не знаю как это точно сделать. Но ПР понимает управление по сети. По-сути дела нужна "прокладка " между Алисой и ПР. Варианты.
1) софт. Что за софт я не знаю так как невладах с эти делом.
2) железо. Тут проще. Есть розетки и выключатели с кем Алиса дружит. Нужно знание схемотехники, навыки пайки, прямые руки . Берём выключатель. Открываем. Находим силовой ключ который по указке Алисы подает силу на выход. И эту силу заводим на вход ПР. Потом элемент ИЛИ. Один вход от Алисы другой от кнопки. Выход элемента ИЛИ на вход макроса ON-OFF. Выход макроса "он-офф" на выход ПР. Ну а дальше уже силовая коммутация через промежуточное реле.
Что бы не тянуть кучу проводов. Проще все выключатели собрать рядом с ПР. А в комнатах где Алиса будет " Рулить" вашим светом поставить простые кнопочные выключатели без фиксации. Соединив их с ПР простым кабеле 2*0.75(передаем сигнал управления на ПР). Аналогично можно сделать и "розетки" для чайника. Хотя если им нет воды то пожаром попахивает. Я бы сделал примерно так если бы мне нужно было бы подружить Алису с ПР.
Если Алису можно подружить со SCADA, например есть какой-то API то можно и с ПР работать.
Точно знаю, что подружить можно через iobrocker насколько я знаю. Знакомый при помощи Алисы открывает ворота двора, роллету гаража, а они как раз прикручены к ПР200. А вот на счет Овен облака не подскажу, но если все делалось через API, то смотрите как в вышеназванной связке сделано, возможно найдете там решение.
ну собственно как и в названии темы, почитать документацию https://yandex.ru/dev/dialogs/ и https://cloud.yandex.ru/docs/functions/
в общих чертах нужна учетная запись на яндексе, знать API owencloud и терпение, пока навык будет модерироваться
мой код выглядит таксам навык после трех дней модерации здесьКод:from random import randint
import requests
import json
import os
class ApiClient:
def __init__(self, base_address):
self.base_address = base_address
def post(self, path="/", params=None, data=None, json=None, headers=None):
url = f"{self.base_address}{path}"
return requests.post(url=url, params=params, data=data, json=json, headers=headers)
def ol_api():
return ApiClient(base_address="https://api.owencloud.ru/")
def last_data(ol_api, token, unit):
headers = { 'Authorization' : 'Bearer ' + token }
data = "{\"ids\":["+unit+"]}" #
response = ol_api.post("v1/parameters/last-data",headers=headers,data=data)
unit = response.json()
refer = unit[0]["values"]
return refer[0]["v"]
def get_response(name="Чего изволите?\nМожно посмотреть значение температуры или уставки"):
return {
"version": "1.0",
"response": {
'text': name
},
"end_session": "false"
}
dict_ = {1:'Запрос не понятен',2:'Ответа нет',3:'Сформулируйте вопрос, помощь наше всё'}
def handler(event, context):
response = ''
if 'request' in event and event['request']['command'] == '':
response = get_response()
elif 'request' in event and 'nlu' in event['request']:
name = dict_[randint(1,3)]
for unit in event['request']['nlu']['tokens']:
unit = unit.lower()
if 'температур' in unit:
name = "Температура: "+last_data(ol_api(), os.environ.get('SEC_TOK'), '4337438')
elif 'уставк' in unit:
name = "Уставка: "+last_data(ol_api(), os.environ.get('SEC_TOK'), '4337428')
elif 'помощь' in unit:
name = "Запрос может звучать как: покажи температу или покажи уставку"
elif 'умеешь' in unit:
name = "Цель навыка обеспечить информацией о текущем состоянии объекта ГВС. Отобразить по запросу текущую температуру или уставку температуры, которой надо придерживаться"
response = get_response(name)
return response
os.environ.get('SEC_TOK') это токен из овеновского облака, сохраненный в переменной окружения среды выполнения навыка
это самый простой вариант, есть и более предпочтительные
Посмотри на этом сайте книги по языкам программирования, может быть что то и найдешь для себя https://litrec.net