Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Перестала работать в core-2021.6.4 #8

Open
kusok18 opened this issue Jun 13, 2021 · 39 comments
Open

Перестала работать в core-2021.6.4 #8

kusok18 opened this issue Jun 13, 2021 · 39 comments

Comments

@kusok18
Copy link

kusok18 commented Jun 13, 2021

Обновил HA до версии core-2021.6.4
Показания счетчиков перестали отображаться.
Если в терминале запустить команду "pip install aioblescan", интеграция начинает работать,
но это только до следующего перезапуска HA.
Почему aioblescan не подгружается автоматически, как это было в предыдущих версиях ХА?
Как бы это поправить, есть регулярная перезагрузка сервера, для стабильной работы, после этого показания автоматически не передаются в управляющую компанию.
Приходится после каждого перезапуска в терминале выполнять "pip install aioblescan", после чего все работает отлично.

Снимок экрана 2021-06-14 в 02 43 28

Снимок экрана 2021-06-14 в 02 44 48

Снимок экрана 2021-06-14 в 02 51 44

@heso
Copy link

heso commented Jul 8, 2021

та же беда

@raxers
Copy link
Owner

raxers commented Jul 13, 2021

По каким то причинам не устанаваливается модуль aioblescan, хотя он и есть в зависимостях.
Но к сожалению у меня под рукой нет ни HA, и счетчиков - поковыряться возможности нет. Да и со временем туго
Может кто-то знает какие изменения на это повлияли - отпишитесь сюда. Это сильно ускорит прогресс

@reverse24
Copy link

Тоже не работает.
В логах нашел это, не знаю связано с проблемой или нет:

/config/custom_components/elehant_water/sensor.py:63: RuntimeWarning: coroutine 'BLEScanRequester.send_scan_request' was never awaited
  btctrl.send_scan_request()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
/config/custom_components/elehant_water/sensor.py:20: RuntimeWarning: coroutine 'BLEScanRequester.stop_scan_request' was never awaited
  btctrl.stop_scan_request()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
/config/custom_components/elehant_water/sensor.py:71: RuntimeWarning: coroutine 'BLEScanRequester.stop_scan_request' was never awaited
  btctrl.stop_scan_request()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

@reverse24
Copy link

reverse24 commented Oct 3, 2021

Похоже что при заливке новой версии sensor.py (0.4.1-beta.1) что-то пошло не так, он не изменился (странно).
Только в манифесте обновился номер версии и всё...

@raxers
Copy link
Owner

raxers commented Oct 3, 2021

Похоже что при заливке новой версии sensor.py (0.4.1-beta.1) что-то пошло не так, он не изменился (странно). Только в манифесте обновился номер версии и всё...

Я плохо залил
Поправил в 0.4.1-beta.2

@reverse24
Copy link

reverse24 commented Oct 4, 2021

Обновился до 0.4.1-beta.2, не заработало.
В логах нашел следующее:

[homeassistant] Error doing job: Future exception was never retrieved
Traceback (most recent call last):
 File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run
   result = self.fn(*self.args, **self.kwargs)
 File "/config/custom_components/elehant_water/sensor.py", line 67, in update_counters
   conn, btctrl = current_event_loop.run_until_complete(fac)
 File "/usr/local/lib/python3.9/asyncio/base_events.py", line 618, in run_until_complete
   self._check_running()
 File "/usr/local/lib/python3.9/asyncio/base_events.py", line 578, in _check_running
   raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running

@raxers
Copy link
Owner

raxers commented Oct 4, 2021

Эта ошибка иногда появляется - это нормально
Странно что данные не собираются

@reverse24
Copy link

reverse24 commented Oct 7, 2021

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

2021-10-07 22:18:59 ERROR (MainThread) [homeassistant] Error doing job: Future exception was never retrieved
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/elehant_water/sensor.py", line 67, in update_counters
    conn, btctrl = current_event_loop.run_until_complete(fac)
  File "/usr/local/lib/python3.9/asyncio/base_events.py", line 618, in run_until_complete
    self._check_running()
  File "/usr/local/lib/python3.9/asyncio/base_events.py", line 578, in _check_running
    raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running
