Skip to main content

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.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rmind-yandex-smart-home 0.1.10
File Size Uploaded
rmind_yandex_smart_home-0.1.10.tar.gz 34.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rmind-yandex-smart-home 0.1.10
File Interpreter ABI Platform
rmind_yandex_smart_home-0.1.10-py3-none-any.whl Python 3 none any Details

Total release size: 59.3 kB

Release files / rmind_yandex_smart_home-0.1.10.tar.gz

Download URL rmind_yandex_smart_home-0.1.10.tar.gz
Size 34.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b2910b5ec0234aadbcdc25d15534adcbe86dfc88dd014e8e35b3b87a4ad96757
BLAKE2b-256 checksum
How to use checksums
8310258ab70e27568ef828da88d9b6f9a8d13f6d4ea5b3f7dcf2742be582dd20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / rmind_yandex_smart_home-0.1.10-py3-none-any.whl

Download URL rmind_yandex_smart_home-0.1.10-py3-none-any.whl
Size 24.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
46825a00e93b5ec0609514ea2ffd0c907b7c4eccf0bc73d48c38f5d32158977b
BLAKE2b-256 checksum
How to use checksums
a287ed77716175d97debba88aa6c090709e090c61623469cdeed0385dff3e5f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release history Release notifications | RSS feed

0.2.1

2 release files

0.2.0

2 release files

This release

0.1.10 This release

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page