lleo_kaganov (lleo_kaganov) wrote,
lleo_kaganov
lleo_kaganov

Categories:

Я много задавал технических вопросов, пора дать ответы

это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2020/11/20

За последнее время я задавал целый ряд технических вопросов, вызвавших живой отклик среди моих технически подкованных подписчиков. Естественно, речь не про тех двух говноедов, которые прибегают в каждый пост со свежесозданных аккаунтов рассказать, что я все делаю неправильно, напрасно, и вообще зря занимаю то место на планете, которое по праву должно принадлежать им ;) Речь о тех достойных людях, которые поделились своими знаниями, и благодаря им я в итоге решил все проблемы. Также многих заинтересовали сами вопросы - некоторые, например, заказали свисток чтобы тоже поэкспериментировать с Зигби. Иными словами, теперь я ощущаю свой долг сказать всем вам спасибо, а также подробно рассказать, чем закончилась каждая из историй, дабы мой опыт тоже мог оказаться полезен кому-то (а также мне, когда я столкнусь снова с этой проблемой и пойду гуглить в своем же блоге, как я ее решал). Итак...


1. Silicon Studio и чип EFRxG22

Я недавно просил помощи, как начать работу с платой EFRxG22. Добрый человек Олег из германского офиса Silabs всё мне объяснил. Он дал много советов и ценной информации, но главных два: плата может не работать, если сперва не найти в далеких пакетах, не собрать и не установить конкретно вот этот внутренний загрузчик:

А что касается отладочной консоли, которую я почему-то не мог найти, то выяснилось, что удобнее не использовать внутреннюю консоль Студии, а подключиться к плате параллельно Студии любым другим софтом в отдельном окне. Я делаю так:

sudo chmod 666 /dev/ttyACM0 ; picocom --baud 115200 --noreset --noinit --nolock --imap lfcrlf /dev/ttyACM0
Чтобы выйти из picocom: Ctrl+A, Ctrl+x

После этих советов плата ожила. Я собираю там свой код, уже зажигаю светодиоды, пищалку вот подвесил звуковые сигналы выводить (с детства люблю это дело для отладки), и так далее. Немного смущает пока отсутствие привычных на Ардуино инструментов работы с пинами — PWM и TONE. В смысле, я чую, что не надо изобретать велосипед и мудохаться со внутренними таймерами, должны быть штатные библиотеки, но пока не нашел. Но это уже не важно, сделаю свои, если понадобится, главное, что работа сдвинулась с мертвой точки, железо им софт исправны, контакт есть и далее виден путь. Собственно искомое Zigbee на этом чипе я пока не поднял, только пример собрал, а как его, неизвестное устройство, авторизовать, пока не выяснил, это освою чуть позже, тем более о Зигби пойдет речь чуть ниже.

2. Восстановление удаленных папок в ext3

Какой ужас, пропала папка архива /FOTO на диске и убились все фоточки за последние 6 лет. Спасибо всем за советы и рекомендации. Выводы мы делаем следующие:

1. Первым делом образ ISO. Если что-то случилось с диском, первым делом надо скопировать его весь на другой носитель, а позже разбираться с образом. Так и поступил в итоге, двое суток слабенький сервер бэкапил диск:

sudo dd if=/dev/sda1 | pv -s 2T | dd of=/m/banana.iso bs=4096 conv=noerror

2. Утилиты восстановления. Утилит восстановления файлов с партиции ext3 много под Линукс. Но лучшей по общему признанию считается R-Studio. Правда, она платная. Разработчики (это Россия) также предлагают сервис по восстановлению. Как вы помните, сперва я запустил recoverjpeg, которая создала мне миллион безымянный и частично побитых файлов, среди которых я пытался разобраться, соорудив кучу своих скриптов и каталогизируя все файлы в базу. Но это оказалось не нужно. С помощью Жени Васина я в итоге запустил другую утилиту из мелких, кажется эту:

ext4magic /dev/loop0 -m -d tmp
Хотя еще пробовал «extundelete» и «ext3grep --restore-all ./banana.iso».
Короче, эта софтинка (предположительно все-таки ext4magic) работала с образом диска еще дня три - пыталась восстановить все файлы и папки физически, невзирая на имевшиеся структуры диска. И восстановила почти всё. Ну, как всё... Некоторые папки далеких подпапок оказались пустыми. Или вместо 200 файлов восстановилось в папке всего 130. Но примерно 90% файлов она восстановила - под своими именами на своих местах. Надеюсь, среди них были удаленные, а не просто шарилась по имевшимся папкам диска (по причинам, о которых поведаю ниже, понять этого я так и не смог).

3. Полезный tmux. Пока некий компьютер работает несколько суток, неплохо бы к нему обеспечить периодический консольный доступ по SSH, но чтобы обрыв этого соединения не влиял на происходящую работу. Поможет софтинка tmux. Запускаем на удаленном сервере tmux-сессию, например, с именем backup:

tmux new-session -n backup -s backup

Запускаем в ней задачу. После чего можно разрывать соединение с удаленным сервером и выключать свой ноутбук. Чтобы войти заново, коннектимся к серверу и набираем:
tmux a -t backup

Чтобы выйти снова: Ctrl+b D

4. Нашлась бабушкина пропажа у дедушки в штанах! Смешно. Пока я три дня ждал восстановления файлов, периодически поглядывал, что там восстановилось уже. И довольно скоро заметил, что корневая папка /FOTO вовсе не удалилась и не исчезла! А просто каким-то загадочным образом переехала в папку /margo, и софтинка ext4magic ее теперь о-о-очень долго и скурпулезно восстанавливает по файлам посреди относительно небольшой личной папки Маргариты... Обзор живого диска показал, что это не чудеса восстановления, а папка /r/FOTO и впрямь цела, просто действительно называется /r/margo/FOTO Объяснить это ни я, ни Марго не смогли, возможно, надо допросить Станислава Леонидовича. Но все архивы сохранны, восстановление было не нужно. Я потратил много времени, чтобы всё сверить: не пропало ничего, программа восстановления восстановила всё то же самое, просто на 90% меньше, но ничего нового, что бы отсутствовало в оригинале. А паники-то было...

5. Все-таки надо серьезно подумать о бэкапах. Всякие rsync -avzh /r /mnt/DISK/backups/ не выход, надо что-то умнее, буду читать ваши советы в том посте.

3. zigbee2mqtt

Намеднись софтинка zigbee2mqtt в попытках поднять свисток ZigBee cc2531 произвела на меня самое гнетущее впечатление. Я рассчитывал в комментах услышать, что есть более компактный софт. Но из комментов быстро стало понятно, что альтернатив нет. Пришлось работать с тем, что есть, На следующий день я вернулся к вопросу и поставил свисток на своем ноутбуке — на этой быстрой (спасибо EKA) машине zigbee2mqtt собрался быстро, заработал по инструкции, и я без особых проблем подключил к нему и настроил Zigbee-лампу из ИКЕИ, получив наконец нужный опыт работы с Zigbee. После чего решил сделать вторую попытку собрать то же самое на маломощном сервере в коридоре, дабы оно работало там круглосуточно. И знаете, оно там тоже всё собралось за минуту! И места папка /opt/zigbee2mqtt занимает 45Мб, и вовсе не полгига. Была некая проблема с NodeJS, потому что версия 9 этой софтинке мала, версия 12 не встает на Bananian, а версия 10 вроде встала, но все равно осталась версией 9, пока я не догадался сделать which и удалить вручную когда-то поставленный дубль. Но после этого все собралось быстро. Поэтому я остался в некотором недоумении, что это было позавчерась. Скорее всего, я просто перепутал в тот день консоли, и собирал zigbee2mqtt на той слабой Raspberry Pi 1, на которой прошивал свисток, и вот там оно дико тормозит? Это не объясняет, откуда там были тонны исходников на дикие 400Мб. Зато объясняет, почему софтинка там охотно собиралась почти час, а не кричала, что у нее NodeJS слабой версии...Короче, пес с ней, с загадкой.

Что касается демона на NodeJS, который якобы опасно запускать на своем сервере... Честно говоря, тут я тоже погорячился с терминами. У меня на этом маломощном сервере и без него висят всякие демоны на NodeJS — какие-то я писал для своих задач сам в разное время, какие-то висят для экспериментов, например, лингвистический MORF для работы с формами слов у меня там висит испокон веков. Новый демон zigbee2mqtt вовсе не отожрал никаких особых ресурсов и вполне себе незаметен в общей картине занятости процессора. Что же касается его устойчивости, у меня все равно есть свой служебный скрипт следилки, который раз в минуту выполняет разные задачи, а заодно следит, какие сервисы упали, и поднимает их, часть про Zigbee выглядит так:

if [ "X$ZIGBEE" = "X" ] ; then
    echo 'restart ZIGBEE' >> /lleo/SLEDILKI/ZIGBEE.log
    cd /opt/zigbee2mqtt ; /usr/local/bin/npm start &
    /lleo/home/speach.php in 'перезапуск Зигби'
fi

Да, я слышал, что есть systemd, но на bananian его нету почему-то. Переименовать пришлось index.js в zigbee2mqtt_index.js (и поправить package.json) для удобства поиска в процессах. Пока в домашних колонках фраза «перезапуск Зигби» еще ни разу не прозвучала. Да и Morf, как я теперь вспоминаю, что-то не падал практически никогда. В общем, вполне можно и нужно использовать демоны на NodeJS даже на относительно слабых серверах, и zigbee2mqtt вполне работоспособна, зря я про нее так.

