• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266 показания давления с BMP180 в архив на месяц

mr_smit

New member
IMG_20200904_175958.jpg

EDB ведёт нумерацию строк с 1. Если после создания таблицы не заполнить ее пустыми значениями, то произвольное значение обновить нельзя. И в какую строку продолжать запись после отключения питания если не сохранять номер последней записи?

Ааа... Кажется понял, вы предлагаете каждый раз просматривать таблицу и искать ноль? Это долго. Проще одну строчку пожертвовать на хранение. К тому же этот вариант не сработает когда таблица заполнится.
 

mr_smit

New member
IMG_20200904_181445.jpg

Прошли сутки, пока всё работает. Вот только как в этом dimple дату и время по оси Х прорядить...
 

nikolz

Well-known member
Ничего не понял. Какой ноль куда записывать вы предлагаете?
Вы написали:
"Номер последнего "сохранения" хранится в 340 строке таблицы. Чтобы после отключения/включения питания знать в какую строку таблицы продолжать запись. "
Вместо того чтобы занимать 340 строку номером, я предложил Вам просто записать ноль в первую свободную строку таблицы.
для записи находите первую строку с нулем пишите туда новую запись и после нее пишите ноль.
 

nikolz

Well-known member
и еще
Зачем Вы год пишите по оси. Вы что собираетесь столетие изображать?
Поставьте год один раз где-нибудь и будет вам счастье.
Дату тоже надо изображать один раз, когда она меняется.
 

l15ar

Member
spiffsimg-манипулирование образами дисков Флэш-файловой системы SPI
Вы когда-нибудь хотели, чтобы вы могли подготовить изображение SPIFFS в автономном режиме и прошить все это вещь на хранение вашего микропроцессора вместо кропотливой загрузки файл за файлом через ваше приложение на микро? С spiffsimg вы можете!

NodeMCU использует файловую систему SPIFFS, которая знает, насколько она велика - то есть когда вы строите файловую систему изображение, оно должно поместиться в флэш-чип, и его нельзя расширить после вспышки. Очень важно придать spiffimgинструменту правильный размер. Вы можете предоставить либо -cвариант, либо оба -U-Sварианта и.
зачем публиковать тарабарщину? (подчеркнуто)

Начинающим проще будет освоить микропитон. Код для этого проекта(на микропитоне) будет работать на этом модуле! Конечно, модуль - неудачный.
Принципе, снять старую флэш на модуле, поставить новую на 4МБ(32Мбит), микропитон и файловая система FAT, для хранения архива.
Забирать архив из файловой системы модуля, по требованию пользователя, простейший веб-сервис. Отрисовку графиков на устройстве пользователя - javascript.
 

mr_smit

New member
и еще
Зачем Вы год пишите по оси. Вы что собираетесь столетие изображать?
При загрузке архивной страницы я передаю дату и время в формате 01.01.2020Т12:00. Чтобы dimple сам расставил точки в хронологическом порядке. Потому что сам архив я читаю с 1 по 339 строку последовательно. Не важно как там перетасована дата. Соответственно dimple отображает координаты каждой точки где по Х откладывается дата. Говорю же не знаю как прорядить чтобы не было нагромождения. И как год убрать.
 

mr_smit

New member
Вот HTML код страницы с архивом. Именно в таком виде ESP отдает его браузеру. Можете его в файл сохранить и открыть браузером.
HTML:
<!DOCTYPE HTML>
<html><head>
<meta content = "text/html; charset=UTF-8" http-equiv = "content-type">
<script src="http://d3js.org/d3.v5.min.js"></script>
<script src="http://dimplejs.org/dist/dimple.v2.3.0.min.js"></script>
</head><body><script type="text/javascript">
var svg = dimple.newSvg("body", "100%", 910);
var data = [
{ "DateTime":"2020-09-03T20:00:00", "pressure":762},
{ "DateTime":"2020-09-03T21:00:00", "pressure":762},
{ "DateTime":"2020-09-03T22:00:00", "pressure":761},
{ "DateTime":"2020-09-03T23:00:00", "pressure":762},
{ "DateTime":"2020-09-04T00:00:00", "pressure":762},
{ "DateTime":"2020-09-04T01:00:00", "pressure":762},
{ "DateTime":"2020-09-04T02:00:00", "pressure":762},
{ "DateTime":"2020-09-04T03:00:00", "pressure":763},
{ "DateTime":"2020-09-04T04:00:00", "pressure":762},
{ "DateTime":"2020-09-04T05:00:00", "pressure":762},
{ "DateTime":"2020-09-04T06:00:00", "pressure":762},
{ "DateTime":"2020-09-04T07:00:00", "pressure":763},
{ "DateTime":"2020-09-04T08:00:00", "pressure":763},
{ "DateTime":"2020-09-04T09:00:00", "pressure":763},
{ "DateTime":"2020-09-04T10:00:00", "pressure":762},
{ "DateTime":"2020-09-04T11:00:00", "pressure":762},
{ "DateTime":"2020-09-04T12:00:00", "pressure":762},
{ "DateTime":"2020-09-04T13:00:00", "pressure":761},
{ "DateTime":"2020-09-04T14:00:00", "pressure":761},
{ "DateTime":"2020-09-04T15:00:00", "pressure":761},
{ "DateTime":"2020-09-04T16:00:00", "pressure":760},
{ "DateTime":"2020-09-04T17:00:00", "pressure":760},
{ "DateTime":"2020-09-04T18:00:00", "pressure":759},
{ "DateTime":"2020-09-04T19:00:00", "pressure":759},
{ "DateTime":"2020-09-04T20:00:00", "pressure":759},
{ "DateTime":"2020-09-04T21:00:00", "pressure":759},
{ "DateTime":"2020-09-04T22:00:00", "pressure":759},
{ "DateTime":"2020-09-04T23:00:00", "pressure":759},
{ "DateTime":"2020-09-05T00:00:00", "pressure":759},
{ "DateTime":"2020-09-05T01:00:00", "pressure":759},
{ "DateTime":"2020-09-05T02:00:00", "pressure":759},
{ "DateTime":"2020-09-05T03:00:00", "pressure":759},
{ "DateTime":"2020-09-05T04:00:00", "pressure":759},
{ "DateTime":"2020-09-05T05:00:00", "pressure":759},
{ "DateTime":"2020-01-01T00:00:00", "pressure":0},
{ "DateTime":"2020-01-01T00:00:00", "pressure":0},
{ "DateTime":"2020-01-01T00:00:00", "pressure":0}
];
var myChart = new dimple.chart(svg, data);
myChart.setBounds(70, 30, "95%", 600);
var x = myChart.addCategoryAxis("x", "DateTime");
var y = myChart.addMeasureAxis("y", "pressure");
x.showGridlines = true;
x.fontSize = "auto";
x.title = "Дата/Время";
y.overrideMin = 700;
y.overrideMax = 800;
y.fontSize = "auto";
y.title = "Давление в мм рт.ст.";
myChart.addSeries(null, dimple.plot.line);
myChart.draw();
</script></body>
Какие настройки форматирования для оси Х надо добавить я не знаю.
 

nikolz

Well-known member
зачем публиковать тарабарщину? (подчеркнуто)

Начинающим проще будет освоить микропитон. Код для этого проекта(на микропитоне) будет работать на этом модуле! Конечно, модуль - неудачный.
Принципе, снять старую флэш на модуле, поставить новую на 4МБ(32Мбит), микропитон и файловая система FAT, для хранения архива.
Забирать архив из файловой системы модуля, по требованию пользователя, простейший веб-сервис. Отрисовку графиков на устройстве пользователя - javascript.
согласен, но это перевод гугла.
----------------
питон сложнее чем луа. Работает раз в 10 медленнее, занимает больше памяти во флеш.
Не понимаю в чем достоинство.
 

nikolz