2021-10-07 22:19:59 ERROR (MainThread) [homeassistant] Error doing job: Future exception was never retrieved
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/elehant_water/sensor.py", line 67, in update_counters
    conn, btctrl = current_event_loop.run_until_complete(fac)
  File "/usr/local/lib/python3.9/asyncio/base_events.py", line 618, in run_until_complete
    self._check_running()
  File "/usr/local/lib/python3.9/asyncio/base_events.py", line 578, in _check_running
    raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running
2021-10-07 22:20:59 ERROR (MainThread) [homeassistant] Error doing job: Future exception was never retrieved
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/elehant_water/sensor.py", line 67, in update_counters
    conn, btctrl = current_event_loop.run_until_complete(fac)
  File "/usr/local/lib/python3.9/asyncio/base_events.py", line 618, in run_until_complete
    self._check_running()
  File "/usr/local/lib/python3.9/asyncio/base_events.py", line 578, in _check_running
    raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running
/usr/local/lib/python3.9/logging/handlers.py:1513: RuntimeWarning: coroutine 'BaseEventLoop._create_connection_transport' was never awaited
  record = self.dequeue(True)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

Аналогичное поведение в Home assistant на виртуалке (KVM под Linux) и на Raspberry.
Счетчики в наличии СВД-15 и СВТ-15, через приложение Android на телефоне считываются нормально.
Готов предоставить нужные логи, участвовать в экспериментах, пишите что надо сделать.

@alive-corpse
Copy link

+1 к предыдущему сообщению та же ошибка с эвент луп, при этом данные не собираются. Попытка установить aioblescan в том же venv, в котором бежит home assistant приводит к сообщению о том, что этот модуль уже стоит. Может ли это быть связано с установленной интеграцией Bluetooth Low Energy Monitor, собирающей данные с сяомишных устройств? Может быть она забирает hci?

│2022-01-20 00:35:05 ERROR (MainThread) [homeassistant] Error doing job: Future exception was never retrieved                                                                                 │
│Traceback (most recent call last):                                                                                                                                                           │
│  File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run                                                                                                                    │
│    result = self.fn(*self.args, **self.kwargs)                                                                                                                                              │
│  File "/opt/ha/config/custom_components/elehant_water/sensor.py", line 67, in update_counters                                                                                               │
│    conn, btctrl = current_event_loop.run_until_complete(fac)                                                                                                                                │
│  File "/usr/lib/python3.8/asyncio/base_events.py", line 592, in run_until_complete                                                                                                          │
│    self._check_running()                                                                                                                                                                    │
│  File "/usr/lib/python3.8/asyncio/base_events.py", line 552, in _check_running                                                                                                              │
│    raise RuntimeError('This event loop is already running')                                                                                                                                 │
│RuntimeError: This event loop is already running                                                                                                                                             │
│2022-01-20 00:35:35 ERROR (MainThread) [homeassistant] Error doing job: Future exception was never retrieved                                                                                 │
│Traceback (most recent call last):                                                                                                                                                           │
│  File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run                                                                                                                    │
│    result = self.fn(*self.args, **self.kwargs)                                                                                                                                              │
│  File "/opt/ha/config/custom_components/elehant_water/sensor.py", line 67, in update_counters                                                                                               │
│    conn, btctrl = current_event_loop.run_until_complete(fac)                                                                                                                                │
│  File "/usr/lib/python3.8/asyncio/base_events.py", line 592, in run_until_complete                                                                                                          │
│    self._check_running()                                                                                                                                                                    │
│  File "/usr/lib/python3.8/asyncio/base_events.py", line 552, in _check_running                                                                                                              │
│    raise RuntimeError('This event loop is already running')                                                                                                                                 │
│RuntimeError: This event loop is already running 

@SzenProgs
Copy link

SzenProgs commented May 1, 2022

Приветствую!
Я PHP-шник, и в питоне не шарю. Но пошарившись в интернете я пришел к выводу, что ошибка возникает в слишком большом количестве bluetooth девайсов в округе. Дело в том, что поиск и считывание счетчиков происходит интервалами функцией track_time_interval. Период вызова функции считывания показаний задаётся параметром scan_interval, который слишком мал. Получается так, что функция считывания все еще отрабатывает и aioblescan в этот момент занят. И в этот момент эта же функция запускается снова.
Как временное решение предлагаю увеличить параметр scan_interval до 120 (2 минуты) или больше. А в идеале, стоит переписать код, чтобы следующий цикл запускался не по интервалу, а по завершению предыдущего. Если руки дойдут до базового понимания питона, то думаю сделать форк с апдейтами. Сейчас у меня на руках СВТ-20 и СГБД-1,8 и я уже знаю их мак-адреса.

