Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.
За последние два года Интернет вещей и связанные с ним технологии стремительно развивались. Различные умные устройства постепенно вошли в нашу жизнь, и пользователи все больше стремятся к интеллектуальной жизни. Однако нынешние продукты на рынке умного дома разбросаны, и одному производителю сложно полностью удовлетворить потребности пользователей, а продукты нескольких производителей не могут быть напрямую связаны между собой. Это также может быть проблемой, с которой сталкивается домашний интеллект. В этой статье в основном рассказывается о токенах и управлении устройствами Xiaomi по локальной сети, а также о развертывании и использовании HomeAssistant, платформы «умного дома» с открытым исходным кодом, позволяющей связывать несколько интеллектуальных устройств в доме.
Чтобы устранить зависимость от проприетарного программного обеспечения (приложения Mijia), устройства Mijia предоставляют возможность управлять ими через локальную сеть. Прежде чем использовать этот протокол управления локальной сетью, вам необходимо получить токен устройства. Далее мы представим некоторые методы получения токенов устройствами Xiaomi.
Зашифрованный собственный сетевой протокол, используемый устройством и приложением Mijia в одной локальной сети, называется протоколом miIO. Протокол основан на UDP и использует для связи порт 54321. Конкретные функции см. по адресу github https://github.com/rytilahti/python-miio. Цель этой библиотеки — поддержка всех miIO-совместимых устройств и классификация типов устройств и методов управления для упрощения взаимодействия с ними. Эту библиотеку необходимо установить в Python 3.5 или выше. Сначала настройте среду Python:
sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev libssl-dev openssl libgdbm-dev liblzma-dev libreadline-dev libncursesw5-dev
wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
tar zxvf Python-3.5.2.tgz
cd ./Python-3.5.2
./configure --prefix=/usr/bin/python3.5
make
make
sudo make install
После компиляции запустите python3.5. Следующие результаты докажут, что установка прошла успешно.
git clone https://github.com/rytilahti/python-miio
Давайте возьмем интеллектуальную розетку Xiaomi в качестве примера для получения токена устройства. Вход в файл Discover.py в каталоге python-miio/miio предназначен главным образом для получения токена устройства. Чтобы интуитивно извлечь основной код реализации сокета, напишите следующий скрипт miio_test.py в каталоге python-miio/miio (отправьте фиксированную строку на порт 54321 IP-адреса устройства, а возвращаемым значением будет токен)
#-*-coding:utf8-*-
import codecs
import socket
from protocol import Message
helobytes = bytes.fromhex('21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff')
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(helobytes, ('192.168.42.17', 54321))#IP сокета, порт 54321
data, addr = s.recvfrom(1024)
m = Message.parse(data)
tok = codecs.encode(m.checksum, 'hex')
print(‘token:’,tok)
Другие продукты, поддерживающие этот метод получения токенов, включают очистители воздуха и воды Xiaomi, подметальные роботы, удлинители с умными розетками и т. д. Подробный список см. на https://github.com/rytilahti/python-miio.
Использовать вышеупомянутый метод обнаружения miIO относительно удобно, но на данный момент его поддерживают лишь некоторые устройства Xiaomi. Далее есть способ получить токен прямо из приложения. На примере шлюза Xiaomi Lumi сначала загрузите приложение Mijia, настройте шлюз Lumi для подключения к сети и щелкните устройство шлюза. Следующие шаги показаны ниже. Окончательный пароль — это токен шлюза.
В настоящее время этот режим разработки Lumi является наиболее удобным для пользователя, и владелец устройства также может выбрать, включать ли управление по локальной сети и обновлять срок действия токена управления. Я все еще надеюсь, что другие устройства Xiaomi также откроют приложение. сторона для получения токенов устройств. Ведь для его получения требуется настройка сложной среды и отладка кода, что неприемлемо для большинства пользователей.
Шаг 1. Получите root-права для телефона Android. Шаг 2, установите приложение Mijia и войдите в свою учетную запись. Шаг 3, введите /data/data/com.xiaomi.smarthome/databases/ Шаг 4. Скопируйте файл miio2.db и загрузите его на свой компьютер. Шаг 5. Зайдите на сайт (http://miio2.yinhh.com/), загрузите miio2.db, нажмите «Отправить», и вы получите токен. Специального теста получения токенов таким способом не существует. Вы можете обратиться по этой ссылке (https://homekit.loli.ren/docs/show/12).
Вышеупомянутое познакомило вас с простым методом управления получением токенов с устройств и сокетов Xiaomi. Если вы хотите автоматизировать или реализовать связь между несколькими устройствами, вам все равно нужно написать код, который не будет принят всеми пользователями. представит вам следующую платформу «умного дома» с открытым исходным кодом — HomeAssistan, которая позволяет легко реализовать связь устройств от нескольких производителей всего за несколько шагов развертывания.
HomeAssistant — это платформа «умного дома» с открытым исходным кодом, которая может идентифицировать и напрямую подключать почти тысячу внешних устройств. Существуют различные коммерческие интеллектуальные продукты (например, продукты серии Xiaomi, серии Smart Light Philips, колонки Amazon, Apple Siri, Google Assistant, продукты BroadLink, автомобили Tesla и т. д.), а также различная информация в реальном времени в Интернете (акции, курсы валют, транспорт, погода и т. д.), существует различное программное обеспечение с открытым исходным кодом или открытое интеллектуальное программное обеспечение (распознавание лиц, распознавание номерных знаков, распознавание текста, преобразование текста в речь, преобразование голоса в текст и т. д.), а также различные связи механизмы (SMS, электронная почта и т. д.)
pip3 install HomeAssistant
hass
При первом запуске HomeAssistant установка связанных зависимостей займет около 10 минут. Доступ к порту 8123 Raspberry Pi через браузер. Если вы увидите следующую страницу, установка прошла успешно.
Войдите в каталог .HomeAssistant, отредактируйте файл Configuration.yaml и добавьте параметры конфигурации шлюза Xiaomi и сокета Wi-Fi. Токен — это строка, которую вы получили выше:
switch: Параметры конфигурации #ПросоSocket
- platform: xiaomi_miio
name: Xiaomi Mi Smart Power Strip #Имя устройства
host: 192.168.42.17 #IP-адрес устройства
token: YOUR_TOKEN #ключ устройства
xiaomi_aqara: Параметры конфигурации #ПросоGateway
gateways:
- mac: DEVICE_MAC #devicemac
key: YOUR_TOKEN #ключ устройства
После изменения файла конфигурации перезапустите Hass. Снова посетите домашнюю страницу HomeAssistant, чтобы увидеть недавно добавленный удлинитель Xiaomi Mi Smart Power Strip (поле имени в файле конфигурации) и устройство GatewayLight. Это подтверждает, что настройка завершена. Нажмите соответствующую кнопку управления. управлять устройством.
HomeAssistant поддерживает тысячи устройств,Вот лишь несколько примеров,Например, поддержка управления устройствами Просо.,Устройство BroadLink,Устройство MQTT собственной разработки. Некоторые интеллектуальные элементы управления голосовым вводом также могут поддерживаться через плагины.,Например, после установки HAbridge вы можете использовать колонки Amazon echo, колонки JD и Tmall Genie для управления устройствами, поддерживаемыми HomeAssistant.,Установка HomeBridge и Homekit позволяет Siri на iOS управлять устройством. Я не буду перечислять их все здесь.,Подробную информацию о поддержке см.Список официального сайта
Судя по опыту устройств умного дома, таких как Xiaomi, JD.com и Bolian, умные не вызывают нареканий. Во-первых, хотя можно сгенерировать несколько сцен, большинство из них проигрываются самостоятельно, а связь между разными производителями невозможна, во-вторых, сцены немного одиночные, если пользователь хочет каждый раз перед выходом напоминать о погоде; вне, если сегодня напоминание о тумане/дождливом дне. Подобные сценарии невозможно реализовать, если пользователь носит маску/дождевик. Потому что не хватает интерфейсов для связи с интернет-информацией, а умные колонки большинства производителей взаимодействуют с другими устройствами только посредством голосового управления. Возможно, принимая во внимание индивидуальные потребности пользователей, существуют платформы умного дома, такие как HomeAssistant, которые объединяют различные ресурсы вместе, делая дом на шаг ближе к интеллекту. Конечно, судя по нынешнему рынку умного дома, маловероятно, что один производитель умных устройств позволит всем пользователям использовать только свои собственные устройства, поэтому предоставление пользователям некоторой «свободы» контроля не должно быть плохим выбором для производителей.
Издатель: Full stack программист и руководитель стека. Пожалуйста, укажите источник для перепечатки: https://javaforall.cn/129599.html Исходная ссылка: https://javaforall.cn.