Arduino Mega Server
Модератор: Alex
-
alexsis_76
- Сообщения: 792
- Зарегистрирован: Пт янв 22, 2016 10:08 am
Re: Arduino Mega Server
Что AMS ещё та заноза?
идея хороша, только сырой очень, недоделанный, если заняться то девайс получится по лучше megad, ну и лишнего много.
идея хороша, только сырой очень, недоделанный, если заняться то девайс получится по лучше megad, ну и лишнего много.
Re: Arduino Mega Server
А где сам код реле ? Какую переменную хотите вывести на страницу ? Посмотрите как это сделано у ser009. Я только собрал всё вместе и повторил. Сначала пишем код для реле и его состояния.
Затем в сервере ажакс
Это чтобы отображались сами страницы. Далее
Ну и сами страницы
Что бы с этим всем разобраться наверное проще выложить полную версию ))
Код: Выделить всё
/*
Modul Algoritm
part of Arduino Mega Server project
*/
/* значение по которому ведется регулирование
в примере это значени будет задаваться вручную с web
*/
// mode режим
// 0 - ручной
// 1 - по значению датчика
// 2 - по времени
// 3 - not defined and not contXstatus
byte rele1mode = 0;
/* значения максимальных и минимальых значений для включения
и выключения RELE1
*/
int value_on = 100;
int value_off = 0;
int value_web = 0;
/* время включения по умолчанию /часы, минуты/
* при необходимости можно добавить секунды
*/
int r1hour_on = 19; int r1minute_on = 00;
int r1hour_off = 19; int r1minute_off = 15;
void Regul(){
if (rele1state == 0&&rele1mode == 0&&value_web == 1){
timeStamp();
rele1state = 1;
MessText = "Выход D32. Включение с Веб";
MessLoger(String (MessText), String (Info));
// #ifdef SERIAL_PRINT
Serial.println("Out D32. command ON to Web");
// #endif
} else{};
if (rele1state == 1&&rele1mode == 0&&value_web == 0){
timeStamp();
rele1state = 0;
MessText = "Выход D32. Отключение с Веб";
MessLoger(String (MessText), String (Info));
// #ifdef SERIAL_PRINT
Serial.println("Out D32. command ON to Web");
// #endif
} else{};
if (rele1state == 0&&rele1mode == 2&&r1hour_on == int (hour())&&r1minute_on == int (minute())){
timeStamp();
rele1state = 1;
MessText = "Выход D32. Включение по времени";
MessLoger(String (MessText), String (Info));
// #ifdef SERIAL_PRINT
Serial.println("Out D32. command ON to time");
// #endif
} else{};
if (rele1state == 1&&rele1mode == 2&&r1hour_off == int (hour())&&r1minute_off == int (minute())){
timeStamp();
rele1state = 0;
MessText = "Выход D32. Отключение по времени";
MessLoger(String (MessText), String (Info));
// #ifdef SERIAL_PRINT
Serial.println("Out D32. command OFF to time");
// #endif
} else {};
//if (!rele1state && rele1mode == 1 && dht11_h >= value_on){
//if (!rele1state && rele1mode == 1 && dht.readHumidity() > value_on){
if (!rele1state == 1 && rele1mode == 1 && analogRead(A0) > value_on){
digitalWrite(rele1pin, HIGH);
timeStamp();
rele1state = 1;
MessText = "Выход D32. Включение по датчику влажности";
MessLoger(String (MessText), String (Info));
// #ifdef SERIAL_PRINT
Serial.println("Out D32. command ON to HUM ");
// #endif
} //if
//if (rele1state && rele1mode == 1 && dht11_h < value_off){
//if (!rele1state && rele1mode == 1 && dht.readHumidity() < value_off){
if (rele1state == 1 && rele1mode == 1 && analogRead(A0) < value_off){
digitalWrite(rele1pin, LOW);
timeStamp();
rele1state = 0;
MessText = "Выход D32. Выключение по датчику влажности";
MessLoger(String (MessText), String (Info));
// #ifdef SERIAL_PRINT
Serial.println("Out D32. command OFF to HUM ");
// #endif
} // if
} // void regulКод: Выделить всё
else if (StrContains(HTTP_req, "request_regulset")){sendXmlAnswer(cl); setRegul(); responseRegulset(cl);}
else if (StrContains(HTTP_req, "request_regulval")){sendXmlAnswer(cl); valRegul(); responseRegulval(cl);}Код: Выделить всё
// Make Response
void valRegul(){
if (StrContains(HTTP_req, "RELE1=1")){value_web = 1;}
else if (StrContains(HTTP_req, "RELE1=0")){value_web = 0;}
}
void setRegul(){
byte pos1;
float pos2;
String commandStr;
if (StrContains(HTTP_req, "r1mode=")) {
pos1 = request.indexOf("r1mode=") + 7;
pos2 = request.indexOf("&", pos1);
commandStr = request.substring(pos1, pos2);
rele1mode = commandStr.toFloat();}
if (StrContains(HTTP_req, "r1hon=")) {
pos1 = request.indexOf("r1hon=") + 6;
pos2 = request.indexOf("&", pos1);
commandStr = request.substring(pos1, pos2);
r1hour_on = commandStr.toFloat();}
if (StrContains(HTTP_req, "r1mon=")) {
pos1 = request.indexOf("r1mon=") + 6;
pos2 = request.indexOf("&", pos1);
commandStr = request.substring(pos1, pos2);
r1minute_on = commandStr.toFloat();}
if (StrContains(HTTP_req, "r1hoff=")) {
pos1 = request.indexOf("r1hoff=") + 7;
pos2 = request.indexOf("&", pos1);
commandStr = request.substring(pos1, pos2);
r1hour_off = commandStr.toFloat();}
if (StrContains(HTTP_req, "r1moff=")) {
pos1 = request.indexOf("r1moff=") + 7;
pos2 = request.indexOf("&", pos1);
commandStr = request.substring(pos1, pos2);
r1minute_off = commandStr.toFloat();}
if (StrContains(HTTP_req, "r1valon=")) {
pos1 = request.indexOf("r1valon=") + 8;
pos2 = request.indexOf("&", pos1);
commandStr = request.substring(pos1, pos2);
value_on = commandStr.toFloat();}
if (StrContains(HTTP_req, "r1valoff=")) {
pos1 = request.indexOf("r1valoff=") + 9;
pos2 = request.indexOf("&", pos1);
commandStr = request.substring(pos1, pos2);
value_off = commandStr.toFloat();}
if (StrContains(HTTP_req, "value=")) {
pos1 = request.indexOf("value=") + 6;
pos2 = request.indexOf("&", pos1);
commandStr = request.substring(pos1, pos2);
dht11_h = commandStr.toFloat();}
}
void responseRegulset(EthernetClient cl) {
String s = tagXmlVersion();
s += openInputs();
s += makeTag("r1mode", "", String(rele1mode));
s += makeTag("D", String(rele1pin), String(rele1state));
s += makeTag("r1hon", "", String(r1hour_on));
s += makeTag("r1mon", "", String(r1minute_on));
s += makeTag("r1hoff", "", String(r1hour_off));
s += makeTag("r1moff", "", String(r1minute_off));
s += makeTag("r1valon", "", String(value_on));
s += makeTag("r1valoff", "", String(value_off));
s += makeTag("value", "", String(dht.readHumidity())); // Тут привязка по датчику DHT11
s += closeInputs();
cl.println(s);
}
void responseRegulval(EthernetClient cl) {
String s = tagXmlVersion();
s += openInputs();
s += makeTag("r1mode", "", String(rele1mode));
s += makeTag("D", String(rele1pin), String(rele1state));
s += makeTag("value", "", String(dht11_h));
s += closeInputs();
cl.println(s);
}AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Re: Arduino Mega Server
Небольшое лирическое отступление.
Я предлагал сделать из данного проекта "Отличный конструктор".
Именно для этого создавалась ветка "готовые решения".
Регламентировать и закрепить в проекте определенные правила (имена переменных, вкладок, функций) позволяющие более опытным участниками помогать начинающим с меньшими затратами времени. Также описывать небольшие куски проще и меньшие затраты по времени.
Как уже писалось выше большая часть кода доступна для понимания людям без глубоких познаний программирования.
Я предлагал сделать из данного проекта "Отличный конструктор".
Именно для этого создавалась ветка "готовые решения".
Регламентировать и закрепить в проекте определенные правила (имена переменных, вкладок, функций) позволяющие более опытным участниками помогать начинающим с меньшими затратами времени. Также описывать небольшие куски проще и меньшие затраты по времени.
Как уже писалось выше большая часть кода доступна для понимания людям без глубоких познаний программирования.
-
alexsis_76
- Сообщения: 792
- Зарегистрирован: Пт янв 22, 2016 10:08 am
Re: Arduino Mega Server
Да уже есть готовые, зачем еще то
да и смысл какой, ардуиновский код очень примитивен(примитивнее только php), шаблонов вагон, практический каждый может подобрать на свой вкус и размер и переделать под себя.
да и смысл какой, ардуиновский код очень примитивен(примитивнее только php), шаблонов вагон, практический каждый может подобрать на свой вкус и размер и переделать под себя.
Re: Arduino Mega Server
Мои 6 копеек. Все решения , которые тут выкладываются , это всё таки примеры. Что бы это конкретно применить на деле , надо многое дописывать самому. Банальный пример - последняя просьба объяснить , как управлять реле. Для этого есть 3 варианта решения.
Второй вариант слишком тяжелый и опять же не понятно , как добавить еще 15 реле. Но это очень хороший конструктор.
Самый практичный третий вариант. Элементарно подключается необходимое количество реле и очень просто выводится на страницу. А так же привязываются к любым датчикам .
Но что бы это повторить , конечному пользователю в любом случае придется лезть в код и прописывать свои данные.
Как резюме - создавать еще одну тему из серии Энциклопедии по AMS, для этого надо очень хорошо разбираться в коде. У меня так не получается. Но попробую выложить свою версию термостата.
PS/ Еще добавлю. Чтобы проект стал " народным" , он должен быть простым и понятным для конфигурирования простыми пользователями. Так сделано в известных проектах типа WiFi-Iot. С AMS на данном этапе так не получится , потому что необходимо редактировать две - три вкладки в коде и две HTML страницы.
- 1. Управлять вручную со страницы " control".
2. Как выше описано привязать к любому датчику , вручную или по времени.
3. Привязать код реле к датчикам.
Второй вариант слишком тяжелый и опять же не понятно , как добавить еще 15 реле. Но это очень хороший конструктор.
Самый практичный третий вариант. Элементарно подключается необходимое количество реле и очень просто выводится на страницу. А так же привязываются к любым датчикам .
Но что бы это повторить , конечному пользователю в любом случае придется лезть в код и прописывать свои данные.
Как резюме - создавать еще одну тему из серии Энциклопедии по AMS, для этого надо очень хорошо разбираться в коде. У меня так не получается. Но попробую выложить свою версию термостата.
PS/ Еще добавлю. Чтобы проект стал " народным" , он должен быть простым и понятным для конфигурирования простыми пользователями. Так сделано в известных проектах типа WiFi-Iot. С AMS на данном этапе так не получится , потому что необходимо редактировать две - три вкладки в коде и две HTML страницы.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
alexsis_76
- Сообщения: 792
- Зарегистрирован: Пт янв 22, 2016 10:08 am
Re: Arduino Mega Server
написать все это не так уж и сложно, также не сложно написать условия и даже модуль под мажердомо, только надо писать для чего-то или кого-то, иначе в чем смысл сего действа.
Re: Arduino Mega Server
Смысл всего этого действа - что бы AMS превратить в действующий контроллер. У автора это получается , но за деньги и закрытый код. Тут же мы выкладываем просто набор решений и примеров.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
alexsis_76
- Сообщения: 792
- Зарегистрирован: Пт янв 22, 2016 10:08 am
Re: Arduino Mega Server
что бы AMS превратить в действующий контролер
а сейчас он какой
а сейчас он какой
-
alexsis_76
- Сообщения: 792
- Зарегистрирован: Пт янв 22, 2016 10:08 am
Re: Arduino Mega Server
т/е создать еще одну мегад, только с графическим интерфейсом?