nt0xa / homebridge-mi-humidifier

A Xiaomi Mi humidifier plugin for Homebridge
MIT License
64 stars 24 forks source link

Не работает updateInterval при выключенном устройстве #85

Closed NikDevx closed 3 years ago

NikDevx commented 3 years ago

Добрый день. Отдельное спасибо за плагин, очень много времени сэкономлено!

Теперь к сути проблемы. Это так задумано, что не работает updateInterval если устройство выключено или это баг?

Недавно реализовывал функцию Polling в своём плагине для другого увлажнителя и очистителя. И у меня даже при выключенном аксессуаре и закрытом homekit обновляет данные датчиков.

nt0xa commented 3 years ago

Добрый день! Так не задумано, обновление должно работать и при выключенном устройстве. Можете, пожалуйста, собрать debug логи?

DEBUG=miio-api* homebridge -D
NikDevx commented 3 years ago
2021-04-09T09:45:21.344Z miio-api:192.168.0.35:8vvj26d6 <-
0000    21 31 00 20 00 00 00 00 12 c8 33 a3 00 02 a0 e1 
0010    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
2021-04-09T09:45:21.346Z miio-api:192.168.0.35:8vvj26d6 <- Packet {
  deviceId: 315110307,
  timestamp: 172257,
  checksum: <Buffer 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>,
  data: <Buffer >,
  unknown: 0
}
2021-04-09T09:45:21.357Z miio-api:192.168.0.35:xvd4j085 -> {
  id: 1183551673,
  method: 'get_prop',
  params: [
    'power',       'child_lock',
    'humidity',    'led_b',
    'mode',        'depth',
    'dry',         'limit_hum',
    'temperature'
  ]
}
2021-04-09T09:45:21.360Z miio-api:192.168.0.35:xvd4j085 -> Packet {
  deviceId: 315110307,
  timestamp: 172257,
  checksum: <Buffer 8e 3e 76 04 97 3c 1f 25 83 9d 52 d6 f4 be 7a 93>,
  data: <Buffer 8b ab ad ef fd dd 0a f9 32 5e 17 5f 03 84 ea da 50 ec e7 07 6b ea 58 81 ad 01 43 48 e7 bc 21 2a 71 77 7f b0 16 c4 d7 fb 1f a4 a8 fc 59 f4 40 f6 82 6b ... 94 more bytes>,
  unknown: 0
}
2021-04-09T09:45:21.361Z miio-api:192.168.0.35:xvd4j085 #1 ->
0000    21 31 00 b0 00 00 00 00 12 c8 33 a3 00 02 a0 e1 
0010    8e 3e 76 04 97 3c 1f 25 83 9d 52 d6 f4 be 7a 93 
0020    8b ab ad ef fd dd 0a f9 32 5e 17 5f 03 84 ea da 
0030    50 ec e7 07 6b ea 58 81 ad 01 43 48 e7 bc 21 2a 
0040    71 77 7f b0 16 c4 d7 fb 1f a4 a8 fc 59 f4 40 f6 
0050    82 6b e6 f0 57 4a bd f8 9f 2b 3a 5f 45 ea 4a 52 
0060    6d fc 89 c1 f5 76 6e a3 b3 72 a7 2e 83 f2 40 67 
0070    39 17 68 f4 c0 c5 de a0 72 9a 9f 84 9b 86 af c7 
0080    ae 21 1c aa a8 2c 32 91 a9 3c 47 cb 14 8c 15 cc 
0090    90 55 e1 85 85 c1 1d d1 0c e0 0f 9d 95 b7 4b 60 
00a0    81 7c bf 41 f0 c5 0e 53 88 cd 38 06 99 c6 93 dc 

2021-04-09T09:48:17.471Z miio-api:192.168.0.35:2gzb4zhy <- Packet {
  deviceId: 315110307,
  timestamp: 172433,
  checksum: <Buffer 58 60 cc 1a 2f 77 f2 39 45 ce 20 8c 63 39 88 9a>,
  data: <Buffer 75 f6 6c 71 8f 8b c9 21 f6 7f 72 02 07 0a 7b ed 9b 3a ff dc 3e 2c fb 70 eb db 60 07 65 9e a1 be 56 55 94 89 c2 83 27 0e f0 55 f4 60 a1 2a 98 08 7b ab ... 30 more bytes>,
  unknown: 0
}
2021-04-09T09:48:17.473Z miio-api:192.168.0.35:2gzb4zhy <- {
  result: [
    'off', 'off',  61,
    0,     'high', 58,
    'off', 68,     24.8
  ],
  id: 2547692990
}
NikDevx commented 3 years ago

У меня не установлен пакет miio-api. Может в этом причина?

nt0xa commented 3 years ago

