1 2 3 4 5 6 7 8 9 10 10/10 10,00оценок: 9

Arduino Mega. Контроллер теплицы. Хроники - 3.0

Тема в разделе "Умный дом", создана пользователем Анкор Плюс, 27.04.17.

Статус темы:
Закрыта.
  1. id10960627
    Регистрация:
    09.05.18
    Сообщения:
    76
    Благодарности:
    8

    id10960627

    Живу здесь

    id10960627

    Живу здесь

    Регистрация:
    09.05.18
    Сообщения:
    76
    Благодарности:
    8
    Подскажите пожалуйста такой момент: хочу использовать пин Меги для ребута ЕСП в случае зависания. Насколько я помню, там максимальный ток на пин у ардуин что-то в районе 40-50 мА, а ЕСПшка в пике может жрать до 300 мА вроде. Не выгорит ли пин Меги при прямом подключении пина к ЕСП или надо подцеплять через какой-нить транзистор или подобное?
     
  2. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Обязательно выгорит :) Юзайте транзисторный ключ - с пина меги в базу (затвор), ЕСП подключена в цепь коллектор/эмиттер (сток/исток).
     
  3. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957
    Адрес:
    г. Москва, Зеленоград.
    Эти уроды опять все заблокировали. GIT не работает, Гугл переводчик не работает. Как жить дальше. Уйду в колхоз подальше от электричества.
     
  4. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    Дима, докладываю.
    Начну с хорошей новости- сброс по СМС работает.
    А вот с окнами все то же самое.
    И память чистил, и контроллер перегружал по твоим рекомендациям- без толку.
    Оставлял только окна в правилах, пины удалял-не помогло.
    Но обнаружил одну закономерность.
    5 моих правил для 2х окон. Закрыть-открыть по температуре для каждого окна, плюс пятое- открыть 0 окно после 17-00.
    До 17-00 сброс работает так как я описывал до этого, т. е в закрытое положение окна не гонятся.
    После 17-00 0 окно по сбросу закрывается.,1 -е нет, секунд 10 на закрытие и все, статус открыто.
    Как только в правилах привязал работу 1 окна к 5 правилу (закрыть после 17-00, по сбросу окна закрылись.
    КМК собака порылась в алгоритме работы окон по температуре, такое ощущение, что после сброса несколько секунд окна отрабатывают на закрытие, а далее, не выдержав установленного времени работы фрамуг начинают работать по температуре.
    И еще.
    Было бы здорово организовать паузу между переключением с закрытия на открытие, т. к. при питании привода через мост (типа L298, L6203) возникает бросок тока и иногда срабатывает защита

    Вот видимо интервал закрытия-открытия (в прошивке у меня 80-85 секунд) корректно и не передается.
    Внешне этого не увидел.
    В мониторе порта ничего кроме READY со временем.
     
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Ага, заметил - гугль глючит опять, Trello вчера лежало. Пещерные люди, блин.
     
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    @olegmak3, короче - у тебя видимо конфликт правил: срабатывают какие-то оба противоположно направленные.

    Что предлагаю: начать с двух простых правил, для одного окна. Убедиться, что эти два правила (одно открывает по температуре, другое - закрывает) - работают корректно. Затем - продолжать усложнять, постепенно добавляя правила.

    Пока других вариантов объяснения происходящему - я не вижу, к сожалению.

    Пока не вариант.

    Сами окна ничего не знают о температуре, они просто движутся РОВНО ТАК, как их запросили. И если одно правило будет просить их открыться, а другое - тут же - закрыться, то ничего хорошего из этого не получится.

    Давай поступим проще: удали вообще все правила, жмакни кнопку "Сохранить в контроллер". Убедись, что правил больше в контроллере нет. Убедись, что окна при старте двигаются в закрытое положение. После этого, на вкладке "Температура" - поставь галочку "Создавать служебные правила", сохрани настройки температуры, выгрузи правила из контроллера - убедись, что они создались таки. Потом проверяй - корректно ВСЕ окна работают по температуре? Если корректно - то также корректно будет работать управление одним окном по температуре, т. к., по сути, там различие во всего одном параметре команды, вместо ALL - индекс окна.

    Ты, видимо, не понял, о чём речь: если у тебя стоит максимальное время работы моторов в 10 секунд в настройке времени работы моторов - ты можешь хоть 1000 секунд передавать в параметре команды из правила к окнам - окна не отработают больше 10 секунд, хоть тресни.

    Ок, давай я тебе напишу навскидку алгоритм работы правил, касательно первого окна:

    1. Открыть окно 0 после 17:00;
    2. Открыть окно 0, если Т > 20, НЕ СРАБАТЫВАТЬ, если сработало правило 1;
    3. Закрыть окно 0, если Т < 19, НЕ СРАБАТЫВАТЬ, если сработало правило 1;

    Вот это будет работать так: после 17:00 окно будет открыто. До 17:00 будут работать правила 2 и 3. Попробуй этот вариант.

    Кмк, все-таки очень похоже на конфликт правил. Нам надо с тобой сделать следующее: создать МИНИМАЛЬНЫЙ набор из ПРАВИЛЬНЫХ, не конфликтующих правил, чтобы воспроизвести эту ошибку. Давай попробуем на описанных выше трёх. А я пока проверю на правильность передачи параметров из правила в модуль окон ;)

    Ещё могу посоветовать: замени время на проценты открытия, т. е. вместо 80с - указывай "80%", например - вполне реально, что действительно неправильно параметры передаются, проверяю.

    Правка: проверил - параметр времени открытия передаётся корректно, даже в случае больших чисел. В этой части ошибок не вижу.
     
    Последнее редактирование: 17.05.18
  7. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    Так со вчерашним твоим вариантом из 5 правил и экспериментировал.
    И конфликтовать ничего не конфликтует в работе. Проблема с поведением после ресета.

    Это ты не понял, я специально указал, что в прошивке стоят 80 секунд, а отрабатывается только 5.
    Согласись, 5 намного меньше, чем максимальные 80 в прошивке.

    Делал.
    Приведи пример, как организовать с помощью служебных правил управление двумя фрамугами по температуре. Скажем для первой; 27 открыли, 25 закрыли. И для второй 29 открыли и 28 закрыли.
     
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Я писал выше, что при старте окна гонятся в закрытое положение. При этом, если какое-либо правило попросит их открыться - они начнут открываться, без всяких пауз. Ещё раз убеждаюсь, что у тебя конфликт правил, и ты не до конца понимаешь принцип их работы и взаимосвязи между правилами. Попытаюсь объяснить в очередной раз:

    1. Есть набор правил - конструкций, которые обрабатывает контроллер;
    2. Раз в полсекунды контроллер вычисляет, какие правила на данный момент СРАБОТАЛИ, т. е. выполнены входящие в них условия (время начала работы, сравнение по температуре или ещё чему, дни недели и т. п.);
    3. Далее контроллер разрешает конфликты, выбрасывая из списка сработавших правил те, которые зависят от других сработавших (т.е. у которых в списке "не срабатывать, если сработало другое правило" есть какие-то из правил, сработавших при текущей проверке);
    4. После разрешения конфликтов контроллер выбрасывает из списка правила, команды которых были выполнены на предыдущем проходе обработки правил - дабы часто не рассылать одни и те же команды;
    5. После этого всё, что делает модуль правил - это посылает команду нужному модулю. На этом работа модуля правил заканчивается в текущей итерации.

    Как видишь - всё предельно просто. И в этой простоте кроется главная засада: эту простоту можно легко запутать, построив список правил так, что они будут противоречить друг другу, и на каждой итерации одному модулю будут посылаться диаметрально противоположные команды, например.

    Я ещё раз пересмотрю логику работы правил, как делал до этого уже 500 раз, наверное. Но я не уверен, что там есть настолько грубая ошибка по части логики. Я посмотрю, и отпишусь.
     
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Служебное правило - ничем не отличается от обычного, только специальным именем ;) Пример правил для двух окон:

    1. Следим за температурой, больше либо равно 27 - открываем окно 0;
    2. Следим за температурой, меньше либо равно 25 - закрываем окно 0;
    3. Следим за температурой, больше либо равно 29 - открываем окно 1;
    4. Следим за температурой, меньше либо равно 28 - закрываем окно 1;

    Пробуй. Я сейчас создам такие же у себя, и проверю. Как проверю - отпишусь, чего обнаружил.
     
    Последнее редактирование: 17.05.18
  10. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    И я писал уже, что при старте окна гонятся в закрытое положение, но только секунд 5, после этого (видимо срабатывает правило для открытия по температуре) и окно останавливается в ПРОМЕЖУТОЧНОМ, а не полностью открытом положении. И это промежуточное положение чревато перегревом теплицы, т. к. окно открыто не полностью. И чем меньше максимальное время работы привода, тем больше будет влияние этих пяти секунд начальном закрытии на перегрев, скажем при 10 секундах времени полной работы привода окно фактически будет открыто на половину.
    Завтра проведу еще пару экспериментов с окнами.
    В конце концов есть костыль: после прихода смс о перегрузке, в ручном режиме закрыть окна (что отрабатывается на ура, и перевод контроллера в автоматический режим
     
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    @olegmak3 - ещё раз прошерстил, единственное, что нашёл - слишком часто сбрасывается флаг сработавших правил, закомментировал ровно одну строчку, чтобы команды из модуля правил не гонялись часто. На гитхабе обновил.

    Список правил - приложен. Отрабатывает корректно, проверил. Пробуй.
     

    Вложения:

  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Олег, я сдаюсь. Честно - сдаюсь, безоговорочно. Окно останавливается в том положении, в котором его ЗАПРОСИЛИ остановиться, понимаешь? Выше - я выложил список правил, у меня к настройках 80 секунд на работу моторов сейчас стоит, 4 окна используется. При этом при старте ВСЕ окна гонятся в закрытое положение РОВНО 80 секунд, кроме случая, когда для любого из двух первых окон сработали правила - тогда они останавливаются в той позиции, в которой запрошено, т. е. в позиции 20 секунд работы моторов, например. Есть разница - позиция абсолютная и относительная - это надо понимать. Максимальная позиция окон - это ПОЛНОЕ время работы моторов, указанное в настройках. Если полное время работы моторов составляет 80 секунд, а ты попросил окно открыться 20 секунд - это НЕ ЗНАЧИТ, что моторы будут работать 20 секунд. Это значит, что окно встанет в позицию 20 секунд от МАКСИМАЛЬНОГО времени работы моторов, т. е., в нашем случае - будет открыто на 25%.

    Это уже обсуждалось выше по теме неоднократно. Короче, я сдаюсь. У меня указанные четыре правила работают ровно так, как им и суждено. Ещё раз: указание процентов ли, или времени для открытия окон из правил - это позиция, ОТНОСИТЕЛЬНАЯ максимальному времени работы моторов.

    Я уже приводил как-то пример, повторюсь ещё раз, с круглыми числами: допустим, время работы моторов для перевода окна из закрытого в полностью открытое положение - 100 секунд. Если окно полностью открыто (находится в позиции 100 секунд), и ты из правил попросишь его открыться 20 секунд, то моторы будут работать 80 секунд НА ЗАКРЫТИЕ, чтобы встать в позицию 20 секунд. Если окно в позиции 20 секунд, и ты из правил попросишь его открыться 30 секунд - то моторы будут работать 10 секунд НА ОТКРЫТИЕ, чтобы из позиции 20 секунд переместиться в позицию 30 секунд. Если окно в позиции 30 секунд и ты попросишь его из правил работать 10 секунд - то окно будет закрываться 20 секунд, чтобы из позиции 30 секунд встать в позицию 10 секунд. Тут всё ОТНОСИТЕЛЬНО, а не абсолютно - вот в чём главная фича. Командой OPEN можно как закрывать, так и открывать окна в любое промежуточное положение.

    По сути, командой OPEN (открыть форточки - из правил) можно рулить окнами, гоняя их в любую позицию, а командой CLOSE (закрыть форточки - из правил) вообще можно пренебречь - достаточно в команде OPEN передавать либо позицию в секундах, либо - позицию окна в процентах от максимальной. Была несколько месяцев назад масштабная переделка логики работы окон по части смены позиций, было обсуждение большое. Хвосты в виде команды CLOSE остались ради обратной совместимости.

    Надо бы мне, наверное, убрать время в секундах полностью, заменив в правилах в конфигураторе это дело на проценты от максимальной позиции окна - чтобы никто не путался. Сейчас, наверное, этим и займусь.
     
    Последнее редактирование: 17.05.18
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Обновил конфигуратор на гитхабе, изменил подпись к полю ввода секунд, чтобы не было путаницы, что значит это поле. В вебморде тоже изменил подпись к полю. Теперь это поле называется "Положение окна, секунд" - и оно везде ОТНОСИТЕЛЬНОЕ максимального. Как если бы представить круг в 360 градусов, где 0 - окно закрыто, 360 - окно открыто. Задавая положение окна в любое промежуточное значение в секундах - мы движем стрелку позиции окна по часовой или против часовой, перегоняя окно в запрошенную позицию. Надеюсь, такая аналогия понятна.
     
  14. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    Дима!
    Я тоже сдаюсь.
    Ты меня не слышишь.
    В чем был вообще начальный смысл гнать окна в крайнее положение?
    Что бы получить начальную точку отсчета, для всех окон.
    А так получается, что погнали фрамуги к началу отсчета, но доехали не все, получили ошибку.
    Чем чревато-писал выше.
    Почему нельзя загнать в крайнее положение все окна, не взирая на правила в течении максимального времени работы привода (из прошивки),а затем уже рулить правилами мне непонятно.
    Все, умолкаю на эту тему. Костыль есть. Выше писал.
    А проблема, кмк, еще всплывет.
     
  15. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Ещё раз: я уже писал, выше выложены 4 правила, которые рулят двумя окнами. ВСЕ ОКНА гонятся в закрытое положение у меня. Два из них, если сработали правила - останавливаются в промежуточных, СОГЛАСНО правилам. ЧЯДНТ?

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

    Насколько я понял, ты хочешь, чтобы при старте контроллера окна ОДНОЗНАЧНО закрывались 80 секунд (в твоём случае), не реагируя при этом на правила никак, так? Пойду смотреть, что можно сделать.
     
    Последнее редактирование: 17.05.18
Статус темы:
Закрыта.