Короче, вся эта балалайка у меня в итоге успешно поднята на сервере. Лампочку ИКЕЯ я пока повесил на потолок и сделал себе веб-админку с полозком, управлять яркостью с сайта квартиры. Реального смысла в этом нет - конкретно этот патрон E14 на потолке у меня и так был заведен через регулятор яркости на стене, и там испокон веков стояла обычная лампа накаливания на 40Вт. Лампа ИКЕЯ даже на самой минимальной яркости 1 все равно дает достаточно яркий свет, чем иногда хотелось бы. Но просто поиграться себе сделал так (внутренняя админка):

Честно сказать, я сперва хотел эту лампу вкрутить в холодильник чтобы методами перфоманса и акционизма реализовать давний концепт: «Самое умное, на что способен Умный Дом в 21 веке, — возможность включить и выключить свет в холодильнике, не вставая с дивана». Но патрон в холодильнике под таким углом, что большая лампа не вкручивается, да и пришлось бы закорачивать выключатель двери. Так что акционистский концепт передаю вам на словах.

Кому интересно, шаги:

1. Настройка брокера MQTT Mosquitto:

sudo apt-get install mosquitto mosquitto-clients
sudo service mosquitto restart
(или sudo systemctl restart mosquitto)

Проверка работы:
Открываем в одном терминале канал hello/world на прослушку:

mosquitto_sub -d -t hello/world

Отправляем в другом сообщение в канал hello/world и видим его там:
mosquitto_pub -d -t hello/world -m 'Бугага!'

2. Сборка zigbee2mqtt

sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
cd /opt/zigbee2mqtt ; npm ci --production

Запуск: npm start
Еще нужны всякие манипуляции, чтобы прописать в автостарт демона через systemctl, но они у меня не работали по причине отсутствия systemctl, поэтому и в здешнюю памятку для себя я их вносить не буду, в сети достаточно инструкций.

3. Свисток Zigbee cc2531 покупается за копейки, перепрошивается при помощи Raspberry (Orange и другие платы не годятся!)

4. Лампы ИКЕЯ Тродфри выходят из ассортимента, но еще продаются, правда стоят 700 руб, думаю, не сдать ли мне ее обратно, ибо смысла в ней особого нет, кроме экспериментов с Зигби. Из смешного: чтобы законнектить лампу, надо в /opt/zigbee2mqtt/data/configuration.yaml вписать permit_join: true и перезапустить, разрешив автоподключение новых устройств, а саму лампу быстро включить подряд 6 раз и на шестой оставить включенной, тогда она мигнет и подключится: процесс. После этого ее можно переназвать в вышеупомянутом configuration.yaml:

devices:
  '0x086bd7fffe6180e4':
    friendly_name: 'IKEA-Govna'

И управлять ею по MQTT. Лампа греется как пипец и понимает только три команды: On, Off и яркость от 0 до 255:
mosquitto_pub -d -t zigbee2mqtt/IKEA-Govna/set -m 'on'
mosquitto_pub -d -t zigbee2mqtt/IKEA-Govna/set -m 'off'
mosquitto_pub -d -t zigbee2mqtt/IKEA-Govna/set/brightness -m '123'

Lubuntu 20.04

Чтобы закрыть техническую тему — я тут вчерась переехал на Ubuntu 20.04, потому что Олег из Силабс сказал, что с ней Студия 5 работает устойчивей. Переехал с 18.04 при помощи do-release-upgrade без проблем. Но сразу пожалел. Во-первых, оно мне принесло зачем-то кучу нового софта, включая какие-то сраные линуксовые игры (!), замучился это удалять. Но главное — в 20.04 убран мой любимый самый легкий в мире десктоп LXDE, вместо него ставится его наследник LXQT. Который может и в чем-то лучше (с менеджером WiFi, например, нет вроде той кривизны с новыми подключениями), по скорости не пойму пока, может и такой же, но в остальном он ставит свои скины дурацкие и уродливые, и вообще требует настройки и привычки. Не могу пока сказать, нравится мне или нет. Не фатально, но достаточно уныло.

Также в 20.04 пропала куча софта и есть ряд глюков. Например, исчез просмотрщик PDF kpdf (или xpdf он назывался?), а Libreoffice на принтер печатает из фалов PDF вместо русских букв какой-то ад. Поиски софта PDF показали что: а) Adobe Acrobat Reader давно и окончательно сдох. А как дышал, как дышал! б) Народилась куча новых, из них оkular ничо так в плане способности распечатать лист без глюков с русскими буквами. в) Есть очень милый совершенно мгновенный просмотрщик mupdf, рекомендую, вот только печатать он не умеет и оглавление в боковой колонке не показывает.

Итог

Всем спасибо, всем удачи и столь же успешного решения всех технических вопросов!



это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2020/11/20
Tags: домашний сервер, программирование, сделай сам, электроника
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments