Главная › Форумы › Конструкторское бюро › Автоматизация › Автоматика LuckyBox › Автоматика LuckyBox
-
АвторСообщения
-
13.04.2018 в 01:04 #21014
Современные библиотеки для графиков позволяет довольно навороченные вещи
Можно вывести любые графики, какие надо? Хорошая гугловская библиотека https://google-developers.appspot.com/chart/interactive/docs/gallery самое главное маленький размер.
Во первых график должен быть на самой страничке – дистилляция, ректификация и т.д., а там в зависимости от алгоритма. Как минимум при дистилляции – куб и выход пар, при ректификации куб, буфер, царга, выход пар, выход вода деф, я бы еще давление в пропорции на этот же график вывел. Но это мне так удобно, у других могут и другие запросы быть. Тут опрос “населения” нужен.
13.04.2018 в 01:12 #21015Может сбой из-за buzzer’a. Или из-за логики затирания, брезенхема, или еще из-за чего.
При первом запуске без датчиков у меня тоже wdt срабатывал пока я в самом “скетче” (демо) ssid и pass реальные не прописал. Хотя при этом модуль к сетке не приципился но AP поднял и после записи в настройках и сохранении в EEPROM все ок. Завтра, если успею, попробую этот глючек отловить. Может свою двухгодичной давности инициализацию найду, тогда скину. Я делал так: сканировал wifi на наличие сетей и если моя была, тогда цепляемся к роутеру, если нет, поднимаем AP.
13.04.2018 в 01:38 #21016Я делал так: сканировал wifi на наличие сетей и если моя была, тогда цепляемся к роутеру, если нет, поднимаем AP.
Так этот скетч так же делает. Берет ssid, пароль из файла и ищет свою сеть.
А если глюк отловите, будет просто волшебно! Спасибо.
Хорошо живет на свете Винни-Пух...
13.04.2018 в 05:55 #21017Я готов заняться графиками, считаю это главной ценностью автоматизации. Выведение состояния системы в виде графика позволяет с максимальной наглядностью наблюдать за протекающим процессом. Готов приступить только поле появления репозитория, поскольку уже сейчас ведётся параллельная разработка и сливать всё воедино будет сложно.
В своё время делал вывод графиков на plotly . Графики надо переносить на соответствующие страницы иначе они будут сбрасываться. По хорошему надо сделать одну страницу, а вкладки подгружать через AJAX во <frame>. В этом случае фоном может крутиться скрипт, постоянно принимая данные с датчиков. При такой реализации можно безболезненно осуществлять навигацию по сайту.
Также эта библиотека позволяет выгружать графики в различных форматах (есть ограничение на количество точек), полноценно поддерживается pan/zoom. Во вложении пример моей реализации.
Вложения:
Вы должны войти для просмотра вложений.13.04.2018 в 06:34 #21022Я готов заняться графиками, считаю это главной ценностью автоматизации
Прекрасно, давайте.
По хорошему надо сделать одну страницу, а вкладки подгружать через AJAX во
Это была первая моя мысль, только не во фрейм, а в саму вкладку и делать «историю» браузера что бы не грузить каждый раз при переключении вкладок. А репозиторий нужен, да.
13.04.2018 в 06:35 #21023В общем вчера под вечер затупил, мониторинг порта не открыл)) В общем перезагруз идет от датчика давления, у меня bmp180, монитор пишет
Jan 1 1970
Start 3-SSDP
Start 2-WebServer
Start 11-Reflux
Start 12-Distillation
Start 13-Brewing
Start 14-Heater
Start 15-BMP
Ooops, no BMP085 detected … Check your wiring or I2C ADDR!Start 16-Buzzerwdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v614f7c32
~ldИ по новой
13.04.2018 в 08:16 #21025Это была первая моя мысль, только не во фрейм, а в саму вкладку и делать «историю» браузера что бы не грузить каждый раз при переключении вкладок. А репозиторий нужен, да.
Глупо конечно цитировать самого себя (( , бегло просмотрел html, скрол появляется от ифреймов, и мало того все страницы соответственно грузятся в ифреймы со своими скриптами бутстрапом и jquery, http://joxi.ru/V2VaM3wTxypbzm и у каждого на «bodyonload» запускается функция process() и по тайм ауту каждую секунду пытается отправить данные на сервер.
Буду все переписывать. Возник соответственно ряд вопросов.
Нужно ли запускать функции каждой вкладки при открытии? (ректификация, дистилляция…) или нужно иметь «главную» страницу на которой всегда? или нет? висят показания датчиков, графиков. А при открытии требуемой вкладки есть настройки каждого процесса и кнопка старт, стоп, пауза и возможно на главной «запускается» отображение текущего процесса с графиками, датчиками…
Нужно ли делать настройки каждого процесса (нужно думаю) — имеем на ректификацию 4 датчика температуры, на дистиляцию 2, на затор 1 мешалка и насос и все это отправлять в ардуину, а она в зависимости от того какие настройки (флаг процесса) ей пришли то и будет отдавать, может мне не нужна ректификация и 4-х термометров у меня не подключено, зато есть насос и мешалка ))).Давайте обсудим, ох интересно, уже руки чешутся )))
13.04.2018 в 08:45 #21026перезагрузка по watch dog’у.
Некоторые исключения может помочь понять EspExceptionDecoder.
Может сбой из-за buzzer’a
По схеме он висит на GPIO16, а он достаточно специфичный.
Ну не должен чип так себя вести, должны же быть какие-то методы защиты, если адрес, к которому обращаются не отвечает. Но увы…
Все в руках программиста 🙂
По датчикам температуры тоже подчеркну, что нужно повесить на один пин, не зря же протокол называется 1-wire. Тем самым высвободится парочка хороших пинов.
13.04.2018 в 10:04 #21031Глупо конечно цитировать самого себя (( , бегло просмотрел html, скрол появляется от ифреймов, и мало того все страницы соответственно грузятся в ифреймы со своими скриптами бутстрапом и jquery, http://joxi.ru/V2VaM3wTxypbzm и у каждого на «bodyonload» запускается функция process() и по тайм ауту каждую секунду пытается отправить данные на сервер.
Судя по всему это наследие кодогенерации Layoutit.com, конечно так не надо.
Можно при загрузке сайта подгружать html всех страниц в JS, и по необходимости (для “перехода” на другую вкладку) подменять содержимое соответствующего div-а . Будет только одна медленная загрузка при старте.
А при открытии требуемой вкладки есть настройки каждого процесса и кнопка старт, стоп, пауза и возможно на главной «запускается» отображение текущего процесса с графиками, датчиками…
Я тоже думаю, процессы должны запускаться вручную и одновременно может быть активным только один (он физически может быть только один). В loop() реализовать соответствующую логику.
void loop() {
HTTP.handleClient();
// dallRead(flagDallRead*1000);
distillationLoop();
if(condition.refluxLoopActiveIs) // по уму завести enum и через switch
{
refluxLoop();
}
brewingLoop();
heaterLoop();
delay(1);
}
Нужно ли делать настройки каждого процесса (нужно думаю)
Согласен.
Под эти нужды завести систему DTO классов. Это важно при распределённой разработке. Инкапсуляция прекрасна ещё и при работе в нормальной IDE тогда доступны IntelliSense – проще работать с чужим кодом.
13.04.2018 в 10:45 #21036Можно при загрузке сайта подгружать html всех страниц в JS, и по необходимости (для “перехода” на другую вкладку)
Если мыслить логически, то и подгружать ничего не надо, сколько там «кода»? 5 строк в таблице (инпуты со значениями) то можно сделать одну страницу, не большой там контент.
Под эти нужды завести систему DTO классов.
Пока не могу всецело себе это представить.
Как я это видел: сделать по типу плагина jqury с методами (например) или функциями.
sendData, getData — отправка/получение данных,
brewingFun, refluxFun… — процессы, выполняют отображение отправку данных, через вышестоящие методы,
drawGraph — рисование графиков присылаемых процессамиКак-то так вижу, наверное опыт подобных реализаций сказывается ))
$.fn.luckyBox(“brewing”,{“meshIn”:”Жигулевское”,”meshOut”:”Paulaner”});т.е. по факту имеем 1 html, несколько js библиотек, css библиотек, js свой, css свой такой одностраничник получается.
13.04.2018 в 10:52 #21037Я делал так: сканировал wifi на наличие сетей и если моя была, тогда цепляемся к роутеру, если нет, поднимаем AP.
Так этот скетч так же делает. Берет ssid, пароль из файла и ищет свою сеть. А если глюк отловите, будет просто волшебно! Спасибо.
Вобщем проблема с wdt оказалась очень тривиальной. Вы не учли одну особенность работы шины Wire. Дело в том, что шина конфигурируется на работу в режиме OpenDrain, т.е. сам контроллер ногу в плюс не тянет, а делает это внешний резистор. Соответственно если в определенные моменты на линии ноль, проц думает что датчик есть, и соответственно запускает режим ожидания, там и висит. Подключите на все 4 вывода резисторы (к примеру 4к7) прям на модуле, должно помочь. Сам проверить не могу, т.к. сейчас под рукой NodeMCU V.09, а там не выведены выводы 9 – 14 лапы модуля, соответственно некуда подключить 1-й и 2-й датчики температуры…
p.s. Сам проверил просто, назначил все на одну лапу и ее подтянул в “+”.
13.04.2018 в 11:43 #21040Обещал инициализацию wifi свою глянуть, вот:
void wifi_init(){
WiFi.disconnect(true);
WiFi.mode(WIFI_AP_STA);n_network = WiFi.scanNetworks(); // ищем доступные сети
ssid_en = 0;
Serial.print(n_network);
Serial.println(” networks found:”);
for (int i = 0; i < n_network; ++i){
Serial.print(i + 1);
Serial.print(” -> “);
Serial.print(WiFi.SSID(i));
Serial.print(” (“);
Serial.print(WiFi.RSSI(i));
Serial.print(“) “);
Serial.print(“Encryption: “);switch (WiFi.encryptionType(i)){
case ENC_TYPE_WEP:
Serial.println(“WEP”);
break;
case ENC_TYPE_TKIP:
Serial.println(“WPA”);
break;
case ENC_TYPE_CCMP:
Serial.println(“WPA2”);
break;
case ENC_TYPE_NONE:
Serial.println(“None”);
break;
case ENC_TYPE_AUTO:
Serial.println(“Auto”);
break;
}
if (WiFi.SSID(i) == String(ssid)) ssid_en = 1; // наша сеть присутствует
}Serial.printf(“Connecting to %s\n”, ssid);
if (ssid_en == 1) WiFi.begin(ssid, password);
tmp_while = 0;
ap_mode = 0;
if (ssid_en != 0){
while (WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(“.”);
if (tmp_while < 40) tmp_while++;
else{
WiFi.mode(WIFI_AP); // сеть нас не пустила, пароль не тот, переходим в AP
ap_mode = 1;
Serial.println(“Not’Connected!”);
break;
}
}
}………
}
и потом в самой программе раз в минуту проверка если связь пропала но была, реконнект.
p.s. Забыл уточнить, вызов функции WiFi.disconnect(true); обязательна при реконнекте. У модуля есть один геморрой в SDK: при превышении допустимых подключений по wifi его сетка виснет, но модуль при этом работает как будто все ок, такая вот беда…
13.04.2018 в 12:19 #21045Коллеги, прежде всего – огромное, преогромное спасибо! Ваша помощь просто неоценима!
Я беру на себя обязательство за пару дней доснять и выложить последние ролики по сборке и архитектуре. В основном не для вас, а для начинающих пользователей. Ибо у большинства авторов данной темы мне самому надо учиться.
Затем аврально ныряю в git и он появится в течении недели.
Заранее прошу запомнить свои предложения для последующей работы в совместном репозитории, т.к. я сам некоторые ваши предложения могу лишь понять, но не всегда воспроизвести)) Как минимум в разумнле время.
И еще раз спасибо за ваш интерес и помощь.
Хорошо живет на свете Винни-Пух...
13.04.2018 в 14:23 #21056Не знаю что сделал, но заработала без перезагрузок)))
В идеале конечно бы фон полегче, на телефоне на так смотрибельно получается, особенно режим Ректификация.
Осталось дождаться остального железа.
Все датчики подтянул на 5v, ds через 4,7 кОм.
На макетке удобнее делать, в идеале при доработке системы плату бы напечатать компактно, и вообще красота)))
Вложения:
Вы должны войти для просмотра вложений.13.04.2018 в 15:16 #21061Не знаю что сделал, но заработала без перезагрузок))) В идеале конечно бы фон полегче, на телефоне на так смотрибельно получается, особенно режим Ректификация. Осталось дождаться остального железа. Все датчики подтянул на 5v, ds через 4,7 кОм. На макетке удобнее делать, в идеале при доработке системы плату бы напечатать компактно, и вообще красота)))
НЕТ!!! Резистор не правильно подключил, переделай с +5v на +3.3v , пока процу не поплохело. Ниже картинка для пояснения процесса… А так DS18B20 и от 3-х волт прекрасно работает.
Вложения:
Вы должны войти для просмотра вложений. -
АвторСообщения
- Тема «Автоматика LuckyBox» закрыта для новых ответов.