Для разработки бота Telegram мне нужно, чтобы мой проект был доступен через интернет.
Конечно, можно открыть порты на роутере, если есть белый IP-адрес. Но если его нет или нет желания возиться с настройками роутера, можно воспользоваться Tuna.
Tuna позволяет без лишних сложностей создать туннель на локальный компьютер, который будет доступен из интернета и иметь SSL-сертификат, что важно при создании бота Telegram.
У Tuna есть различные тарифные планы, но меня вполне устраивает бесплатный вариант.
Для начала работы необходимо зарегистрироваться в Tuna и получить токен. После регистрации устанавливаем Tuna, используя PowerShell, с помощью следующей команды:
winget install --id yuccastream.tuna
После установки не забудьте перезапустить PowerShell. Без перезапуска PowerShell может не распознать команду «tuna».Чтобы установить токен, введите следующую команду:
Так как hub.docker.com стал не доступен для России, то у меня соответственно появились проблемы с обновление Home Assistant.
Уже написано куча статей как можно решить эту проблему: использовать VPN, использовать зеркала, AlexxIT предложил простой вариант обхода для Home Assistant через аддон AdGuard. Я же просто хочу показать как я реализовал обход блокировки hub.docker.org
Дано: Частный VPN сервер в амстердаме. Роутер Keenetic Giga
Что делаю:
1. Поднимаю VPN интерфейс
2. На 2ip.ru смотрю ip для hub.docker.org. Это будут 54.156.140.159, 44.221.37.199, 52.44.227.212.
3. Создаю в роутере маршруты для этих ip.
Тип маршрута -> Маршрут до узла
Описание -> Любое. Я указал hub.docker.org
Адрес узла назначения -> IP адрес полученный в предыдущем шаге.
Адрес шлюза -> Оставляем поле пустым.
Интерфейс -> Выбираем интерфейс поднятого VPN.
Добавлять автоматически -> Отмечаем
Эксклюзивный маршрут -> Отмечаем
4. Проверяю сайт hub.docker.org. Он открывается, а вот контейнеры в Home Assistant не обновляются. Проверил на десктопе запулить контейнер — тоже нет.
5. Ищу куда обращается Docker через Wireshark. Контейнеры он тянет с registry-1.docker.io. IP адреса: 54.236.113.205, 54.227.20.253, 54.198.86.24.
6. Добавляю маршруты в роутере для registry-1.docker.io.
После всех манипуляций у меня стал нормально обновляться Home Assistant и открываться hub.docker.org, а значит обход блокировки hub.docker.org работает. На этом все, спасибо за внимание! 🙂
Поскольку я часто использую гибернацией, я решил сделать гибернацию своего ПК через Home Assistant.
Если с выключением компьютера через RPC Shutdown всё понятно, то с переходом в режим гибернации возник вопрос, так как RPC Shutdown не может отправить ПК в этот режим.
Я начал искать варианты и наткнулся на программу под названием Airytec Switch Off. Эта программа позволяет автоматически или удаленно выключать компьютер с любого компьютера или мобильного телефона. Что для меня важно, так это то, что она имеет веб-интерфейс с ссылками на команды, из которых я и получил URL которые я использовал в Home Assistant.
Теперь я расскажу, как я реализовал это у себя. Для начала, нужно скачать и установить саму программу. После установки и запуска, в трее появится иконка. Чтобы получить доступ к настройкам программы, нужно кликнуть правой клавишей мыши по иконке и выбрать пункт Options.
Далее переходим во вкладку Remote и ставим галочку Enable web interface. После кликаем по View web interface.
Мы попадаем в веб-интерфейс программы, откуда и будем извлекать адрес ссылки для удаленного выключения/перезагрузки/сна/гибернации.
Чтобы получить адрес ссылки для выключения/перезагрузки/сна/гибернации, щелкните правой кнопкой мыши по ссылке и выберите Копировать адрес ссылки. В моем случае, если я хочу перейти в режим гибернации, ссылка будет выглядеть так:
http://localhost:700/?action=System.Hibernate
Чтобы использовать этот адрес, необходимо заменить localhost на локальный IP-адрес вашего компьютера. В моем случае это будет так:
http://192.168.30.68:700/?action=System.Hibernate
Обратите внимание, что эти адреса могут отличаться в зависимости от вашей конфигурации и настроек системы.
В Home Assistant необходимо создать команды Shell. Я сделал это сразу для всех вариантов.
Столкнулся с проблемой, не работает метод map() с методом paginate() в Laravel Eloquent. Метод map() создает новую коллекцию. Соответственно при попытке использовать его с методом paginate() ничего не получится. Используя map() мы получим коллекцию без пагинации.
Столкнулся с проблемой, что перестал обновляться проводник в Windows. Для любого действия, будь-то удаление или создание папки/файла, приходилось вручную обновлять проводник. При скачивании файла браузер подвисал на некоторое время. Также при запуске подвисали на некоторое время Яндекс.Диск и Яндекс.Заметки.
Перепробовал кучу разных способов решения данной проблемы начиная от восстановления системных файлов Sfc /scannow и заканчивая сканированием антивирусом своей системы. Долгое время не мог решить данную проблему, но решение оказалось очень простым.
Виновником моей проблемы оказалась «файлопомойка», которая после переезда стала не доступной. После удаления недоступного сетевого диска из сетевых расположений, моя проблема с обновлением проводника ушла.
Если вы столкнулись с подобной проблемой, рекомендую проверить, что у вас в сетевых расположениях.
Так сложилось, что появилась необходимость использовать именно DuckDNS в роутере Keenetic, хоть у него есть свой собственный. В данной статье я расскажу как настроить DuckDNS в Keenetic на примере Keenetic 4G.
Первым делом нужно установить пакет DDNS. Для этого идем в Управление -> Параметры системы -> Изменить набор компонентов.
Устанавливаем Клиент динамической службы DNS (DDNS).
После перезагрузки роутера идем в Сетевые правила -> Доменное имя -> DDNS.
В поле Сервис выбираем Другой. Адрес сервиса указываем https://www.duckdns.org/update?domains=mydomen&token=mysecrettoken не забыв указать свой домен и токен. Обратите внимание! URL необходимо указывать без параметра &ip=. Доменное имя, Имя пользователя, Пароль оставляем пустыми. Ставим галочку Определять мой IP-адрес автоматически.
Сохраняем настройки и переходим в Системный монитор -> Статус. В Интернет выбираем Подробнее о соединение. В Статус DDNS мы должны увидеть updated successfully.
На этом настройка DuckDNS в Keenetic завершена.
Прошивка камеры IPC8232SWC-WE от Ростелеком на оригинальную прошивку
Внимание! Автор не несет ответственность за ваши неудачи, и не призывает к действию! Все что вы делаете — вы делаете на свой страх и риск!
Данный способ прошивки подсмотрен на 4pda, дополнен и немного изменен для лучшего понимания.
Немного о камере
Данная камера была приобретена на Avito за копейки. Хотелось избавиться от камер Xiaomi и приложения MiHome. Оригинальная прошивка поддерживает протокол Onvif и RTSP, что собственно мне и было нужно для добавления камер в видеорегистратор и Home Assistant. Так же у камеры на ножке есть магнит, который позволяет крепить камеру на металлических поверхностях, либо на металлическом пятаке, который идет в комплекте и прикручивается на пару саморезов. Еще один из плюсов — наличие Ethernet разъема на камере.
Прошивка камеры
Для прошивки нужно вскрыть камеру поддев чем-нибудь плоским черную часть камеры.
После того, как отковыряли лицевую часть камеры аккуратной отключаем микрофон и подцветку.
После этого ищем UART рядом с Ethernet разъемом. Нас интересуют только контакты Tx Rx и Gnd.
К UART можно под паяться или же использовать иголки как сделал я. Так же нужно воткнуть LAN кабель.
Теперь качаем TFTP сервер, архив с прошивкой и Pytty.
Распаковываем файлы прошивки в рядом с TFTP сервером.
Редактируем файл manuinfo.txt под себя
DEVICE_SERIAL_NUMBER: серийный номер вашей камеры (12 знаков) MAC_ADDRESS: мак-адрес сетевого интерфейса в формате 0123-4567-89AB ACTIVE_CODE: регистрационный код для облака EZ (25 знаков). Предлагаю использовать следующий формат: 0SSSSSSSSSSSSMMMMMMMMMMMM (S — серийный номер, M — мак адрес) REGION_CODE: код региона IN — голосовые сообщения на английском, NONE — голосовые сообщения на китайском, FF — без голосовых сообщений
Запускаем TFTP, открываем Pytty выбираем наш COM порт и скорость 115200.
Подаем питание на камеру и жмем в Pytty Ctrl + Enter либо Ctrl + B чтобы остановить загрузку.
После того, как остановили загрузку нужно указать IP адрес камеры и IP адрес TFTP сервера.
ipaddr — адрес камеры, serverip — адрес tftp сервера.
В данной статье я подробно и наглядно расскажу как настроить и использовать связку Xdebug + OpenServer + PhpStorm.
Первым делом нужно включить расширение Xdebug в конфигурации PHP. Для этого нужно в OpenServer идем в Дополнительно > Конфигурация > PHP_8.1. Версия PHP у вас может отличаться.
В файле конфигурации нужно найти и раскомментировать строку:
zend_extension = xdebug
После нужно найти секцию [xdebug] и раскомментировать строки:
Теперь переходим к настройке PhpStorm. Комбинацией Ctrl + Alt + S или через File > Settings открываем настройки. Слева выбираем PHP > Debug. В открывшихся настройках снимаем галочки с Force break at first line when no path mapping specified и Force break at first line when a script is outside the project. Порты должны быть 9000 и 9003.
Далее в открытом проекте в правом верхнем углу выбираем Current File > Edit Configurations.
В открывшемся окне нажимаем + и выбираем PHP Remote Debug.
В этом окне нужно выбрать … напротив поля Server.
В очередном открывшемся окне тыкаем + и в полях Name и Host указываем имя нашего хоста и жмем OK.
В предыдущем окне в поле Name для удобства указываем имя нашего хоста. В поле Server выбираем наш созданный хост, а в IDE key пишем PHPSTORM. Жмет OK.
После того, как установили Xdebug helper кликаем по нему правой клавишей и выбираем Параметры.
В открывшихся настройках нас интересует параметр IDE key. Выбираем PhpStorm, т.к. его же мы указали при настройке ранее.
Теперь на странице хоста кликаем по иконке Xdebug helper и выбираем Debug. В моем случае хост будет plastpoliefir.lan. Жук должен загореться зеленым цветом.
В PhpStorm в правом верхнем углу также кликаем по жуку.
Теперь в проекте можно поставить точку остановки и сделать запрос в браузере.
Если все правильно сделали, то наше приложение остановиться в том месте, где мы установили точку остановки.
Так же можно посмотреть содержимое массивов и объектов.
Также в панели отладки можно посмотреть глобальные переменные, консоль, ответ нашего HTTP сервера и многое другое.
На этом настройка связки Xdebug + OpenServer + PhpStorm закончена. Надеюсь данная вам статья была полезна.