Arduino Mega Server

Модератор: Alex

awladimer
Сообщения: 30
Зарегистрирован: Вт фев 21, 2017 10:07 am
Благодарил (а): 15 раз
Поблагодарили: 0

Re: Arduino Mega Server

Сообщение awladimer » Чт фев 23, 2017 8:47 pm

serghei писал(а):На первой вкладке АМС в середине loop есть код

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

  #ifdef TEMP_FEATURE
    if (cycle5m) {tempWorks();}
  #endif
5m это время через которое сработает вывод температуры. Дальше смотрите вкладку timers самое начало.
СпойлерПоказать

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

unsigned long timer1s;
unsigned long timer4s;
unsigned long timer20s;
unsigned long timer30s;
unsigned long timer1m;
unsigned long timer3m;
unsigned long timer5m;
Это время - меняйте на 1,4,20,30 секунд или 1 ,3,5 минут. Не уверен , но кажется во всех версиях так.
спасибо большое

*** Сообщение запрещено. Сообщение похоже на спам. ***
Avd67
Сообщения: 11
Зарегистрирован: Пт фев 10, 2017 3:44 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino Mega Server

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

serghei писал(а):
Avd67 писал(а): Я, наверное, красным фломастером обведу в календаре тот день, когда АМС запустится
Сегодня этот день настал - отформатировал свою больную карту на 8 гигов через адаптер микро-макси на нетбуке ( прогу вспомню вечером ). Вставляю в USB-reader - Винда орёт что карта не форматирована. На большом другом компе с тем же ридером нормально прочиталась , любопытство победило и я залил файлы сервера. И о ,боги, она ЗАВЕЛАСЬ !!!!!
Полгода танцев с бубном такого не сотворили. Название проги вечером ( или сами погуглите )
И с праздиком Вас !
UPD Прога называется USB disk storage format tool. Скачивал отсюда. 8 гигов колбасит почти час, но после этого все заработало.
Неа, не помогает(
awladimer
Сообщения: 30
Зарегистрирован: Вт фев 21, 2017 10:07 am
Благодарил (а): 15 раз
Поблагодарили: 0

Re: Arduino Mega Server

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

Android2i2 писал(а):Ох... И снова я со своими проблемами. >.<
Повесил 2 реле на 11 и 12 пин.
Код был культурно слизан с данного форума, но чуть-чуть под себя переделан.
СпойлерПоказать

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

#ifdef RELAYS_FEATURE
  byte RPIN[2] ={11,12};
  byte RCTRPIN[2]={11,12};
  int current_val[2];
  int old_val[2];

void relInit() {
  for (byte i=0; i<=1; i++){
pinMode(RCTRPIN[i],LOW);
}

  Serial.print("Relays module... ");
  modulRel = MODUL_ENABLE;
  Serial.print("started\n");
}

void rel_control() {
for (byte i=0; i<=1; i++) {
current_val[i]=digitalRead(RCTRPIN[i]);
if (old_val[i] != current_val[i]){
        if (digitalRead(RCTRPIN[i])== HIGH) {
          rel_sw(i, 1);
        }else {
          rel_sw(i, 0);
        }
old_val[i] = current_val[i];
}
}}

void rel_sw(byte num, byte stat) {
    if(stat==1) {
    digitalWrite(RPIN[num], HIGH);
      Serial.print("REL");
      Serial.print(num+1);
      Serial.print(": on\n");
      REL_state[num] = 1;
    } else {
    digitalWrite(RPIN[num], LOW);
      Serial.print("REL");
      Serial.print(num+1);
      Serial.print(": off\n");
      REL_state[num] = 0; 
    }
}
#endif
Ну и, как и со всеми другими железяками, для начала решил воткнуть свой модуль на уже готовую страницу управления.
По примеру leds добавил пару строк в Ajax.
СпойлерПоказать

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

    else if (StrContains(HTTP_req, "request_generic")) {sendXmlAnswer(cl); SetREL();         responseGeneric(cl);}
.
.
.
// Generic
void SetREL() {
    if (StrContains(HTTP_req, "REL1=1")) {
    REL_state[0] = 1;  // save LED state
    digitalWrite(11, HIGH);
  } else if (StrContains(HTTP_req, "REL1=0")) {
      REL_state[0] = 0;  // save LED state
      digitalWrite(11, LOW);
    }

    // REL 2 (pin 12)
  if (StrContains(HTTP_req, "REL2=1")) {
    REL_state[1] = 1;
    digitalWrite(12, HIGH);
  } else if (StrContains(HTTP_req, "REL2=0")) {
      REL_state[1] = 0;
      digitalWrite(12, LOW);
    }
}
В sample2 просто заменил два LED'a на свои REL.
СпойлерПоказать

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

var strREL1 = "";
var strLED3 = "";
var strLED4 = "";
var REL2_state = 0;
var LED4_state = 0;
...
 // REL 1
          if (this.responseXML.getElementsByTagName('REL')[0].childNodes[0].nodeValue === "checked") {
            document.REL_form.REL1.checked = true;
            document.getElementById("REL1").innerHTML = "ON";
          } else {
              document.REL_form.REL1.checked = false;
              document.getElementById("REL1").innerHTML = "OFF";
            }


          // REL 2
          if (this.responseXML.getElementsByTagName('REL')[2].childNodes[0].nodeValue === "on") {
            document.getElementById("REL2").innerHTML = "REL 2 is ON (D12)";
            document.getElementById("REL2").innerHTML = "ON";
            LED3_state = 1;
          } else {
              document.getElementById("REL2").innerHTML = "REL2 is OFF (D5)";
              document.getElementById("REL2").innerHTML = "OFF";
              REL2_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;
            }
...
request.open("GET", "request_generic" + strREL1 + strREL2 + strLED3 + strLED4 + randomNoCache(), true);
  request.send(null);
  setTimeout('getArduinoIO()', 1000);
  strREL1 = "";
  strREL2 = "";
  strLED3 = "";
  strLED4 = "";
} // getArduinoIO()
...
unction GetCheck() {
  if (REL_form.REL1.checked) {
    strREL1 = "&REL1=1";
  } else {
      strREL1 = "&REL1=0";
    }
  }

/* -----------------------------------------
  service LEDs when button checked/unchecked
-------------------------------------------- */

function GetButton1() {
  if (REL2_state === 1) {
    REL2_state = 0;
    strREL2 = "&REL2=0";
  } else {
      REL2_state = 1;
      strREL2 = "&REL2=1";
    }
  }

function GetButton2() {
  if (LED4_state === 1) {
    LED4_state = 0;
    strLED4 = "&LED4=0";
  } else {
      LED4_state = 1;
      strLED4 = "&LED4=1";
    }
...
<h3>Светодиоды,<br>использующие чекбоксы</h3>
          <form id="check_RELs" name="REL_form">
            <input type="checkbox" name="REL1" value="0" onclick="GetCheck()" /> REL 1 (D11)<br /><br />
          </form>
        </div>
      </div>
      <div class="cell-4">
        <div class="box">
          <h3>Светодиоды,<br>использующие кнопки</h3>
          <button type="button" id="REL2" onclick="GetButton1()">REL 2 is OFF (D12)</button><br /><br />
          <button type="button" id="LED4" onclick="GetButton2()">LED 4 is OFF (D9)</button><br /><br />
        </div>
      </div>
Но...
  
Скриншот 13-02-2017 174424.jpg
Как понимаете, ничего с моим реле не происходит, как бы яростно я не тыкал по кнопкам.
Направьте на путь истинный. :cry:
Что я опять сделал не так? :(
А что за программа у вас для отладки HTM и cj
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server

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

awladimer Злоупотреблять слишком частым опросом температуры не надо. 5-ти минут вполне достаточно , если только для теста датчиков. Сам таким грешу , но потом возвращаю к 5 минут.
Да это простой текстовый редактор Notepad++
Для начала работы по адаптации "под себя" попробуй пройти эту школу. А потом можно браться и по серьезней.
За это сообщение автора serghei поблагодарил:
awladimer (Пт фев 24, 2017 11:29 am)
Рейтинг: 1.16%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Android2i2
Сообщения: 18
Зарегистрирован: Вс фев 05, 2017 2:19 pm
Благодарил (а): 2 раза
Поблагодарили: 2 раза
Контактная информация:

Re: Arduino Mega Server

Сообщение Android2i2 » Пт фев 24, 2017 11:01 am

awladimer писал(а):
Android2i2 писал(а):Ох... И снова я со своими проблемами. >.<
Повесил 2 реле на 11 и 12 пин.
Код был культурно слизан с данного форума, но чуть-чуть под себя переделан.
СпойлерПоказать

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

#ifdef RELAYS_FEATURE
  byte RPIN[2] ={11,12};
  byte RCTRPIN[2]={11,12};
  int current_val[2];
  int old_val[2];

void relInit() {
  for (byte i=0; i<=1; i++){
pinMode(RCTRPIN[i],LOW);
}

  Serial.print("Relays module... ");
  modulRel = MODUL_ENABLE;
  Serial.print("started\n");
}

void rel_control() {
for (byte i=0; i<=1; i++) {
current_val[i]=digitalRead(RCTRPIN[i]);
if (old_val[i] != current_val[i]){
        if (digitalRead(RCTRPIN[i])== HIGH) {
          rel_sw(i, 1);
        }else {
          rel_sw(i, 0);
        }
old_val[i] = current_val[i];
}
}}

void rel_sw(byte num, byte stat) {
    if(stat==1) {
    digitalWrite(RPIN[num], HIGH);
      Serial.print("REL");
      Serial.print(num+1);
      Serial.print(": on\n");
      REL_state[num] = 1;
    } else {
    digitalWrite(RPIN[num], LOW);
      Serial.print("REL");
      Serial.print(num+1);
      Serial.print(": off\n");
      REL_state[num] = 0; 
    }
}
#endif
 
Ну и, как и со всеми другими железяками, для начала решил воткнуть свой модуль на уже готовую страницу управления.
По примеру leds добавил пару строк в Ajax.
СпойлерПоказать

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

    else if (StrContains(HTTP_req, "request_generic")) {sendXmlAnswer(cl); SetREL();         responseGeneric(cl);}
.
.
.
// Generic
void SetREL() {
    if (StrContains(HTTP_req, "REL1=1")) {
    REL_state[0] = 1;  // save LED state
    digitalWrite(11, HIGH);
  } else if (StrContains(HTTP_req, "REL1=0")) {
      REL_state[0] = 0;  // save LED state
      digitalWrite(11, LOW);
    }

    // REL 2 (pin 12)
  if (StrContains(HTTP_req, "REL2=1")) {
    REL_state[1] = 1;
    digitalWrite(12, HIGH);
  } else if (StrContains(HTTP_req, "REL2=0")) {
      REL_state[1] = 0;
      digitalWrite(12, LOW);
    }
} 
В sample2 просто заменил два LED'a на свои REL.
СпойлерПоказать

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

var strREL1 = "";
var strLED3 = "";
var strLED4 = "";
var REL2_state = 0;
var LED4_state = 0;
...
 // REL 1
          if (this.responseXML.getElementsByTagName('REL')[0].childNodes[0].nodeValue === "checked") {
            document.REL_form.REL1.checked = true;
            document.getElementById("REL1").innerHTML = "ON";
          } else {
              document.REL_form.REL1.checked = false;
              document.getElementById("REL1").innerHTML = "OFF";
            }


          // REL 2
          if (this.responseXML.getElementsByTagName('REL')[2].childNodes[0].nodeValue === "on") {
            document.getElementById("REL2").innerHTML = "REL 2 is ON (D12)";
            document.getElementById("REL2").innerHTML = "ON";
            LED3_state = 1;
          } else {
              document.getElementById("REL2").innerHTML = "REL2 is OFF (D5)";
              document.getElementById("REL2").innerHTML = "OFF";
              REL2_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;
            }
...
request.open("GET", "request_generic" + strREL1 + strREL2 + strLED3 + strLED4 + randomNoCache(), true);
  request.send(null);
  setTimeout('getArduinoIO()', 1000);
  strREL1 = "";
  strREL2 = "";
  strLED3 = "";
  strLED4 = "";
} // getArduinoIO()
...
unction GetCheck() {
  if (REL_form.REL1.checked) {
    strREL1 = "&REL1=1";
  } else {
      strREL1 = "&REL1=0";
    }
  }

/* -----------------------------------------
  service LEDs when button checked/unchecked
-------------------------------------------- */

function GetButton1() {
  if (REL2_state === 1) {
    REL2_state = 0;
    strREL2 = "&REL2=0";
  } else {
      REL2_state = 1;
      strREL2 = "&REL2=1";
    }
  }

function GetButton2() {
  if (LED4_state === 1) {
    LED4_state = 0;
    strLED4 = "&LED4=0";
  } else {
      LED4_state = 1;
      strLED4 = "&LED4=1";
    }
...
<h3>Светодиоды,<br>использующие чекбоксы</h3>
          <form id="check_RELs" name="REL_form">
            <input type="checkbox" name="REL1" value="0" onclick="GetCheck()" /> REL 1 (D11)<br /><br />
          </form>
        </div>
      </div>
      <div class="cell-4">
        <div class="box">
          <h3>Светодиоды,<br>использующие кнопки</h3>
          <button type="button" id="REL2" onclick="GetButton1()">REL 2 is OFF (D12)</button><br /><br />
          <button type="button" id="LED4" onclick="GetButton2()">LED 4 is OFF (D9)</button><br /><br />
        </div>
      </div> 
Но...
  
Скриншот 13-02-2017 174424.jpg
Как понимаете, ничего с моим реле не происходит, как бы яростно я не тыкал по кнопкам.
Направьте на путь истинный. :cry:
Что я опять сделал не так? :(
А что за программа у вас для отладки HTM и cj
Как выше ответил Сергей, это NotePad++.
P.S.
Реле у меня так и не заработало. :D

*** Сообщение запрещено. Сообщение похоже на спам. ***
Arduino Mega 2560 + Ethernet 5100
Windows 10
IDE 1.6.5

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

Re: Arduino Mega Server

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

Жаль,что сообщения не нумеруются на форуме. Пару десятков страниц ( даже больше )назад выкладывали поправленный скетч " key ". На Дуе заработал на вкладке " Управление" - управление светом. Если размножить до 5, то должно получиться. Мне проверить не на чем - нет свободных серверов.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Arduino Mega Server

Сообщение nick7zmail » Пт фев 24, 2017 11:57 am

serghei писал(а):Жаль,что сообщения не нумеруются на форуме.
Как это не нумеруются?)) У твоего например номер 46760)) И прямая ссылка на него viewtopic.php?p=46760#p46760
Можно получить по клику на листочек, рядом с надписью "Добавлено" справа вверху.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
awladimer
Сообщения: 30
Зарегистрирован: Вт фев 21, 2017 10:07 am
Благодарил (а): 15 раз
Поблагодарили: 0

Re: Arduino Mega Server

Сообщение awladimer » Пт фев 24, 2017 12:06 pm

serghei писал(а):awladimer Злоупотреблять слишком частым опросом температуры не надо. 5-ти минут вполне достаточно , если только для теста датчиков. Сам таким грешу , но потом возвращаю к 5 минут.
Да это простой текстовый редактор Notepad++
Для начала работы по адаптации "под себя" попробуй пройти эту школу. А потом можно браться и по серьезней.
Может быть для уличного и домашнего да. А вот в птичнике в инкубаторной мне придеться делать хотя бы до минуты чтоб отслеживать инкубаторы за пять минут может произойти всякое, и тогда яйца на помойку.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server

Сообщение serghei » Пт фев 24, 2017 12:25 pm

ОООО-даааа ! С перепелками я имел дело 6 лет. Всякое бывало. Только учти влажность почти 100% если нет нормальной вентиляции. И сам сервер надо выносить в служебное помещение.
За это сообщение автора serghei поблагодарил:
awladimer (Пт фев 24, 2017 12:51 pm)
Рейтинг: 1.16%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server

Сообщение serghei » Пт фев 24, 2017 4:06 pm

awladimer писал(а):.. в птичнике в инкубаторной мне придеться делать хотя бы до минуты
Есть более красивый вариант и он работает в коде температуры сенсора. Смысл в том , что температура передается только при изменении на какую нибудь величину - хоть 0.1 хоть 10 градусов. Чтобы "видеть" градусник , он сам должен передавать значения через какое то время.
У меня так реализован сенсор - при старте системы АМС один раз опросил все параметры температур , влажности и расхода воды , а потом сенсор сам передает данные при изменении на 0.5 градуса или на 1 литр или на 1% влажности.
Так можно разгрузить сервер для других задач.
За это сообщение автора serghei поблагодарил:
awladimer (Пт фев 24, 2017 7:15 pm)
Рейтинг: 1.16%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Ответить