Добрый день.
Я понимаю, что вопрос немного не по теме, но все же…
Есть контроллеры, несколько разных. В разных инсталляциях.
Очень часто нужно управлять железками по SSH. Я делаю это через python/paramiko
Проблема в том, что paramiko из коробки отсутствует, необходимо поставить pip и потом paramiko. Стандартный путь - apt install python3-pip и т.д.
Пока все сделаешь -
/dev/root 976M 747M 163M 83% занято. Еще один шаг влево и все, no left space.
Вопрос не столько про SSH|paramiko, сколько про правильную установку сторонних пакетов. Есть ли какой-то гайд?
Памяти свободной полно, но она где-то не там, и мои лапки не позволяют ее использовать в полной мере.
И, небольшое пояснение, для чего все это.
У вас прекрасный, великолепный, чудный контроллер! Мне очень нравится с ним работать, к ее работе нет никаких нареканий. Его можно применить для управления любой железкой, у которой есть интерфейс для управления - последовательный 232, 485, TCP-сокет, telnet, ssh или просто сухой контакт, - это мне очень нравится.
Проблема только в костылях, и в велосипедах, которые приходится собирать для управления сторонними устройствами. Поднимал я этот вопрос на выставке весной, к сожалению, никто не дал ответа - как канонично работать с сокетом или последовательным портом в вашей идеологии?
Например, есть проектор, управляемый по TCP/232. Как правильно (по канонам wb-rules) создать к нему модуль, который будет отслеживать его состояние, и отправлять команды?
Подобные темы на форуме имеют ответ - ну, напишите свой скрипт. Да, его можно написать, добавить его в systemd, но в процессе начинаются проблемы из верхнего сообщения. Надо что-то поставить, что-то обновить, а потом раз и память закончилась.
Мне нужна поддержка SSH в питоне. Что нужно сделать, чтобы корректно добавить эту поддержку и не сократить место в системном разделе. Или, ставлю node - как сделать так, чтобы осталось место после установки?
Есть ли (будет ли) какой-то интерфейс|api через движок wb-rules, который позволяет работать с последовательными портами/сокетами/ssh
например, примерно таким образом:
var port = new Serial(’/dev/ttyMOD1’)
port.on(‘data’, function (data) {
// парсинг данных
publish(’/devices/controls/ttyMOD1/data’, data)
})
trackMqtt(topic, function (message) {
// преобразование сообщения в понятное устройству
port.write(message)
})
Обычно рекомендуем после установки дополнительного ПО переносить директорию с файлами пользовательских программ на раздел /mnt/data/, заменяя на старом месте директорию симлинком. Системные файлы не нужно переносить.
Есть ли (будет ли) какой-то интерфейс|api через движок wb-rules, который позволяет работать с последовательными портами/сокетами/ssh
Пока такого механизма нет, в ближайших планах тоже. Это можно делать с помощью отдельной программы/скрипта или команды bash, которую уже вызывать из wb-rules.
Я сейчас так и делаю, только демоном в systemd. Скрипт парсит сообщения из порта/ssh и пишет/читает в mqtt-топики, все работает хорошо. Ну, нет, так нет.
Если для wb7/2/64 была бы инструкция, как увеличить системный раздел, хотя бы до 4 ГБ, это было бы просто замечательно. Пусть тестовое, не боевое решение. Щас, к сожалению, времена такие, библиотека на фреймворке погроммистом погоняет.
Кстати, солидарен. Прошивка увеличенным корневым разделом была бы крайне актуальна. Не первый ПЛК в котором отводят 1 гиг на корень и этого катастрофически не хватает.
Грубый метод решения проблемы:
Действительно вставляется флешка или разделы после корневого перенарезаются через cfdisk.
Потом создаются два раздела по 1-2 гига, куда в корень копируются /usr и /var. Потом они прописываются в fstab, рекомендую использовать также lazytime опцию, чтобы не изнашивать флеш накопитель. После чего mount -a подгружает новую таблицу разделов. Если забыть скопировать каталоги до их монтирования - будет кирпич(я так закирпичивал, пришлось отправлять на перепрошивку, но это был не вайренборд - его перепрошить можно).
Присоединюсь к страждущим: дефолтная прошивка в домашним разделом например 2гб была бы актуальна как никогда.
Сам ставлю на контроллер Docker и поднимаю микросервисы для проброса MQTT сообщений в бекенд сеть проекта. Хочется сохранять дерево зависимостей, т.е. ставить через apt, а не из бинарей, поэтому в корень.
Если нужны более подробные комментарии, you are welcome. Тема для меня крайне актуальная, прям вот сейчас готовлю тестовую партию контроллеров к деплою.
Я бы назвал это небезопасными действиями, но рабочими. Более правильный путь конечно править fstab самой прошивки. Этот путь остался после общения с контроллерами, где прошивку подредактировать нельзя.
Концептуальная задача из-за которой возникают такие вопросы: это установка большего количества софта в дерево зависимостей apt(он это ставит всё в /usr/bin и /usr/lib), когда контроллер нужно интегрировать в какую-то систему, уже нагруженную софтом и зависимостями.