У меня не установлен пакет miio-api. Может в этом причина?

Он прописан в зависимостях, должен автоматом ставиться. По логам видно, что он есть.

Можете побольше логов собрать при выключенном устройстве и файлом прикрепить?

NikDevx commented 3 years ago

При выключенном состоянии показывает всегда от 56 до 62% влажность, как по дефолту. После включения уже 42%, что в целом норма, так проверял другим датчиком.

NikDevx commented 3 years ago

Лог после включения

2021-04-09T09:53:17.305Z miio-api:192.168.0.35:13kkzabd -> {
  id: 253536832,
  method: 'get_prop',
  params: [
    'power',       'child_lock',
    'humidity',    'led_b',
    'mode',        'depth',
    'dry',         'limit_hum',
    'temperature'
  ]
}
2021-04-09T09:53:17.307Z miio-api:192.168.0.35:13kkzabd -> Packet {
  deviceId: 315110307,
  timestamp: 172689,
  checksum: <Buffer fb 32 db 17 1b b3 91 88 88 60 e2 a7 7d 87 08 36>,
  data: <Buffer 61 65 74 d2 ae 82 06 a0 1e eb 54 98 90 55 fa c7 85 56 8a 72 1a 39 38 5f d1 87 d5 14 ee 81 dc ff 19 de c0 4e 3c fc 51 97 ef e3 88 df a4 da 32 ee b8 2e ... 94 more bytes>,
  unknown: 0
}
2021-04-09T09:53:17.308Z miio-api:192.168.0.35:13kkzabd #1 ->
0000    21 31 00 b0 00 00 00 00 12 c8 33 a3 00 02 a2 91 
0010    fb 32 db 17 1b b3 91 88 88 60 e2 a7 7d 87 08 36 
0020    61 65 74 d2 ae 82 06 a0 1e eb 54 98 90 55 fa c7 
0030    85 56 8a 72 1a 39 38 5f d1 87 d5 14 ee 81 dc ff 
0040    19 de c0 4e 3c fc 51 97 ef e3 88 df a4 da 32 ee 
0050    b8 2e f5 41 f1 82 4d 37 cd 2a 1e 2d 15 ee a5 0e 
0060    72 d2 c7 d6 21 93 01 91 2d eb a1 0c 75 74 ee f6 
0070    45 4f d6 f8 f6 03 df cf 7a a2 56 75 80 8a 3f db 
0080    5f cf 8c 74 3b 5c 66 83 3c 1e 88 e7 ae e5 7d e1 
0090    55 40 04 fe 5f b6 ea 0e b5 2f 0b f9 c0 17 93 a4 
00a0    c8 04 b4 17 7a c4 8e 44 40 f4 66 2f a6 82 53 8e 
2021-04-09T09:53:17.529Z miio-api:192.168.0.35:13kkzabd <-
0000    21 31 00 70 00 00 00 00 12 c8 33 a3 00 02 a2 bd 
0010    36 c3 ad 7b 80 07 97 6c 8d 54 e2 eb 89 44 38 3e 
0020    2f 0c 8f 1e 05 39 89 93 25 af fa b6 05 05 c0 d1 
0030    7c 79 4d fe 7e 40 0b 8a 8f e9 7f 40 77 b8 2a b7 
0040    13 d4 b0 34 e6 2a dc 1f 43 fb 82 87 ae a5 ad aa 
0050    cf 40 66 fa de c9 bf 1b 19 23 5d 27 9b 9b 55 b3 
0060    29 2c 1a fc a6 e1 9a e5 cc b0 cf 56 cb 5e d2 1c 
2021-04-09T09:53:17.530Z miio-api:192.168.0.35:13kkzabd <- Packet {
  deviceId: 315110307,
  timestamp: 172733,
  checksum: <Buffer 36 c3 ad 7b 80 07 97 6c 8d 54 e2 eb 89 44 38 3e>,
  data: <Buffer 2f 0c 8f 1e 05 39 89 93 25 af fa b6 05 05 c0 d1 7c 79 4d fe 7e 40 0b 8a 8f e9 7f 40 77 b8 2a b7 13 d4 b0 34 e6 2a dc 1f 43 fb 82 87 ae a5 ad aa cf 40 ... 30 more bytes>,
  unknown: 0
}
2021-04-09T09:53:17.531Z miio-api:192.168.0.35:13kkzabd <- {
  result: [
    'on',  'off',  42,
    0,     'high', 60,
    'off', 68,     24.7
  ],
  id: 253536832
}
NikDevx commented 3 years ago

Выключил и уже 56% влажность Хотя по факту 41-42%

