Плагин Xiaomi



  • Участник @dev написал в Плагин Xiaomi:

    @Erik обычно датчики инфракрасные, может у вас там кто-то бегает? ☺
    Мышка например 🐁

    Там в округе все, что мельче кабана, вОроны склевали.



  • @Erik
    Да где же Вы живете, что у вас такие вОроны лютые.☺



  • @MAMOHT
    Дача в Тульской области.

    Там много хищных птиц летает. Не только вОроны. Что любопытно, когда дачники наставили заборов, и у птиц изменились маршруты облета. Если раньше кружили над полем, постепенно смещаясь в сторону, то теперь кружат строго по границам заборов, летая пониже, чем раньше. Над одним участком покружат - переместятся на соседний, и так весь поселок. 🙂
    Сороки - вроде не мелкие птицы - к кормушке по двое прилетают. Одна есть, вторая за небом следит. Если подлетает ворон - дает сигнал, и та, которая ест слетает с кормушки. Пока ворон не улетит - держатся подальше.

    Офтоп, конечно.



  • Датчик на месте.
    Никаких следов присутствия нет.



  • Я канал gw_rgb (RGB светильник в шлюзе сяоми) сопоставил с устройством "RGB светильник".
    И из правого меню этого устройства все работает - включается, выключается, выбирается цвет.

    А из скрипта командой Lamp.on() включается всегда без сбоев, а командой Lamp.off() не выключается чаще всего.
    Иногда выключается, но редко.

    Это особенности плагина? Или другую команду нужно использовать для RGB светильника?



  • @Erik Добрый день, странное поведение, нам нужно проверить этот момент, т.е. у вас постоянно на off ситуация повторяется?



  • @dev
    Нет. Иногда выключается.
    А иногда скрипт завершается с ошибкой, а светильник остается включенным.

    Вот в этом сценарии когда таймер стоял на 3 минуты - все работало, когда поставил 2 - перестал выключаться.

    /** 
    * @name Свет в комнате по движению 2 
    * @desc  
    * @version 4  
    */
    
    
    const Lamp = Device("ActorA", "Светильник");
    const Motion = Device("SensorD", "Датчик движения"); 
    const SAF = Device("ActorD","Охрана"); 
    const Last = Device("ActorA","Последнее движение");
    
    // Запустим сценарий при сработке датчика движения, если светильник не горит, режим охраны отключен, выключатель выключен. 
    startOnChange([Motion], Motion.isOn() && Lamp.isOff() && SAF.isOff());
    
    script({
        start() {
             Lamp.on();
             Last.setValue(`Последнее движение ${new Date().toLocaleString()}.  ${Motion.zoneName}`);
             // взводим таймер, чтобы отключить 
             this.startTimer("T1", 120, "turnOff");       
            
            // Добавляем слушателей - следим за датчиком движения и светильником
            this.addListener(Motion, "onMotion");
            this.addListener(Lamp, "onLamp");
        },
        
        onMotion() {
          // Если движение возобновилось - сбрасываем таймер
          if (Motion.isOn() )  {
            this.stopTimer("T1");
          }  
           // Если движение прекратилось - взводим таймер (после повторных движений)
          if (Motion.isOff() && this.timer.T1 == "off")  {
            this.startTimer("T1",  120, "turnOff");
          }  
        },
        
         onLamp() {
          // Светильник выключили другим способом - выходим
           if (Lamp.isOff()) this.exit();
         },
         
    
        // Функция, которая сработает, когда таймер досчитает - отключаем и выходим
        turnOff() {
          Lamp.off();
          this.exit(); 
        }
    });
    

    В этом скрипте у меня RGB светильник и датчик движения - от сяоми. Выключатель на входе меги.

    А просто выключение (без доп условий со слушателями) работает четко без сбоев.
    Этот скрипт отрабатывает нормально.

    /** 
    * @name Выкл свет по таймеру 
    * @desc  
    * @version 4  
    */
    
    
    
    const Lamp = Device("ActorA", "Светильник");
    
    // Запустим сценарий при сработке датчика движения, если светильник не горит, режим охраны отключен, выключатель выключен. 
    startOnChange([Lamp], Lamp.isOn());
    
    script({
        start() {
             // взводим таймер, чтобы отключить 
             this.startTimer("T1", 3, "turnOff");       
        },
           // Функция, которая сработает, когда таймер досчитает - отключаем и выходим
        turnOff() {
          Lamp.off();
          this.exit(); 
        }
    });
    


  • Вероятно, проблема со сценарием, а не с устройством (плагином)

    А иногда скрипт завершается с ошибкой, а светильник остается включенным.

    А какая там ошибка, посмотрите пожалуйста в Рабочих сценариях.



  • Участник @intrapro написал в Плагин Xiaomi:

    А какая там ошибка, посмотрите пожалуйста в Рабочих сценариях.

    В прошлые выходные убил в мультисценарии этот набор устройств.
    Сегодня добавил - пока работают без сбоев.



  • Вот. Поймал все таки.

    19.01 14:09:27.272 S76(,RGBLAMP1,SMOTION3,ACTOR1,ACTORA79) Check(SMOTION3) => true
    19.01 14:09:27.272 S76(,RGBLAMP1,SMOTION3,ACTOR1,ACTORA79) Started
    19.01 14:09:27.273 S76(,RGBLAMP1,SMOTION3,ACTOR1,ACTORA79) do RGBLAMP1 on 
    19.01 14:09:27.274 S76(,RGBLAMP1,SMOTION3,ACTOR1,ACTORA79) do ACTORA79 set Последнее движение 2020-1-19 14:09:27.  Баня.Раздевалка
    19.01 14:09:27.274 S76(,RGBLAMP1,SMOTION3,ACTOR1,ACTORA79) start timer T1 for 60 sek
    19.01 14:09:27.330 S76(,RGBLAMP1,SMOTION3,ACTOR1,ACTORA79) listener on event RGBLAMP1: onLamp
    19.01 14:09:27.331 S76(,RGBLAMP1,SMOTION3,ACTOR1,ACTORA79) exec function onLamp
    19.01 14:09:27.331 S76(,RGBLAMP1,SMOTION3,ACTOR1,ACTORA79) exit
    19.01 14:09:27.331 S76(,RGBLAMP1,SMOTION3,ACTOR1,ACTORA79) Stopped
    

    Осталась включенной.



  • @Erik
    Получается, что сценарий выходит по ветке "Cветильник выключили другим способом", поэтому он выходит и по факту не выключает RGB.
    На самом деле он просто включиться еще не успел (по крайней мере, не передал сообщения о переключении)
    Смотрим по логу, что происходит

    14:09:27.273 do RGBLAMP1 on - пошла команда на включение
    14:09:27.330 listener on event RGBLAMP1: onLamp - через 57 мс пришло событие от лампы, ПРИ ЭТОМ она выключена (состояние еще не успело переключиться в on) -> сценарий завершается.
    Вероятно, от лампы приходят еще сообщения, кроме переключения состояния
    Можно добавить проверку, что изменился именно state - тогда должно работать

    onLamp() {
          // Светильник выключили другим способом - выходим
           if ( this.isChanged(Lamp, 'state') && Lamp.isOff() ) this.exit();
     },
    


  • 01.02 17:09:32.051 xiaomi1: {"cmd":"report","model":"sensor_switch.aq2","sid":"158d0002008b2c","short_id":62635,"data":"{"status":"click"}"}
    01.02 17:09:32.052 IH: get []
    set {}
    В списке каналов не появляется, а в логе есть. Может надо как-то добавить в плагин ?

    ..Для себя подправил в плагине sensor_switch.aq3



  • Участник @Anatol написал в Плагин Xiaomi:

    sensor_switch.aq2

    Добрый день, выпущено обновление 0.0.63, добавлены новые устройства:

    gateway                - Xiaomi GateWay 2
    motion                 - Xiaomi Smart Motion Sensor
    sensor_motion.aq2      - Xiaomi Smart Motion Sensor and Illumination
    weather.v1             - Xiaomi Weather
    sensor_ht              - Xiaomi Temperature/Humidity
    sensor_magnet.aq2      - Xiaomi Door Sensor
    magnet                 - Xiaomi Door Sensor
    smoke                  - Xiaomi Smoke Detector
    natgas                 - Xiaomi Gas Detector
    curtain                - Xiaomi Aqara curtain
    plug                   - Xiaomi Smart Plug
    ctrl_86plug.aq1        - Aqara Smart Socket 
    ctrl_ln1.aq1           - Aqara 1 Channel Wall Switch (LN)
    ctrl_neutral1          - Xiaomi Wired Single Wall Switch (N)
    ctrl_neutral2          - Xiaomi Wired Dual Wall Switch (N)
    ctrl_ln2.aq1           - Aqara Wall Switch Double (LN)
    sensor_switch.aq2      - Аqara Smart Wireless Switch
    sensor_switch.aq3      - Aqara Smart Wireless Switch
    switch                 - Xiaomi Wireless Switch
    86sw2                  - Xiaomi Wireless Dual Wall Switch
    remote.b286acn01       - Aqara Wireless Switch Single
    remote.b186acn01       - Aqara Wireless Switch Double
    cube                   - Xiaomi Cube
    sensor_wleak.aq1       - Aqara Water sensor
    

    Если у вас есть zigbee устройство, которое отсутсвует в списке каналов, сообщите нам и мы его добавим.



  • А можна по такому что то зделать (esp32s) https://youtu.be/J04PZJTwnnw тогда можна будет подключать bluetooth устройства xiaomi.



  • Добрый день. Одноклавишный выключатель Acara, в отладчике пишет "click", а в статусе "значение с канала" не меняет. Перебрал несколько штук. Все одинаково. При этом двухклавишные все ок. Может в плагине что не так ?



  • и сразу еще вопрос. В двухклавишном выключателе не меняется состояние. Если после левой клавишы нажать правую, статус левой все равно остается в "click" и наоборот, то есть не сбрасывается. Сбрасывается только если делать"long click", в отладчике все пишется правильно, а статус при этом не меняется.



  • Отвалился один датчик движения.
    И не добавлялся.
    Ни из плагина, ни их приложения Mi.
    Таких датчиков несколько, один убрал - отвалившийся добавился, а убранный перестал добавляться.
    Всего было подключено 18 устройств, 19-е не добавлялось, хотя раньше все было ок, и работало.
    Оказалось дело в обновении гейта. После обновления на новую прошивку все добавилось. Старые прошивки однажды просто перестают работать как раньше.
    Связался с китайцами, и нажил себе лишних эксплуатационных обязанностей.



  • А теперь оно орет по утрам что-то угрожающее мультяшным голосом. Ровно в 6-00.



  • Проработало 2 дня. И снова датчик отвалился. Под гневную реплику на китайском.
    Оказывается в приложении Mi нужно зайти в каждый датчик и согласиться с лицензией.
    Не знаю, на сколько теперь хватит.



  • Опять отвалился. Хватило на 2 часа. Просто пропадает из списка присоединенных устройств.
    Как узнать причину?

    В этот раз пропал только из плагина.
    В приложении Mi все на месте.
    Перезагрузка плагина не помогает.


Авторизуйтесь, чтобы ответить