Well-known member
Вот HTML код страницы с архивом. Именно в таком виде ESP отдает его браузеру. Можете его в файл сохранить и открыть браузером.
HTML:
<!DOCTYPE HTML>
<html><head>
<meta content = "text/html; charset=UTF-8" http-equiv = "content-type">
<script src="http://d3js.org/d3.v5.min.js"></script>
<script src="http://dimplejs.org/dist/dimple.v2.3.0.min.js"></script>
</head><body><script type="text/javascript">
var svg = dimple.newSvg("body", "100%", 910);
var data = [
{ "DateTime":"2020-09-03T20:00:00", "pressure":762},
{ "DateTime":"2020-09-03T21:00:00", "pressure":762},
{ "DateTime":"2020-09-03T22:00:00", "pressure":761},
{ "DateTime":"2020-09-03T23:00:00", "pressure":762},
{ "DateTime":"2020-09-04T00:00:00", "pressure":762},
{ "DateTime":"2020-09-04T01:00:00", "pressure":762},
{ "DateTime":"2020-09-04T02:00:00", "pressure":762},
{ "DateTime":"2020-09-04T03:00:00", "pressure":763},
{ "DateTime":"2020-09-04T04:00:00", "pressure":762},
{ "DateTime":"2020-09-04T05:00:00", "pressure":762},
{ "DateTime":"2020-09-04T06:00:00", "pressure":762},
{ "DateTime":"2020-09-04T07:00:00", "pressure":763},
{ "DateTime":"2020-09-04T08:00:00", "pressure":763},
{ "DateTime":"2020-09-04T09:00:00", "pressure":763},
{ "DateTime":"2020-09-04T10:00:00", "pressure":762},
{ "DateTime":"2020-09-04T11:00:00", "pressure":762},
{ "DateTime":"2020-09-04T12:00:00", "pressure":762},
{ "DateTime":"2020-09-04T13:00:00", "pressure":761},
{ "DateTime":"2020-09-04T14:00:00", "pressure":761},
{ "DateTime":"2020-09-04T15:00:00", "pressure":761},
{ "DateTime":"2020-09-04T16:00:00", "pressure":760},
{ "DateTime":"2020-09-04T17:00:00", "pressure":760},
{ "DateTime":"2020-09-04T18:00:00", "pressure":759},
{ "DateTime":"2020-09-04T19:00:00", "pressure":759},
{ "DateTime":"2020-09-04T20:00:00", "pressure":759},
{ "DateTime":"2020-09-04T21:00:00", "pressure":759},
{ "DateTime":"2020-09-04T22:00:00", "pressure":759},
{ "DateTime":"2020-09-04T23:00:00", "pressure":759},
{ "DateTime":"2020-09-05T00:00:00", "pressure":759},
{ "DateTime":"2020-09-05T01:00:00", "pressure":759},
{ "DateTime":"2020-09-05T02:00:00", "pressure":759},
{ "DateTime":"2020-09-05T03:00:00", "pressure":759},
{ "DateTime":"2020-09-05T04:00:00", "pressure":759},
{ "DateTime":"2020-09-05T05:00:00", "pressure":759},
{ "DateTime":"2020-01-01T00:00:00", "pressure":0},
{ "DateTime":"2020-01-01T00:00:00", "pressure":0},
{ "DateTime":"2020-01-01T00:00:00", "pressure":0}
];
var myChart = new dimple.chart(svg, data);
myChart.setBounds(70, 30, "95%", 600);
var x = myChart.addCategoryAxis("x", "DateTime");
var y = myChart.addMeasureAxis("y", "pressure");
x.showGridlines = true;
x.fontSize = "auto";
x.title = "Дата/Время";
y.overrideMin = 700;
y.overrideMax = 800;
y.fontSize = "auto";
y.title = "Давление в мм рт.ст.";
myChart.addSeries(null, dimple.plot.line);
myChart.draw();
</script></body>
Какие настройки форматирования для оси Х надо добавить я не знаю.
например,
можно в ESP запись в архив делать в числовом формате:
В архиве сохраняем дату,время и значение, как целые числа т е {2020090,200000,762},
а преобразование в текст с названиями значений делаем при передаче архива.
В итоге таблица 340 значений займет в 4 раза меньше места,
т е можно в архиве сохранить примерно 1200 значений.
------------------
При формировании таблицы в формате HTML сравниваем дату текущей строки и дату предыдущей строки таблицы.
Если даты не равны, либо это первая строка, то строка будет иметь вид:
{ "DateTime":"2020-09-03_20:00:00", "pressure":762},
Если даты равны, то строка имеет вид:
"DateTime":"21:00:00", "pressure":762},
можно проверять значения часа, если равны то формировать строку в виде:
"DateTime":"00:00", "pressure":762},
можно проверять значения минут, если равны то формировать строку в виде:
"DateTime":"00", "pressure":762}.
 

CodeNameHawk

Moderator
Команда форума
Какие настройки форматирования для оси Х надо добавить я не знаю.
Ось х надо переделать, смотрите пример
https://github.com/PMSI-AlignAlytics/dimple/blob/master/examples/advanced_time_axis.html

Тогда сможете поменять отображение используя ticks, dateParseFormat.

Посмотрите примеры может что понравится
 

mr_smit

New member
Они там подгружают файл:
JavaScript:
d3.csv("CIMIS_Station_125.csv", type, function (error, data) {
  if (error) throw error;
А у меня массив параметров.
 

CodeNameHawk

Moderator
Команда форума
Последнее редактирование:

mr_smit

New member
Вы его на есп создаете?
Я выдаю данные вместе с HTML кодом страницы.
JavaScript:
String ptr = "<!DOCTYPE HTML>\n";
  ptr += "<html><head>\n";
  ptr += "<meta content = \"text/html; charset=UTF-8\" http-equiv = \"content-type\">\n";
  ptr += "<script src=\"http://d3js.org/d3.v5.min.js\"></script>\n";
  ptr += "<script src=\"http://dimplejs.org/dist/dimple.v2.3.0.min.js\"></script>\n";
  ptr += "</head><body><script type=\"text/javascript\">\n";
  ptr += "var svg = dimple.newSvg(\"body\", \"100%\", 910);\n";
  ptr += "var data = [\n";
 
  for (int z=1; z < 339; z++) {
    
    EDBresult = db.readRec(z, EDB_REC myRec);
        if (EDBresult == EDB_OK)
        {
            //{ "DateTime":"2020-08-22T00:00:00", "pressure":762 },
            ptr += "{ \"DateTime\":\"" + String (myRec.date) + "T" + String (myRec.tim) + "\", \"pressure\":" + String (myRec.Pressure) + "},\n";
        }
  } 

      EDBresult = db.readRec(339, EDB_REC myRec);
        if (EDBresult == EDB_OK)
        {
            ptr += "{ \"DateTime\":\"" + String (myRec.date) + "T" + String (myRec.tim) + "\", \"pressure\":" + String (myRec.Pressure) + "}\n";
        }

 
  ptr += "];\n";
  ptr += "var myChart = new dimple.chart(svg, data); \n";
...
...
...
...
...
 
Сверху Снизу