не понял про сложности с модулями бт в мдм, какое обращение к бд, какие сложности?
оба работают со свойствами и методами в последние передают параметры
там все просто и это базовые функции самого мдм
если тз исключить "плавание" определения по жпс с последующим озвучиванием, то
насчет ошибок, так их у вас намного больше будет
к примеру никого нет и вы подошли к входной двери, постояли и ушли
ваш алгоритм же определит что вы были в какой-то комнате
и т.д. и тп.
самое интересное, не известно с какой частотой сыпятся данные, ну и далее их обработка .... покажите количество запросов к бд общее? (помню у себя пока присутствие пилил - потом долго оптимизировал)
я так представляю что % 90 всех на это и применения этого в статье и нет, кроме обновления у юзеров двух свойств (причем это у вас у всей семьи браслеты, а у большинства не у всех или тёща ))) и тогда это бесполезно)
По поводу модуля btdevices от SergeJey
У меня он не заработал, так как использует hcitool lescan, а в новых версиях BlueZ это больше не работает.
# hcitool lescan
Set scan parameters failed: Input/output error
Разработчики рекомендуют использовать bluetoothctl. Я нашел как его использовать и сделал скрипт, который выдаёт результат в том виде, который выдавал hcitool и подменил его вызов в модуле. Модуль заработал. Но я не понимаю что он может делать, кроме как записывать в базу события о появлении блютуз устройств.
На странице модуля список устройств появляется, состояние Online или Offline отображается. Но как этим пользоваться?. Никаких методов к событию в модуле привязать нельзя. По этому я и решил, что надо лезть в базу и смотреть состояние. И вот это для меня сложность.
К устройству можно привязать пользователя, но что это даёт - не ясно. Ссылка на базу знаний не работает - ошибка 404. Поиск по базе знаний ничего не дал. На форуме тоже ничего интересного не нашел. Как использовать этот модуль я так и не разобрался.
Да ещё и список всех найденных устройств разростается за несколько дней так, что загрузка их списка занимает несколько минут. Приходится регулярно ходить туда и чистить.
Естественно, обновление модуля ломает мою модификацию.
Ну и модуль этот работает с блютуз адаптером подключенным к устройству, на котором работает мажор. Хорошо, что он есть, но мне не подошел.
Logrus (2023-09-13 01:13:57):
если тз исключить "плавание" определения по жпс с последующим озвучиванием, то1) в жпс есть точность и ее можно юзать в модуле если она передается
2) точность определения юзеров по-комнатно для тз избыточна и не решает тз, решение использование сенсора опенклосе на входной двери (ну если юзер дома и дверь не открывалась, то он никак не мог покинуть домашнюю локацию) ;)
1) Есть точность. Вот сейчас она у меня 100 метров. И что мне с этим делать? Нужно в методе написать код, который будет смотреть на точность и если она низкая, то ничего не говорить и atHome не менять? Возможно это вариант.
2) Я об этом сразу написал, что изначально хотел одно, а получилось другое. Это другое меня и заинтересовало, об этом другом я и написал. А опенклосе совершенно не решает проблему. Это не персонифицированный сенсор. Кто входит/выходит - не ясно. А может я открыл дверь, забрал посылку и закрыл дверь. И при этом, например, сын вышел и ушел, или одновременно с почтальоном мама пришла. Датчик на двери не особо поможет. Ещё учитывая то, что события связанные с изменением локации приходят с разной задержкой. Можно выйти из дома вынести мусор и получить событие что ты вышел уже после того, как ты вернулся.
А вот браслет можно мониторить достаточно точно и он привязан к пользователю.
Logrus (2023-09-13 03:25:17):
самое интересное, не известно с какой частотой сыпятся данные, ну и далее их обработка .... покажите количество запросов к бд общее? (помню у себя пока присутствие пилил - потом долго оптимизировал)
я так представляю что % 90 всех на это и применения этого в статье и нет, кроме обновления у юзеров двух свойств (причем это у вас у всей семьи браслеты, а у большинства не у всех или тёща ))) и тогда это бесполезно)
Данные сыпятся с желаемой частотой. Это настраивается в Тасмоте. В данный момент я отправляю данные с каждого сканера раз в 60 секунд. Раньше раз в 20 секунд отправлял. А браслеты анонсируют себя ещё чаще. MiBand7Pro раз в секунду это делает, но, возможно, потому что блютуз телефона выключен. Раз в 5 секунд точно можно было бы обновлять, только незачем.
К БД сейчас 133 запроса в секунду.
Браслетов у нас три, человек живёт в квартире четыре. Ну и делал это всё я для себя, не смотря на то, что это действительно бесполезно, так как у меня нет другой автоматики, которой можно было бы управлять на основании этих событий. Просто мне стало интересно это реализовать.
Logrus (2023-09-13 01:22:19):
насчет ошибок, так их у вас намного больше будет
к примеру никого нет и вы подошли к входной двери, постояли и ушли
ваш алгоритм же определит что вы были в какой-то комнате
и т.д. и тп.
Так алгоритм будет прав, потому что я почти что там был. А если и в коридоре тоже сканер поставить, то я останусь в коридоре. Тут же вопрос в том кому что нужно.
Вот кому-то нужно свет в туалете не выключать, если ты замер неподвижно в задумчивой позе и датчик движения тебя не видит. Так пожалуйста. Сканер поставил, браслет обнаружен - свет не выключается. Включать по датчику движения, а выключать по отсутствию браслета в туалете. Клёво же. :)
https://github.com/sergejey/majordomo-btdevices/bl...
там в самом цикле модуля вызов методов, а создания класса/объекта/методов при инсталляции увы нет ;)
при точности (у вас задано100) более заданной вообще не будет писать в бд
т.е. на улице жпс (это не точность, а погрешность) грешит на 10, а в квартире на 200 к примеру (вот и скачет)
Logrus (2023-09-13 11:19:11):
https://github.com/sergejey/majordomo-btdevices/bl...
там в самом цикле модуля вызов методов, а создания класса/объекта/методов при инсталляции увы нет ;)
Благодарю за наводку. Попробую воспользоваться.
Может, если бы всё было сделано при инсталляции модуля, или хотябы при наличии документации для модуля, я бы и не занялся тем, чем занялся.
А так я ещё и свою Тасмоту научусь компилировать. А то в прошивке с блютуз отсутствуют драйвера датчиков, а я на устройство припаял датчики освещённости с температурой, влажностью и давлением...
Logrus (2023-09-13 11:31:22):
при точности (у вас задано100) более заданной вообще не будет писать в бд
т.е. на улице жпс (это не точность, а погрешность) грешит на 10, а в квартире на 200 к примеру (вот и скачет)
Не понял. На сколько я понимаю, точность - это рассчетная величина и она передаётся гуглом в модуль.
Грешит оно всё время по разному. Я сижу на месте, у окна, телефон лежит на столе, а точность скачет от 15 до 100.
Я не знаю, используется ли значение точности модулем GPSTracker, но судя по всему нет. Мной точно не используется.
используется, в настройках если задали, то при ее превышении не будет это записывать
надо посмотреть жпс.пхп
Please login to leave comments. Join us!