المنزل الذكي بدون أجهزة التحكم عن بعد ، ولكن مع مكعب

مشكلة



أثناء إصلاح شقة جديدة ، عدت إلى الشقة التي لم أكن أعيش فيها لمدة 10 سنوات وقررت ممارسة الانضباط "المنزل الذكي" من أجل تجهيز شقة جديدة بمعرفة الأمر. المعدات في هذه الشقة ليست هي الأذكى وليست الأحدث ، لأنها تم إنتاجها قبل 10 سنوات. الأهم من ذلك كله في الشقة كنت منزعجًا من وفرة أجهزة التحكم عن بعد بالأشعة تحت الحمراء ، فقدوا وحملوا الدماغ باختيار الجهاز المناسب. حتى وقت قريب ، تقرر إنشاء عدد كبير من الأزرار غير المستخدمة على أجهزة التحكم عن بعد. ووحدات التحكم ليست جمالية ولا صحية ، وبعضها زاوي ، وبعضها الآخر ذو حواف مستديرة ، وتتحول الأزرار إلى اللون الأصفر ، وتتراكم بقايا حياة السكان ، والتي تشكل "التقران البيولوجي تحت الأزرار". ونتيجة لذلك ، تنتشر عشرات أجهزة التحكم عن بعد حول المنزل مع مجموعة من الأزرار غير الضرورية ، لإجراء عمليات بسيطة كان علي أن أبحث عن قطعتين أو ثلاث قطع ، خدوشهم تبدو عيني ،كنت أرغب في التحكم الصوتي المريح والرائع.



, . . xiaomi Xiaomi universal IR remotecontroller Xiaomi Mi Smart Home Magic Cube, Xiaomi smart home gateway 2





, , IR , — ZigBee . , , .


, , xiaomi, , Mi Home “”. , , . , . , , ( ) Mi Home 10 5 , 30 10 , , , 1 , . , ...


المشكلة من الصين لا تأتي وحدها ، باستثناء المكابح للفرك أصبحت عدم القدرة على ربط مكعب ذكي للتحكم في الصوت.


يتم التحكم في المكعب عن طريق الإيماءات:

  • أن يهز
  • تحرك على متن طائرة
  • استدارة 90/180 درجة حول المحور الأفقي
  • استدارة حول محور عمودي
  • وإلخ...



— , , , , , 90 — 10 , 45 — 5 . , — ZigBee, - , 3 .


Home Assistant, , , Xiaomi , ZigBee . Security token IR , Mi Home . xiaomi gateway , UART RX/TX Home Assistant.


يحتاج Home Assistant نفسه إلى إطلاقه في مكان ما ، جاء Synology DS718 + في إطار هذه المهمة ، والتي تم استخدامها كمركز إعلامي DLNA وتنزيل سيل. هذا الجهاز قادر على تشغيل حاويات Docker ، ويمكن بسهولة تغليف حاوية بها Home Assistant. مساعد المنزل رائع ، ولكن على عكس Mi Home ، تحتاج إلى كتابة كل ذكاء المنزل فيه مع الأقلام في yaml. بعد أن أتقنت DSL فهمت مساعد المنزل والبصق من أداة برمجة أخرى لا تتطلب معرفة PL ، تمكنت من طهي عكاز من الشكل المطلوب.



رمز الأتمتة:
- المعرّف: volume_up
  الاسم المستعار: رفع مستوى الصوت
  اثار:
  - بيانات_الحدث:
      action_type: تدوير
      الكيان: معرّف binary_sensor.cube_0000000103ec74
    event_type: xiaomi_aqara.cube_action
    منصة: حدث
  حالة:
    الشرط: القالب
    value_template: "{{مشغل.event.data.action_value> 0}}"
  عمل:
  - service_template: "script.bbk_vol_up _ {{(trig.event.data.action_value / 3) | int}}"

