Siri + Zway + Homebridge = Запуск двигателя

от автора

Добрый день, уважаемое сообщество!

Идея поуправлять автозапуском родилась довольно спонтанно, все началось с того, как пару лет назад я приобрел себе автомобиль и встал вопрос об установке системы автозапуска. На протяжении прошедших двух зим (а зимы у нас холодные, т.к я живу в условиях приравненных к крайнему северу) я просыпался по утрам, выходил, заводил машину, шел домой, пил кофе, и ехал на работу. Этой зимой лень взяла свое, и я приобрел комплект автозапуска Starline sm32 с gsm и gps модулем. Автозапуск установлен, приложение скачано, все работает отлично! И тут я подумал: «Почему бы не подключить автозапуск к своей системе умного дома?».

Первое, что пришло в голову это найти API к сервису, но поиски не увенчались успехом. На официальном форуме поднималась данная тема, но ответов от поддержки так и не было, через онлайн консультанта я оставил заявку в надежде на то, что может быть, мне ответят, и спустя неделю они ответили:

Да API есть. Мы его предоставляем после того, как клиент:

* предоставляет информацию о себе и своей компании и цели использования нашего API

* подписывает соглашение о неразглашении ( NDA )

С этим я не стал заморачиваться и начал искать другие пути. Да, я забыл сказать, что кроме приложения есть так же веб сервис, который и открыл мне данную возможность.
Посниваф запросы, я получил всю необходимую информацию, и написал небольшой скрипт на языке Python. Прошу сильно не ругать за сам код и его оформление, это можно сказать мой первый опыт в данном деле:

engine_on.py

import requests import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') logging.debug('This is a log message.') header = {     'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0',     'Accept': 'application/json, text/javascript, */*; q=0.01',     'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',     'X-Requested-With': 'XMLHttpRequest'} with requests.Session() as session: 	login  = session.post('https://starline-online.ru/user/login', {                                         'LoginForm[login]': 'username',                                         'LoginForm[pass]': 'password',                                         'remember': 1,},headers=header) 	print (r.status_code,r.reason) 	r = session.post('https://starline-online.ru/device/ваш_id_device/executeCommand',{                                         'value':'1', 	                                'action':'ign',                                         'password':''},headers=header) 	logout = session.post('https://starline-online.ru/user/logout', {                                         '':''},) print (login.status_code,login.reason) print (login.cookies) print (logout.status_code,logout.reason) 

Это скрипт для запуска двигателя, а чтобы нам его остановить, значение value меняем на 0.
Но как же нам заставить Siri запускать наш скрипт? Долгим гуглением и хождением по форумам я нашел решение: homebridge-script — этот плагин позволяет запускать sh скрипты, как устанавливать homebridge я писать не буду в интернет полно инструкций, ставим плагин:

sudo npm install -g file-exists sudo npm install -g homebridge-script

После установки копируем наши скрипты, их я назвал engine_on.py и engine_off.py:

sudo cp engine_on.py engine_off.py /usr/local/lib/node_modules/homebridge-script/

Там же находится два файлика on.sh и off.sh я не нашел ничего лучшего как добавить в них:

sudo echo "python engine_on.py" > on.sh sudo echo "python engine_off.py" > off.sh

Теперь осталось добавить в наш homebridge конфиг следующее:

  "accessories": [         {       "accessory": "Script",       "name": "Прогреть машину",       "on": "sh ./on.sh",       "off": "sh ./off.sh",       "state": "sh ./state.sh",       "fileState": "home/pi/script.flag",       "on_value" : "true",       "exact_match": true       }   ] ]

Перезапускаем службу и все готово!

P.S: Я долго мучился с подбором фраз, если siri что то не понравится, она тут же лезет в интернет за поиском.
В общем, пользуйтесь, надеюсь это кому-нибудь будет полезным!

ссылка на оригинал статьи https://habrahabr.ru/post/315782/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *