Подключение железа к AMS

Модератор: Alex

serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Подключение железа к AMS

Сообщение serghei » Чт фев 23, 2017 9:57 pm

Боюсь опять робот за банит , но попробую. В исходной версии заменяем LED1 на REL1
СпойлерПоказать

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

  var strLED1 = "";// заменяем LED1 на REL1
  var strLED2 = "";
  var strLED3 = "";
  var strLED4 = "";// REL4
  var LED3_state = 0;
  var LED4_state = 0;

  function drawBar(a, b, c, d, e, f) { 
И так по всем пунктам. Я понимаю, что так можно описывать переделки , чтобы был понятен смысл происходящего. Но в конце всё же хочется видеть готовый файл. Может я не прав, но тут спрашивают люди с разной степенью подготовки. Сам проходил через это в течении ГОДА.
За это сообщение автора serghei поблагодарил:
awladimer (Сб фев 25, 2017 6:12 pm)
Рейтинг: 1.16%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
awladimer
Сообщения: 30
Зарегистрирован: Вт фев 21, 2017 10:07 am
Благодарил (а): 15 раз
Поблагодарили: 0

Re: Подключение железа к AMS

Сообщение awladimer » Пт фев 24, 2017 6:13 am

serghei писал(а):Боюсь опять робот за банит , но попробую. В исходной версии заменяем LED1 на REL1
СпойлерПоказать

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

  var strLED1 = "";// заменяем LED1 на REL1
  var strLED2 = "";
  var strLED3 = "";
  var strLED4 = "";// REL4
  var LED3_state = 0;
  var LED4_state = 0;

  function drawBar(a, b, c, d, e, f) {
И так по всем пунктам. Я понимаю, что так можно описывать переделки , чтобы был понятен смысл происходящего. Но в конце всё же хочется видеть готовый файл. Может я не прав, но тут спрашивают люди с разной степенью подготовки. Сам проходил через это в течении ГОДА.
нет я код относящийся к LED1 нетрогал я просто добавил Rel а привязать к js незнаю как, так как в 16 версии не все файлы js
на странице никаких изменений нет
кстати вот этот код на странице я тоже невижу
// LED 1
if (this.responseXML.getElementsByTagName('LED')[0].childNodes[0].nodeValue === "checked") {
document.LED_form.LED1.checked = true;
document.getElementById("ld6").innerHTML = "ON";
} else {
document.LED_form.LED1.checked = false;
document.getElementById("ld6").innerHTML = "OFF";
}

// LED 2
if (this.responseXML.getElementsByTagName('LED')[1].childNodes[0].nodeValue === "checked") {
document.LED_form.LED2.checked = true;
document.getElementById("ld7").innerHTML = "ON";
} else {
document.LED_form.LED2.checked = false;
document.getElementById("ld7").innerHTML = "OFF";
}

// LED 3
if (this.responseXML.getElementsByTagName('LED')[2].childNodes[0].nodeValue === "on") {
document.getElementById("LED3").innerHTML = "LED 3 is ON (D5)";
document.getElementById("ld5").innerHTML = "ON";
LED3_state = 1;
} else {
document.getElementById("LED3").innerHTML = "LED 3 is OFF (D5)";
document.getElementById("ld5").innerHTML = "OFF";
LED3_state = 0;
}

// LED 4
if (this.responseXML.getElementsByTagName('LED')[3].childNodes[0].nodeValue === "on") {
document.getElementById("LED4").innerHTML = "LED 4 is ON (D3)";
document.getElementById("ld3").innerHTML = "ON";
LED4_state = 1;
} else {
document.getElementById("LED4").innerHTML = "LED 4 is OFF (D3)";
document.getElementById("ld3").innerHTML = "OFF";
LED4_state = 0;
}
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Подключение железа к AMS

Сообщение serghei » Пт фев 24, 2017 8:59 am

Тот код был написан для 015 версии АМС. В 016 много чего изменили , но смысл остался прежний. Я пока вообще не разбирался с 016 , застрял на ЕСП-015. Самое разумное, наверное, сделать копию страницы sample2.htm , назвать sample3.htm и менять названия в ней. А так же надо понять как это работает вообще. Вот Android2i2 ТУТ пробует то же самое сделать. Может есть смысл Вам скооперироваться ?
За это сообщение автора serghei поблагодарил:
awladimer (Пт фев 24, 2017 10:38 am)
Рейтинг: 1.16%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am
Благодарил (а): 4 раза
Поблагодарили: 43 раза

Re: Подключение железа к AMS

Сообщение ser009 » Ср апр 05, 2017 7:05 am

Результат работы над ошибками:
- корректно отображается "KID"
- корректно отображается "CLO"
- добавлен пример модуля управления реле. (D28, D29).
- в тестовом режиме добавлен код записи архивных сообщений в файл alarm.txt на SD для сигналов реле D28, D29.
не забываем редактировать IP и NTP
arduino_mega_server_due_0.161.rar
(44.05 КБ) 236 скачиваний
microsd_0161.rar
(945.02 КБ) 211 скачиваний
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Подключение железа к AMS

Сообщение serghei » Сб апр 15, 2017 3:54 pm

В очередной раз попытался управлять реле с помощью АМС. Скажу сразу - получилось запустить 5 реле с уже готовой страницы " Управление" . Время реакции около секунды на Дуе и загруженном компе на 100%. Одна проблема - я не могу вспомнить, ЧЕЙ это код!!! Но взял его тут на форуме. Единственное - добавил сам в "ServerAjax" обслуживание кнопок. Теперь 5 реле на 22, 44, 45, 46 и 47 пине управляются с Веб страницы. Автор кода, откликнитесь! Давайте допишем отправку состояния на МД и размножим до 8 релюшек.
Код для 5-ти реле
СпойлерПоказать

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

#ifdef KEYS_FEATURE

int  goLight = 0; // Light (key) control
int  goRele1 = 0; // Реле контроль
int  goRele2 = 0; // Реле контроль
int  goRele3 = 0; // Реле контроль
int  goRele4 = 0; // Реле контроль
int  goRele5 = 0; // Реле контроль
#define keyPin 22

//добавочный код

#define KOTEL1Pin 44  // KOTEL1
#define KOTEL2Pin 45  // KOTEL2
#define KOTEL3Pin 46  // KOTEL3 
#define KOTEL4Pin 47  // KOTEL4
#define ET2LESTPin 48  // ET2LEST

//добавочный код

void keysInit() {
  pinMode(keyPin, OUTPUT);
  modulKeys = MODUL_ENABLE;
  started("Keys", true);

  pinMode(KOTEL1Pin, OUTPUT);
  modulKeys = MODUL_ENABLE;
  started("Keys", true);

  pinMode(KOTEL2Pin, OUTPUT);
  modulKeys = MODUL_ENABLE;
  started("Keys", true);

  pinMode(KOTEL3Pin, OUTPUT);
  modulKeys = MODUL_ENABLE;
  started("Keys", true);

  pinMode(KOTEL4Pin, OUTPUT);
  modulKeys = MODUL_ENABLE;
  started("Keys", true);

  pinMode(ET2LESTPin, OUTPUT);
  modulKeys = MODUL_ENABLE;
  started("Keys", true);

  
}

void keysWorks() {
  if (goLight == 1) {
    digitalWrite(keyPin, LOW);
  } else {
      digitalWrite(keyPin, HIGH);   
    }

    //добавочный код
    if (goRele1 == 1) {
    digitalWrite(KOTEL1Pin, LOW);
  } else {
      digitalWrite(KOTEL1Pin, HIGH);   
    }
    if (goRele2 == 1) {
    digitalWrite(KOTEL2Pin, LOW);
  } else {
      digitalWrite(KOTEL2Pin, HIGH);   
    }
    if (goRele3 == 1) {
    digitalWrite(KOTEL3Pin, LOW);
  } else {
      digitalWrite(KOTEL3Pin, HIGH);   
    }
    if (goRele4 == 1) {
    digitalWrite(KOTEL4Pin, LOW);
  } else {
      digitalWrite(KOTEL4Pin, HIGH);   
    }
    if (goRele5 == 1) {
    digitalWrite(ET2LESTPin, LOW);
  } else {
      digitalWrite(ET2LESTPin, HIGH);   
    }
    
}

void setGoLightON() {
  goLight = 1;
}

void setGoLightOFF() {
  goLight = 0;
}
//добавочный код kotel1

void setGoRele1ON() {
  goRele1 = 1;
}

void setGoRele1OFF() {
  goRele1 = 0;
}

//kotel2

void setGoRele2ON() {
  goRele2 = 1;
}

void setGoRele2OFF() {
  goRele2 = 0;
}
//kotel3

void setGoRele3ON() {
  goRele3 = 1;
}

void setGoRele3OFF() {
  goRele3 = 0;
}

//kotel4

void setGoRele4ON() {
  goRele4 = 1;
}

void setGoRele4OFF() {
  goRele4 = 0;
}

//ET2LEST
void setGoRele5ON() {
  goRele5 = 1;
}

void setGoRele5OFF() {
  goRele5 = 0;
}

#endif // KEYS_FEATURE      
В ServerAjax меняем
СпойлерПоказать

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

// Control

byte light1 = 0;
byte light2 = 0;
byte light3 = 0;
byte light4 = 0;
byte light5 = 0;

void setControl() {
  if (StrContains(HTTP_req, "light1=1")) {
    light1 = 1;
    //red(led1, 127);
    goLight = 1;
  } 
  else if (StrContains(HTTP_req, "light1=0")) {
    light1 = 0;
   // black(led1);

   goLight = 0;
  }
//=====================
  if (StrContains(HTTP_req, "light2=1")) {
    //light2 = 1;

      light2 = 1;
   // blue(led1, 127);

   goRele1 = 1;
  } 
  else if (StrContains(HTTP_req, "light2=0")) {
    light2 = 0;
    //black(led1);

    goRele1 = 0;
  }
//==================================================
  if (StrContains(HTTP_req, "light3=1")) {
    light3 = 1;
    //green(led1, 127);
    goRele2 = 1;
  } 
  else if (StrContains(HTTP_req, "light3=0")) {
    light3 = 0;
    //black(led1);

    goRele2 = 0;
  }
//====================================================
  if (StrContains(HTTP_req, "light4=1")) {
    light4 = 1;
   // magenta(led1, 127);

   goRele3 = 1;
  } 
  else if (StrContains(HTTP_req, "light4=0")) {
    light4 = 0;
   // black(led1);

   goRele3 = 0;
  }
//======================================================
  if (StrContains(HTTP_req, "light5=1")) {
    light5 = 1;
    //yellow(led1, 127);

    goRele4 = 1;
  } 
  else if (StrContains(HTTP_req, "light5=0")) {
    light5 = 0;
   // black(led1);

   goRele4 = 0;
  }     
} // setControl()   
После этого начинают работать все кнопки "Свет на кухне" на странице " Управление".
Автор кода , отзовитесь! Если у Вас есть полная версия - выложите тут!
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Подключение железа к AMS

Сообщение serghei » Вт апр 18, 2017 9:51 pm

Загрузил этот код в Дую версия 016. Все работает четко и быстро. То же самое в Мегу сдвоенный сервер для RobotDyn. На странице " Управление" работают все 5 кнопок.С экрана включаю все реле,lite1 -5 единица, затем выключаю. Всё по нулям. Логично. Открываю страницу //192.168.2.37/request_control&nocache=..... вижу правильные значения
СпойлерПоказать

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

<inputs>
<lite1>0</lite1>
<lite2>0</lite2>
<lite3>0</lite3>
<lite4>0</lite4>
<lite5>0</lite5>
</inputs>
Через 5 секунд перегружаю эту страницу и переменная lite1 = 1 и соответственно лампочка зелёная. Не думаю, что это дефект кода ( на Дуе работает). Скорее проблема в компиляторе. Про громадную разницу в свободном ОЗУ при компиляции 1.6.7 и 1.6.17 я уже упоминал. ( почти 1 500 байт). Неужели это очередной прикол IDE ?
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
batihor
Сообщения: 16
Зарегистрирован: Сб май 20, 2017 3:34 pm
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Re: Подключение железа к AMS

Сообщение batihor » Ср май 24, 2017 8:02 am

Доброго времени суток.
Есть небольшая рукоблудная метеостанция. Состоит из двух блоков, удаленный передает показания с улицы через nRF24, домашний принимает и дополнительно снимает показания в доме. Крутится все это на Ардуино МЕГА и показания отображаются на TFT 2,4 дисплее. (завалялся :) ).
Задача подключить ESP-01 (AMS) к Ардуино МЕГА через UART, что бы была возможность отображать показания датчиков на WEB странице.
Где можно почитать на эту тему, в примерах? :)
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Подключение железа к AMS

Сообщение serghei » Ср май 24, 2017 8:57 am

На ЕСП-01 вряд ли получится - пинов не хватит или памяти. NRF24 работает по шине SPI . Для этого надо 3 пина- MOSI, MISO, и CL (?). Помимо этого в скетче надо выбирать чип и активировать его. Это еще два пина. Все это работает на "нормальных" готовых модулях Wemos и NodeMcu. Цена вопроса 4 бакса. У последнего нет проблем с питанием NRF от самой платы. У WeMos есть куча готовых шилдов от батарейного питания до готовых датчиков. Примеры выкладывал.
Если хотите по сериалу сливать данные с Меги на ЕСП - есть вариант запустить связку на подобии RobotDyn. Но пока у меня передается только статус , что партнер живой в обе стороны. Для передачи данных надо дописывать код. Я только изучаю этот вопрос.
Для начала почитай статью про новую плату .
Я думаю надо для начала перенести код распарсивания из Меги в ЕСП. А потом писать код передачи данных. Самого очень интересует этот вопрос.
Все таки проще сразу делать на ЕСП.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
batihor
Сообщения: 16
Зарегистрирован: Сб май 20, 2017 3:34 pm
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Re: Подключение железа к AMS

Сообщение batihor » Ср май 24, 2017 4:46 pm

Неужели так все грустно. Нельзя разве в сериал отправлять показания датчиков из МЕГИ на ESP-01? А что может добавить уважаемый гуру Alex?
В любом случае спасибо за ответ. Наверное все же надо ставить на NodeMcu, но теперь дисплей как бы не приделах получается...
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Подключение железа к AMS

Сообщение serghei » Ср май 24, 2017 7:29 pm

Прошу прощения что ввел в заблуждение. Это радио нельзя прикрутить к ЕСП-01. С сериалом все гораздо проще. Скачайте отсюда версию для платы RobotDyn. Залейте код в ЕСП. Из Меги вырежьте вкладку robotdyn и вставьте к себе. Только сетап и луп правильно оформить. Если надо гнать данные только от меги на Есп , то вывод TX Меги через делитель 10 ком-10 ком соединить с RX на ЕСП. Можно поставить готовый согласователь уровней 5 вольт - 3.3 вольта. После старта ЕСП через 8 секунд лампочка MGA в даш-панели должна стать зеленой. Значит поток пошел. Дело останется за малым - дописать код передачи чисел с Меги на ЕСП и распарсить . Как вывести своё число на страницу скажу попозже , если такой вариант устроит.
С экраном на ЕСП еще проще - это стандартный ардуино-код и Вам даже переделывать ничего не надо. Просто вставить библиотеки в ЕСП. Но скорее всего к 01 опять не получиться )) - пинов мало.
Так что NodeMcu брать все равно придется. А заодно и закажите ЕСП-32. Скоро выйдет АМС для этой платы.
За это сообщение автора serghei поблагодарил:
batihor (Чт май 25, 2017 4:10 pm)
Рейтинг: 1.16%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Ответить