هذا الأتمتة يمسك بحدث دوران في اتجاه عقارب الساعة ويستدعي نصًا باسمه يتم استبدال عدد إشارات زيادة الصوت التي يجب أن يرسلها باعث الأشعة تحت الحمراء. كما خمنت على الأرجح ، يتطلب كل ركن من أركان التدوير نصًا خاصًا به ، وتم استدعاء لصق النسخ لإنشائها ، وأعطاني 20 نصًا مثل هذه:


bbk_vol_up_10:
  تسلسل:
  - البيانات:
      أمر:
      - bbk_vol_up
      تأخير: 0.04
      عدد التكرارات: 10
    الكيان: id.xiaomi_miio_192_168_2_62
    الخدمة: remote.send_command

يبدو تكوين الباعث بإشارات تم اعتراضها من لوحة مكبر الصوت كما يلي:
التحكم عن بعد:
  - منصة: xiaomi_miio
    مضيف: 192.168.2.62
    الرمز المميز: 392cbed325e862ffff983c4575b7a6f2
    الأوامر:
      bbk_power:
        الأمر: raw: nE5m0wlk0msxmEsmszmEsm0wAHKaABkAoQAcAL1MZtOQEFmM3ARMCHwCymM2m4ENgXEAioHlgy + AwoL3gvYAh4L0gGGEBYLCAL0BR4CHhU4A + wQ8
      bbk_vol_up:
        الأمر: raw: nMwmUwlk0mk1mEsms3ADKbABlM5hLJtMAD2ALKazkAdgAymM3AYMBApjNgKTmgGLABuBD4IaAEKA1YJrgyuBDwJvgZeEx4C / geHMZsAgYxxox
      bbk_vol_down:
        الأمر: raw: nE5m0wlk0msxmEsmszmEsm0wAHKaABkAoQAcAL1MZtOQEFmM3ARMCHwIfAdQBFZuAQYFfAfuBCoHngveEx4C / gL + Cj4R2ANfLJqAYQUChU3MAA



مرحى! يتحكم الصوت في دوران المكعب حول المحور الرأسي ، ويتم تشغيل التلفزيون ومكبرات الصوت عن طريق تدوير المكعب 90 درجة حول المحور الأفقي.

Home Assistant , , Google Assistant Home Assistant, . GA , . , . Ethernet , , IP , IP — , . custom_component Home Assistant:


import logging
from homeassistant.helpers.entity import Entity
from pythonping import ping

logger = logging.getLogger(__name__)

def setup_platform(hass, config, add_entities, discovery_info=None):
    entities = []
    for name, ip in config['hosts'].items():
        entities.append(IPSensor(name, ip))

    add_entities(entities)

class IPSensor(Entity):
    def __init__(self, name, ip):
        self._name = name
        self._ip = ip
        self._state = None
        self._is_on = None

    @property
    def name(self):
        return self._name

    @property
    def state(self):
        return self._state

    @property
    def state_attributes(self):
        return {'ip_address': self._ip}

    @property
    def device_class(self):
        return 'connectivity'

    @property
    def is_on(self):
        return self._is_on

    def update(self):
        result = ping(self._ip, count=1, timeout=0.1)
        self._is_on = result.success()
        self._state = 'on' if result.success() else ‘off'

ثم قم بتوصيل باعث الأشعة تحت الحمراء مع المستشعر للمفتاح مثل هذا:
مفتاح كهربائي:
  - منصة: قالب
    مفاتيح:
      toshiba_tv:
        value_template: "{{is_state ('binary_sensor.toshiba_tv'، 'on')}}"
        شغله:
          الخدمة: script.toshiba_power
        يطفىء:
          الخدمة: script.toshiba_power

وبدأ عرض هذا المفتاح في Google Home والتحكم فيه عن طريق الصوت.

تمرين PS مع منزل ذكي بنجاح ، ذهب لشراء أجهزة جديدة!
PPS A ZigBee hub الآن لسبب ما يضيء المدخل ...

كانت




أصبح



All Articles