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

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

Тема в разделе "Теплицы и парники", создана пользователем Анкор Плюс, 19.05.18.

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

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885
    Адрес:
    80 км от Краснодара
    Просто в терминалке раз в N секунд запустить макрос, чтобы он отсылал строку CTGET=STAT|FREERAM, оканчивающуюся байтами \r\n. И тогда мега будет выплёвывать свободную оперативку.
     
  2. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885
    Адрес:
    80 км от Краснодара
    Не забывайте только поставить временнЫе метки в лог, как было в прошлый раз ;)

    З. Ы. В конце лога вижу, спс ;)
     
  3. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885
    Адрес:
    80 км от Краснодара
    @necrjd - тут ещё какое дело, про оперативку: я почему настаиваю на минимальной обвязке, смотрите: вы тестируете одновременно и ThingSpeak, и gardenboss. ru. В логе видно, что однажды они одновременно запросили доступ в сеть. А это - легко несколько сотен байт, временно выделенных в оперативке. И ещё несколько сотен байт - при получении ответов. Короче, килобайтик такое пересечение теоретически отъесть может, со всеми вытекающими.

    Я не говорю, что так делать не надо, наоборот - самому хочется, чтобы всё могло работать параллельно. Однако тестированию - это только мешает. Например, мы выяснили по двум вводным, что проблемы определённо с gardenboss. ru, т. е. с HTTP_MODULE. А это, как понимаете - другой, отличный от ThingSpeak набор строчек кода. И хоть они и пользуют один и тот же транспорт (SIM800) - даже при допущении, что именно в CoreSIM800Transport есть какая-то проблема - следует сознательно ограничить вводные, чтобы было проще понять, где именно косяк.

    А так, получается - я тыкаюсь в полуслепую. Я крайне признателен вам с Олегом за помощь, и буду ещё больше признателен, если вы найдёте возможность прислушаться, и тестировать в ограниченном окружении. Временно, естественно ;) - как только найдём это хитросплетение - можно будет поэтапно включать весь фарш и продолжать.
     
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885
    Адрес:
    80 км от Краснодара
    @necrjd, по поводу нового лога:

    Код:
    2:47:52.094>
    [SIM800] REMAINING BYTES: 275
    2:47:52.094>
    DATA AVAILABLE FOR GARDENBOSS.RU !!!
    2:47:52.094>
    HTTP: line catched=
    2:47:52.094>
    HTTP: line catched=HTTP/1.1 200 OK
    2:47:52.094>
    HTTP: line catched=Date: Mon, 17 Jun 2019 21:47:36 GMT
    2:47:52.094>
    HTTP: line catched=Server: Apache/2
    2:47:52.094>
    HTTP: line catched=X-Powered-By: PHP/7.0.33
    2:47:52.094>
    DATA AVAILABLE FOR GARDENBOSS.RU !!!
    2:47:52.164>
    HTTP: line catched=Cache-Control: no-cache, private
    2:47:52.164>
    HTTP: line catched=Vary: Accept-Encoding,User-Agent
    2:47:52.164>
    HTTP: line catched=Connection: close
    2:47:52.164>
    HTTP: line catched=Transfer-Encoding: chunked
    2:47:52.164>
    HTTP: line catched=Content-Type: text/html; charset=UTF-8
    2:47:52.164>
    DATA AVAILABLE FOR GARDENBOSS.RU !!!
    2:47:52.164>
    HTTP: line catched=
    2:47:52.164>
    HTTP: line catched=a
    2:47:52.164>
    HTTP: line catched=[CMDEND]
    2:47:52.164>
    HTTP: Handler reports DONE!
    2:47:52.164>
    [SIM800] REMAINING BYTES READED.
    Начало: 2:47:52.094, конец - 2:47:52.164, по времени заняло 70 миллисекунд, вместе с выводом в Serial. Т. е. когда данные есть в порту SIM800 и быстро вычитываются во внутренний буфер - всё работает крайне быстро, там нечему тормозить ;)
     
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885
    Адрес:
    80 км от Краснодара
    Единственное, что меня пока осторожно смущает, это вот это:
    Код:
    DATA AVAILABLE FOR GARDENBOSS.RU !!!
    2:47:52.094>
    HTTP: line catched=
    2:47:52.094>
    HTTP: line catched=HTTP/1.1 200 OK
    Видна пустая строка перед "HTTP/1.1 200 OK", а этого быть не должно. Возможно, что я неправильно интерпретирую +RECEIVE, и надо после двоеточия пропустить перевод строки, и потом уже читать. Порою доку пока.
     
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885
    Адрес:
    80 км от Краснодара
    Ничего не понимаю: судя по логу, данных - 275 байт:

    Код:
    +RECEIVE DETECTED, CLIENT #0, LENGTH=275
    Считаем, что я читаю правильно (хотя не факт ещё) и сразу после двоеточия у ответа +RECEIVE - идут данные. Берём кусок лога:
    Код:
    HTTP: line catched=
    HTTP: line catched=HTTP/1.1 200 OK
    HTTP: line catched=Date: Mon, 17 Jun 2019 21:42:27 GMT
    HTTP: line catched=Server: Apache/2
    HTTP: line catched=X-Powered-By: PHP/7.0.33
    HTTP: line catched=Cache-Control: no-cache, private
    HTTP: line catched=Vary: Accept-Encoding,User-Agent
    HTTP: line catched=Connection: close
    HTTP: line catched=Transfer-Encoding: chunked
    HTTP: line catched=Content-Type: text/html; charset=UTF-8
    HTTP: line catched=
    HTTP: line catched=a
    HTTP: line catched=[CMDEND]
    
    И удаляем все подстроки "HTTP: line catched=". Получаем (первая строка - пустая, после каждой строки - перевод строки в виде двух байтов \r\n):

    Код:
    HTTP/1.1 200 OK
    Date: Mon, 17 Jun 2019 21:42:27 GMT
    Server: Apache/2
    X-Powered-By: PHP/7.0.33
    Cache-Control: no-cache, private
    Vary: Accept-Encoding,User-Agent
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/html; charset=UTF-8
    
    a
    [CMDEND]
    
    Смотрим в Notepad+ длину данных этого документа в байтах - получаем 270. Вопрос - где ишшо 5 байт? И что это вообще за 5 байт? И не тут ли собака зарыта?

    Если сделать допущение, что после "+RECEIVE,0,275:" идёт перевод строки (байты \r\n), а уже потом данные, то получаем 268 байт вообще. Вопрос - где 7 байт?

    Кстати сказать - никак не могу понять, что за байт "a" в ответе - нету в контроллере на сайте вывода никакой буквы "а", вообще! Если нет задач, то в теле ответа должно передаваться только "[CMDEND]" и перевод строки, всё.

    Короче, надо сильно думать, возможно, мы близки к разгадке ;)
     
  7. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885
    Адрес:
    80 км от Краснодара
    Йоба два! Буква "а", блин... А вот это - хрен лысый?

    Код:
    Transfer-Encoding: chunked
    Теперь ясно, откуда буква a - это длина чанка, который следует за этой "буквой". А потом - должен бить символ "0", что означает - конец чанков.

    Короче, по ходу я неправильно вычитываю таки ответ от сервера ;) Вот этот ответ сервера, правильно закодированный в chunked:
    Код:
    HTTP/1.1 200 OK
    Date: Mon, 17 Jun 2019 21:42:27 GMT
    Server: Apache/2
    X-Powered-By: PHP/7.0.33
    Cache-Control: no-cache, private
    Vary: Accept-Encoding,User-Agent
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/html; charset=UTF-8
    
    a
    [CMDEND]
    
    
    0
    
    И его длина, цуко - ровно 275 байт. Т. е. после "+RECEIVE,0,275:" идёт перевод строки, который НАДО ИГНОРИРОВАТЬ!

    Сегодня устал, завтра буду допиливать ;)
     
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885
    Адрес:
    80 км от Краснодара
    Ребята! Товарищи! Друзья!

    Обновил я это дело на гугльдиске, попытался пофиксить неправильное чтение с SIM800. Перекачивайте, пробуйте, очень надеюсь, что ничего не поломал.

    Чуть-чуть изменил поиск входящих данных, теперь ищется по маске "+RECEIVE,ID,LEN:\r\n", т. е. с учётом перевода строки, который идёт ДО данных и теперь игнорируется.

    Однако, в своё оправдание могу сказать, что из официальной документации по AT-командам нихрена ни разу не следует, что там должен быть \r\n, этого НИГДЕ не указано. Скажем, у ESP в аналогичном случае (строка "+IPD,ID,LEN:") - сразу за двоеточием идут данные, что вполне логично, и в документации именно так и указано.

    Отпишитесь, плз. И да - новую настройку USE_TIMER_ONE_FOR_ESP_SIM800 в Configuration_MEGA_NEW.h - настоятельная просьба закомментировать: пока этот функционал нам ни к чему, ибо может только запутать, и ещё не факт, что он вообще будет правильно работать - сделано в запале, мало ли ;)

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

    Пишите, не томите меня ожиданием :|:
     
  9. necrjd
    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98

    necrjd

    Живу здесь

    necrjd

    Живу здесь

    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98
    Загрузил текущий вариант.
    Поигрался с смс и звонками, запустил задачи с ГБ. Этот лог на 15 минут прилагаю. Далее оставляю на тесте до вечера.
    На CTGET=STAT|FREERAM -нет овета. Возможно не могу настроить треминал 1.9. Чекбокс CR=CR+LF установил.
     

    Вложения:

  10. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885
    Адрес:
    80 км от Краснодара
    Не, там не чекбокс надо. Смотрите, там есть кнопки макросов. Нажимаете кнопку "Set Macros", далее - как на скрине, только справа галочку поставить, чтобы макрос был активен. По итогу - раз в секунду в порт будет посылаться команда:

    screen.png
     
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.885
    Адрес:
    80 км от Краснодара
    Ага, спасибо, вижу, что уже вычитывает по другому. Но надо, конечно, тестировать ;), заранее признателен.
     
  12. necrjd
    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98

    necrjd

    Живу здесь

    necrjd

    Живу здесь

    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98
    Не ставил эти символы $0D$0A - скорее поэтому не работало. Вечером проверю
     
  13. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    Дима, привет!
    Нашел вчера у себя, кмк, причину частых перегрузов. Кривые руки и в пайке, и в настройках прошивки.
    У меня с внешнего вотчдога сигнал на перегруз по частоте в два раза примерно больше, чем у Сергея.
    Плюс в прошивке стояло 3000мс и 3000 мс. Поменял на 1500 и 200. Вроде основная масса зависаний ушла.
    Для интереса скину три лога после моих манипуляций.
    Один прошлой ночью, один днем, и один сегодня в конце дня (короткий, но уже с информацией о свободной памяти).
    Сейчас залил последний вариант прошивки и оставлю писать логи до завтра.
    Ан и не залил...
    Выплюнуло вот это Безымянный11.png
     

    Вложения:

    Последнее редактирование: 18.06.19
  14. necrjd
    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98

    necrjd

    Живу здесь

    necrjd

    Живу здесь

    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98
    Почитал хелп к терминалке - такую концовочку надо к команде:
    CTGET=STAT|FREERAM#$0A$0D
    По прошивке - с 14 часов без сбоев. Есть смысл лог смотреть?
     
  15. necrjd
    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98

    necrjd

    Живу здесь

    necrjd

    Живу здесь

    Регистрация:
    05.11.14
    Сообщения:
    146
    Благодарности:
    98
    у меня тоже там ругалось. Переделал в одну строку- заработало (или можно скопировать со "старой" прошивки
     
Статус темы:
Закрыта.