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

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

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

Статус темы:
Закрыта.
  1. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    У мну новые сырые вкусности в прошивке, уже код корявый местами, ну да не беда: модуль полива переписали? Переписали. И другие корявые места со временем перепишем ;)

    Теперь подробней: вынес всю работу с EEPROM в отдельный файл, дёргаю EEPROM через свои функции. Для чего - надеюсь, понятно: когда будем адаптировать под DUE - достаточно будет в этих функциях директивой условной компиляции работать с памятью по I2C - и всего делов ;)

    Но это не главное, главное другое: скачайте новую прошивку и вебморду с гитхаба, откройте Globals. h - и вы там увидите закомментированное вот такое:

    А ещё чуть ниже - вот такое:
    Шо цэ за шляпа, спросите вы? Всё просто - это такая треуголка, которая нужна, чтоб носить :)]:aga: В том смысле, что данный модуль предоставляет функционал по дёрганью внешнего сервера, на предмет "а не поступило ли для мну каких команд?". И, естественно, он эти команды выполняет, если они есть.

    Как видите - заложил и проверку по ключу (пока жёстко вшит, потом к модулю настройки припишутся), и адрес. Подробная информация - в вебморде, надо открыть файл check_commands.php в "Блокноте" и почитать, чего там написано внутри.

    Короче: если у вас ESP контроллера коннектится к роутеру, т. е. находится в домашней сети, и в домашней сети есть веб-сервер по какому-то адресу, то можно до него достучаться, изменив настройки нового модуля - указать IP-адрес сервера в локальной сети, и имя хоста, которое запрашивать (у меня это, соответственно, "192.168.1.33" и "gh-local.ru", не забыв раскомментировать USE_HTTP_MODULE, конечно.

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

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

    Видимо, модуль Wi-Fi будет одним из первых в очереди на переписывание, если окажется, что с пониманием логики его работы всё очень грустно. Но пока, вроде - терпит, я ещё не потерялся в хитросплетениях.

    Итог: теперь вы можете управлять контроллером, у которого нет внешнего адреса, но который подключен к интернету и знает, откуда брать команды. Хоть онлайн-сервис пиши теперь :) Дополнительно - ничто не мешает при запросе на сервер отправлять туда статус контроллера - показания датчиков и пр. Ничто не мешает, кроме оперативки в обрез, как обычно :)

    Думаю, кому-нибудь данная фича окажется нужной. А кому не нужна - просто не трогайте закомментированную директиву USE_HTTP_MODULE, и всё ;)

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

    З. Ы. Не спал всю ночь, пошли вторые сутки. Что-то как попёрло, как попёрло :)]:aga:
     
  2. Viktorovich4232
    Регистрация:
    28.02.17
    Сообщения:
    145
    Благодарности:
    95

    Viktorovich4232

    Живу здесь

    Viktorovich4232

    Живу здесь

    Регистрация:
    28.02.17
    Сообщения:
    145
    Благодарности:
    95
    @DIYMan, Дмитрий, а Вам такой открытый проект как ArduinoMegaServer известен?
    https://hi-lab.ru/arduino-mega-server С Вашей светлой головой может получиться неплохая связка. ;)
     
  3. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    Конечно известен, я его даже скачивал и смотрел, как он писан - очень средненько. Да и вообще, считаю, что это мертворожденный проект, по одной простой причине - постулат "давай сделаем универсальную вещь, которая может быть и велосипедом, и телевизором" - означает, что чёткого практического применения проекту сам автор не видит. Я подобными посылами переболел ещё в эпоху, когда занимался Shareware и удивлялся, почему программа (такая крутая, ведь моя идея гениальна, тысяча чертей!) не продаётся. Вот примерно такая же ситуация с упомянутым вами проектом ;)
     
  4. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    Дмитрий!
    Раскомментировал в прошивке модуль влажности и Мега благополучно зависла.
    Даже экран не загружается. Только светлый квадрат в правом углу.
    Закомментировал-все ОК.
    И по конфигуратору маленькое наблюдение.
    Когда достаточно много правил, т. е окно правил заполнено, то самое нижнее правило практически не видно. Оно перекрывается синей строкой с расшифровкой правила.
    Не очень удобно.
    Лучше эту строку сместить на пару позиций вниз экрана.
     
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    А если не использовать DHT22? Просто прописать 0 датчиков в модуль влажности - что тогда будет? У мну сейчас только Si7021 подключен, с ним работает. Возможно, проблема с DHT, хотя почему - ума не приложу. Попробуйте, плз, так - надо сузить границы проблемы.
    По крайней версии конфигуратора, я правильно понял? Ок, поправлю.
     
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    @olegmak3, блин, глаза сломал - ну вот не вижу ничего криминального в модуле влажности, хоть убей. Учитывая то, что SHT10 у меня как тип датчика вообще не указан в Globals, т. е. этот кусок кода физически не будет выполняться (я про добавления).

    Надо подключить DHT22, и проверить - возможно, всё сразу станет ясно, если зависнет на нём у меня.
     
  7. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    @olegmak3, вы не поверите :) Подключил свой DHT22 к плате - дёргал и так, и сяк, и перевтыкал в USB, и питание пересбрасывал - показывает, не виснет ничего. В настройках Globals указаны два датчика у меня - Si7021 и DHT22, первый, соответственно, на I2C, второй - на пине A7. Настройки Globals - те, что на гитхабе сейчас лежат, ими и прошита мега.

    Так что я даже не знаю, в чём дело. Датчик оставил подключенным - буду наблюдать, так сказать.
     
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    Обновил конфигуратор на гитхабе - добавил настраиваемые виджеты на первый экран - теперь стало ещё удобней ;) Можно вкл/откл виджет, жаль, пока мышой не таскаются/сортируются, но в будущем, будем надеяться, и это появится.

    Вытащил не все виджеты, так что если у кого будут пожелания/предложения - пишите ;)

    @olegmak3 - косяк со списком правил в конфигураторе поправил.
     
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    Появилась тут мысля - сделать настройку в Globals - кудыть писать настройки: в EEPROM или в I2C-память: как известно, на модулях часов DS3231 есть память, вроде как там стоит AT24C32 (The AT24C32 provides 32,768 bits - из даташита) на 4 Кб, по объёму то же самое, что в меге. Теоретически, если продумать архитектуру - можно вообще разнести настройки: часть там, часть там.

    Кто что думает по этому поводу?
     
  10. АлкН1
    Регистрация:
    14.04.16
    Сообщения:
    468
    Благодарности:
    1.171

    АлкН1

    Живу здесь

    АлкН1

    Живу здесь

    Регистрация:
    14.04.16
    Сообщения:
    468
    Благодарности:
    1.171
    @DIYMan, при компиляции Globals. h выдает ошибку:
    exit status 1
    'MIN_LOOP_PARAMS' was not declared in this scope
    для строки:
    for (uint16_t i=MIN_LOOP_PARAMS;i<paramsCount;i+)
    в LoopModule. cpp
     
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    Он исключён из прошивки, что он у вас вообще делает? Просто удалите его из папки и LoopModule. h, до кучи.
     
  12. АлкН1
    Регистрация:
    14.04.16
    Сообщения:
    468
    Благодарности:
    1.171

    АлкН1

    Живу здесь

    АлкН1

    Живу здесь

    Регистрация:
    14.04.16
    Сообщения:
    468
    Благодарности:
    1.171
    на пупке извертелся, пока допер: нельзя! просто копировать Main с заменой существующих файлов - необходимо удалить старый Main и создать новый:|:
     
  13. obuhanoe
    Регистрация:
    08.04.14
    Сообщения:
    457
    Благодарности:
    1.592

    obuhanoe

    Живу здесь

    obuhanoe

    Живу здесь

    Регистрация:
    08.04.14
    Сообщения:
    457
    Благодарности:
    1.592
    Адрес:
    Краснодарский край, Усть-Лабинск
    DIYMan, подскажите смотрю схему и интересует силовая часть. Реле полива и реле насоса - это китайские реле или твердотельные реле или реле + контактор?
    Спасибо
     
  14. АлкН1
    Регистрация:
    14.04.16
    Сообщения:
    468
    Благодарности:
    1.171

    АлкН1

    Живу здесь

    АлкН1

    Живу здесь

    Регистрация:
    14.04.16
    Сообщения:
    468
    Благодарности:
    1.171
    Конфигуратор - красавец! :super::victory:
    имхо, 1) добавить функции изменения положения и размера окон на вкладке;
    2) уменьшить количество вкладок с группировкой по функциям:
    А. Служебные
    1. Правила
    2. Составные команды
    3. Дельты
    4. Логи
    Б. Датчики?
    1. Досветка
    2. Температура
    3. ?
    В. Вода
    1. Полив
    2. Влажность
    3. Влажность почвы
    4. Расход
    5. РН
    Г. Связь
    1. IoT
    2. Wi-Fi
    3. CMC
    PS. на вкладках Монитор, Дельты, Влажность, Влажность почвы, IoT, CMC таблицы не выходят из-за нижней границы окна:close:
     
    Последнее редактирование: 05.06.17
  15. HANTER333
    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156

    HANTER333

    Живу здесь

    HANTER333

    Живу здесь

    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156
    Вопрос не ко мне, но я отвечу. Реле могут быть любые, лишь бы коммутировали ток нагрузки. Во избежании помех, лучше управлять ими через оптопару:)
     
Статус темы:
Закрыта.