Страница 111 из 326
Re: Arduino Mega Server
Добавлено: Пн янв 25, 2016 10:04 pm
ledmax
После обновления IDE до версии 1.6.7 возникли проблемы с компиляцией АМС, в частности с библиотекой Time.h ( кто-то тут писал уже про это..)
Вылечил обновлением библиотеки
https://github.com/PaulStoffregen/Time + добавлением
в 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 и отписался.
Re: Arduino Mega Server
Добавлено: Вт янв 26, 2016 5:42 am
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
Re: Arduino Mega Server
Добавлено: Вт янв 26, 2016 7:57 pm
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));
^
Спасибо.
Re: Arduino Mega Server
Добавлено: Ср янв 27, 2016 1:07 am
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, проблема и пропадет.
Re: Arduino Mega Server
Добавлено: Ср янв 27, 2016 8:04 am
Alex
На всякий случай ещё раз напомню: не забывайте очищать Темп, особенно при изменениях конфигурации — это позволит избежать многих проблем.
Re: Arduino Mega Server
Добавлено: Ср янв 27, 2016 1:41 pm
ledmax
Alex,
Подскажите, как реализовать запрос из мажордомо? Реализовываю термостат для регулировки отопления на пид регуляторе + серво, установочное значение хочу ввоидь через АМС и/или запрашивать с МЖД.
И не могу разобраться с инициализацией модулей - как сделать. что бы например void getTemperature выполнялся каждые 30сек?
спасибо
Re: Arduino Mega Server
Добавлено: Ср янв 27, 2016 1:42 pm
SPbDima
Чтобы при загрузке картинки не терялись, можно разместить картинку в теле документа или в таблице стилей
http://front-end.su/2015/09/08/image-to-base64/
Выгодно использовать при большом количестве мелких однотипных изображений.
Re: Arduino Mega Server
Добавлено: Ср янв 27, 2016 1:58 pm
SPbDima
Моя доработка версии 0.14 (черновая).
Работаю только с http://ххх.ххх.ххх.ххх/sensors.htm
Единственное sensors.htm до конца не подчистил с версии 0.13(отказался от ряда параметров), т.к. занялся файловым менеджером и сейчас усиленно курю CSS. Примерный вид ФМ на страничке sdcard.htm(для просмотра необходимо добавить файлы из архива CSS).
P.S.: Если обнаружите ошибки, сообщайте!
Re: Arduino Mega Server
Добавлено: Ср янв 27, 2016 4:14 pm
Alex
И не могу разобраться с инициализацией модулей - как сделать. что бы например void getTemperature выполнялся каждые 30сек?
Код: Выделить всё
if (cycle30s) {
sensors.requestTemperatures();
getTemperature(0);
getTemperature(1);
getTemperature(2);
}
У меня картинки теряются только при использовании 5500 и хотелось бы не искать обходные пути, а выяснить причину явления.
Сама идея внедрять картинки просто отличная и найдёт своё применение в системе, спасибо за идею.
Вопрос только в универсальности решения — нужно, чтобы это работало в большинстве браузеров и на андроиде большинства версий (а с этим видимо проблемы).
Re: Arduino Mega Server
Добавлено: Ср янв 27, 2016 4:51 pm
SPbDima
Вопрос только в универсальности решения — нужно, чтобы это работало в большинстве браузеров и на андроиде большинства версий (а с этим видимо проблемы).
Для Андроида и иОс я бы написал приложение с виждетом. А для браузеров требование HTML5.