Arduino Mega Server

Модератор: Alex

pastry777
Сообщения: 81
Зарегистрирован: Пт окт 02, 2015 7:47 pm
Благодарил (а): 7 раз
Поблагодарили: 4 раза

Re: Arduino Mega Server

Сообщение pastry777 » Сб янв 23, 2016 6:18 pm

ролик посмотрю чуть позже...по-поводу gzip. сжимает колоссально.у меня с 10кб скрипта и стиля сделал по меньше чем 2кб...но у меня прям слету не заработало,еще разбираюсь..что делал:1.файлы архивировал,расширение gz удалял(идея не моя,вычитал где-то)браузеру все равно с каким расширением подтягивать файл,он смотрит содержимое,главное чтобы в заголовке было указано,что файл архивирован...2.собственно в заголовках на отдачу скриптов и стилей добавил строчку,что файл наш архивирован...

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

Re: Arduino Mega Server

Сообщение Alex » Сб янв 23, 2016 6:52 pm

Так это... А вы сервер научили отдавать файлы с таким расширением? Сами по себе они отдаваться не будут.
pastry777
Сообщения: 81
Зарегистрирован: Пт окт 02, 2015 7:47 pm
Благодарил (а): 7 раз
Поблагодарили: 4 раза

Re: Arduino Mega Server

Сообщение pastry777 » Сб янв 23, 2016 6:59 pm

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

Re: Arduino Mega Server

Сообщение Alex » Сб янв 23, 2016 9:34 pm

Не понял, есть проблемы или нет? Нужно подсказывать, что менять?
pastry777
Сообщения: 81
Зарегистрирован: Пт окт 02, 2015 7:47 pm
Благодарил (а): 7 раз
Поблагодарили: 4 раза

Re: Arduino Mega Server

Сообщение pastry777 » Вс янв 24, 2016 11:21 am

до сих пор не поборол!!=0
браузер скачивает подсунутые архивы,но не распаковывывает их...на простых сайтах все работает и отображается...устал искать уже инфу,почему не работает...везде сводится к одному и тому же,что при статическом gzip в заголовке с отсылаемым файлом должна лишь быть строчка Content-Entype: gzip...все...у меня по факту браузер принимает файл,пишет принятый размер,а вот размер разархивированного указывает ноль...вот и мучаюсь...

еще очень не правильно,что у нас после каждого заголовка закрывается соединение(Connection: close)...нужно выставлять в keep-alive, а close передавать с последним передаваемым документом(алгоритм нужно продумать)либо есть еще одна строчка в заголовок,на память не помню,которая указывает через сколько времени закрыть соединение если нет активности...если вы посмотрите на тайминги загрузки странички,вы ужаснетесь,сколько у нас тратится времени на поднятие соединения и FTB(попросту:ожидание начала передачи файла)для каждого подтягиваемого файла и это все для вывода одной лишь странички....FTB обычно даже больше чем загрузка самого контента...

я дописал,чтобы сервер отдавал файлы с расширением gz,но это не дало результата..так что можно не заморачиваться и скармливать браузеру все те же .js и .css только в реальности которые будут архивами,так раньше целые сайты строили,так что проблема не в этом...

а gzip нужно добивать,ибо прирост скорости просто самолет))и keep-alive впридачу...
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вс янв 24, 2016 11:46 am

По поводу закрытия соединений. Нужно экспериментировать, не приведёт ли НЕзакрытие к тому, что запросы не будут получать сокеты?

По поводу gzip. Из ваших слов следует, что вы всё сделали — браузер сам должен разбираться с gzip, но почему-то не разбирается. Тут желательно услышать мнение того, кто понимает в этом вопросе.
pastry777
Сообщения: 81
Зарегистрирован: Пт окт 02, 2015 7:47 pm
Благодарил (а): 7 раз
Поблагодарили: 4 раза

Re: Arduino Mega Server

Сообщение pastry777 » Вс янв 24, 2016 11:53 am

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

Re: Arduino Mega Server

Сообщение Alex » Вс янв 24, 2016 11:23 pm

На сайте открылся раздел «Новости проекта»

http://hi-lab.ru/arduino-mega-server/details

В этом разделе будут публиковаться официальные новости проекта. Ставим в закладки и заходим проверять новости. Или подписываемся на рассылку новостей.
ledmax
Сообщения: 88
Зарегистрирован: Сб окт 24, 2015 9:56 pm
Благодарил (а): 11 раз
Поблагодарили: 8 раз

Re: Arduino Mega Server

Сообщение ledmax » Пн янв 25, 2016 10:04 pm

После обновления IDE до версии 1.6.7 возникли проблемы с компиляцией АМС, в частности с библиотекой Time.h ( кто-то тут писал уже про это..)
Вылечил обновлением библиотекиhttps://github.com/PaulStoffregen/Time + добавлением

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

#include <TimeLib.h> 
в arduino_mega_server_due.ino .

Но возникла другая проблема - после открытия arduino_mega_server_due.ino первая компиляция проходит ок, а все последующие дают ошибку

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

