rmind.yandex.smart.home
Библиотека для упрощения реализации умного дома с Алисой в Yandex Cloud Function.
Необходимая облачная инфраструктура
Managed Service for YDB
хранение состояния устройств
| Переменные окружения | Значение | По умолчанию | Обязательный |
|---|---|---|---|
| YDB_ENDPOINT | grpcs | grpcs://ydb.serverless.yandexcloud.net:2135 | Нет |
| YDB_DATABASE | адресс БД | - | Да |
IoT Core/Брокер
общение с устройствами пользователя через MQTT протокол
| Переменные окружения | Значение | По умолчанию | Обязательный |
|---|---|---|---|
| MQTT_URL | адрес брокера | mqtt.cloud.yandex.net | Нет |
| MQTT_PORT | порт брокера | 8883 | Нет |
| MQTT_USER | пользователь | - | Да |
| MQTT_PASS | пароль | - | Да |
Пример устройства
from rmind_yandex_smart_home import YandexIoTDevice
from rmind_yandex_smart_home.yandex import on_off
class MyDevice(YandexIoTDevice):
def __init__(self, id, type):
super().__init__(id, "MyDeviceName", type)
@on_off()
def on_off(self, params):
value = params['value']
return 'on:1' if value else 'on:0'
Метод класса, помеченный атрибутом Capability (в данном случае @on_off), должен вернуть текст сообщения устройству, которое Engine отправит в MQTT очередь
f"/yandex-iot-core/{self.id}/commands"
Дальнейшая обработка сообщения проходит на IoT устройстве.
Так как IoT устройства обычно строятся на микроконтроллерах типа Arduino, esp32 и т.д., рекомендуется сложные преобразования делать в cloud function
# обработка rgb сообщения от yandex alice
# значение приходит в формате int
# для значения value:14210514 получим '216;213;210;'
def get_rgb_message(value):
h = hex(value)[2:]
if len(h) == 5:
h = '0' + h
r,g,b = tuple(int(h[i:i+2], 16) for i in (0, 2, 4))
return f"{r};{g};{b}"
Использование в Cloud Function
import rmind_yandex_smart_home as rmind
engine = rmind.Engine()
engine.register_device(MyDevice(
"my-device-unique-id",
"devices.types.light"
))
def handler(event, context):
return engine.handle(event, context)
Входящие параметры Capability
on_off
Включение и выключение устройства
объявление
@on_off()
def on_off(self, params):
pass
params
{
"instance": "on",
"value": False
}
color_setting
Параметры цвета.В текущей реализации по умолчанию схема RGB. Параметры temperature_k и scenes необязательные.
объявление
@color_setting(temperature_k = [2700, 5100], scenes = ["party"])
def color_setting(self, params):
pass
возможные варианты params
// цвет RGB
{
"instance": "rgb",
"value": 14210514
}
// цветовая температура
{
"instance": "temperature_k",
"value": 5100
}
// Сцена
{
"instance": "scene",
"value": "party"
}
brightness
Яркость. Значение от 0 до 100
объявление
@brightness()
def brightness(self, params):
pass
params
{
"instance": "brightness",
"value": 50
}
Собственная реализация Capability
В следующих версиях я буду добавлять умения, но если Вам необходима что то конкретное, то в библиотеке можно реализовать свои кастомные умения.
Описание параметров и возможностей, с которыми работает алиса брать в документации Yandex
Пример реализации program
from rmind_yandex_smart_home.yandex import Capability
class program(Capability):
def __init__(self, **kwargs):
super().__init__("devices.capabilities.mode", **kwargs)
self.parameters = {
'instance': "program"
}
modes = kwargs.get('modes')
if modes is not None:
self.parameters['modes'] = [{'value': x} for x in modes]
def get_default(self):
return {
'instance': "program",
'value': "auto"
}
Пример использования
from rmind_yandex_smart_home import YandexIoTDevice
...
class MyDevice(YandexIoTDevice):
def __init__(self, id, type):
super().__init__(id, "MyDeviceName", type)
@program(modes=["auto", "one", "two"])
def program(self, params):
value = params['value']
return '1' if value == "auto" else '0'
Metadata
Release files for rmind-yandex-smart-home 0.1.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rmind_yandex_smart_home-0.1.9.tar.gz | 34.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rmind_yandex_smart_home-0.1.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 59.1 kB
Release files / rmind_yandex_smart_home-0.1.9.tar.gz
| Download URL | rmind_yandex_smart_home-0.1.9.tar.gz |
|---|---|
| Size | 34.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
830d1aac0223747a51f16d7aff0989805eb815d675913a7a00dc7d9d08bbfe3c
|
|
BLAKE2b-256 checksum How to use checksums |
9df964950d265e6d93656a34e032fd6b3d6277cad0bc6e3cec8570b8466e6556
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / rmind_yandex_smart_home-0.1.9-py3-none-any.whl
| Download URL | rmind_yandex_smart_home-0.1.9-py3-none-any.whl |
|---|---|
| Size | 24.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
67c6ede835435088d92450ff215878056f7dd32500f59136b610f4d8aabacd93
|
|
BLAKE2b-256 checksum How to use checksums |
2d93498afc6bf5f952bd2e2d0b4cd3224b0bd7a9cc83a260017018af5bd26ab6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|