Arduino Mega Server

Модератор: Alex

Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm

Re: Arduino Mega Server

Сообщение Alex »

вот здесь на форуме по АМС Вы часто на вопрос как что-либо сделать или что и откуда берется посылаете учить матчасть и копать код
Если я могу сразу ответить и что-то подсказать, то отвечаю, но АМС неисчерпаем как атом ( (с) сами знаете кто) и если я буду сам копать код по каждому вопросу, то у меня времени ни на что больше не останется.
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Re: Arduino Mega Server

Сообщение ser009 »

Sps писал(а):
Alex писал(а):
... хотя вот здесь на форуме по АМС Вы часто на вопрос как что-либо сделать или что и откуда берется посылаете учить матчасть и копать код, а вот с 3D принтером кликнуть 2 раза мышкой и купить, напрочь отбивает творческое начало.
Проект изначально разрабатывался как коммерческий. И до сих пор им остается. Так что это нормально.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm

Re: Arduino Mega Server

Сообщение Alex »

Проект изначально разрабатывался как коммерческий
Это не совсем так. У проекта много граней и монетизация это только одна из них. Любой желающий может бесплатно скачать любой дистрибутив и свободно его использовать для личных целей и обучения. А также каждый может задать вопрос на форуме и получить ответ от меня или от сообщества.
Sps
Сообщения: 45
Зарегистрирован: Вт окт 27, 2015 4:23 pm

Re: Arduino Mega Server

Сообщение Sps »

Alex писал(а):
А также каждый может задать вопрос на форуме и получить ответ от меня или от сообщества.
Как организовать логгирование показаний датчиков на SD карту с последующим их выводом в график.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm

Re: Arduino Mega Server

Сообщение Alex »

Как организовать логгирование показаний датчиков на SD карту с последующим их выводом в график.
Пару сообщений назад я уже ответил по поводу таких вопросов.
Если я могу сразу ответить и что-то подсказать, то отвечаю, но АМС неисчерпаем как атом ( (с) сами знаете кто) и если я буду сам копать код по каждому вопросу, то у меня времени ни на что больше не останется.
Если коротко, то эта задача вполне решаемая, но потребует значительных затрат сил и времени на её реализацию. Тут уже выкладывали пару её реализаций, я за этим не слежу, форумчане помогут ссылками.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв

Re: Arduino Mega Server

Сообщение serghei »

Конечно ответим ! Буквально вчера Alexsis_76 выложил поправленную версию страницы с динамическим обновлением графиков. Конкретная реализация зависит от платформы , на которую установлен AMS. ( От этого зависит процедура записи файла. У меня конкретно работает на DUE и ESP32 ). Почитайте историю создания этого чуда в ветке " Визуализация".
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

Re: Arduino Mega Server

Сообщение nick7zmail »

Sps писал(а): Как организовать логгирование показаний датчиков на SD карту с последующим их выводом в график.
где-то тут https://majordomo.smartliving.ru/forum/ ... 246#p51246
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Sps
Сообщения: 45
Зарегистрирован: Вт окт 27, 2015 4:23 pm

Re: Arduino Mega Server

Сообщение Sps »

serghei писал(а):Буквально вчера Alexsis_76 выложил поправленную версию страницы с динамическим обновлением графиков. Конкретная реализация зависит от платформы , на которую установлен AMS.
У меня Mega 2560 AMS v.0.16 чтобы прикрутить эти графики мне надо что-то менять в AMS?
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв

Re: Arduino Mega Server

Сообщение serghei »

Та ссылка на самое начало , с чего все началось. Работает на ESP8266 без SD карты. Запись истории в памяти 3 мегабайта. Использует сторонний сервер для построения графиков. То есть посылает файл данных и сервер возвращает картинку. Ограничения - файл не более 1 мегабайта. Из глобальных минусов - используется сторонний серверов и очень медленная работа.
На Меге сначала надо сформировать файл с историей значений каких хотите. Потом скачать и установить библиотеки графиков. И последнее - просто установить готовую .htm страницу graf.htm / Да и еще руками прописать в файле .txt названия для графиков.
А всё!
Все это работает на Due более полугода. Причем в двух версиях - логгирование по дням и за один период.
Готовый код выложу в ветке " Библиотека готовых решений". Единственное - на Меге я это не проверял. Да и работает очень медленно.
Сначала Вам надо проверить как правильно создается и записывается файл истории. А затем просто скопировать и установить файл graf.htm

PS. Если сами разберётесь - то быстро отвечу. Добавьте вкладку tlog
SPOILERSPOILER_SHOW

Код: Выделить всё

