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

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

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

Статус темы:
Закрыта.
  1. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    Может по скайпу?
     
  2. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Как это соотносится с контроллером теплицы? Вы предлагаете сделать полноценную реализацию MQTT, чтобы можно было и подписываться на топики, и публиковать их?

    Поймите простую вещь: это малоформализуемо - та же ESP, при поступлении данных - просто плюёт их в порт, и надо как-то понимать, что это - ответ по протоколу MQTT, а не случайно вклинившийся посредине её статус, или ещё что - короче, там секаса полный дом.

    porokhnya_dmitry, звоните, сейчас включу.
     
  3. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    @Shelllonn, почитал про MQTT, и пришёл к выводу, что малой кровью тут не отделаешься, есть много сложностей при работе с AT-прошивкой:

    1. Соединение надо держать постоянно (если нужен полноценный клиент, который может работать и как издатель, и как подписчик);

    2. Даже при частичной реализации (только как издателя) - протокол не обходится одним пакетом, что создаёт сложности в реализации, а именно:

    • законнектились к серверу (AT-командой, не забывайте об этом ;));
    • в ответ от сервера упал пакет с подтверждением коннекта;
    • и вот с этого момента надо опять посылать AT-команду для отсылки следующего пакета, что не позволяет оставить процесс обработки только внутри класса, работающего с ESP, что идеологически - очень неправильно: работа неблокирующая, много внутренних состояний, и отдавать во внешний мир возможность писать что угодно в порт ESP - значит поломать всё, такие вот реалии.

    3. И уж если делать, то, конечно, реализовывать полноценный клиент MQTT, чтобы можно было и публиковать, и подписываться на топики.

    Резюмирую: AT-прошивка и то, что уже написано для работы с ней - не даст нам спокойно внедрить туда поддержку MQTT.

    Что делать? Вариант, навскидку, есть, он, конечно, диковат, но пока на ум приходит только такой: вторая ESP, прошитая прошивкой для работы с MQTT-брокером. И по Serial мега общается с ней, передавая топики и получая подписки, делая уже то, что надо. При этом сама мега предоставляет через конфигуратор и вебморду настройки для MQTT, пуляя их в Serial второй ESP при изменении. Ну а дальше - дело техники.

    Насколько такой вариант будет приемлемым в максимальной конфигурации прошивки? Да хз, две ESP выглядят как-то диковато, конечно, но этот вариант обеспечивает меньше секса, чем вариант с использованием ESP с AT-прошивкой, как сейчас.

    Есть ещё вариант, я его вскользь озвучивал в разговоре: выделить отдельный канал из 4-х, доступных на ESP, и на нём держать соединение с MQTT-брокером, но и тут - много нюансов: переконнект при обрыве связи, переконнект при переконнекте к точке доступа, и всё это - AT-командами, блин :(

    Короче, надо сильно думать, очень сильно ;) Пока меня неделю не будет - я покручу этот вопрос и так, и сяк, надо в голове уложить всю эту головоломку, хотя бы половину пазла собрать :)
     
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Начал работать над первой версией реализации MQTT - пока пробую с тем, что есть, на AT-прошивке. Если не взлетит - вернём всё взад, и будем думать ;)

    Сегодня до вечера получится только костяк набросать, а потом - неделю перекура, будет время на обдумывание ;)
     
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Уже коннектится к mosquitto, отправляет пакет CONNECT, сейчас буду писать тестовый код для публикации аптайма :)

    При сбросе связи - переконнекчивается каждые N секунд, пока определил как 10 секунд, тестировать и тестировать ещё. Ну и наблюдать - как всё это дружит с вебмордой и запросами по HTTP ;)
     
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Ну вот - тестовый топик отправляется (просто увеличиваю значение переменной раз в 10 секунд и публикую этот топик):

    screen.png

    Получается довольно забавно и интересно: теперь действительно в любом клиенте MQTT можно подписываться на топики и следить - чего там происходит в контроллере ;)

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

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Смотрим:

    screen.png

    Пока ручками создал файлы, описывающие топики, на SD - в дальнейшем это будет делаться через конфигуратор, ессно. Как видно, с одного датчика есть показания, второй - физически не подключен, и на брокер уходит топик с данными "-", что означает - с датчика нет данных.

    Движуха прёт :)
     
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Подписка на все топики с температурой:

    screen.png

    Как видно, тоже отрабатывает исправно - впрочем, тут не моя вина, это так брокер устроен правильно :)
     
  9. Scorp78
    Регистрация:
    09.06.12
    Сообщения:
    28
    Благодарности:
    6

    Scorp78

    Участник

    Scorp78

    Участник

    Регистрация:
    09.06.12
    Сообщения:
    28
    Благодарности:
    6
    Адрес:
    Омск
    Парни доделал теплицу, вот выкладываю фотки как обещал. Сел за ардуинку подключил к ней SD и часы и она у меня сгорела т. е. перестала определятся и прошиваться в общем печалько надо заказывать новую. причина неизвестнож
     

    Вложения:

    • DSCF2271.JPG
    • DSCF2272.JPG
    • DSCF2273.JPG
    • DSCF2274.JPG
    • DSCF2275.JPG
    • DSCF2276.JPG
    • DSCF2277.JPG
    • DSCF2278.JPG
  10. necrjd
    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98

    necrjd

    Живу здесь

    necrjd

    Живу здесь

    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98
    Непросто сжечь ардуинку подключая часы и SD. Повышенное питание не подавали? пинцет на плату не роняли? Питали только через разъем USB? При подаче питания микросхема неприлично греется?
    Возможно, проблема в плохой китайской пайке. Например, в моем экземпляре был плохо припаян USB разъем. Осмотрите под лупой пайку проца, кварца, разъема. Попробуйте на контакт Vin подать напряжение от 8 до 12 вольт. Попробуйте подключать без внешних модулей - может кто-то из них садит питание
     
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Первое правило работы с китайскими модулями: взять лупу, и просмотреть все соседние контакты на предмет "соплей" ;) Сильно экономит время и нервы, кстати ;)
     
  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Мини-отчёт: пока я в нерабочем состоянии (на выезде, взял только старенький ноут) - думаю над MQTT. Уже предусмотрел (на будущее, в первой версии - только показания датчиков) возможность публикации топиков не только с показаниями датчиков, но и топиков с состоянием контроллера - статус окон, полива, досветки, пинов - короче, по-максимуму фарша, что называется ;)

    По поводу подписки контроллера на топики, что думаю и как вижу я: у контроллера для MQTT-брокера будет свой (настраиваемый) ID клиента, например, "greenhouse". Соответственно, контроллер при старте будет подписываться на все топики "greenhouse/set/#". Ну а дальше - простой мост будет реализован, т. е. приходящий топик с командой будет транслироваться в команду, понятную контроллеру, путём простой замены "/" на "|", и переводом команды в верхний регистр символов. На примере:

    1. Сейчас контроллер по приходу из внешнего мира команды CTSET=STATE|WINDOW|ALL|OPEN - открывает все окна, т. е. передаёт модулю STATE команду "WINDOW|ALL|OPEN", по сути;

    2. В случае с MQTT, при приходе топика "greenhouse/set/state/window/all/open" - выделяется часть строки после "set/", т. е. "state/window/all/open", все слеши "/" заменяются на "|", т. е. получаем "state|window|all|open", потом переводим в верхний регистр, т. е. получаем "STATE|WINDOW|ALL|OPEN", далее - скармливаем контроллеру, остальное - дело техники. Достоинства - универсальность и автоматическое транслирование ВСЕХ поддерживаемых команд управления контроллером, сразу и кучей. Считаю такой подход самый разумным, а в справке к модулю MQTT можно будет просто перечислить перечень основных команд, чтобы было видно, что к чему.

    Такие дела, но их реализация - пока откладывается на пару недель, надо решить дела.
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    К слову, оказалось, что формат команд чудесно ложится на протокол MQTT, дело только в разных разделительных символах. Т. е. изначальный выбор был сделан идеологически верно ;)

    Ещё из новостей: на главной странице гитхаба написал обращение к англоязычным читателям - потихоньку буду делать поддержку мультиязычности в конфигураторе и веб-морде, английский должен присутствовать обязательно, считаю. Но это, понятное дело - на отдалённое будущее ;)
     
  14. sinar7
    Регистрация:
    01.02.17
    Сообщения:
    41
    Благодарности:
    7

    sinar7

    Участник

    sinar7

    Участник

    Регистрация:
    01.02.17
    Сообщения:
    41
    Благодарности:
    7
    @DIYMan,Доброго времени суток Дмитрий. У меня возник хотюнчик чтобы при пропадании сети на дачи приходила смс на телефон. И у меня есть небольшой генератор со стартером что бы он автоматом запускался ну и при появлении глох и смс. Планирую поставить в теплицу обогрев.
     
  15. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    Очень даже легко! Сгорела сегодня сама-собой! Воскурился дымок из CH340, причём, не подключал ничего. Просто заметил, что идёт дымок! :mad: Похоже, что выгорело ещё что-то, но сама МЕГА работает. :|: Посмотрю, что будет: сдохнет совсем, или продолжит работать? Вот только конфигуратор теперь подключать гемор! :(
     
Статус темы:
Закрыта.