Arduino Mega Server

Модератор: Alex

ledmax
Сообщения: 88
Зарегистрирован: Сб окт 24, 2015 9:56 pm

Re: Arduino Mega Server

Сообщение ledmax »

После обновления 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

Re: Arduino Mega Server

Сообщение ledmax »

Так Господа,

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

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

/*
  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 
Pilot63
Сообщения: 5
Зарегистрирован: Ср дек 23, 2015 10:51 pm

Re: Arduino Mega Server

Сообщение Pilot63 »

Доброго дня.
Вот и до меня дошла плата DUE, но так как до этого работал только с Уно, и то на примитивном уровне- прошу помочь с решением проблемы: при компиляции в версии 1.6.5, да и в 1.6.7 выдает ошибку:
Arduino: 1.6.5 (Windows 8.1), Плата"Arduino Due (Programming Port)"

D:\Arduino\libraries\DallasTemperature\DallasTemperature.cpp: In member function 'void DallasTemperature::begin()':
D:\Arduino\libraries\DallasTemperature\DallasTemperature.cpp:51:67: error: 'max' was not declared in this scope
bitResolution = max(bitResolution, getResolution(deviceAddress));
^
Спасибо.
VGorokhov
Сообщения: 51
Зарегистрирован: Пн фев 09, 2015 4:12 am
Откуда: г. Актау, Мангистауской области

Re: Arduino Mega Server

Сообщение VGorokhov »

Pilot63 писал(а):Доброго дня.
Вот и до меня дошла плата DUE, но так как до этого работал только с Уно, и то на примитивном уровне- прошу помочь с решением проблемы: при компиляции в версии 1.6.5, да и в 1.6.7 выдает ошибку:
Arduino: 1.6.5 (Windows 8.1), Плата"Arduino Due (Programming Port)"

D:\Arduino\libraries\DallasTemperature\DallasTemperature.cpp: In member function 'void DallasTemperature::begin()':
D:\Arduino\libraries\DallasTemperature\DallasTemperature.cpp:51:67: error: 'max' was not declared in this scope
bitResolution = max(bitResolution, getResolution(deviceAddress));
^
Спасибо.
Ошибка в версии библиотеке DalllasTemperature, ты можешь обновить через Librari manager.
Если не поможет установи новую версию arduino-1.7.8, проблема и пропадет.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm

Re: Arduino Mega Server

Сообщение Alex »

На всякий случай ещё раз напомню: не забывайте очищать Темп, особенно при изменениях конфигурации — это позволит избежать многих проблем.
ledmax
Сообщения: 88
Зарегистрирован: Сб окт 24, 2015 9:56 pm

Re: Arduino Mega Server

Сообщение ledmax »

Alex,

Подскажите, как реализовать запрос из мажордомо? Реализовываю термостат для регулировки отопления на пид регуляторе + серво, установочное значение хочу ввоидь через АМС и/или запрашивать с МЖД.
И не могу разобраться с инициализацией модулей - как сделать. что бы например void getTemperature выполнялся каждые 30сек?

спасибо
SPbDima
Сообщения: 113
Зарегистрирован: Пн окт 19, 2015 8:27 am

Re: Arduino Mega Server

Сообщение SPbDima »

Чтобы при загрузке картинки не терялись, можно разместить картинку в теле документа или в таблице стилей
http://front-end.su/2015/09/08/image-to-base64/
Выгодно использовать при большом количестве мелких однотипных изображений.
SPbDima
Сообщения: 113
Зарегистрирован: Пн окт 19, 2015 8:27 am

Re: Arduino Mega Server

Сообщение SPbDima »

Моя доработка версии 0.14 (черновая).
Работаю только с http://ххх.ххх.ххх.ххх/sensors.htm
Единственное sensors.htm до конца не подчистил с версии 0.13(отказался от ряда параметров), т.к. занялся файловым менеджером и сейчас усиленно курю CSS. Примерный вид ФМ на страничке sdcard.htm(для просмотра необходимо добавить файлы из архива CSS).

P.S.: Если обнаружите ошибки, сообщайте!
Вложения
css.rar
(6.32 КБ) 204 скачивания
arduino_mega_server(27012015).rar
(18.62 КБ) 263 скачивания
arduino_serial_commander(27012016).rar
(31.25 КБ) 236 скачиваний
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm

Re: Arduino Mega Server

Сообщение Alex »

И не могу разобраться с инициализацией модулей - как сделать. что бы например void getTemperature выполнялся каждые 30сек?

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

if (cycle30s) {
  sensors.requestTemperatures();
  getTemperature(0); 
  getTemperature(1);
  getTemperature(2); 
} 
Чтобы при загрузке картинки не терялись, можно разместить картинку в теле документа или в таблице стилей
http://front-end.su/2015/09/08/image-to-base64/
Выгодно использовать при большом количестве мелких однотипных изображений.

У меня картинки теряются только при использовании 5500 и хотелось бы не искать обходные пути, а выяснить причину явления.

Сама идея внедрять картинки просто отличная и найдёт своё применение в системе, спасибо за идею.

Вопрос только в универсальности решения — нужно, чтобы это работало в большинстве браузеров и на андроиде большинства версий (а с этим видимо проблемы).
SPbDima
Сообщения: 113
Зарегистрирован: Пн окт 19, 2015 8:27 am

Re: Arduino Mega Server

Сообщение SPbDima »

Вопрос только в универсальности решения — нужно, чтобы это работало в большинстве браузеров и на андроиде большинства версий (а с этим видимо проблемы).
Для Андроида и иОс я бы написал приложение с виждетом. А для браузеров требование HTML5.
Ответить