/*
  Module TLOG DUE
  part of Arduino Mega Server project
*/
/*
  Модуль создаёт два файла :
   1 "Gotdata.css" для страницы "Chart.htm". Автор идеи и сода Ledmax.
   2 "/день-месяц-год/.log" для страницы "Graf.htm". Автор кода Ser009.

  Страницу "Graf.htm" создал Alexsis_76.
  
 */
 
#ifdef TLOG_FEATURE
void TlogInit() {                                              // Инициализируем модуль

   modulTlog = MODUL_ENABLE;                                   // Если модуль активен
  started("TLog", true);                                       // Старт модуля
  
}


void TlogWorks(){

    if(cycle5m){                                               // Каждые 5 минут записываем данные
 
// собираем Имя путь и имя файла
String Mess1Name;
     //MessName+="/Alarm/";
     if(day()<10)
       Mess1Name+="0"+String(day(),DEC);
     else
       Mess1Name+=String(day(),DEC);
     if(month()<10)
       Mess1Name+="-0"+String(month(),DEC);
     else
       Mess1Name+="-"+String(month(),DEC);
       Mess1Name+="-"+String(year()-2000,DEC);
       Mess1Name+=".log";    

      

           
        File dataFile = SD.open(String (Mess1Name), FILE_WRITE); // Открываем файл для записи логов страницы "Graf.htm"


if (dataFile) {                                                // Если удалось открыть файл
  dataFile.println(logString());                               // Записываем строку логов в файл
  dataFile.close();                                            // Закрываем файл
}else                                                          // Если не удалось открыть файл
Serial.println("Can't open file");                             // Выводим сообщение об ошибке

    }

        if(cycle5m){                                           // Каждые 5 минут записываем данные

      File dataFile = SD.open("gotdata.css", FILE_WRITE);      // Открываем файл для записи логов для страницы "Chart.htm"



if (dataFile) {                                                // Если удалось открыть файл
  dataFile.println(logString());                               // Записываем строку логов в файл
  dataFile.close();                                            // Закрываем файл
}else                                                          // Если не удалось открыть файл
Serial.println("Can't open file");                             // Выводим сообщение об ошибке

    }

  }

String logString() {                                           // Функция для генерации логов

String dataString = String (year()) + "-" + String (month()) + "-" + String (day()) + " " + String (hour()) + ":" + String (minute()) + ":" + String (second())+ " " + ","
+ String (current_temp[0]) + "," + String (current_temp[1]) + "," + String (current_temp[2]) + "," + String (dht.readHumidity()) + "," + String (dht.readTemperature())+ " " + ","                                    
+ String (temp) + "," + String (hum) + "," + String (pres);            // Помещаем дату и температуру в новую строку логов ( можно добавить еще данных. 6 штук работают уверенно )
  Serial.println(dataString);                                  // Выводим строку логов на монитор серийного порта

  return(dataString);                                          // Возвращаем полученные значения в место вызова функции 

}


#ifdef DATALOG_DEBUG
//Serial.print(objSens[n]);
// Serial.print(": ");
// Serial.println(current_temp[n]);
#endif 

#endif // DATALOG_FEATURE       
На SD закинь файлы
LOG.zip
(135.55 КБ) 189 скачиваний
В сервер ажакс добавить по смыслу
SPOILERSPOILER_SHOW

Код: Выделить всё

void sendLogAnswer (WiFiClient cl) {
  cl.println(makeAnswer("text/log"));
}

void sendMsgAnswer (WiFiClient cl) {
  cl.println(makeAnswer("text/msg"));
===========

  else if (StrContains(HTTP_req, "GET /") && StrContains(HTTP_req, ".csv")) {
    fileName = strtok(HTTP_req, "GET /");
    webFile = SD.open("/" + (String)fileName);
    if (webFile) {
      sendCsvAnswer(cl);
    }
    else {
      sendErrorAnswer(fileName, cl);
    }
  }

    else if (StrContains(HTTP_req, "GET /") && StrContains(HTTP_req, ".log")) {
    fileName = strtok(HTTP_req, "GET /");
    webFile = SD.open("/" + (String)fileName);
    if (webFile) {
      sendLogAnswer(cl);
    }
    else {
      sendErrorAnswer(fileName, cl);
    }
  }

    else if (StrContains(HTTP_req, "GET /") && StrContains(HTTP_req, ".msg")) {
    fileName = strtok(HTTP_req, "GET /");
    webFile = SD.open("/" + (String)fileName);
    if (webFile) {
      sendMsgAnswer(cl);
    }
    else {
      sendErrorAnswer(fileName, cl);
    }
  }
}
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Sps
Сообщения: 45
Зарегистрирован: Вт окт 27, 2015 4:23 pm

Re: Arduino Mega Server

Сообщение Sps »

serghei писал(а):Потом скачать и установить библиотеки графиков.
Библиотеку можно скачать любую (для построения графиков) или эти файлы заточены под что-то определенное?
Ответить