@SzenProgs
Copy link

SzenProgs commented May 1, 2022

UPD. Немного дополнил код в своём hass. Увеличил scan_interval до 600. Данные стали собираться не так шустро, но уже без ошибок. Добавил считывание показаний СВД-20, СВТ-20 и СГБД-1,8. Данные успешно снялись.
Если кто подскажет, как можно отлаживать HACS плагины без постоянной перезагрузки HA, соберу нормальный код и выкачу на обозрение.

Opera Снимок_2022-05-01_051850_192 168 0 2

@nemoyar
Copy link

nemoyar commented May 9, 2022

Добавил считывание показаний СВД-20, СВТ-20 и СГБД-1,8.

подскажите пожалуйста какой мак для газовых счетчиков? Купил СНБД-4.0, хочу добавить в HA.

@SzenProgs
Copy link

У СГБД-1,8 мак начинается на b0:10:01. По аналогии со счетчиками воды, предполагаю, что СГБД-3.2 - b0:0a:01, , СГБД-4.0 - b0:0b:01.

Я установил в телефон прогу BLE Scanner. Есть так же и в appstore. На телефоне модуль bluetooth должен быть не ниже 4.0. Запускаем сканнер вблизи счетчика и ищем мак, который начинается на b0.

Очень прошу засветить найденный мак адрес сюда (хватит первых 3 групп, остальные - это номер счетчика в hex). Я взялся за разработку интеграции по Элехант счетчикам. Собираю информацию, где могу. Отдел поддержки Элехант информацией не поделился.

@nemoyar
Copy link

nemoyar commented May 9, 2022

Очень прошу засветить найденный мак адрес сюда (хватит первых 3 групп)

нашел через aioblescan.
Для СГБД-4.0:
peer:
b0:12:01:ХХХХХХХ
Payload:
80:a0:0a:01:01:12:55:05:00:30:0f:00:00:6c:e0:c5:0b
Вы планируйте выкладывать свой код или самому исправить в hacs?

@SzenProgs
Copy link

Ага. Значит СГБД-3.2 - b0:11:01.
Планирую выложить. Как только разберусь с питоном и документацией к custom интеграциям. Документация запутанная, сложно вникнуть. На данный момент можно добавлять счетчики через интерфейс. Осталось собрать объекты в устройство. Это займёт некоторое время.

@nemoyar
Copy link

nemoyar commented May 9, 2022

Ага. Значит СГБД-3.2 - b0:11:01.

Смещения в payload для газовых счетчиков те же?
c_num = int.from_bytes(payload[6:8], byteorder="little")
c_count = int.from_bytes(payload[9:12], byteorder="little")

@SzenProgs
Copy link

SzenProgs commented May 9, 2022

Сделал форк от этого репо. У меня пока работает так.
Обязательно прочитать описание в форке. Есть изменения в описании сенсора.

@nemoyar
Copy link

nemoyar commented May 9, 2022

Сделал форк от этого репо

перенастроил интеграцию на ваш форк, все работает, спасибо!
Осталось прикрутить что-нибудь легкое для подсчета статистики
image

@rmsmirnov
Copy link

По состоянию на текущую дату - у меня снимаются показания с двухтарифного счётчика и через компонент от @raxers, и через форк от @SzenProgs. И в обоих компонентах - возникает ошибка на строчке с вызовом current_event_loop.run_until_complete(fac), даже с интервалом сканирования в 180 секунд.

@rmsmirnov
Copy link

Я добавил немного отладочных сообщений:

  1. В функции update_counters() в самом начале добавил вывод в лог значений переменных scan_duration и current_event_loop.
  2. Если условие if current_event_loop is None: выполняется (=true), то выводится сообщение "Starting new loop.."

В configuration.yaml я выставил scan_duration: 10 и scan_interval: 180.

Вот логи сразу после запуска/рестарта HA:

#033[36m2022-08-10 13:02:53.661 DEBUG (SyncWorker_3) [elehant_water] scan_duration = 10, current_event_loop = None#033[0m
#033[36m2022-08-10 13:02:53.663 DEBUG (SyncWorker_3) [elehant_water] Starting new loop..#033[0m
#033[36m2022-08-10 13:03:39.527 DEBUG (SyncWorker_3) [elehant_water] SEE 2 tariff counter#033[0m
#033[36m2022-08-10 13:04:24.320 DEBUG (SyncWorker_3) [elehant_water] SEE 2 tariff counter#033[0m
#033[36m2022-08-10 13:04:40.241 DEBUG (SyncWorker_3) [elehant_water] SEE 2 tariff counter#033[0m
#033[36m2022-08-10 13:05:12.076 DEBUG (SyncWorker_3) [elehant_water] SEE 2 tariff counter#033[0m
#033[36m2022-08-10 13:05:28.006 DEBUG (SyncWorker_3) [elehant_water] SEE 2 tariff counter#033[0m
#033[36m2022-08-10 13:05:53.663 DEBUG (SyncWorker_9) [elehant_water] scan_duration = 10, current_event_loop = <_UnixSelectorEventLoop running=True closed=False debug=False>#033[0m
#033[31m2022-08-10 13:05:53.677 ERROR (MainThread) [homeassistant] Error doing job: Future exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/elehant_water/sensor.py", line 90, in update_counters
conn, btctrl = current_event_loop.run_until_complete(fac)
File "/usr/local/lib/python3.10/asyncio/base_events.py", line 622, in run_until_complete
self._check_running()
File "/usr/local/lib/python3.10/asyncio/base_events.py", line 582, in _check_running
raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running#033[0m
/usr/local/lib/python3.10/asyncio/base_events.py:1897: RuntimeWarning: coroutine 'BaseEventLoop._create_connection_transport' was never awaited
handle = None # Needed to break cycles when an exception occurs.
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

То есть видно, что первый же запуск компонента не прерывается, и остаётся работать. Все последующие запуски компонента (с моими настройками это каждые три минуты) просто вываливаются с ошибкой. За первые три минуты компонент успевает несколько раз получить данные с моего 2х-тарифного счётчика (при этом он видит ещё десяток других Bluetooth-устройств, но проверка по MAC-адресу их отбрасывает). Через день-два работы компонент подвисает, данные в HA перестают обновляться, нужно перегрузить supervisor, и снова данные начинают обновляться – также только в результате работы первого запуска компонента.

@raxers, @SzenProgs - вдруг у вас появилось время посмотреть почему цикл не завершается по времени, почему не срабатывает отсечка по scan_duration? Подскажите плз куда дальше покопать...

@rmsmirnov
Copy link

В общем, вот что я выяснил:

  1. Передавать аргумент scan_duration при вызове функции send_scan_request(scan_duration)) бесполезно - эта функция не умеет работать с таймаутом. Вот тут тело этой функции, она всего на 20 строчек кода - https://github.com/frawau/aioblescan/blob/master/aioblescan/aioblescan.py
  2. Я добавил callback-функцию (назвал её stop_loop(loop)) и её вызов через current_event_loop.call_later(scan_duration, stop_loop, current_event_loop) перед вызовом current_event_loop.run_forever(). Функция stop_loop() выполняет всего одну команду loop.stop().
  3. Заменил current_event_loop(btctrl.stop_scan_request()) на current_event_loop.run_until_complete(btctrl.stop_scan_request()).
  4. Добавил current_event_loop = None после current_event_loop.close().

Всё заработало как часы, все ошибки ушли.

Если авторы компонента заглянут сюда - пришлю им код. Не очень хочу делать ещё один форк..

@SzenProgs
Copy link

Приветствую! С удовольствием гляну на ваш код.

@rmsmirnov
Copy link

rmsmirnov commented Aug 11, 2022

@SzenProgs,

Попробую так отправить, в архиве (так как zip - это supported format).. Если не получилось - скажите, отправлю другим способом..

sensor.zip

@empenoso
Copy link

empenoso commented Oct 2, 2022

Всем привет!
Только что установил дополнение из https://github.com/SzenProgs/elehant_water.
А как id: 60718 добавлять - это значение без 0 должно быть?

photo_2022-10-02_10-40-27

@SzenProgs
Copy link

@empenoso, да, без ведущих нулей.

@Hawk-3
Copy link

Hawk-3 commented Oct 27, 2022

