Обожаю такие крафтовые советские щиты управления - всё наглядно, всё доступно. Нет никаких бирок, желобов, стяжек - в устройстве разберётся даже ПТУшник и тот самый заводской электрик.
Но неет. Пришли молодые, забраковали, заказчику пыль в глаза пустили и собрали очередной бездушный шкаф. Нет, нам такой коньтент не нравится!
По просьбам трудящихся, я постараюсь сделать это в виде некоего обучающего рассказа что ли. Но конечно не step by step инструкции. Краткие выдержки кода и описание алгоритмов и чего куда вообще совать что бы эти ваши показания получать. Сегодня поговорим о PH сенсорах и моем опыте. Я подразобью на более короткие посты для удобства чтения.
PH Sensor
Я пробовал 2 сенсора PH. от DF-Robot и дешевый из синего маркетплейса.
1/2
Вот такие сенсоры
Ссылки на все я приведу в конце поста.
Сейчас я использую pH-датчик от DFRobot — он отлично подходит для непрерывного мониторинга 24/7. Показания стабильны, со временем не «плывут» (дрейф отсутствует — проверено на практике), а калибровка реализована удобно и просто. Чуть позже покажу, как она устроена на примерах кода.
А вот с дешёвым noname-датчиком всё гораздо веселее. На плате два подстроечных резистора: один, судя по всему, отвечает за калибровку нулевой точки (pH 7.0), второй — за чувствительность. Документации — минимум. Настроить этот модуль так, чтобы он давал стабильные показания, — почти как пройти Super Meat Boy на 100%… и не сломать ничего от сгоревшей пятой точки..
Небольшая сравнительная таблица, информации мало для сравнения.
Стоит ли покупать дешёвый pH-сенсор? Нет и ещё раз нет. Даже если ваш код написан идеально, это не спасёт от нестабильной работы самого датчика. Через день-два показания могут начать «плавать» — pH то завышается, то занижается на 3–4 единицы без видимых причин. Сенсор просто начинает вести себя непредсказуемо.
И если у вас на такие данные завязана автоматика (например, дозаторы pH- или pH+), последствия будут неприятными: система начнёт вносить корректоры на основе ложных показаний. В итоге — испорченный раствор и потеря времени, так ещё и потраченные впустую корректоры PH.
Сенсоры от DFRobot мне показались гораздо стабильнее и надёжнее. Да, они стоят дороже, но по опыту — это оправданно. Поэтому далее всё что написано, относится к конкретно H-101 сенсору.
Подключение РH.
Подключение pH-сенсора — дело довольно простое. Информация по распиновке обычно указана прямо на сайте производителя или в описании товара (в том числе на AliExpress). Всё, что нужно — подключить выход сенсора к аналоговому входу вашей платы: будь то ESP32, Arduino или любая другая платформа.
Этот конкретный сенсор, судя по данным и практике, выдаёт сигнал до 3.3 В, так что его можно безопасно подключать напрямую к пинам ESP32 — без делителя напряжения. Я так и делаю, и всё работает стабильно. Делитель нужен, только если сенсор выдаёт до 5 В (что бывает у некоторых моделей), а ваша плата работает от 3.3 В. В случае с классической Arduino делитель не нужен, так как она спокойно воспринимает до 5 В на аналоговых входах.
Подключение.
Калибровка PH.
Калибровка pH-сенсоров всегда выполняется с помощью буферных растворов — это жидкости с точно заданным значением pH. Калибровка может быть двух- или трёхточечной: чем больше точек, тем точнее можно подогнать датчик под реальный диапазон.
Буферные растворы бывают в виде порошков (которые нужно растворить) или уже готовые к использованию. Их подбирают так, чтобы они охватывали рабочий диапазон измерений.
В моём случае я использую двухточечную калибровку — по значениям pH 4.0 и pH 7.0, чего вполне достаточно для контроля большинства питательных растворов.
Буферные растворы для калибровки PH.
Сама калибровка проходит в два последовательных этапа. Сначала сенсор промывается в дистиллированной воде и аккуратно просушивается (я использую салфетку, не протирая стекло — просто промакиваю). После этого сенсор помещается в буферный раствор с pH 4.0. Ждём, пока значения напряжения стабилизируются, и нажимаем кнопку калибровки по pH 4.0 — первый этап завершён.
Далее — всё то же самое, но уже с раствором pH 7.0. После второго нажатия кнопки калибровки сенсор готов к работе.
А вот и фрагмент кода, который у меня отвечает за калибровку pH-сенсора. Он используется при нажатии кнопки калибровки (по pH 4.0 или 7.0):
Функция readStablePHVoltage используется для получения надёжного и стабильного значения напряжения с pH-сенсора перед калибровкой.
Сначала она делает 20 аналоговых замеров с небольшими паузами между ними. Значения переводятся в милливольты и сохраняются в массив.
После этого вычисляется среднее напряжение, а слишком сильные выбросы (если разница с средним превышает 500 мВ) игнорируются — они заменяются на усреднённое значение.
Далее считается стандартное отклонение (σ) — если оно меньше 30 мВ, сигнал считается стабильным и пригодным для калибровки. В противном случае функция сообщает в лог о нестабильности и отменяет процесс.
Кроме самого результата, в лог отправляется подробная информация: все замеры, среднее, минимум, максимум и разброс значений. Это помогает при отладке и повышает надёжность всей системы.
Измерения PH
При измерениях любых параметров жидкости необходимо учитывать её температуру, так как это напрямую влияет на точность показаний. Особенно это критично для pH — с повышением температуры активность ионов водорода возрастает, и даже идеально откалиброванный сенсор начнёт показывать отклонения. В модуле который использую я, по заявлениям уже учитывается этот фактор. Поэтому в моих функциях нет реализации температурной компенсации.
Собственно сама функция чтения PH. В ней мы уже обращаемся к другой функции считывания напряжения. Она гораздо больше фильтрует значения напряжения, и не мешает при этом калибровке. Именно поэтому их тут две.
Для получения чистого и стабильного сигнала с pH-сенсора я использую многоступенчатую фильтрацию.
Всё начинается с простого усреднения — берутся 30 замеров подряд, и по ним считается среднее напряжение.
Затем подключается медианный фильтр: он отсеивает выбросы, которые могли случайно попасть в серию замеров. После этого применяется скользящее среднее, чтобы ещё больше сгладить возможные резкие скачки.
И в конце — финальный этап: IIR-фильтр (экспоненциальное сглаживание), который делает сигнал максимально плавным, но при этом достаточно быстрым в реакции на изменения. Такой подход позволяет получать надёжные и устойчивые данные, на которые уже можно опираться при расчёте текущего уровня pH или при управлении системой.
Заключение.
Таким образом я измеряю PH своего раствора. Вот обещанные ссылки на компоненты из этого поста:
Дальше останется только привязать это к вашим интерфейсам взаимодействия с пользователем и в целом готово. Не претендую на какую то 100% правильность, вы можете сделать это иначе, но сейчас у меня работает отлично всё, напомню, что я в первую очередь 3д художник, который открыл для себя мир программирования и контроллеров)
Спасибо за внимание! Надеюсь скоро выпущу про TDS/EC сенсор, температурный датчик.
На рынке летающих автомобилей появился новый игрок. Калифорнийский стартап AIBOT анонсировал успешное завершение ключевых испытаний своих аэротакси. В пресс-релизе, опубликованном во вторник, компания сообщила о более чем 200 удачных полетах, общая продолжительность которых составила 150 часов, проведённых в самых различных условиях.
AIBOT внедрила методологию NASA для системной идентификации, что значительно улучшило модели управления полетом. Этот инновационный подход впервые был применён к платформе eVTOL с наклонным крылом и восемью роторами, что позволяет компании разрабатывать более безопасные и эффективные решения.
Стартап установил партнёрские отношения с такими компаниями, как Honeywell и Enpower Greentech и уже получил первые коммерческие заказы в сферах чрезвычайных ситуаций, логистики и промышленной инспекции. AIBOT готовится представить свой "дронолёт" в ближайшие месяцы.
Современные телевизоры «умнеют» не по дням, а по часам: производители устанавливают в них операционные системы, которые поддерживают работу с приложениями, играми, потоковыми видеосервисами и т.д. Как и в смартфонах или компьютерах, у ТВ существует особый «режим разработчика». Для чего нужен такой режим? А также на примере нескольких популярных моделей ТВ активируем режим разработчика
Зачем нужен режим разработчика
Режим разработчика позволяет получить расширенный доступ к настройкам системы, провести отладку приложений и внести более тонкие изменения в работу системы, которые обычно недоступны рядовому пользователю.
Установка приложений из сторонних источников. В некоторых ОС, например в Android TV, можно устанавливать приложения не только из официального магазина (Google Play), но и с внешних носителей (флешки) или через ADB (Android Debug Bridge).
Диагностика и исправление ошибок. В режиме разработчика можно увидеть логи (журналы) работы системы и приложений, и если в работе ТВ возникают ошибки, то с помощью логов отследить их причины. Это бывает полезно сервисным специалистам и продвинутым пользователям.
Управление процессами и ресурсами. Часть телевизоров на операционных системах Android или Tizen (Samsung) позволяет при активации Developer Mode контролировать некоторые внутренние процессы. Например, можно принудительно останавливать ненужные встроенные приложения, которые потребляют ресурс ОС или проверять, как работает сеть.
Расширенные возможности кастомизации. В определенных моделях ТВ пользователю становятся доступны такие параметры, как скрытые настройки яркости, контрастности, оттенков (которые нельзя найти в обычном меню), изменение масштабирования, отключение анимаций (на Android ТВ), параметры HDMI-CEC, поддержка HDR, лимиты памяти и т.д.
Тонкая настройка системы. Многие производители скрывают определенные параметры системы от пользователя — расширенные настройки изображения и звука, системный журнал, включение/отключение внутренних процессов. Режим разработчика зачастую позволяет работать с этими параметрами напрямую.
Общие рекомендации
Внимание! При любой попытке внести изменения в системные настройки или установить приложения из непроверенных источников возрастает риск нарушения работоспособности ОС телевизора. Если вы не уверены в своих действиях, лучше заранее ознакомиться с инструкцией производителя и сделать резервное копирование (бэкап) важных настроек. Бэкап системы можно выполнить с помощью встроенных средств, либо сторонними приложениями, например «Super Backup».
ОС Android по умолчанию поддерживает резервное копирование важных данных как на смартфонах, так и на ТВ.
Помните о гарантии. В большинстве случаев вмешательство в работу ОС ТВ, в частности активация режима разработчика, рассматривается сервисными центрами как нарушение гарантийных условий.
Примеры включения режима разработчика на различных моделях
Ниже — несколько примеров, как можно активировать режим разработчика на популярных моделях телевизоров.
Aceline или DEXP (модели на Android TV)
Включите телевизор и дождитесь полной загрузки системы.
Зайдите в главное меню настроек — как правило, это иконка шестеренки (Настройки) или кнопка «Settings» (в зависимости от пульта).
Найдите раздел «О телевизоре» или «About TV».
Прокрутите список до пункта «Сборка/Сведения о сборке» (Build number).
В некоторых телевизорах этот пункт может значиться как «Версия прошивки» или «Номер версии.
Несколько раз подряд быстро нажимайте на эту строку, используя кнопку «Ок» или «Enter» на пульте. Появится всплывающее уведомление о том, что «Вы стали разработчиком» или «Остался один шаг, чтобы стать разработчиком».
Теперь в разделе «Настройки» → «Система» должен появиться пункт «Для разработчиков» (Developer options).
Для расширенной отладки можно включить «Отладку по USB» (или «ADB» — программа Android Debug Bridge — отладочный мост Android) — это пригодится, если вы планируете устанавливать приложения напрямую с компьютера. Также отладка может понадобиться, например, для восстановления удаленных файлов или для поиска ошибок в работе ОС.
Что можно настроить
Параметры отладки: включение ADB (Android), отладка по USB, Wi-fi, выбор конкретного приложения для отладки и т.д.
Логи системы: возможность отслеживания ошибок и предупреждений.
Настройки графики: изменение масштабирования, отключение анимаций (на Android), ускоренная прорисовка. Это может несколько улучшить производительность работы ОС.
Управление приложениями: фоновые процессы (приложения, которые работают без участия пользователя — это могут быть как встроенные системные службы, так и сторонние, например, мессенджеры), настройка разрешений приложений, удаление предустановленных ненужных программ и т.д.
DEXP и другие бренды (модели на ОС Vidaa)
Официального режима разработчика (Developer Mode) в привычном понимании (как, например, в Android TV) в Vidaa OS нет. Vidaa представляет собой достаточно закрытую среду, и стандартной опции для включения отладочных функций на пользовательском уровне не предусмотрено. Но можно включить нечто вроде инженерного режима, чтобы просмотреть работоспособность некоторых параметров.
В настройках ТВ делаем следующее:
Заходим во вкладку «Звук».
Переходим во вкладку «Динамики».
Здесь выставляем значение «Баланс» на 0.
После этого на пульте набираем комбинацию «1969» (если на пульте нет цифр, то необходимо вызвать экранную клавиатуру) и активируется инженерное меню. Об этом будет свидетельствовать большая зеленая буква «М» в левом верхнем углу экрана. И само меню в центре.
Samsung (на ОС Tizen)
У телевизоров Samsung нет «типичного» Android-раздела «Developer options», однако существует «Режим разработчика« (Developer Mode) для установки и отладки приложений Tizen. Процедура его активации выглядит несколько иначе:
Включите Smart Hub, нажав кнопку «Home» на пульте.
Перейдите в Apps (Приложения).
Нажмите на клавиатуре пульта (или на экранной клавиатуре) комбинацию «12345».
Если у вас стандартный пульт с цифровыми кнопками, просто нажмите указанные цифры по порядку. Если у вас мини-пульт без цифровых кнопок, вызовите экранную клавиатуру, нажав кнопку «123», и используйте навигационные кнопки для ввода последовательности.
В появившемся окне «Developer Mode» переведите переключатель в положение «ON».
В поле «IP-адрес» введите IP-адрес вашего компьютера, на котором установлена среда разработки Tizen Studio. Это необходимо для установки сторонних приложений на ТВ и работы с ними.
Нажмите «OK» и перезагрузите телевизор, чтобы изменения вступили в силу.
Что можно настраивать
Установка приложений в обход официального Samsung Apps через локальную сеть или USB.
Настройка логирования Tizen (для опытных пользователей или разработчиков).
Что лучше не трогать
Системные службы Tizen, которые могут повлиять на работу Smart Hub.
Внутренние файлы телевизора без четкого понимания последствий (можно нарушить корректную загрузку системы).
Заключение
Режим разработчика на современных телевизорах — это мощный инструмент, открывающий доступ к ряду дополнительных функций и параметров, которые могут быть интересны продвинутым пользователям и сервисным специалистам. Однако следует помнить, что любые изменения системных настроек или установка сторонних приложений связаны с риском.
Если вы сомневаетесь или не уверены в своих действиях, лучше проконсультироваться со специалистами или подробно изучить официальные руководства. Грамотный подход к режиму разработчика позволит безопасно расширить функционал телевизора, оставаясь при этом в рамках корректной работы устройства.
Подержите моё пиво. Все щиты управления и силовые шкафы мы у себя на производстве для себя собираем сами. Я (проект, расчёт, выбор элементной базы) и КИПовец с электриком - сборка, настройка. Концепцию обсуждаем все вместе.
Вот из последнего:
Было.
В процессе.
В ожидании наклеек.
На индикаторах "здоровье" 36 ТЭНов. Термодатчики, измерители-регуляторы размещены непосредственно на камере.
Раза два заказывали комплектные шкафы у "профессионалов". Лучше бы собрали сами.
Функция измерения веса. Покажу конструкцию в 3д, так как показывать её в реальности весьма затруднительно. Я использую 60мм горшочки для гидропоники, поэтому проектировал под себя и свои нужды.
1/5
Сама измеряющая платформа с тензодатчиком. Печатается на 3д принтере и вставляется в мой кейс с растениями вместо обычной платформы (одной из 3х)
Собственно на изображениях видно, по центру стоит тензодатчик и вокруг него равноудаленно 7 слотов под горшочки с субстратом. От тензодатчика провод идет в АЦП HX711, но тут было несколько ньюансов: А) Обязательно заэкранировать кабель подключения от самого тензодатчика(я обернул экраном наполовину) и довести экран до АЦП. Б) Провести провод так, что бы если по нему капилярным эффектом начнет подниматься вода, он не добрался до датчика. Я сделал простую петлю и разместил его выше чем сам тензодатчик. Таким образом вода точно никак не попадет на АЦП. Сам же АЦП в герметичном корпусе. и вынесен отдельно от системы и подключается через TYPEC-TYPEC провод любой длины.
Это нужно для того, что бы провода от тензодатчика и до АЦП были как можно короче. а цифровой сигнал уже все равно на какое расстояние и с какими помехами передавать.
1/2
Корпус для АЦП.
Собственно сама функция измерения веса не замысловата и просто измеряет вес всего что стоит на ней. Тарирована вместе с платформой по умолчанию. Калибровка осуществляется по известному весу и выборкой в 50 измерений. Опять же, я встретил достаточно много проблем с этой фичей, но все удалось побороть. 1) Проблема влажного субстрата. Я знаю сколько весит горшочек с сухим субстратом и с мокрым. Но вода штука капающая. И эти самые капли, на начальных этапах роста дают не просто шум, а шумище. То есть когда растения весят 0.02 грамма, это начинает становится серьезной проблемой. Был введет флаг полива, и примерная интерполяция по времени, за сколько "худеет" горшочек от воды. + мы знали начальный и конечные веса. Это помогло уменьшить шум от измерений. Затем сверху накладывается алгоритм среднего, лимитации пиков (по сути фильтрация сигнала, если он превышает порог, то значит это значение либо шум, либо вода) и просто большая выборка на одно измерение, и вес стал стабильно учитываться. 2) Проблема контрафакта. Очень, ООЧЕНЬ много контрафакта на OZON. 2 штуки HX711 купленные мной, были с затертыми микрухами, неотмытым флюсом и шумели хуже чем пьяный сосед вася, периодически отваливались и отказывались измерять показания во всех режимах. (40\10), причинно следственной связи установить не удалось. В стерильном скетче и с идеальным подключением, вели себя неадекватно. Лишь на 3 раз удалось приобрести действительно хороший модуль, который ведет себя как заявляет производитель. На удивление он даже выглядел иначе.
Собственно, я упомянул, про распределение веса. у меня в системе 25 слотов на данный момент. (без весов 27). Так вот для каждого из слотов можно вычислить свой вес. Даже если растение не на весах, нужно что бы оно хотя бы раз там побывало единственное что. Работает это по принципу "разумного распределения", у каждого слота в системе есть свой индекс и 1 или 0 является ли этот индекс весами или нет. Если мы знаем, что растение например в системе 15 дней и оно одно сидит на измерительной платформе, то формула следующая
вес платформы - вес горшка - вес субстрата = вес этого конкретного растения.
Если на платформе сидят условно 5 растений, то этот вес просто делится на 5, при соблюдении того факта что это та же партия выращеваемых растений. (помните в предыдущем посте мы задавали количество посаженных растений? вот вот, там же и формируется уникальный ID посадки)
А дальше магия. У нас для каждого поддерживаемого растения системой,базово прописан теоретический вес, который перезаписывается реальным во время использования. Ну то есть по большому счету, некое самообучение. И логично предположить, что растение сидящее на весовой платформе в слоте с индексом 1, которому 5 дней примет массу A, а растения например в индексе 4,5,6 которым уже 25 дней, примет массу Общая масса растений - масса А / 3. Собственно как то так. А дальше, когда мы знаем уже реальную массу каждого растения, системе собственно не сложно предположить, что остальные растения из этой партии но в слотах не на весах, весят примерно столько же. И она присваивает массу уже этим растениям. Собственно как то так, это весьма сложно объяснить как оказалось. А дальше можно оставить на весах 7 уникальных растений например и с помощью этого алгоритма наблюдать за их поведением в зависимости от например различных факторов. (температуру поднять, чо будет? дать больше EC? и тд. ) все это пишется, запоминается и анализируется.
Ну и собственно график роста по CSV данным. Вот так салаты росли примерно с 25.04. (все что старше 30 дней улетает в долгосрочную память). Есть шумы и провалы, все таки я то трону весы, то сами растения на них, во время осмотра, все в норме.
Видно на графике, что сейчас салаты на платформе в стадии активного роста и прибавляют примерно по 0.1кг в сутки, что очень даже не плохо. Сейчас пару дней назад я снизил дозу EC до 1.2, до этого было 1.6, дальнейшие наблюдения покажут, осталась ли прежней скорость набора зеленой массы или замедлится. Салат Мини Ромэн.
Внешне это выглядит вот так:
Контейнер
Ну что бы далеко не отходить уже от конструкции, чуть вильнем в эту сторону. Это тоже отдельный и большой этап.
Контейнер для выращивания у меня сделан из ПВХ пластика на фрезерном ЧПУ. Тоесть по сути это был конструктор для склеивания. Клеил специальным клеем и сверху проходился ещё герметиком, тк вода может стоять в процессе эксплуатации весьма большим объемом. (около 1.8 литров. Возможно это не доработка и я поправлю в следующей генерации этот момент, но пока все работает отлично. Спроектирован так, что бы на обычном принтере можно было напечатать 3 крышки для высаживания растений и что бы влез в обычный металический стеллаж. Как по высоте так и по ширине. Идеально входил в стеллаж 800*300, тк изначально собственно под него и проектировался.
1/2
Конструкция контейнера.
Расположение самих форсунок тоже важно. Разместить их надо таким образом, что бы будущая корневая система не загородила собой одну\две\три из форсунок и не отняла питание у остальных растений, так же надо учесть что бы струя не била напрямую в горшочки, а увлажняла воздух вокруг, ну и естественно что бы это не было так, что из щелей фигачит водяной туман и увлажняет все вокруг и вокруг системы лужи.
Вариант 1, форсунки в верхней части направлены вниз.
Я сделал около 4-5 вариантов в модели, примерно просчитал конусами ~55 градусов, что соответствует моему давлению и диаметру форсунок. И самый нормальный вариант как по мне, без лишнего изобретательства велосипеда, это разместить их на будущем уровне воды внизу под 35 градусов к поверхности. Так же они заполняют пробелы друг друга. По одному борту стоят 4, по другому тоже 4 но со смещением на около 50мм.
В итоге финальный вариант выглядит уже вот так.
На дне имеются укрепления в виде полосок того же пластика, что необходимо для того что бы днище не прогибалось под весом жидкости и конструкция получилась легкой и жесткой и так же укреплены сами стенки ближе к крышке такими же полосами, что бы надежнее их скрепить между собой и дать опору для прямоугольника под печатные крышки уже.
Конструкция бака
Тут особо рассказывать нечего. Тут я не изобретал велосипед и сделал из контейнера удовлетворившего мои условия. Он должен закрываться плотно на защелки и быть не прозрачным, подходить по размеру. В принципе это всё. Дальше дело техники, я все монтировал на крышку, что бы при необходимости её поднять и вытащить сам бак и помыть\заполнить водой или что то ещё сделать, но честно я этого не делаю)) потому что заливаю воду просто в контейнер и она сама наполняет бак, но ситуации могут быть разные. Для обслуживания единственное что важно было, это не крепить ничего на сам контейнер, тк провода или шланги в дальнейшем будут мешать его обслуживанию. Единственное что пришлось сделать, это закрепить на быстросъемном печатном креплении датчик наличия воды на безопасном для насосе уровне. Если вдруг я все таки не увижу отсутствие раствора, он отключит насос и не даст ему работать вхолостую.
Продолжаем по функциям (системные функции)
Диспетчер задач. Да да, вы не ослышались. У меня есть свой диспетчер задач с блэкджеком и памятью. На самом деле вещь сугубо дебажная. Показывает она приоритет, ядро исполнения, сколько стека ест та или иная задача, за сколько выполняется и есть ли опасность краша системы по Watchdog, так же есть апи поинты для остановки или перезапуска задач, но пока в интерфейс не интегрировал ещё. Конечно это касается только задач FreeRTOS, задачи в Loop цикле при этом никак не отображаются.
Диспетчер задач
Лог система
Лог система, это отдельная вещь, тк в такой сложной системе надо логировать всё и ещё раз всё что можно. Но все же сталкивались с тем что в луп написал println и значение и больше в логах ты не хозяин. Да, конечно можно Усовершенствовать это делеями, а лучше миллисами или yield ами, но это разве гибкость? Когда логов становится много. Нет, не так. МНОГО, ОЧЕНЬ МНОГО, за пару секунд собирается 30-40 строк, пора что то с этим делать. А ведь так не хочется трогать уже сделанное полезное логирование, вдруг оно опять понадобится позже. Поэтому я уже известным путем и пошел. Сделал просто обертки для функций логирования, но уже с аргументами уровня логирования. DEBUG INFO WARNING ERROR. И собственно параметрами куда это самое логирование отслыать, в телегу на сд карту или в веб интерфейс. В тг просто по приколу, я хрен знает зачем, мне ни разу не пригодилось. А вот на SD очень даже, в связи с этим на фронте на самой ESP появилась даже кнопочка скачать лог. Пришлось ограничить правда размер до 4мб, как правило этого хватает для всех нужд. Но не было печали купила баба порося, это то я все сделал, но как отлавливать PANIC/WDT и прочие неприятности когда ты по ошибке вылез за предел массива или сожрал весь HEAP? Правильно, взять дешман ESP32Dev модуль и подцепить его TX\RX2 в RX\TX0 на Main ESP32S3 и заставить его читать вообще всё и отсылать по вебсокету на свой веб интерфейс. А ещё можно прикрутить кнопку принудительной перезагрузки контроллера, перепрошивки без необходимости лезть в корпус и подсоединять USB.
Возможность задать уровень настроек логирования.
Логирование всей фермы SLAVE контроллером на ESP32. Все идет в Live режиме, без перезагрузок страницы и без задержек через WebSocket.
Тут же прикрутил и фильтрацию логов по системам которые определяются автоматически, прикрутил MQTT для удаленного перезапуска Main и самое главное, на SLAVE сохраняются все Backtrace c Master контроллера и коды ошибок для дальнейшей диагностики + лог за минуту до критической ошибки. И вот это уже настоящая имба. Ты буквально независим от ошибок и USB провода и можешь прочитать всё что тебе нужно независимо от того, что с Master контроллером. Так ещё и ладно, эту идею можно развить и дальше, Slave контроллер может быть и резервным контроллером. Например самые важные функции это полив и свет, вполне можно автоматически дублировать и управлять теми же самыми реле при отключении Master контроллера. Уведомлять пользователя и тд. В будущем такое обязательно будет, но количество лапши внутри корпуса уже заставляет дергаться оба глаза. Поэтому потом, когда нибудь.
Резюмируя систему логирования, она получилась мощная, быстрая, понятная и самое главное удобная для использования. А большего мне и не надо. Красивости в ней только мешают, поэтому тут дизайна как такового и нет.
MQTT и умный дом.
Так же отдельный большой раздел.
Настройки подключения к MQTT. Все отображается в лайве, а так же есть подсказочки на какие топики подписаться если нужно это сделать вручную.
Обычно я не шел дальше ручной подписки на нужные топики, но тут что то захотелось ну прям автоматически все чтоб было. Итог таков. Если у вас дома есть Home Assistance и стоит расширение MQTT, вам больше ничего не надо делать. Все найдется и добавится в систему автоматически как надо и без танцев с конфигурациями, отдельным устройством, в котором усе уже сконфигурировано как нужно.
Мелочь, а указание авторства доставляет удовольствие.
Сама страничка сенсоров и релюшек.
Конечно забавно, но виртуальные реле из HA добавляются снова в HA, можно исправить, но не вижу смысла)
Не знаю, тут особо рассказывать то больше и нечего, из HA можно прокинуть уже куда хотите, хоть в Apple Home, хоть в Алису. Задавать сценарии и тд. В будущем возможно я расширю возможности настроек MQTT, что бы можно было выбрать а что конкретно вообще по этому вашему MQTT передавать то, но пока это жестко захардкожено и он передает все сенсоры и все реле. А больше как будто и не нужно, разве что блокировку таймеров и их настройку ещё бы завести, но как будто ту мач.
Система
Системный раздел умной фермы
Отсюда, можно забэкапить всё, что происходит в системе. конфигурацию реле, насосов, удобрений, бака, посадки и так далее и тому подобное. Всё качается в ZIP архиве и так же восстанавливается в одну кнопку на чистой системе. Это очень очень полезно, тк я за время тестирования и кучи форматирований флешек и Spifs просто устал заполнять всё руками. А так же помогает если вдруг вы сменили SD или отчистили SPIFS обновив прошивку. (Дада, кнопка файловой системы называется LittleFS так это потому что я всегда их путаю, но в данном проекте SPIFS)
Ну и возможность обновить систему через OTA .bin или обновить сам веб интерфейс, чего я делать больше не планирую.
Telegramm
Это последняя в этом посте система, телеграмм уведомления.
Ну во первых, она может срать вам в личку постоянными уведомлениями о срабатывании таймеров.
Во вторых, может уведомлять о том, что система засорена и насос не будет включен, или кончился раствор. (скриншоты из тестирования)
Конечно же она шлет ежедневные отчеты в 9 или во сколько вы выберете утра. С фотографией, параметрами и счетчиком незапланированных перезапусков за все время. (незапланированный перезапуск, это перезапуск даже от обновления прошивки, его можно скинуть)
Ну и конечно, система может выслать вам неприятные сообщения, которые вас уже изрядно бесят.
Ну и последнее
Каждый запуск системы, это куча проверок на работоспособность всех микросервисов системы. И их запуск. О чем телеграмм бот и сообщает. Тут немного дублируется логирование, тк STILL BETA. Но ничего)
Давайте на этом закончим вторую часть. В третей, я хотел бы рассказать уже о датчиках, их калибровке, температурных компенсациях, проблемах, шкалах NaCl и других. Австралийских аршинах в измерении EC. А в четвертой, если успею доделать 4.2, расскажу об интерфейсах взаимодействия с фермой. (Веб интерфейс, экран Nextion) вообщем очень много какой инфой могу поделится в этом цикле постов.
На строительных объектах геодезические работы играют ключевую роль в обеспечении точности и соответствия проектной документации. Однако проверки Ростехнадзора выявляют ряд типовых нарушений. Разбираем основные проблемы и даем рекомендации!
🔎 Типовые нарушения в геодезии:
Отсутствие актов освидетельствования геодезической разбивочной основы
Нередко на объектах нет документов, подтверждающих правильность разбивки осей.
Как избежать: Всегда оформлять акты разбивки с привязкой к пунктам геодезической сети.
Несоответствие фактических отметок проектным
Плановое и высотное положение конструкций (свай, фундаментов) часто отклоняется от норм.
Как избежать: Регулярно проводить контрольные замеры и фиксировать их в исполнительных схемах.
Отсутствие геодезического контроля при скрытых работах
Например, перед бетонированием не проверяется соответствие котлована или арматуры проекту.
Как избежать: Освидетельствовать каждый этап и фиксировать в журналах.
Ошибки в исполнительных схемах
В схемах отсутствуют ключевые данные: привязки, фактические размеры, отметки.
Как избежать: Проверять полноту информации и соответствие нормам СП 126.13330.2017.
Незарегистрированные журналы работ
Геодезические журналы не всегда регистрируются в органах надзора.
Как избежать: ППГР - Разрабатывается для любого строительства на городской территории, при строительстве на территории действующего предприятия, а также при строительстве в сложных природных и геологических условиях или по требованию органа, выдающего разрешение на строительство или выполнение СМР. В остальных случаях разрабатывается по решению Подрядчика в неполном объеме
💡 Рекомендации:
✅ Проводите входной контроль геодезических данных перед началом работ. ✅ Используйте аттестованное оборудование и методики. ✅ Фиксируйте все этапы работ в актах и журналах. ✅ Обеспечьте взаимодействие с авторским надзором.
Геодезия — это основа точности строительства! Соблюдение норм избавит от проблем при сдаче объекта.