Arduino Mega Server

Модератор: Alex

Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Чт фев 08, 2018 8:17 am

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

Re: Arduino Mega Server

Сообщение Sps » Чт фев 08, 2018 7:15 pm

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

Re: Arduino Mega Server

Сообщение Alex » Чт фев 08, 2018 7:55 pm

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

Re: Arduino Mega Server

Сообщение serghei » Чт фев 08, 2018 8:11 pm

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

Re: Arduino Mega Server

Сообщение nick7zmail » Чт фев 08, 2018 8:15 pm

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

Re: Arduino Mega Server

Сообщение Sps » Чт фев 08, 2018 8:34 pm

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

Re: Arduino Mega Server

Сообщение serghei » Чт фев 08, 2018 9:41 pm

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

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

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

/*
  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 КБ) 163 скачивания
В сервер ажакс добавить по смыслу
СпойлерПоказать

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

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
Благодарил (а): 6 раз
Поблагодарили: 1 раз

Re: Arduino Mega Server

Сообщение Sps » Пт фев 09, 2018 6:38 pm

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

Re: Arduino Mega Server

Сообщение serghei » Пт фев 09, 2018 7:01 pm

Ну это не совсем библиотеки - файлы AmCharts. Тоже самое, что и в МД. Они в архиве. Сначала получите файлы истории. Они будут создаваться каждый день новые. Имя файла - День-Месяц-Год. И один раз должен создаться файл "Gotdata.css". Графики появятся , когда будут хотя бы два значения в истории ( можно посмотреть в блокноте или вызвать в браузере IP сервера/gotdata.css или IP сервера/09-02-18.msg если сегодняшний день ).

Сейчас переношу код на Мегу. Если получится - выложу.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Sps
Сообщения: 45
Зарегистрирован: Вт окт 27, 2015 4:23 pm
Благодарил (а): 6 раз
Поблагодарили: 1 раз

Re: Arduino Mega Server

Сообщение Sps » Пт фев 09, 2018 9:17 pm

serghei писал(а):И один раз должен создаться файл "Gotdata.css". Графики появятся , когда будут хотя бы два значения в истории ( можно посмотреть в блокноте или вызвать в браузере IP сервера/gotdata.css или IP сервера/09-02-18.msg если сегодняшний день ).
файл "Gotdata.css" создал правда с расширением .csv нигде в файлах не упоминается .css в браузере файл открывается через эксель. Файлы 09-02-18.msg создаются с расширением .log в браузере не выводятся ERROR Connnection: close. Страница graf.htm загружается нормально, графики не выводятся.
Ответить