У СГБД-1,8 мак начинается на b0:10:01. По аналогии со счетчиками воды, предполагаю, что СГБД-3.2 - b0:0a:01, , СГБД-4.0 - b0:0b:01.

Я установил в телефон прогу BLE Scanner. Есть так же и в appstore. На телефоне модуль bluetooth должен быть не ниже 4.0. Запускаем сканнер вблизи счетчика и ищем мак, который начинается на b0.

Очень прошу засветить найденный мак адрес сюда (хватит первых 3 групп, остальные - это номер счетчика в hex). Я взялся за разработку интеграции по Элехант счетчикам. Собираю информацию, где могу. Отдел поддержки Элехант информацией не поделился.

Добрый день! Установил вашу интеграцию. У меня газовый счетчик СГБД-4.0 ТК (видимо с термокоррекцией) судя по скриншоту с приложения Элеханта. У него mac b0:32:01:00:01:b7. Я даже дописал его в sensor.py:
if (str(mac).find('b0:10:01') !=-1) or (str(mac).find('b0:11:01') !=-1) or (str(mac).find('b0:12:01') !=-1) or (str(mac).find('B0:32:01') !=-1):
Однако показания не считываются. У меня давно установлен водный счетчик. Он продолжает работать как и раньше. А газовый не хочет. Может быть только добавление мака мало?
Снимок экрана от 2022-10-27 15-58-47
photo_2022-10-27_15-53-35

@Hawk-3
Copy link

Hawk-3 commented Oct 27, 2022

  • platform: elehant_water
    scan_duration: 15
    scan_interval: 600
    measurement_water: l
    measurement_gas: m3
    devices:
    • id: 24536
      type: water
      name: "Холодная вода"
    • id: 439
      type: gas
      name: "Natural gas"

Снимок экрана от 2022-10-27 16-01-46

@SzenProgs
Copy link

Приветствую!
Предполагаю, что у счетчиков с термокомпенсацией отличаются пейлоады. Хорошо бы трансляцию счетчика пощупать...

@Hawk-3
Copy link

Hawk-3 commented Oct 27, 2022

Здравствуйте. Если вы мне подскажете, что нужно сделать для "ощупывания" трансляции, то я попробую получить нужные данные.

@Hawk-3
Copy link

Hawk-3 commented Oct 30, 2022

Здравствуйте. На счет передачи данных со счтечика газа с термокоррекцией.
Я нашел скрипт https://support.wirenboard.com/t/podderzhka-schetchikov-vody-elehant/4809 (elehant-scan.sh)
Запустил его в оригинале (с фильтрацией по mac для водного счетчика)

` # process only Elehant packets
if [[ ! $packet =~ ^043E210201.{10}0201B0 ]]; then
return
fi

./elehant-scan.sh
24536|16.6304|16630.4|-86|30-10-2022 22:40:07
24536|16.6304|16630.4|-84|30-10-2022 22:40:38`

А потом поправил фильтрацию mac для своего газового счетчика с термокоррекцией и тоже получил нужные данные.

` # process only Elehant packets
if [[ ! $packet =~ ^043E210201.{10}0132B0 ]]; then
return
fi

./elehant-scan.sh
439|0.7635|763.5|-56|30-10-2022 22:37:25
439|0.7635|763.5|-48|30-10-2022 22:38:18
439|0.7635|763.5|-50|30-10-2022 22:38:30
439|0.7635|763.5|-48|30-10-2022 22:38:46
439|0.7635|763.5|-50|30-10-2022 22:38:49`

Т.е. получается, что данные оба счетчика передают. И передаются вроде бы идетично. Но в интеграции и хомассистансе по-прежнему газовый не виден. ( Что может быть не так?

@Hawk-3
Copy link

Hawk-3 commented Oct 30, 2022

Решил еще прикрепить дамп:
ble1.dump.gz
Может как то поможет. Открыавет wireshark-ом
Снимок экрана от 2022-10-30 23-22-41

@Hawk-3
Copy link

Hawk-3 commented Nov 3, 2022

Вопрос снимается!
Заменил строку:
if (str(mac).find('b0:10:01') !=-1) or (str(mac).find('b0:11:01') !=-1) or (str(mac).find('b0:12:01') !=-1) or (str(mac).find('B0:32:01') !=-1):
на
if (str(mac).find('b0:32:01') !=-1):
И понял, что проблема в регистре.
В интерфейсе увидел:
Снимок экрана от 2022-11-04 02-00-38

В дэбаге тоже значения увидел:

2022-11-04 02:00:50.778 DEBUG (SyncWorker_6) [elehant_water] Found MAC = b0:32:01:00:01:b7
2022-11-04 02:00:50.778 DEBUG (SyncWorker_6) [elehant_water] SEE gaz counter
2022-11-04 02:00:50.779 DEBUG (SyncWorker_6) [elehant_water] c_num serial gas = 439
2022-11-04 02:00:50.779 DEBUG (SyncWorker_6) [elehant_water] c_count gas = 7635

2022-11-04 02:01:01.173 DEBUG (SyncWorker_6) [elehant_water] Found MAC = b0:01:02:00:5f:d8
2022-11-04 02:01:01.174 DEBUG (SyncWorker_6) [elehant_water] SEE 1 tariff counter
2022-11-04 02:01:01.174 DEBUG (SyncWorker_6) [elehant_water] c_num serial water = 24536
2022-11-04 02:01:01.174 DEBUG (SyncWorker_6) [elehant_water] c_count water = 175839```


@SzenProgs
Copy link

Внёс правки в форк.
Работы много, не успеваю реагировать на сторонние проекты.
Спасибо за информацию по СГБД-4,0 ТК!

@Hawk-3
Copy link

Hawk-3 commented Nov 6, 2022

Внёс правки в форк. Работы много, не успеваю реагировать на сторонние проекты. Спасибо за информацию по СГБД-4,0 ТК!

Да не за что. Потихоньку информация по MAC счетчиков собирается.
Хорошо бы еще что бы вот это #9 кто-то посмотрел и что-то посоветовал, как пофиксить

А еще в примере сенсора в README видимо надо заменить: measurement_water: l на measurement_water: L

@SzenProgs
Copy link

А еще в примере сенсора в README видимо надо заменить: measurement_water: l на measurement_water: L

Это значения не имеет. В коде проверка на "m3". Если введено что-то другое - то будут литры.

Хорошо бы еще что бы вот это #9 кто-то посмотрел и что-то посоветовал, как пофиксить

Постараюсь внести правки.

С некоторых пор у HA появилась возможность использовать нативные методы для работы с bluetooth. Начал разработку кода, но сам столкнулся с проблемой. Мой Raspberry Pi 4 перестал видеть счетчики элехант и только их. При этом другие BLE датчики видны без проблем.

@Hawk-3
Copy link

Hawk-3 commented Nov 7, 2022

Добрый день! Про литры я имел ввиду, что заменить примере описания конфига в "ридми" l на L (возможно для HA это имеет значение... но это не точно)
measurement_water: l - отображать показания воды в литрах
measurement_gas: l - отображать показания газа в литрах

А что касается BLE и Pi, то как вариант попробовать отдельный BT-адаптер. Может он увидит. У меня еще был момент (до обновления HA на 2022.11), что нитивная итеграция блютуса от HA видела mac встроенного в R-pi BT-адаптера как AA:AA:AA:AA - я удивился, но забил. потому что все равно использовал выносной. А после обновления на последнюю версию вновь появился реальный mac. Был какой-то глюк видимо. Но у вас скорее всего дело не в этом, раз видятся другие BLE-устройства. Еще как вариант послушать эфир тем bash-скриптом, ссылку на который я скидывал выше.

@SzenProgs
Copy link

По BLE проблема оказалась тривиальной. Моя малинка в корпусе Argon One M2 в алюминии. А в дом пришли пару десятков Zigbee выключателей (роутеров) и датчиков. В результате частота 2,4 ГГц была забита и дальность приёма BLE уменьшилась. Пришлось колхозить внешнюю антенну для аргона. Впаялся пигтейлом и вывел антеннку. Теперь вижу счетчики (все 5 штук).

photo_2022-11-08_17-35-35

Оффтоп, конечно, но может кому поможет.

@empenoso
Copy link

А кто знает как добавить эти счётчики в раздел Потребление воды HA? http://homeassistant.local:8123/config/energy

image

@SzenProgs
Copy link

@empenoso, а вы точно последнюю версию интеграции с моего форка используете? Там этот функционал уже давно реализован.
SzenProgs/elehant_water

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants