Arduino Mega Server

Модератор: Alex

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

Re: Arduino Mega Server

Сообщение Alex »

Система очень гибкая и всё зависит от конкретной задачи. Можно хранить данные на каждом контроллере, можно на каком-то отдельном, а можно скидывать на MajorDoMo.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв

Re: Arduino Mega Server

Сообщение serghei »

Что бы выработать концепцию хранения логов сначала надо научиться передавать данные между АМС. Вы опубликовали код ( АМС туды-сюды), но я там мало что понял. Зато есть вариант по сериалу.
С точки зрения устойчивости системы каждый контроллер логирует то, что меряет. Если он упал , то и мерять нечего. Самое простое - все сливать на МД , но это не наш метод.
У меня сейчас не получается записать файлы по дням недели. С вариантом gotdata.css все отлично. Круто смотрится график температуры за неделю. Видно , что даллас отвалился один раз.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв

Re: Arduino Mega Server

Сообщение serghei »

Прикрутил я радиоприёмник к АМС :lol: . Пока железяку не подключил физически , пробую создать Веб страницу для него. И столкнулся с первой проблемой - частота настройки в браузер передается пяти (четырех) значным числом. А в сериал по другому. Там все правильно - " 189 . 30" . Собственно вопрос - можно как то средствами HTML (или правильнее PHP ?) поделить число на сотню ?
Когда рисовал спидометры прокатывал ход лошадью - брал значение аналогового входа , делил на 10 и получал другой масштаб.

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

 data-onready="setInterval( function() { Gauge.Collection.get('an_gauge_2').setValue(data_val2/10);// тут разделил //}, 200);"></canvas>
Вариант с делением на сотню в Ажаксе не сработал - просто отрезались два последних числа и из 18930 получилось просто 189.

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

 s += makeTag("radFrec",  "", String (radio.getFrequency()/100));
Или как то по другому надо делить? Ведь температура передается с дробной частью. Или при отображении в Даш-панели можно как то принудительно поставить точку?
В сериал выводится так
SPOILERSPOILER_SHOW

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

void radiosWorks() {

    // put your main code here, to run repeatedly:
  if(!digitalRead(54) ){ // Если увидели что дергают ногу 54
    
    radio.seekUp(true); 

}

    char s[12];

  radio.formatFrequency(s, sizeof(s));
  
      if (cycle1m) {
         Serial.print("FREQ:"); Serial.println(s);
      }
  //Serial.print("FREQ:"); Serial.println(s);

  
} 
SPOILERSPOILER_SHOW
Картинка
Картинка
DUE_Radio.jpg (168.15 КБ) 9043 просмотра
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
eGorka
Сообщения: 182
Зарегистрирован: Чт ноя 24, 2016 10:47 am

Re: Arduino Mega Server

Сообщение eGorka »

serghei писал(а):Вариант с делением на сотню в Ажаксе не сработал - просто отрезались два последних числа и из 18930 получилось просто 189.

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

 s += makeTag("radFrec",  "", String (radio.getFrequency()/100));
Может так?
String (parseInt(radio.getFrequency())/100)
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв

Re: Arduino Mega Server

Сообщение serghei »

Все гениальное - просто. И написано с рождения АМС ! Уже в скрипте объявляем вторую переменную , первую делим на сотню и выводим в панель. Точно так же , как округление температуры. Вот только засада с незначащим нулем. Пришлось добавить 0 руками. Теперь всё красиво.
Спасибо!
А вообще эта тема возникла , когда я купил TFT экран с тачь-панелью и стал искать к нему драйвера. И первое на что я наткнулся - пример работы радио + 8 кнопок + датчик BME280 + часы + СЛАЙДЕР !!!!!!! громкости + и все это тыкается с экрана ! Ну и в библиотеке радио бонусом идет вывод в Веб по JSON. Код залил в Мегу ( только нужна родная библиотека Ethernet.h ). Будем посмотреть что такое JSON.
А научить АМС боюсь мозгов не хватит , хотя код воткнул и он компилируется !!
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв

Re: Arduino Mega Server

Сообщение serghei »

