All streams
Search
Write a publication
Pull to refresh
2
0
Send message

Была идея сделать из андроид приставки подобие AirPlay. Подключал оптический выход приставки к оптическому входу ресивера с акустикой. Дебиан запускал с microSD и настраивал там PulseAudio для получения аудиопотока из сети и трансляцию его на оптический выход. Трансляция аудио с другой линукс машины без вопросов. С windows куча приседаний начиная от виртуальной звуковой карты, либо портированного PulseAudio, еще какой-то софт с гитхаба пробовал, всё не понравилось. Преследовали щелчки если буферизацию маленькую ставил, отставание звука от видео, отваливались клиенты если транслировал с двух источников, приставка не справлялась с передискретизацией аудио, и другие "прелести". Тогда отложил эту идею в долгий ящик, даже не опробовав трансляцию со смартфона. Ваша статья пробудила воспоминания, надо будет опять изучить вопрос.

Картинка с кабелями сгенерирована. Текст не читаем.

Огорчает (немножечко) отсутствие ASIC майнеров околокиловаттной мощности. Три киловатта это много.

Такой вариант предусмотрен, в ответ отправляется 302 Temporary Redirect.

Там еще есть предложение использовать в качестве IP адреса 8.8.8.8 ссылаясь на жестко заданный адрес DNS сервера в андроид. Но это получается то же самое, что и любой глобальный адрес. И не понятно что же тут конкретно сработало. А вот как перенаправить пакет с DNS запросом в адрес 8.8.8.8 на локальный DNS сервер на 192.168. на esp32 я чёт с наскока не придумаю.)

Касательно перехвата запросов, DNS server из примеров esp32 перехватывает вообще все запросы, в логах это видно. Это дело я первым делом проверил. Потом обратил внимание, что если адрес локальный у портала, то в настройках Wi-Fi в смартфоне есть кнопка "требуется настройка" (могу путать, уже подзабыл) и она ведет на портал, но сам портал, при подключении к точке доступа, не выскакивает. Если найдется в будущем решение этой заморочки, то я изменю адрес на локальный.

WiFiManager - отличный проект, он использует фреймворк Arduino, я фреймворк Arduino не использую. Есть еще менеджер Wi-Fi https://github.com/tonyp7/esp32-wifi-manager тоже очень хороший проект, использует парадигму очередей сообщений и базовый фреймворк ESP-IDF. Из-за этого исходники читаются не очевидно и кое где не используются возможности ESP-IDF фреймворка. Там некрасиво (по моему скромному мнению) написан обработчик http запросов. Ещё esp32-wifi-manager всегда запускается в полном объеме, с вебсервером, с очередями. Я решил чуток все это исправить и остановиться уже не смог.) Но за то изучил html с css и JS.

Такое поведение Captive Portal наблюдается на всех локальных адресах, на указанных вами Captive Portal тоже автоматически не вылезает. Поискал опять, и опять ничего толкового не нашел.

https://github.com/esp8266/Arduino/commit/adf2b14a6a1493b324d8e176a1519af76bd7e5fb

С андроид смартфонов Captive Portal на локальных адресах типа 192.168.4.1 сам не выскакивает. Но если адрес назначить глобальный, типа 200.200.200.1, то Captive Portal на андроид смартфоне выскочит сам. Исследовал этот вопрос пока писал https://github.com/uqfus/esp32-wifi-provision-care для esp32. С чем связано могу только догадываться, на стэкексчендже такое решение нашел без указания на источник, а конкретных руководящих документов на этот счет не нашел.

Ну и касательно прошивки через подключение устройства через USB, вам не лень подключать, и отключать, приносить, и уносить esp32? Можно добавить обработчик POST запроса и прошивать устройство по сети с использованием curl. Пример тут смотрите https://github.com/uqfus/esp32-wifi-provision-care/tree/main/examples/esp32-firmware-upload-ota-example

... только необходимо изучить язык разметки html, изучить стили css, ну и javascript. Учитывая их "совершенно не строгую типизацию" переменных, разработка интерфейса скатывается в "добавил свойство в css, перегрузил страницу в браузере, с удивлением обнаружил, что свойство не применимо в текущем контексте". Лыко и мочало начинай с начала. Но наше "наиболее" перевешивает все.

Стоит посмотреть сколько процессов вообще крутится на ESP32 uxTaskGetNumberOfTasks. У меня 11 показывает в скетче осуществляющем только соединение Wi-Fi.

Добавил анимации к кнопке по гайду https://habr.com/ru/companies/netologyru/articles/655337/ и получилось красиво.

Вы очень болезненно отреагировали на мой комментарий. Я тоже на критику болезненно реагировал сразу после вуза.)

Если вы пишете для себя то пишите как вам удобно и как вам красиво. А если пишете для других людей, а опубликованная статья подразумевает, что вы написали этот код не только для себя, то пишите код так, чтобы другим людям было приятно его читать. А то получится, что вы "изобрели вечный двигатель открытого типа", но никто не смог в документации разобраться как он работает.

