Tv box with linux

Содержание
  1. Tv box with linux
  2. О чем тут написано
  3. Сборка образа Armbian для TV-Box HK1
  4. Проблемы
  5. не загружается при отсоединенной последовательной консоли
  6. Не смог загрузить образ
  7. Загрузка с sd-карты для переустановки системы
  8. fdt задан в U-Boot
  9. Раскирпичивание
  10. НЕАКТУАЛЬНОЕ
  11. Как загружаться
  12. HK1 Box
  13. Подключение к отладочной консоли RS-232
  14. Извлечение dtb (DeviceTreeBlob)
  15. Изменение аппаратных настроек в файле dtb с помощью DTC
  16. Изменение объема памяти, выделенной видеоадаптеру
  17. Изменение доступного объема RAM
  18. Загрузка
  19. Последние эксперименты
  20. Ошибки
  21. УДАЛОСЬ ЗАГРУЗИТЬСЯ
  22. Linux\*Elec на tv-box Z69 Amlogic S905X
  23. Введение.
  24. Сравнение.
  25. Установка ОС.
  26. Пример №0: Тривиальный. Настройка торентокачалок, файлохранилок.
  27. Пример №1: Установка системы домашней автоматизации на примере Domoticz (или majordomo\OpenHAB по вкусу).
  28. Пример №2: Видеонаблюдение на базе motion+motionEye.
  29. Пример №3: Продвинутый. Управление системой через Телеграм с помощью бота на Python.

Tv box with linux

  • Tanix TX9S – Android TV Box – Amlogic S912 – 2GB RAM / 8GB Storage
  • OS: Android 7.1
  • CPU: Amlogic S912, Octa core ARM Cortex-A53 2.0GHz,
  • GPU: Mali T820MP3
  • RAM: 2GB DDR3 Storage: 8GB eMMC
  • Wifi: 802.11 b/g/n
  • LAN: Gibabit Ethernet 10/100/1000
  • USB: 2 x USB 2.0 + SD Card
  • Официальная страница

Сообщение отредактировал Silver8025 — 08.10.21, 06:55

Сообщение отредактировал oleg1810 — 10.01.20, 11:36

oleg1810, Я сделал точно так же, как на картинке — не работает. У меня есть телевизор Samsung Tizen.

Сообщение отредактировал smsliverpool — 10.01.20, 17:39

smsliverpool, Это же не перестановка стока, а установка кастома Frankenstein Evolution 3.0. Я бы не рисковал, пока не дождёмся бэкап стока для AmLogic USB Burning Tool от Таникса. Вдруг что-то пойдёт не так, а вернуться не на что будет. тем более не понятно откуда взяты файлы для загрузчика для нашей коробки, если нет стока бэкапа под бокс. Конечно, возможно, что вляли какие-то совместимые файлы от других коробок, да и кастомы некоторые уже сущeствуют для нашей коробки, но у них проблема с wifi модулем :unsure:

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

Как портировать прошивку.img для коробки с lpddr3.
Наверное не стоило эту мелочь расписывать, все элементарно.

Суть: взять прошивку для коробок с DDR3(4) и пересобрать с загрузчиками для LPDDR3 памяти.
Просто так не получится запустить прошивку от ddr3(4). В лучшем случае в ubt будет ошибка, в худшем будет кирпич. А в случаи прошивки для microSD(я про обновления в zip архиве), то с большой вероятностью будет кирпич.

Сообщение отредактировал TechByte — 10.01.20, 20:50

Источник

О чем тут написано

Сборка образа Armbian для TV-Box HK1

Сама плата HK1 естественно не поддерживается дистрибутивом, но построена на поддерживаемой платформе Amlogic S905X3 (meson-sm1).
Чип на моей платформе обозначается как meson-sm1. Чтобы собрать образ под этот чип над найти наиболее похожую плату из списка имеющихся. Для этого в директории, куда скачали репозиторий armbian выполняем:

На данный момент наиболее похоже на то что мне нужно выглядит файл odroidc4.conf.
Собираю Ubuntu 20.10:

На моем ноуте с процессором Ryzen 4800H сборка в докере идет 47 минут (с учетом выкачивания всех зависимостей, канал 100Мбит/с), а после выкачивания зависимостей — 8 минут.
После того, как я подключился к консоли, дождался загрузки android’а, подключил флешку с файлом образа и выполнил:

Бокс ожидаемо окрипичился :))) с таким сообщением (среди прочих):

Судя по всему это значит, что параметры инициализации памяти, которые есть в новом загрузчике не подошли к моей железке. Вот тут: https://github.com/3F/aml_s905_uboot я нашел как можно их взять из старого загрузчика и добавить в новый. План был такой — с помощью Amlogic USB Burning Tool я прошью старую прошивку, а дальше — выдеру старого бутлоадера параметры для инциализации памяти. НО это не понадобилось!!
Оказалось, кнопка Reset на моей коробке не работает (она в разъеме 3,5мм) и воспользоваться Amlogic USB Burning Tool я не смогу. После подключения коробки USB-шнурком A-A к ноуту и подаче питания при зажатой (предполагаемой) кнопкой Reset в настольной системе новое USB-устройство не появлялось, а в консоли всё тот же boot loop.
Я внимательно изучил печатную плату возле чипа флешки, а также на обратную исторону и увидел пару контактных площадок.
Терять было нечего — с помощью dd я залил на SD-карту в самое начало карты старый bootloader (слава богу я сохранил все разделы со старой прошивкой), вставил в коробку SD-карту, подал питание и замкнул контактные площадки на обратной от чипа флехи стороне платы отверткой.
Вместо таких сообщений в начале лога:

Внезапно — она не нашла встроенный NAND-flash, но нашла опреативку, SD-карту и сначала загрузилась старым бутлоадером:

Затем прошло что-то похожее на тестирование RAM, а потом — я увидел загрузку нового U-Boot:

Эксперименты показали, что держать замкнутыми контакты нужно до момента появления строк:

А прд ними будет счетчик.
Затем — я извлек карту памяти и выключил-включил коробку — пошла загрузка с новым U-Boot со встроенной флеш-памяти и далее при включении коробки (без карты памяти) стабильно запускался новый U-Boot (что уже неплохо).
Дальше — я залил на карту пямяти собранный образ Armbian:

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

и дальше пусто. В конфиге build/config/bootscripts/boot-odroid-c4.ini указано устройство консоли ttyS0, а должно быть наверное ttyAML0 Но, судя по тому что моргание светодиодов у коробки стало другим было похоже, что что-то там загружалось и через некоторое время увидел вот такое:

и дальше — приглашение ввести новый пароль!! Система смогла нормально загрузиться с SD-карты. Потом я выключил бокс, вытащил карту и система уже нормально загрузилась с внутреннего накопителя. Armbian сам себя установил. А отсутствие сообщений при загрузке ядра — это сокрее всего некорректные параметры запуска ядра.
К сожалению, в системе оказался не виден беспроводной модуль (наверное загружается не подходящий dtb).

Читайте также:  Xcode для mac os mojave

В итоге порядок установки Armbian на HK1BOX вышел такой:

Немного осмелев и поняв, что убить коробку совсем не так уж просто я залил всю внутреннюю флеху нулями и повторил установку. Всё заработало.

Проблемы

не загружается при отсоединенной последовательной консоли

U-Boot не загружает систему, если отключена консоль (кабель физически не подключен).
При подключении кабеля rs-232 в момент “зависания” там видно приглашение консоли U-Boot. Всё выглядит так, как если бы загрузка прервалась по нажатию клавиши.
При нажатии Enter в консоли U-Boot должна выполниться последняя команда, но там в последней команде обычно бывал какой-то мусор, причем довольно часто разный.
Я сделал вывод, что скорее всего консоль не притянута к +3.3 и “шумит” — то есть самопроизвольно льет всякий мусор в RX. Выход — в коробке между выводом V (3.3V) и RX припаять резистор 47-100кОм.
И это помогло. Теперь всё нормально загружается.

Не смог загрузить образ

Не смог загрузить образ, собранный вот так:

Хотя вот такой вариант грузился норм:

Хотя имеет проблемы с работой systemd и других программ. Веротяно — дело в версии glibc или других библиотек. В итоге сейчас нормально заработал такой:

Загрузка с sd-карты для переустановки системы

В скриптах загрузки U-Boot из Armbian обнаружил, что можно переключать загрузочные устройства — практически как в BIOS ПК.
Для того, чтобы стартануть с SD-карты нужно в консоли U-Boot выполнить:

Убедиться, что под номером 0 видна SD-карта. И затем загрузиться с нее:

Предполагается, что на SD-карте будет образ, совместимый с текущими скриптами U-Boot.

fdt задан в U-Boot

В параметрах U-Boot жестко приписан путь к dtb

И на девайссе HK1BOX с этим dtb не заработал Wi-Fi. Я просто скопировал под этим именем dtb, с которым все работает, перезагрузился и Wi-Fi появился:

Раскирпичивание

Специально ради эксперимента я залил нулями весь внутренний флеш.
Восстановить коробку удалось так:

То есть фактически грузим систему с SD-карты.

НЕАКТУАЛЬНОЕ

Всё что написано ниже — заметки о моих первых попытках что-то залить в TV-Box HK1. Оно не очень уже актуально, но может кому-то поможет.

Как загружаться

В итоге файлик получается такой (если убрать все закоментированные строки:

На самом деле это скрипт. Фактически, если отбрсить всякие if-then он делает следующее:

разобратьэто все, можно если выполнить команду

и начать копать.
Загрузка начинается с выпонения того, что написано в bootcmd. Чтобы printenv выводил длинные строки целиком необходимо в терминале включить wrapping в minicom это можно сделать нажав Ctrl-A, затем Z и затем W.

Нормально подошел meson-sm1-khadas-vim3l.dtb с образа Armbian_19.11.5_Arm-64_eoan_current_5.5.0-rc6_20200127.img
А вот результаты тестирования некоторых других dtb:

Чтобы после установки на emmc логи systemd сыпались в консоль нужно дописать в строку запуска ядра в файлике /boot/uEnv.txt параметр systemd.log_target=console:

HK1 Box

Отказалась загружаться с образа Armbian_19.11.3_Aml-g12_eoan_legacy_5.3.0_20191126.img как с SD-карты, так и с двух портов USB. Это значит, что для того, чтобы загрузить ее с внешнего носителя нужно изменить настройки загрузчика U-Boot.

Поэтому — следуем мануалам armbian. Вставляю карточку с armbian, загружаюсь в Android , иду в Apps, нахожу там Update, кликаю UpdateLocaleSelect, выбираю BOOT/aml_autoscript.zip, и кликаю Update. Система перезагружается и я вижу меню bootloader‘а и ошибку:

Этот скрипт должен был скорректировать параметры загрузки U-Boot и позволить загрузиться с sd-карты, однако, судя по всему, установка неподписанных обновлений запрещена, поэтому нужно подключиться к консоли.

Подключение к отладочной консоли RS-232

На плате оказались “пятачки” с обозначениями ‘V R T G‘ — видимо консоль. Я откопал старинный провод USB-COM на базе pl2303, с помощью которого я когда-то подключал Siemens ME45 к компу для выхода в интернет, припаял к плате TV-Box‘а три проводочка — G (земля), R и T (прием и передача) и запустил minicom:

При включении TV-Box‘а в консоли minicom побежали сообщения.

Для того, чтобы прервать загрузку и скорректировать параметры загрузки нужно понажимать пробел и появится приглашение консоли U-Boot:

Теперь можно поглядеть текущие параметры загрузки. Чтоы длинные строки можно было увиждеть целиком — включаем перенос (Ctrl+a w).

Если при вставленной SD-карте выполнить:

то успешно загружается в память ядро — файлик zImage с первго раздела вставленной SD-карточки:

В данном случае 1080000 — это значение переменной loadaddr из вывода printenv.

Для того, чтоб запустить какое-либо cтороннее ядро нам нужен образ ядра и файл dtb (DeviceTreeBlob). Ядро у нас есть (на карте памяти), а dtb нужно либо скомпилировать, либо — извлечь.
Вот # cat /proc/cmdline

С работающего андроида

Извлечение dtb (DeviceTreeBlob)

https://www.cnx-software.com/2014/05/12/how-to-extract-a-device-tree-file-from-android-firmware-files/
Чтобы извлечь dtb из текущей прошивки нужно сделать образ раздела boot или recovery и распаковать его с помощью утилиты split_bootimg.pl. У меня не получилось распаковать образ раздела boot (распаковывался неполностью), но нормально распаковался образ раздела recovery.
Для этого:

Кстати, извлечь этот файлик с помощью стандартных утилит android_bootimg_tools не удалось. RamDisk и kernel извлекаются, а вот третий файлик — нет!

Нужный нам файлик — recovery.img-second.gz
Убедиться, что полученный файлик — это dtb можно, декомпилировав его. Как это сделать — написано ниже.

Изменение аппаратных настроек в файле dtb с помощью DTC

Изменение объема памяти, выделенной видеоадаптеру

Вот в таком кусочке кода (параметр size):

Задается объем памяти, выделенной видяхе. В данном случае выдляется 32Mb.

Изменение доступного объема RAM

Загрузка

Последние эксперименты

Настройки (bootargs и dtb) лежат в файлике uEnv.txt

Читайте также:  Kmk player для windows 10

В оригинале загружается содержимое раздела boot и хапускается, а там указан androidboot.dtbo_idx.

Вероятно, можно просто перепаковать. boot.img — https://www.whitewinterwolf.com/posts/2016/08/11/how-to-unpack-and-edit-android-boot-img/
Или просто добавить этот параметр к строке запуска ядра как тут:

Ошибки

Если появляется сообщение:

Значит нужно задать переменную androidboot.dtbo_idx:

Значение которой видно при распаковке boot.img:

УДАЛОСЬ ЗАГРУЗИТЬСЯ

Запустить скрипт путем update не удалось (т.к. он не подписан), однако, после пристального изучения вывода printenv оказалось, что его успешно запускает команда recovery_from_sdcard, прописанная в env U-Boot. То есть — готовим флеху, в консоли RS-232 жмем пробелы и в ответ на приглашение U-Boot вводим такое:

В результате приставка перейдет в режим дуалбута и будет грузиться с SD-карты, когда она вставлена.

Источник

Linux\*Elec на tv-box Z69 Amlogic S905X

Добрый день, коллеги!
В очередной раз наткнулся на споры в комментариях в отношении ТВ-бокса на Amlogic s905. Большинство комментаторов призывают дать инструкции, что нужно сделать, чтобы из китайской коробочки сделать производительный (медиа)сервер. Скажу сразу: покурить мануалы все же придется, все само не заработает. Однако, у вас будет стимул, вы будете знать что можно в итоге получить.

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

Введение.

Сравнение.

System: amlogic: GNU/Linux
OS: GNU/Linux — 3.14.29 — #146 SMP PREEMPT Tue Dec 26 12:40:49 MSK 2017
Machine: aarch64 (aarch64)
Language: en_US.utf8 (charmap=«UTF-8», collate=«UTF-8»)
16:22:44 up 9 min, 1 user, load average: 0.21, 0.18, 0.10; runlevel 5

— Benchmark Run: Tue Mar 27 2018 16:22:44 — 16:50:50
0 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 7436510.3 lps (10.0 s, 7 samples)
Double-Precision Whetstone 1312.0 MWIPS (10.1 s, 7 samples)
Execl Throughput 871.6 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 180951.1 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 56264.8 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 428546.6 KBps (30.0 s, 2 samples)
Pipe Throughput 437935.7 lps (10.0 s, 7 samples)
Pipe-based Context Switching 93731.8 lps (10.0 s, 7 samples)
Process Creation 3236.2 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 2428.7 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 714.0 lpm (60.1 s, 2 samples)
System Call Overhead 929656.2 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 7436510.3 637.2
Double-Precision Whetstone 55.0 1312.0 238.6
Execl Throughput 43.0 871.6 202.7
File Copy 1024 bufsize 2000 maxblocks 3960.0 180951.1 456.9
File Copy 256 bufsize 500 maxblocks 1655.0 56264.8 340.0
File Copy 4096 bufsize 8000 maxblocks 5800.0 428546.6 738.9
Pipe Throughput 12440.0 437935.7 352.0
Pipe-based Context Switching 4000.0 93731.8 234.3
Process Creation 126.0 3236.2 256.8
Shell Scripts (1 concurrent) 42.4 2428.7 572.8
Shell Scripts (8 concurrent) 6.0 714.0 1190.0
System Call Overhead 15000.0 929656.2 619.8
========
System Benchmarks Index Score 421.7

System: rpi3: GNU/Linux
OS: GNU/Linux — 4.9.35-v7+ — #1014 SMP Fri Jun 30 14:47:43 BST 2017
Machine: armv7l (unknown)
Language: en_US.utf8 (charmap=«ANSI_X3.4-1968», collate=«ANSI_X3.4-1968»)
CPU 0: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

CPU 1: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

CPU 2: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

CPU 3: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

16:26:55 up 20:47, 1 user, load average: 0.77, 0.98, 0.57; runlevel 3

— Benchmark Run: Tue Mar 27 2018 16:26:55 — 16:56:17
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 2179181.5 lps (10.0 s, 7 samples)
Double-Precision Whetstone 368.3 MWIPS (9.9 s, 7 samples)
Execl Throughput 463.0 lps (29.6 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 73545.4 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 20941.9 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 194029.5 KBps (30.0 s, 2 samples)
Pipe Throughput 155045.4 lps (10.0 s, 7 samples)
Pipe-based Context Switching 27361.7 lps (10.0 s, 7 samples)
Process Creation 1177.1 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 1176.1 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 317.4 lpm (60.1 s, 2 samples)
System Call Overhead 333399.9 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 2179181.5 186.7
Double-Precision Whetstone 55.0 368.3 67.0
Execl Throughput 43.0 463.0 107.7
File Copy 1024 bufsize 2000 maxblocks 3960.0 73545.4 185.7
File Copy 256 bufsize 500 maxblocks 1655.0 20941.9 126.5
File Copy 4096 bufsize 8000 maxblocks 5800.0 194029.5 334.5
Pipe Throughput 12440.0 155045.4 124.6
Pipe-based Context Switching 4000.0 27361.7 68.4
Process Creation 126.0 1177.1 93.4
Shell Scripts (1 concurrent) 42.4 1176.1 277.4
Shell Scripts (8 concurrent) 6.0 317.4 529.0
System Call Overhead 15000.0 333399.9 222.3
========
System Benchmarks Index Score 159.7

— Benchmark Run: Tue Mar 27 2018 16:56:17 — 17:25:34
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables 8690198.1 lps (10.0 s, 7 samples)
Double-Precision Whetstone 1470.5 MWIPS (10.0 s, 7 samples)
Execl Throughput 1266.4 lps (29.8 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 113576.7 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 31186.4 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 332597.5 KBps (30.0 s, 2 samples)
Pipe Throughput 616170.2 lps (10.0 s, 7 samples)
Pipe-based Context Switching 95804.8 lps (10.0 s, 7 samples)
Process Creation 2793.2 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 2657.3 lpm (60.1 s, 2 samples)
Shell Scripts (8 concurrent) 341.1 lpm (60.2 s, 2 samples)
System Call Overhead 1277095.6 lps (10.0 s, 7 samples)

Читайте также:  Автокликер mac os автоматизация процессов

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 8690198.1 744.7
Double-Precision Whetstone 55.0 1470.5 267.4
Execl Throughput 43.0 1266.4 294.5
File Copy 1024 bufsize 2000 maxblocks 3960.0 113576.7 286.8
File Copy 256 bufsize 500 maxblocks 1655.0 31186.4 188.4
File Copy 4096 bufsize 8000 maxblocks 5800.0 332597.5 573.4
Pipe Throughput 12440.0 616170.2 495.3
Pipe-based Context Switching 4000.0 95804.8 239.5
Process Creation 126.0 2793.2 221.7
Shell Scripts (1 concurrent) 42.4 2657.3 626.7
Shell Scripts (8 concurrent) 6.0 341.1 568.6
System Call Overhead 15000.0 1277095.6 851.4
========
System Benchmarks Index Score 395.2

Есть смысл заморочиться? Ну, я заморочился 🙂

Установка ОС.

Все достаточно просто. Листаем выше обозначенную тему до постов “последний стабильный образ” и переходим на яндекс.диск: на момент написания (12.2017) это здесь
Скачиваем образ системы и заливаем на sd или usb флэшку с помощью программ rufus или win32diskimager.
Важным является момент активации загрузки. Для этого нужно загрузиться в андроид, вставить созданный на предыдущем шаге накопитель и через стандартную программу обновления (update&backup) исправить загрузчик бокса, т.е. запустить с флэшки скрипт обновления (aml_autoscript.zip). Подходящий файл будет на флешке только один, вы не перепутаете его. После запуска обновления, бокс перезагрузится и, если все сделано правильно, запустится выбранный образ Linux.
Учетные данные для образа armbian (ubuntu 16.04): root, пароль: 1234.
При первом входе будет запущена процедура изменения пароля и затем создания нового (нерутового) пользователя. Когда все будет выполнено — бокс еще раз перезагрузится. После этого, рекомендую назначить для твбокса постоянный ip адрес в DHCP на вашем домашнем роутере. После чего ходить на твбокс будет удобно по ssh (я пользуюсь для этих целей putty в windows).
Итак, мы в линуксе. На этом этапе, если вы жадный IT менеджер и планируете унижать своих пользователей(или сами любите страдания), вы можете сообщить: вот полноценный компьютер с ОС Linux! В нем можно запускать офис, выполнять типовые задачи и\или использовать браузер. Можно устанавливать дополнительные программы.
Лично я не склонен считать получившуюся систему полноценной. Я бы назвал это тонким клиентом, из которого, например, можно использовать сервисы предприятия в режиме удаленного рабочего стола, vdi или через веб интерфейсы.
На этом этапе также могут возникнуть вопросы с железом, например wifi и аппаратной поддержкой декодирования видео. Уважаемый balbes150 дает нам подборку драйверов(в терминологии linux — модулей ядра) в образе (утилита armbian-config), но с большой вероятностью вы можете оказаться в пролете и они не заработают. Увы, китайцы в каждом боксе ставят разную периферию. С этой проблемой вы, вероятно, один на один, ну или может вам помогут на форуме. Гуглите.
Для дома, получившуюся систему можно установить без графического интерфейса, а все необходимые функции получать в виде веб интерфейсов. Я использую дистрибутив Ubuntu server 16.04.

Пример №0: Тривиальный. Настройка торентокачалок, файлохранилок.

Что тут можно посоветовать. Любое ПО на ваш вкус.
Для торренов могу порекомендовать transmission
Для общих папок с windows: samba.
Самбу, кстати, можно использовать для автоматического резервного копирования видео с популярных камер Xiaomi Dafang по вот этой инструкции.
Для монтирования яндекс диска используем dav2fs — чтобы превратить ваш бокс в облачное хранилище, например, для тех же видеозаписей с камеры.

Пример №1: Установка системы домашней автоматизации на примере Domoticz (или majordomo\OpenHAB по вкусу).

Про использование домотикза читайте на муське тут.
Последнее время я им не особо доволен, он стал тормозить при взаимодействии с xiaomi шлюзом. Но пока разбираться лень.
Устанавливается система с помощью скрипта:

После нескольких простых вопросов у вас на порту 8080 будет запущен интерфейс Domoticz. Далее подключение и настройка устройств осуществляется через этот веб интерфейс.
Без труда можно интегрировать с умным домом xiaomi и выключателями sonoff, избавив их от гнета Китая 🙂
Выглядит в сборе примерно так:


Пример №2: Видеонаблюдение на базе motion+motionEye.

Кто не знает, motion это видеорегистратор с открытым исходным кодом. А motionEye это веб-интерфейс для настройки камер и управления архивами.
Устанавливается по инструкции (со 2го шага)
Выглядит так:

Кстати, он умеет работать с непосредственно подключенными USB web камерами. Ну, это понятно, что для любителей приключений…
RTSP потоки сильно грузят процессор, поэтому больше 2-х потоков в разрешении 720р amlogic s905x вряд ли вытянет.
У меня дома, кстати, стоят камеры Xiaomi Xiaofang с хаком. С помощью motionEye и хака можно просматривать видео (rtsp) с камер и получать изображения без помощи родного приложения MiHome. Я считаю это очень важным, т.к. стабильность и защищенность китайского облака оставляет желать лучшего.
Мой вариант использования: при открытии входной двери, датчик открытия отправляет запрос на сервер автоматизации, там python скрипт, запущенный linux лезет к камерам и получает с них фото, после чего направляет их мне через pushover по ftp или telegram.
Далее совмещайте с Яндекс-Диском и получайте облако для записей.

Пример №3: Продвинутый. Управление системой через Телеграм с помощью бота на Python.

Данный кейс требует некоторых навыков программирования и был очень удобен до последних событий, связанных с РКН. Я планировал использовать телеграм бота для отказа от белого IP дома.
На текущий момент ситуация не изменилась кардинально, но возможны проблемы со стабильностью, но скрипт бота приходится запускать с использованием прокси. Для надежности и секурности рекомендую обзавестись собственным proxy/vpn.
В основе бота лежит библиотека python-telegram-bot
Мой бот выполняет следующие функции:

  • запуск linux shell команд, перенаправление вывода в телеграм
  • краткая информация о состоянии устройства
  • информация о состоянии домашних устройств
  • получение фото с камер

В работе выглядит так:



Источник

Оцените статью