2021-04-09T09:56:17.305Z miio-api:192.168.0.35:kr8fnc0c -> {
  id: 2278791088,
  method: 'get_prop',
  params: [
    'power',       'child_lock',
    'humidity',    'led_b',
    'mode',        'depth',
    'dry',         'limit_hum',
    'temperature'
  ]
}
2021-04-09T09:56:17.307Z miio-api:192.168.0.35:kr8fnc0c -> Packet {
  deviceId: 315110307,
  timestamp: 172853,
  checksum: <Buffer bc 2d 41 4c f3 57 58 ee d6 86 01 51 9f 5e eb 75>,
  data: <Buffer 47 b0 77 73 b0 f5 e4 c6 28 db b4 de e0 fb be e1 74 92 44 ac 72 78 99 4d 55 81 86 ed f2 df 13 7a 30 0d 26 94 4c 01 e9 4a 2e 56 a9 d5 b2 e3 7e 50 2c 5a ... 94 more bytes>,
  unknown: 0
}
2021-04-09T09:56:17.308Z miio-api:192.168.0.35:kr8fnc0c #1 ->
0000    21 31 00 b0 00 00 00 00 12 c8 33 a3 00 02 a3 35 
0010    bc 2d 41 4c f3 57 58 ee d6 86 01 51 9f 5e eb 75 
0020    47 b0 77 73 b0 f5 e4 c6 28 db b4 de e0 fb be e1 
0030    74 92 44 ac 72 78 99 4d 55 81 86 ed f2 df 13 7a 
0040    30 0d 26 94 4c 01 e9 4a 2e 56 a9 d5 b2 e3 7e 50 
0050    2c 5a aa 4f 99 d7 ed 96 ca 52 ff 1d c5 92 4e c7 
0060    50 e6 9e 8c 42 a9 6e ca 79 c7 cf 63 04 95 ae 5e 
0070    d0 06 66 c9 92 70 59 3b 7c bb 8e aa 1d e1 c0 1f 
0080    d5 74 e8 19 62 52 5f b5 03 2e 79 f8 ac 9d 37 64 
0090    84 12 e3 4b a1 81 a1 32 59 ec d1 87 2a d2 ef 59 
00a0    32 1f 82 7a bc 6b 1a f5 27 a6 60 90 86 76 7b 27 
2021-04-09T09:56:17.473Z miio-api:192.168.0.35:kr8fnc0c <-
0000    21 31 00 70 00 00 00 00 12 c8 33 a3 00 02 a3 71 
0010    b9 77 d3 fe aa b4 d4 44 dd 6e b7 7c 48 95 9a 27 
0020    75 f6 6c 71 8f 8b c9 21 f6 7f 72 02 07 0a 7b ed 
0030    7c 83 b1 50 c8 26 d5 34 c7 6a d7 df e2 1f 48 e0 
0040    0d eb ff 24 fc a2 14 1f 78 c2 ea 8e 49 14 92 1c 
0050    4f 8f 9e 6b 30 f6 93 5f 87 1d ba f0 39 14 b2 da 
0060    d7 46 bb 07 7a 76 5b 96 2a 00 27 68 82 c9 41 fa 
2021-04-09T09:56:17.474Z miio-api:192.168.0.35:kr8fnc0c <- Packet {
  deviceId: 315110307,
  timestamp: 172913,
  checksum: <Buffer b9 77 d3 fe aa b4 d4 44 dd 6e b7 7c 48 95 9a 27>,
  data: <Buffer 75 f6 6c 71 8f 8b c9 21 f6 7f 72 02 07 0a 7b ed 7c 83 b1 50 c8 26 d5 34 c7 6a d7 df e2 1f 48 e0 0d eb ff 24 fc a2 14 1f 78 c2 ea 8e 49 14 92 1c 4f 8f ... 30 more bytes>,
  unknown: 0
}
2021-04-09T09:56:17.475Z miio-api:192.168.0.35:kr8fnc0c <- {
  result: [
    'off', 'off',  56,
    0,     'high', 58,
    'off', 68,     24.6
  ],
  id: 2278791088
}
NikDevx commented 3 years ago

У меня не установлен пакет miio-api. Может в этом причина?

Он прописан в зависимостях, должен автоматом ставиться. По логам видно, что он есть.

Можете побольше логов собрать при выключенном устройстве и файлом прикрепить?

Да, сейчас сделаю.

NikDevx commented 3 years ago

homebridge.log

nt0xa commented 3 years ago

miio-api судя по логам работает. Только похоже, debug-логи в самом homebridge не включились, флаг -D попал в переменную окружения ... custom env: {"DEBUG":"miio-api* homebridge -D"}

NikDevx commented 3 years ago

debug-логи в самом homebridge не включились, флаг -D попал в переменную окружения ... custom env: {"DEBUG":"miio-api* homebridge -D"}

Сорри, не заметил Сейчас исправлю и новый лог отправлю.

