0
<< предыдущая заметкаследующая заметка >>
20 ноября 2020
Я много задавал технических вопросов, пора дать ответы

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

1. Silicon Studio и чип EFRxG22

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

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


<?php
sudo chmod 666 
/dev/ttyACM0 picocom --baud 115200 --noreset --noinit --nolock --imap lfcrlf /dev/ttyACM0
Чтобы выйти из picocom
Ctrl+ACtrl+x

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

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

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

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


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

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


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

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


<?php
tmux 
new-session -n backup -s backup

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

<?php
tmux a 
-t backup

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

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

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 вовсе не отожрал никаких особых ресурсов и вполне себе незаметен в общей картине занятости процессора.

UPD: Нет, ребята, zigbee2mqtt это все-таки пиздец пиздецов. Заметил, что у меня стал перегреваться процессор и постоянно жужжать вентилятор. Отгадка проста - йобаный zigbee2mqtt, ничего не делая (даже когда свисток не воткнут!), всеми своими «npm start» и «node index.js» отжирает более 100% ресурсов и чуть ли не гиг памяти:

Что же касается его устойчивости, у меня все равно есть свой служебный скрипт следилки, который раз в минуту выполняет разные задачи, а заодно следит, какие сервисы упали, и поднимает их, часть про 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:


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

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


<?php
mosquitto_sub 
--t hello/world

Отправляем в другом сообщение в канал hello/world и видим его там:

<?php
mosquitto_pub 
--t hello/world -'Бугага!'

2. Сборка zigbee2mqtt


<?php
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:


<?php
devices
:
  
'0x086bd7fffe6180e4':
    
friendly_name'IKEA-Govna'

И управлять ею по MQTT. Лампа греется как пипец и понимает только три команды: On, Off и яркость от 0 до 255:

<?php
mosquitto_pub 
--t zigbee2mqtt/IKEA-Govna/set -'on'
mosquitto_pub --t zigbee2mqtt/IKEA-Govna/set -'off'
mosquitto_pub --t zigbee2mqtt/IKEA-Govna/set/brightness -'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, рекомендую, вот только печатать он не умеет и оглавление в боковой колонке не показывает.

Итог

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

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок

Комментарии к этой заметке скрываются - они будут видны только вам и мне.

Оставить комментарий