Касательно комментирования кода. Многие имена переменных совершенно ни о чем не говорят при первом взгляде, когда в голове еще нет контекста. Я бы даже предложил провести минификацию исходного кода, и меньше объема занимать будет, и читаемость не ухудшится.)

О магических константах - 42. Вы сразу же должны понять что это за константа такая.)

Блокировки побудили меня наконец-то подключиться к туннельному брокеру и получить IPv6. В принципе настройки просты, но есть подводные камни. Конкретно у меня конфиг от туннельного брокера сразу не заработал, надо было убрать одну строку. Зато после запуска порадовала магия SLAAC. На всех компьютерах, виртуальных машинах, смартфонах, планшетах, умной колонке, и даже устройствах умного дома - появился IPv6 адрес. Проверил, все они стали доступны извне. Ютюб тоже стал загружаться.

Оптический кабель приходит в роутер от провайдера, и этот роутер работает в режиме бриджа. Просто роутер от провайдера устарел, но как преобразователь оптики в медь работает великолепно. Далее медным патчкордом до роутера основного. Потом медным патчкордом до сервера. На сервере крутится виртуалка. В виртуалке настроен сетевой интерфейс, создан туннельный интерфейс до туннельного брокера, настроен и запущен демон SLAAC. Ну и везде включена маршрутизация пакетов IPv6. Вот такая матрешка, работающая матрешка.

Лапша из if не читаема. Воспользовались бы switch-case вариантом.

Велосипедов полон код. Особенно доставило ваше "!0".

С комментариями переборщили, следует писать код так чтобы он был понятен с минимумом комментариев.

"Магических" констант в коде не должно быть, ваша переменная SostWiFi постоянно сравнивается с этими "магическими" константами.

Писал captive portal для esp32, подключил фреймворк бутстрап через CDN, запустил и... тут-то до меня дошло, что на esp32 интернета-то ещё пока нету.)

А есть что где почитать подробнее? Гуглится только "пирогенетическая переработка древесины" но там кислоты на выходе, да и катализаторов никаких нет?

Я бы на вашем месте пошел бы ещё дальше. Убрал бы ворота совсем. Нет ворот нет проблем.)

Инженер, с большой буквы Инженер, гадостей от железа никогда не ожидает, у него все по регламенту. Джуны, которых допустили "поковырять" сервер, являются еще личинками инженеров и допущены с одной целью - показать себя. После Инженер поставит оценку выполненной работе, очистит сервер от всего, и накатит систему по регламенту. Если у вас в организации нету инструкций и регламентов, то извините вас нельзя допускать к работам.

Не выдумывайте странные форсмажоры типа "через сотни лет не сможет загрузиться", "рухнет питание цод Tier3", "Ты туда не ходи, ты сюда ходи. Кирпич башка попадёт, что тогда будет?" это просто смешно.

Создать на HDD три раздела, на третьем сделать pvcreate, добавить его к существующей группе vgextend, затем заняться уменьшением томов lvresize и все такое, переместить тома на HDD pvmove, удалить из группы vgreduce NVME.

Виртуозы делают эту процедуру без выведения сервера из работы. LVM написан админами для админов.

В windows 11 есть утилита tar.exe, и она даже по умолчанию пишет в \\.\tape0. Но все мои приседания в надежде записать этой утилитой картридж из windows упиралось в ошибку. Пробовал LTO3 LTO6 win10 win11 win7. Так что для получения радости от записи картриджа линукс наше все. Данные пишу не крупными кусками. После перемотки в конец данных на ленте дописываются новые файлы около 250Гб | tar | mbuffer - буферизация в ОЗУ | лента. Для LTO6 250Гб это минуты 23. Для статистики можно запрашивать smart от привода. Можно запрашивать информацию о картридже lto-info(на гитхабе нашел) sg_read_attr тоже какую-то статистику дает.

Скрытый текст

Opening device /dev/nst0
Checking whether device is ready
Unit is ready
Device /dev/nst0 opened
Generic SCSI-2 tape (114)
Residual count: 0
Device registers: 5a000000
Status registers: 41010000
BOT ONLINE IM_REP_EN
Error register: 0
Possibly inaccurate:
Current file: 0
Current block number: 0

Reading attribute 41/41...
Drive information:
Vendor : HP
Model : Ultrium 6-SCSI
Firmware: J5EZ
Medium information:
Cartridge Type: 0x00 - Data cartridge
Medium format : 0x5a - LTO-6
Formatted as : 0x5a - LTO-6
Assign. Org. : LTO-CVE
Manufacturer : FUJIFILM
Serial No : EU0NUX6EDJ
Manuf. Date : 2015-01-21 (roughly 9.7 years ago)
Tape length : 846 meters
Tape width : 12.7 mm
MAM Capacity : 16384 bytes (3062 bytes remaining)
Format specs:
Capacity : 2500 GB native - 6250 GB compressed with a 2.5:1 ratio
R/W Speed : 160 MB/s native - 400 MB/s compressed
Partitions: 4 max partitions supported
Phy. specs: 4 bands/tape, 34 wraps/band, 16 tracks/wrap, 2176 total tracks
Duration : 4h20 to fill tape with 136 end-to-end passes (115 seconds/pass)
Usage information:
Data written - alltime: 7743077 MiB ( 7561.60 GiB, 7.38 TiB)
Data read - alltime: 4251445 MiB ( 4151.80 GiB, 4.05 TiB)
Data written - session: 0 MiB ( 0.00 GiB, 0.00 TiB)
Data read - session: 0 MiB ( 0.00 GiB, 0.00 TiB)
Previous sessions:
Session N-0: Used in a device of vendor HP (serial HUJ5032VVL)
Session N-1: Used in a device of vendor HP (serial HUJ5032VVL)
Session N-2: Used in a device of vendor HP (serial HUJ5032VVL)
Session N-3: Used in a device of vendor HP (serial HUJ5032VVL)

  • Cartridge Memory Info =====================

  • Attribute values:

  • Remaining capacity in partition [MiB]: 845290

  • Maximum capacity in partition [MiB]: 2499053

  • TapeAlert flags: 0

  • Load count: 50

  • MAM space remaining [B]: 3062

  • Assigning organization: LTO-CVE Format density code: 0x5a

  • Initialization count: 1

  • Volume identifier: Volume change reference: 0x35d

  • Density vendor/serial number at last load: HP HUJ5032VVL

  • Density vendor/serial number at load-1: HP HUJ5032VVL

  • Density vendor/serial number at load-2: HP HUJ5032VVL

  • Density vendor/serial number at load-3: HP HUJ5032VVL

  • Total MiB written in medium life: 7978544

  • Total MiB read in medium life: 4251445

  • Total MiB written in current/last load: 235466

  • Total MiB read in current/last load: 0

  • Logical position of first encrypted block: [ff]

  • Logical position of first unencrypted block - after first encrypted block: [ff]

  • Medium manufacturer: FUJIFILM

  • Medium serial number: EU0NUX6EDJ

  • Medium length [m]: 846

  • Medium width [0.1 mm]: 127

  • Assigning organization: LTO-CVE

  • Medium density code: 0x5a

  • Medium manufacture date: 20150121

  • MAM capacity [B]: 16384

  • Medium type: 0x0 Medium type information: 0x0 Vendor specific medium attribute 0x1000: 00 9d 70 92 25 47 36 41 42 4d 4b 4d 36 46 55 4a 49 .p.%G6ABMKM6FUJI 10 46 49 4c 4d 00 02 ad bc 00 20 00 00 FILM..... .. Vendor specific medium attribute 0x1001: 00 9d 70 92 25 47 36 41 42 4d 4b 4d 36 45 55 30 4e .p.%G6ABMKM6EU0N 10 55 58 36 45 44 4a 00 20 UX6EDJ.

  • Error Correction Info =====================

  • smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.1.0-25-amd64] (local build) Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor: HP
Product: Ultrium 6-SCSI
Revision: J5EZ
Compliance: SPC-4
Logical Unit id: 0x5001438031b064f2
Serial number: HUJ5032VVL
Device type: tape
Transport protocol: Fibre channel (FCP-4)
Local Time is: Wed Oct 2 23:49:44 2024 MSK
Temperature Warning: Disabled or Not Supported

=== START OF READ SMART DATA SECTION ===
TapeAlert Supported
Current Drive Temperature: 41 C
Drive Trip Temperature:

Error counter log:
Errors Corrected by Total Correction Gigabytes Total
ECC rereads/ errors algorithm processed uncorrected
fast | delayed rewrites corrected invocations [10^9 bytes] errors
read: 0 0 0 0 0 0.000 0
write: 13 0 0 0 25 0.000 0

Device does not support Self Test logging

Моторы привода ленты сильно греются, при установке в обычный ATX корпус нужен выделенный кулер рядом. Поэтому выбираем внешний LTO привод. Если стример перегреется, то сработает защита, запись останавливается, и продолжается при остывании. Внешний привод можно отключить и положить в коробку - не сосет лишнюю пыль. SAS HBA стоят дороже и требуют охлаждения, FC чуть меньше греется, и обходится корпусным вентилятором. Так что если нет SAS жестких дисков и не планируется, то FC будет дешевле, и кабель FC тоже будет дешевле. Разбираться только в кабелях придется, есть пассивные медные, активные оптические монолитные, есть SFP модули под многомодовое оптоволокно. Оптическим волокном привод можно в соседний подъезд поставить.

На ESP32 беспроводно смотрю логи через телнет https://github.com/h2zero/esp-libtelnet - Remote console over telnet for esp32 devices. Можете там почерпнуть идею о перенаправлении stdout и stderr.

Information

Rating
6,295-th
Registered
Activity