NikDevx commented 3 years ago

Также заметил, что после выключения увлажнителя, свет не выключается.

photo_2021-04-09 13 48 48

NikDevx commented 3 years ago

И влажность не изменяется или изменяется с опозданием на датчике влажности. Изменяется только в реальном времени влажность в увлажнителе.

photo_2021-04-09 14 00 19 photo_2021-04-09 14 00 20 (1)

NikDevx commented 3 years ago

Новый лог

homebridge.log

nt0xa commented 3 years ago

Спасибо! Кажется, понял в чем проблема, постараюсь в выходные поправить

NikDevx commented 3 years ago

Спасибо! Кажется, понял в чем проблема, постараюсь в выходные поправить

Спасибо! Ожидаю

NikDevx commented 3 years ago

Добрый день Еще неправильно отображает уровень воды в homebridge

[10.04.2021, 07:47:33] [homebridge-mi-humidifier] This plugin generated a warning from the characteristic 'Water Level': characteristic was supplied illegal value: number 104.16666666666667 exceeded maximum of 100. See https://git.io/JtMGR for more info.

Исправляется в zhimi-cab1.js в 28 строке заменил на toChar: (it) => Math.min(it / 1.2, 100),

nt0xa commented 3 years ago

Выложил новый релиз, апдейты для датчиков теперь должны работать.

Добрый день Еще неправильно отображает уровень воды в homebridge

[10.04.2021, 07:47:33] [homebridge-mi-humidifier] This plugin generated a warning from the characteristic 'Water Level': characteristic was supplied illegal value: number 104.16666666666667 exceeded maximum of 100. See https://git.io/JtMGR for more info.

Исправляется в zhimi-cab1.js в 28 строке заменил на toChar: (it) => Math.min(it / 1.2, 100),

Про это в #84, в новом релизе тоже пофиксил

NikDevx commented 3 years ago

Благодарю!

До сих пор остается баг со светом при выключенном увлажнителе.

NikDevx commented 3 years ago

Благодарю!

До сих пор остается баг со светом при выключенном увлажнителе.

photo_2021-04-11 14 06 28

NikDevx commented 3 years ago

Проблема с датчиками осталась... Некорректно отображает показания в выключенном состоянии. При включенном состоянии влажность правильно отображается (47% к примеру), а после выключении сразу становится 54% и постепенно повышается.

Добавляю новый лог homebridge.log

nt0xa commented 3 years ago

Проблема с датчиками осталась... Некорректно отображает показания в выключенном состоянии. При включенном состоянии влажность правильно отображается (47% к примеру), а после выключении сразу становится 54% и постепенно повышается.

Добавляю новый лог homebridge.log

Не думаю, что тут я смогу что-то сделать, так как проблема в прошивке увлажнителя. Плагин просто забирает с него показатели влажности. По логам видно, что эти значения приходят с увлажнителя. Видимо, в прошивке есть какая-то поправка для влажности, когда устройство включено.

NikDevx commented 3 years ago

Понял. Спасибо.

А можно ли как-то делать запросы через miio, когда увлажнитель выключен?

nt0xa commented 3 years ago

Понял. Спасибо.

А можно ли как-то делать запросы через miio, когда увлажнитель выключен?

Да, конечно. Если питание включено, то через miio можно делать запросы

NikDevx commented 3 years ago

А можешь подсказать пример запроса через curl для получения данных с датчика влажности? Пожалуйста

NikDevx commented 3 years ago

И можно ли как-то отключить CurrentRelativeHumidity? Чтобы влажность с увлажнителя вообще не подтягивалась

nt0xa commented 3 years ago

А можешь подсказать пример запроса через curl для получения данных с датчика влажности? Пожалуйста

curl'ом не получится, там свой протокол поверх UDP. Можно использовать miiocli.

pip3 install python-miio
miiocli airhumidifiercb1 --ip <ip> --token <token> status

Либо можно использовать библиотеку, которую этот плагин использует:

npm install -g miio-cli
miio-cli -a <ip> -t <token> get_prop '["humidity"]'
nt0xa commented 3 years ago

И можно ли как-то отключить CurrentRelativeHumidity? Чтобы влажность с увлажнителя вообще не подтягивалась

Нет, сейчас возможности отключить CurrentRelativeHumidity нет

NikDevx commented 3 years ago

А можешь подсказать пример запроса через curl для получения данных с датчика влажности? Пожалуйста

curl'ом не получится, там свой протокол поверх UDP. Можно использовать miiocli.

pip3 install python-miio
miiocli airhumidifiercb1 --ip <ip> --token <token> status

Либо можно использовать библиотеку, которую этот плагин использует:

npm install -g miio-cli
miio-cli -a <ip> -t <token> get_prop '["humidity"]'

Благодарю!