GetFileAttributesEx W:\ams\libraries\Time\DateStrings.cpp W:\ams\libraries\Time\Time.h: The filename, directory name, or volume label syntax is incorrect. 
Был бы очень признателен, если бы кто-нибудь попробовал у себя версию 1.6.7 и отписался.
ledmax
Сообщения: 88
Зарегистрирован: Сб окт 24, 2015 9:56 pm
Благодарил (а): 11 раз
Поблагодарили: 8 раз

Re: Arduino Mega Server

Сообщение ledmax » Вт янв 26, 2016 5:42 am

Так Господа,

Разобрался с датчиками температуры - теперь температуры выводит в жёсткой зависимости от порядкового номера сирийника и порядкового номера названия датчика в массиве. Если датчик сломался - то он просто игнорируется. Поэтому избавился от системы здоровья, за ненадобностью. Теперь осталось выкинуть библиотеку далласа и проверить всё на железе (тестил в протеусе)

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

/*
  Modul Temperature
  part of Arduino Mega Server project
*/

#ifdef TEMP_FEATURE

#include <DallasTemperature.h>
#include <OneWire.h>

#define ONE_WIRE_BUS 2

byte const MAX_TEMP_SENSORS = 7;

byte const MAX_ID_DIGITS = 7;

//byte const FULL_HEALTH = 100;
//byte const ZERO_HEALTH = 0;
//byte tempSensorHealth[MAX_TEMP_SENSORS];
//byte tempModulHealth;

char objSens[MAX_TEMP_SENSORS][12] = {"tempSTR", "tempHOM", "tempWRM","sens4","sens5","sens6","sens7"};

// Sensors ID's
byte idTempDat[MAX_TEMP_SENSORS][MAX_ID_DIGITS] = { 
  {40, 50, 197, 184, 0, 0, 0}, // STR
  {40, 52, 197, 184, 0, 0, 0},// SRV
  {40, 48, 197, 184, 0, 0, 0}, // WRM
  
  {40, 54, 197, 184, 0, 0, 0}, // 4
  {40, 49, 197, 184, 0, 0, 0},// 5
  {40, 53, 197, 184, 0, 0, 0}, // 6
  {40, 55, 197, 184, 0, 0, 0}, // 7
 
  
}; 

float current_temp[MAX_TEMP_SENSORS];
int temp_[MAX_TEMP_SENSORS];

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress tempSensor[MAX_TEMP_SENSORS];

void tempInit() {
  initStart("Temperature");
  sensors.begin();
  timeStamp();
  Serialprint(" Parasite power ");
  if (sensors.isParasitePowerMode()) {Serialprint("ON\r");}
                                else {Serialprint("OFF\r");}
  oneWire.reset_search();

  // locate devices on the bus
  timeStamp();
  Serialprint(" Found ");
  Serial.print(sensors.getDeviceCount());
  Serialprint(" devices\r");

  for (byte i = 0; i < MAX_TEMP_SENSORS; i++) {
    sensors.getAddress(tempSensor[i], i);
  }
  oneWire.reset_search();
  showSensorsId();
  modulTemp = MODUL_ENABLE;
  initDone();
}

void showSensorsId() {
  for (byte n = 0; n < MAX_TEMP_SENSORS; n++) {
    timeStamp();
    Serialprint("#");
    Serial.print(n);
    Serialprint(":");
    for (byte i = 0; i < MAX_ID_DIGITS; i++) {
      Serialprint(" ");
      Serial.print(tempSensor[n][i]);
    }
    Serialprint(" ");
    //Serial.println(objSens[n]);
  }
}

void tempWorks() {
  sensors.requestTemperatures();
  
 getTemperature(0); // STR
 getTemperature(1); // HOM 
 getTemperature(2); // WRM  
 getTemperature(3); // 4
 getTemperature(4); // 5
 getTemperature(5); // 6 
 getTemperature(6); // 7
 getTemperature(7); // 8

}
  
void getTemperature(byte n) {
     
     for (byte i = 0; i < MAX_TEMP_SENSORS; i++) {
      
       if (!memcmp(tempSensor[i], idTempDat[n], MAX_TEMP_SENSORS)){
        
        current_temp[i] = sensors.getTempC(tempSensor[i]);
        
        timeStamp();
        
        Serial.print(objSens[n]);
        Serialprint(": ");
        Serial.println(current_temp[i]);
      
        temp_[i] = (current_temp[i] - (int)current_temp[i]) * 100;

        if ((current_temp[i] > -1) && (current_temp[i] < 0)) {
          #ifdef MAJORDOMO_FEATURE
            sendRequestMinusM(objSens[n], "-", (int)current_temp[i], abs(temp_[i])); 
          #endif          
        } else {
            #ifdef MAJORDOMO_FEATURE
              sendRequestMinusM(objSens[n], "", (int)current_temp[i], abs(temp_[i])); 
            #endif            
          } 
        }
    else {}
        }
} // getTemperature( )  

#endif // TEMP_FEATURE 
За это сообщение автора ledmax поблагодарили (всего 2):
VGorokhov (Вт янв 26, 2016 7:30 am) • CamCam (Вс мар 06, 2016 3:29 pm)
Рейтинг: 2.33%
Ответить