Что бы логически закончить тему логирования данных для АМС необходимо записывать значения в файл .log , где названием файла будет его дата создания. За основу взял код ser009 для записи событий. И вот что получилось. Можете проверить насколько это правильно? Файл создаётся, но пока мало истории.
Tlog.rar
(1.1 КБ) 197 скачиваний
Огромное СПАСИБО участникам создания этого чуда !!!
ledmax как замутившему тему и автора кода для ESP8266
Alexsis_76 как автора скриптов
ser009 как автора кода событий
Красоту наводить уже дело вкуса . Вариант с одним файлом тоже оставлю - замечательна видна динамика за месяц работы.
.....продолжение следует.....
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв

Re: Arduino Mega Server

Сообщение serghei »

Маленькое дополнение к предыдущему сообщению.
Попробовал создать две версии файла логирования - для одного файла и разбитого по дням. Так как руки поломал в детстве ( реально) , получилось немного криво , но работает. Создается два файла для разных страниц , но используется одна библиотека "AmCharts".
Месяц записи на SD карту каждые 5 минут прошел успешно. Надо увеличить значения таймера до получаса.
Код модуля
TLOG_2.rar
(1.39 КБ) 176 скачиваний
Ну и картинки
SPOILERSPOILER_SHOW
Глюк Далласа -127 С
Глюк Далласа -127 С
Due_1_file.jpg (116.68 КБ) 7518 просмотров
И по дням
SPOILERSPOILER_SHOW
Due_graf.jpg
Due_graf.jpg (86.22 КБ) 7518 просмотров
Может код как то можно упростить или выровнять ??))). Из разряда теста можно смело переносить на рабочую машину.
PS. Зря многие бочку катят на DHT_11. Работает вполне адекватно и наравне с Далласом ( с учетом округления) и без всяких подтяжек.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm

Re: Arduino Mega Server

Сообщение Alex »

Месяц записи на SD карту каждые 5 минут прошел успешно.
Тут дело даже не в записи на карту — это ещё одно (независимое) подтверждение того, что АМС это абсолютно стабильная и надёжная система — сама по себе (если не портить) работает месяцами безо всяких утечек памяти и прочих глюков.

То есть на ней можно строить реально работающие практические системы автоматизации. Что подтверждается и практикой моих внедрённых и работающих в режиме 24/7 проектов.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв

Re: Arduino Mega Server

Сообщение serghei »

За полтора года работы и изучения АМС так и не видел синхронизации времени ни на Меге , ни на Дуе. По совету Специалистов ( именно с Большой буквы ) полгода назад добавил и прописал DNS к модулю dethernet. Но ......... :evil: ...Не знал про Ethernet.begin .. Этот форум пора издавать отдельной книгой.
victorhom писал(а):Помаленьку исправляем косяки:
У меня локалка в диапазоне 192.168.1.* со шлюзом в Интернет 192.168.1.200. Поменял шилду W5100 IP адрес, никак не поднимался NTP клиент.
Решение:нужно в модуле ethernet указать gateway!

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

// Ethernet settings
byte SELF_MAC[] = {0x00, 0x2A, 0xF5, 0x12, 0x68, 0xFE};
byte SELF_IP[] =  {192, 168, 1, 57};
byte MY_DNS[] = {84,  22, 142,2};
byte MY_GATEWAY[] = {192, 168, 1, 200};

void ethernetInit() {
  Ethernet.begin(SELF_MAC, SELF_IP, MY_DNS, MY_GATEWAY);
  modulEthernet = 1;
  Serial.println("Modul Ethernet... started");
}
и все поднялось.
Только я взял Гугловский DNS 8.8.8.8
Посвящается Всем , у кого нет синхроницации - добавьте к скетчу

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

// Ethernet settings
byte SELF_MAC[] = {0x00, 0x2A, 0xF5, 0x12, 0x67, 0x50};
byte SELF_IP[] =  {192, 168, 2, 37};
byte DNS[] = {8 ,8 ,8 ,8};
byte GATEWAY[] = {192, 168, 2, 100};

void ethernetInit() {
  Serialprint("Modul Ethernet...\n");
  Ethernet.begin(SELF_MAC, SELF_IP, DNS, GATEWAY);
  Serialprint(" MAC: ");
  printMac(SELF_MAC); 
И всё заработает !!!
PS Не в эту тему , но RobotDyn исправил свою ошибку и сейчас гружу их плату с 4 мегабайтами у ESP 8266+ Мега . Да и цена упала в 2 раза. (10 баксов).
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Re: Arduino Mega Server

Сообщение ser009 »

у меня DNS вообще не используется. И все прекрасно работает.
Ответить