Являюсь латентным фанатом Xiaomi, то есть я хожу с Samsung, а тёще и сестре дарю Xiaomi, а ещё умный дом и другие гаждеты дома собрал от Xiaomi. На самом деле, они рулят. И вот в России появился Google Assitant и я решил прикрутить к нему систему умного дома MiHome.
К сожалению, напрямую из Google Assistant можно управлять только некоторыми лампочками Xiaomi, а Zigbee выключатели, управляемые шлюзом Xiaomi Gateway 2 недоступны. К счастью (или несчастью), к моменту прихода Google Assistant в Россию прошло несколько лет и много разных сервисов интегрировалось в Google Assistant.
Среди них и IFTTT (If This Than That), который позволяет вешать триггеры к Google Assitant (и кучам других сервисов) и вызывать по ним любые службы, включая вебхуки, на которые можно повесить внешние сервисы типа Domoticz или Home Assistant (системы умного дома, которые поддерживают шлюзы Xiaomi Gateway 2).
Domoticz проявил себя хуже. Он плохо поддерживает несколько шлюзов, интерфейс оставляет желать лучшего, многие датчики дублируются почему-то, а некоторые выключатели не добавились.
Home Assistant, наоборот из коробки оказался готовым решением. Установив по инструкции, в интерфейсе сразу появились шлюзы, которые видны в той же подсети. Нужно только прописать конфигурацию с ключами в /home/homeassistant/.homeassistant/configuration.yml для xiaomi_aqara и для ifttt:
Для того чтобы открыть в Интернет, нужно ещё защитить Home Assistant паролем:
Как добавить в автозапуск описано в специальном разделе.
Nginx законфигурировать по инструкции:
Далее в IFTTT настраиваем события и управляем домом через Google Assitant.
Как описано в API: заставим дёргать URL https://xn--d1aqf.xn--80aibxmt.xn--p1ai/api/services/switch/turn_{{TextField}}?api_password=****** по команде "turn $ porch lights".
Проверим это в Google Assitant.
Профит!
К сожалению, напрямую из Google Assistant можно управлять только некоторыми лампочками Xiaomi, а Zigbee выключатели, управляемые шлюзом Xiaomi Gateway 2 недоступны. К счастью (или несчастью), к моменту прихода Google Assistant в Россию прошло несколько лет и много разных сервисов интегрировалось в Google Assistant.
Среди них и IFTTT (If This Than That), который позволяет вешать триггеры к Google Assitant (и кучам других сервисов) и вызывать по ним любые службы, включая вебхуки, на которые можно повесить внешние сервисы типа Domoticz или Home Assistant (системы умного дома, которые поддерживают шлюзы Xiaomi Gateway 2).
Domoticz проявил себя хуже. Он плохо поддерживает несколько шлюзов, интерфейс оставляет желать лучшего, многие датчики дублируются почему-то, а некоторые выключатели не добавились.
Home Assistant, наоборот из коробки оказался готовым решением. Установив по инструкции, в интерфейсе сразу появились шлюзы, которые видны в той же подсети. Нужно только прописать конфигурацию с ключами в /home/homeassistant/.homeassistant/configuration.yml для xiaomi_aqara и для ifttt:
xiaomi_aqara:И перезапустить Home Assistant. Как прописал ключи - выключатели начали работать.
gateways:
- mac: 34ce00XXXXXX
key: ******
- mac: 34ce00XXXXXX
key: ******
- mac: 7811dcXXXXXX
key: ******
- mac: 7811dbXXXXXX
key: ******
- mac: 34ce00XXXXXX
key: ******
host: 192.168.77.xxx
- mac: 34ce00XXXXXX
key: ******
host: 192.168.0.xxx
ifttt:
key: ******
Для того чтобы открыть в Интернет, нужно ещё защитить Home Assistant паролем:
http:в файле secrets.yaml прописываем пароль в plain text формате.
# Secrets are defined in the file secrets.yaml
api_password: !secret http_password
# Uncomment this if you are using SSL/TLS, running in Docker container, etc.
use_x_forwarded_for: true
trusted_proxies:
- 127.0.0.1
- 192.168.1.4
base_url: xn--d1aqf.xn--80aibxmt.xn--p1ai
Как добавить в автозапуск описано в специальном разделе.
Nginx законфигурировать по инструкции:
server_names_hash_bucket_size 64;Сертификаты можно получить с помощью acme.sh:
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/nginx/certs/xn--80aibxmt.xn--p1ai/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/xn--80aibxmt.xn--p1ai/privkey.pem;
server_name xn--d1aqf.xn--80aibxmt.xn--p1ai;
location / {
proxy_pass http://localhost:8123;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /api/websocket {
proxy_pass http://localhost:8123/api/websocket;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
acme.sh --issue -d xn--80aibxmt.xn--p1ai -d '*.xn--80a ibxmt.xn--p1ai' --dns dns_yandex --install-certПри этом у меня возникла проблема, домен являлся алиасом другого домена pdd. Запатчил так:
diff --git a/dnsapi/dns_yandex.sh b/dnsapi/dns_yandex.shДалее делаем раскладку (затем она будет производиться по крону автоматически):
index 318dee0..95becf2 100755
--- a/dnsapi/dns_yandex.sh
+++ b/dnsapi/dns_yandex.sh
@@ -60,6 +60,8 @@ _PDD_get_domain() {
fi
__all_domains="$__all_domains $(echo "$res1" | tr "," "\n" | grep '"name"' | cut -d: -f2 | sed -e 's@"@@g')"
+ __all_domains="$__all_domains $(echo $res1 | jq -r '.domains[].aliases[]')"
__page=$(_math $__page + 1)
done
--
sudo mkdir -p /etc/nginx/certs/xn--80aibxmt.xn--p1aiНа этом всё с бекендом.
sudo chmod 777 /etc/nginx/certs/xn--80aibxmt.xn--p1ai
acme.sh --install-cert -d xn--80aibxmt.xn--p1ai --key-file /etc/nginx/certs/xn--80aibxmt.xn--p1ai/privkey.pem --fullchain-file /etc/nginx/certs/xn--80aibxmt.xn--p1ai/fullchain.pem --reloadcmd "sudo /bin/systemctl reload nginx.service"
Далее в IFTTT настраиваем события и управляем домом через Google Assitant.
Как описано в API: заставим дёргать URL https://xn--d1aqf.xn--80aibxmt.xn--p1ai/api/services/switch/turn_{{TextField}}?api_password=****** по команде "turn $ porch lights".
Проверим это в Google Assitant.
Профит!
чето сложно как все
ОтветитьУдалитьПиздец как сложно
ОтветитьУдалитьЛюто плюсую комменту от 9 мая
ОтветитьУдалитьК сожалению в новых ревизиях шлюзов закрыт порт на который подключается Home Assistant. Решение вроде как есть, но там сложно (и требуется физическое вмешательство)
ОтветитьУдалить