Поиск смартфона в локальной сети
Давненько я не царапала ничего в свой блог. В последнее время как-то много всего навалилось. Магистратура душит, работы много, поездки всякие, к экзамену по китайскому надо готовиться.
Тем не менее, написать все же чего-нибудь хочется, потому сегодня принесу вам простой кусочек кода, который поможет найти телефон в локальной сети.
У меня часто происходит такая ситуация, что выходить надо было десять минут назад, а я бегаю по всей квартире, как ошпаренная в попытках вспомнить, куда засунула телефон в очередной раз. Сегодня эта проблема по-хорошему решена яндекс.станцией с ее невероятной функцией, которая по запросу “Алиса, найди телефон” просто прозванивает его. А еще эта функция есть на многих умных часах.
Но яндекс станция есть не у всех. А часы для поиска требуют постоянного bluetooth-соединения, что лично мне как раз и мешает искать смартфон по-человечески. Потому я придумала штуку. Можно запустить питон-скрипт на телефоне, сделав его сервером и, окончательно впав в отчаяние, прозвонить его с компа.
Вот, собсвтенно, код:
import os from flask import Flask app = Flask(__name__) # Функция для воспроизведения звука через VLC def play_sound_with_vlc(): # Замените на путь к вашему звуковому файлу os.system('vlc --intf dummy --play-and-exit ringtone.mp3') @app.route('/ring') def ring(): # Воспроизведение звука через VLC play_sound_with_vlc() return "Ringing!" @app.route('/stop') def stop(): # Остановка VLC (если это необходимо) os.system('pkill vlc') return "Stopped!" if __name__ == '__main__': app.run(host='0.0.0.0', port=2721)
Теперь подробнее:
При переходе по адресу http://<IP-устройства>:2721/ring: Termux начнёт проигрывать ringtone.mp3.
Вернётся ответ: "Ringing!".
При переходе по http://<IP-устройства>:2721/stop: Termux остановит воспроизведение.
Вернётся ответ: "Stopped!"
Звонок пройдет даже если телефон на беззвучном.
Важные условия запуска:
1. Работает только на Android с Termux. termux-media-player – часть Termux API, поэтому код не сработает на ПК или iOS.
2. Termux должен иметь доступ к мультимедиа. Разрешение даётся командой
termux-setup-storage
3. ringtone.mp3 должен лежать в той же папке, что и скрипт
4. Не добавляла проверку ошибок. Если плеер или файл недоступен – сервер "упадёт" (т.е. у вас должен быть установлен vlc, а звук лежать в той же папке, что и скрипт).
Как выглядит запуск в браузере:
Возможные улучшения
Поскольку вся работа реализуется через http GET-запрос, его можно воткнуть буквально куда угодно.
Я написала небольшое apk-приложени с одной кнопкой, что б останавливать музыку, когда телефон найден (в кнопку запихнула http://<IP-устройства>:2721/stop)
Также начала разрабатывать голосового помощника, который бы запускал поиск телефона по голосовому запросу, как Алиса. Реализовать получилось, но криво. Из-за слабых мощей компьютера обработка речи происходит не так быстро, как хотелось бы. Плюс, столкнулась с проблемой поиска подходящих речевых моделей как таковых, распознавание удается, но с раза третьего-четвертого. В силу плотной занятости кейс с голосовым помощником был отложен на неопределенный срок.
Есть идея сделать прям физическую кнопку на стене, которая бы замыкала контакты на условной esp, а она бы уже кидала GET-запрос на поиск телефона...это смешно, кринжово, но тоже в какой-то степени можно считать за решение.
В общем, сделать можно что угодно. Если б еще не было так лениво...
Рекомендуемые комментарии