Не получается добавить новые кнопки к реле удаленного доступа с аутентификацией

georgiy123
Offline
Зарегистрирован: 26.03.2021



Собираю умную розетку на 8 реле .

Сразу скажу , ЯП толком не знаю .

Arduino Uno + shild w5100 + 8 Channel Relay Module

аутентификацию взял отсюда https://it4it.club/topic/13-%D... %80%D0%B0/

Использовал код который в комментариях , он без base.64 и легче



Добавил пины , поставил их в условия



получился в итоге вот такой код

 

/*
  sign in (authentication) to the Web server Arduino
  (с) http://it4it.club
*/
#include <SPI.h>
#include <Ethernet.h> // Used for Ethernet
 
 
int led2 = 2;
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;
int led9 = 9;
 
/*
  Настройки сети
*/
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
                        
 
EthernetServer server(80);
/*
  Переменные для авторизации через web
*/
String readString; // Буфер для данных от пользователя Web сервера
/*
  SETUP
*/
void setup() {
 
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  pinMode(led9, OUTPUT);
  Serial.begin(9600);
  // Поднимаем сеть  
  Ethernet.begin(mac);
  server.begin();
  Serial.println(Ethernet.localIP());
}
/*
  LOOP
*/
void loop() {
  EthernetClient client = server.available();
  if (client) {  
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        readString += c;
        if (c == '\n' && currentLineIsBlank) {
          if (readString.lastIndexOf(F("Authorization: Basic bG9naW46cGFzc3dvcmQ="))>-1) {
            if (readString.lastIndexOf(F("GET /favicon.ico"))>-1) {
              client.println(F("HTTP/1.0 404 Not Found"));
            }
            else {
              client.println(F("HTTP/1.0 200 OK"));
              client.println(F("Content-Type: text/html"));
              client.println(F("Pragma: no-cache\r\nRefresh: 3\r\n"));
             // client.println(F("<html><head><meta charset=UTF-8\"><title>Arduino - iT4iT.CLUB</title>"));
              client.println(F("<style>body,table,tr,td{font-style:normal;font-family:verdana;font-size:11px;}</style></head><body>"));
              client.print(F("Arduino on <a href=\"https://it4it.club\">iT4iT.CLUB</a>"));
              client.println(F("</body></html>"));
              client.println("<br />");     
              client.println("<br />"); 
 
//////////////////////кнопка1 
             // client.println("<br />");     
              client.println("<br />"); 
              client.println("<a href=\"/?button1on\"\">Turn On LED1</a>");
              client.println("<a href=\"/?button1off\"\">Turn Off LED1</a><br />");   
           //SPACES
              //client.println("<br />");     
              //client.println("<br />"); 
 
 
              if (readString.indexOf("?button1on") >0){
               digitalWrite(led2, HIGH);
              }
              if (readString.indexOf("?button1off") >0){
              digitalWrite(led2, LOW);
              }
 
//////////////////////////////////////////////////////////////////
//кнопка2
 
 
              //client.println("<br />");     
              client.println("<br />"); 
              client.println("<a href=\"/?button2on\"\">Turn On LED2</a>");
              client.println("<a href=\"/?button2off\"\">Turn Off LED2</a><br />");   
           //SPACES
              //client.println("<br />");     
              client.println("<br />"); 
 
 
              if (readString.indexOf("?button2on") >0){
               digitalWrite(led3, HIGH);
              }
              if (readString.indexOf("?button2off") >0){
              digitalWrite(led3, LOW);
              }
 
 
///////////////////////////////////////////////////////////////
//кнопка3
 
              //client.println("<br />");     
              client.println("<br />"); 
              client.println("<a href=\"/?button3on\"\">Turn On LED3</a>");
              client.println("<a href=\"/?button3off\"\">Turn Off LED3</a><br />");   
           //SPACES
              //client.println("<br />");     
              //client.println("<br />"); 
 
              if (readString.indexOf("?button3on") >0){
               digitalWrite(led4, HIGH);
              }
              if (readString.indexOf("?button3off") >0){
              digitalWrite(led4, LOW);
              }
//////////////////////////////////////////////////////////////////////
//кнопка4
 
 
 
 
              //client.println("<br />");     
              client.println("<br />"); 
              client.println("<a href=\"/?button4on\"\">Turn On LED4</a>");
              client.println("<a href=\"/?button4off\"\">Turn Off LED4</a><br />");   
           //SPACES
              //client.println("<br />");     
              //client.println("<br />"); 
 
              if (readString.indexOf("?button4on") >0){
               digitalWrite(led5, HIGH);
              }
              if (readString.indexOf("?button4off") >0){
              digitalWrite(led5, LOW);
              }
 
///////////////////////////////////////////////////////////////
//кноака5
 
 
 
              //client.println("<br />");     
              client.println("<br />"); 
              client.println("<a href=\"/?button5on\"\">Turn On LED5</a>");
              client.println("<a href=\"/?button5off\"\">Turn Off LED5</a><br />");   
           //SPACES
              //client.println("<br />");     
              //client.println("<br />"); 
 
              if (readString.indexOf("?button5on") >0){
               digitalWrite(led6, HIGH);
              }
              if (readString.indexOf("?button5off") >0){
              digitalWrite(led6, LOW);
              }
 
///////////////////////////////////////////////////////
//кнопка6
 
 
 
 
              //client.println("<br />");     
              client.println("<br />"); 
              client.println("<a href=\"/?button6on\"\">Turn On LED6</a>");
              client.println("<a href=\"/?button6off\"\">Turn Off LED6</a><br />");   
           //SPACES
             // client.println("<br />");     
              //client.println("<br />"); 
 
 
 
              if (readString.indexOf("?button6on") >0){
               digitalWrite(led7, HIGH);
              }
              if (readString.indexOf("?button6off") >0){
              digitalWrite(led7, LOW);
              }
 
 
///////////////////////////////////////////////////////
 
//кнопка7
 
 
 
 
              //client.println("<br />");     
              client.println("<br />"); 
              client.println("<a href=\"/?button7on\"\">Turn On LED7</a>");
              client.println("<a href=\"/?button7off\"\">Turn Off LED7</a><br />");   
           //SPACES
             // client.println("<br />");     
              //client.println("<br />"); 
 
 
 
              if (readString.indexOf("?button7on") >0){
               digitalWrite(led8, HIGH);
              }
              if (readString.indexOf("?button7off") >0){
              digitalWrite(led8, LOW);
              }//кнопка6
 
 
 
//кнопка8
              //client.println("<br />");     
              client.println("<br />"); 
              client.println("<a href=\"/?button8on\"\">Turn On LED8</a>");
              client.println("<a href=\"/?button8off\"\">Turn Off LED8</a><br />");   
           //SPACES
             // client.println("<br />");     
              //client.println("<br />"); 
 
 
 
              if (readString.indexOf("?button8on") >0){
               digitalWrite(led9, HIGH);
              }
              if (readString.indexOf("?button8off") >0){
              digitalWrite(led9, LOW);
              }
 
              
              
            }
          }
          else {
            client.println(F("HTTP/1.0 401 Unauthorized"));
            client.println(F("WWW-Authenticate: Basic realm=\"Arduino - iT4iT.CLUB\""));
          }
          break;
        }
 
        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      } 
    }
    delay(30);
 
    readString = "";
    client.stop();
  }
}

Но , с 6 релюшками он работает , а с 8ми нет !



То есть , если убрать кнопку 7,8 всё будет работать , с 8ю скрипт просто не пускает в веб интерфейс и просит бесконечно пароль .





После загрузки скетча , память на ардуинке остается Скетч использует 18136 байт (56%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 1107 байт (54%) динамической памяти, оставляя 941 байт для локальных переменных. Максимум: 2048 байт.





Можете помочь в этом проекте ?

Всем добра! 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Скетч - это правильно.

Но не хватает еще и схемы (с обязательным указанием разводки питания).

Ну и проблему желательно формулировать по шаблону:

1. Что хочется получить.

2. Что происходит на самом деле.

3. Чем 2 отличается от 1.

Обороты типа "добавил пины" или "убрал кнопку" никак не поясняют проблемы, если неизвестно, ради чего все это делается.

georgiy123
Offline
Зарегистрирован: 26.03.2021

1. Что хочется получить.
Хочется чтоб работало . 
Всё работает на 6 реле.
С добавление 7 и 8 реле не хочет работать .

 


Получилось так , 8 релейного модуля и шилда на сайте не было (

2. Что происходит на самом деле.
Код работает на 6 реле , как я добавляю условия в коду к 7 и 8 реле , начинается бесконечное запрашивание пароля  и в веб интерфейс не пускает .

Чем 2 отличается от 1.
В первом варианте используется библиотека base64 , он кодирует/раскодирует пароль .
Я также пробовал использовать этот вариант , такой же глюк.

ради чего все это делается.

Я хочу собрать умную розетку на 8 реле с аутентификацией.
В интернете готового варианта  не нашёл .

 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Я бы не горячился, подавая питание на Vin модуля от ардуины. Сколько "пусковой" ток SRD знаете? Догадываетесь, для чего там 817 оптопары на каждую катушку стоят?

georgiy123
Offline
Зарегистрирован: 26.03.2021

Не догадываюсь ((
Я буду использовать 1 и 2 контакт реле .
То есть , если нет сигнала  , оно будет замкнуто ,если есть , то разомкнуто .

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

georgiy123 пишет:

Не догадываюсь ((
Я буду использовать 1 и 2 контакт реле .
То есть , если нет сигнала  , оно будет замкнуто ,если есть , то разомкнуто .

Пятивольтовое srd реле ОДНО потребляет на катушке 90 мА. Это 0,45W в одни руки. А вы там сколькими управлять собрались? Нужно ставить отдельное питание +5v на Vin не меньше 1А, если не хотите проблем c контроллером

georgiy123
Offline
Зарегистрирован: 26.03.2021

Rumata пишет:

georgiy123 пишет:

Не догадываюсь ((
Я буду использовать 1 и 2 контакт реле .
То есть , если нет сигнала  , оно будет замкнуто ,если есть , то разомкнуто .

Пятивольтовое srd реле ОДНО потребляет на катушке 90 мА. Это 0,45W в одни руки. А вы там сколькими управлять собрались? Нужно ставить отдельное питание +5v на Vin не меньше 1А, если не хотите проблем c контроллером

Хорошо , спасибо за совет, буду знать  

Но думаю это не решит проблему моего проекта ((

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

georgiy123 пишет:

1. Что хочется получить.
Хочется чтоб работало . 

Так оно и работает.

Правда, возможно, работает не так, как Вам бы хотелось, но ведь Вы не пишете, как оно должно работать, поэтому помочь Вам невозможно.

Это по поводу скетча.

Теперь по поводу схемы: Вы сами можете разобрать надписи? Лично я - не могу. Единственное, Вы всерьез пытаетесь запитать реле от Ардуины? Возьмите отдельный источник питания не менее 2А.

georgiy123
Offline
Зарегистрирован: 26.03.2021

andriano пишет:

georgiy123 пишет:

1. Что хочется получить.
Хочется чтоб работало . 

Так оно и работает.

Правда, возможно, работает не так, как Вам бы хотелось, но ведь Вы не пишете, как оно должно работать, поэтому помочь Вам невозможно.

andriano пишет:

georgiy123 пишет:

Я же написал что я хочу получить в итоге .
Я хочу собрать умную розетку на 8 реле , чтобы управлять ей через веб интерфейс.
Важно чтоб была аутентификация.
В интернете готового варианта не нашёл .

Я не могу понять в чём проблема . Почему всё работает с 6 кнопками , но не работает с 8.

Теперь по поводу схемы: Вы сами можете разобрать надписи? Лично я - не могу. Единственное, Вы всерьез пытаетесь запитать реле от Ардуины? Возьмите отдельный источник питания не менее 2А. 

 

Ардуино не сможет запитать одно реле на пару секунд  ?
Я не собираюсь всё время держать питание на реле , разумеется подавать сразу же на все реле напряжение ...  
Мне это нужно для перезагрузки , как я писал вышел , я буду разрывать подачу электричеством подачей сигнала HIGN 
Если на данный момент в коду написано это не правильно , позже я поправлю это , главное сейчас мне разобраться с 7 и 8 кнопкой .

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Все строки в client.println() заверни в F(), как тут, напримерclient.println(F("HTTP/1.0 200 OK")); 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

ТС - уберите реле и замените их переменными. Если не пойдёт - тогда реально - проблема.

sadman41
Offline
Зарегистрирован: 19.10.2016

В скетче и без подключения реле проблема наблюдается. Решение - выше.

georgiy123
Offline
Зарегистрирован: 26.03.2021

mykaida пишет:

ТС - уберите реле и замените их переменными. Если не пойдёт - тогда реально - проблема.

 

Можете привести пример , я не понял вас ((

georgiy123
Offline
Зарегистрирован: 26.03.2021

Всем спасибо !
Помог ответ пользователя sadman41 

Всем 
Код без библиотеки base64 (он использует меньше памяти , пароль и логин нужно конвертировать отдельно )

 

/*
  sign in (authentication) to the Web server Arduino
  (с) http://it4it.club
*/
#include <SPI.h>
#include <Ethernet.h> // Used for Ethernet


int led2 = 2;
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;
int led9 = 9;

/*
  Настройки сети
*/
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
                        

EthernetServer server(80);
/*
  Переменные для авторизации через web
*/
String readString; // Буфер для данных от пользователя Web сервера
/*
  SETUP
*/
void setup() {

  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  pinMode(led9, OUTPUT);
  Serial.begin(9600);
  // Поднимаем сеть  
  Ethernet.begin(mac);
  server.begin();
  Serial.println(Ethernet.localIP());
}
/*
  LOOP
*/
void loop() {
  EthernetClient client = server.available();
  if (client) {  
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        readString += c;
        if (c == '\n' && currentLineIsBlank) {
          if (readString.lastIndexOf(F("Authorization: Basic bG9naW46cGFzc3dvcmQ="))>-1) {
            if (readString.lastIndexOf(F("GET /favicon.ico"))>-1) {
              client.println(F("HTTP/1.0 404 Not Found"));
            }
            else {
              client.println(F("HTTP/1.0 200 OK"));
              client.println(F("Content-Type: text/html"));
              client.println(F("Pragma: no-cache\r\nRefresh: 10\r\n"));
              client.println(F("<html><head><meta charset=UTF-8\"><title>Arduino - iT4iT.CLUB</title>"));
              client.println(F("<style>body,table,tr,td{font-style:normal;font-family:verdana;font-size:11px;}</style></head><body>"));
            //  client.print(F("Arduino on <a href=\"https://it4it.club\">iT4iT.CLUB</a>"));
              client.println(F("</body></html>"));
              client.println(F("<br />"));     
              client.println(F("<br />")); 

//////////////////////кнопка1 
             // client.println(F("<br />"));     
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button1on\"\">Turn On LED1</a>"));
              client.println(F("<a href=\"/?button1off\"\">Turn Off LED1</a><br />"));   
           //SPACES
                   
               


              if (readString.indexOf("?button1on") >0){
               digitalWrite(led2, HIGH);
              }
              if (readString.indexOf("?button1off") >0){
              digitalWrite(led2, LOW);
              }

//////////////////////////////////////////////////////////////////
//кнопка2


                   
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button2on\"\">Turn On LED2</a>"));
              client.println(F("<a href=\"/?button2off\"\">Turn Off LED2</a><br />"));   
           //SPACES
                   
              


              if (readString.indexOf("?button2on") >0){
               digitalWrite(led3, HIGH);
              }
              if (readString.indexOf("?button2off") >0){
              digitalWrite(led3, LOW);
              }


///////////////////////////////////////////////////////////////
//кнопка3

                   
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button3on\"\">Turn On LED3</a>"));
              client.println(F("<a href=\"/?button3off\"\">Turn Off LED3</a><br />"));   
           //SPACES
                   
               

              if (readString.indexOf("?button3on") >0){
               digitalWrite(led4, HIGH);
              }
              if (readString.indexOf("?button3off") >0){
              digitalWrite(led4, LOW);
              }
//////////////////////////////////////////////////////////////////////
//кнопка4




                   
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button4on\"\">Turn On LED4</a>"));
              client.println(F("<a href=\"/?button4off\"\">Turn Off LED4</a><br />"));   
           //SPACES
                   
               

              if (readString.indexOf("?button4on") >0){
               digitalWrite(led5, HIGH);
              }
              if (readString.indexOf("?button4off") >0){
              digitalWrite(led5, LOW);
              }

///////////////////////////////////////////////////////////////
//кноака5



                   
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button5on\"\">Turn On LED5</a>"));
              client.println(F("<a href=\"/?button5off\"\">Turn Off LED5</a><br />"));   
           //SPACES
                   
               

              if (readString.indexOf("?button5on") >0){
               digitalWrite(led6, HIGH);
              }
              if (readString.indexOf("?button5off") >0){
              digitalWrite(led6, LOW);
              }

///////////////////////////////////////////////////////
//кнопка6




                   
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button6on\"\">Turn On LED6</a>"));
              client.println(F("<a href=\"/?button6off\"\">Turn Off LED6</a><br />"));   
           //SPACES
            
               



              if (readString.indexOf("?button6on") >0){
               digitalWrite(led7, HIGH);
              }
              if (readString.indexOf("?button6off") >0){
              digitalWrite(led7, LOW);
              }


///////////////////////////////////////////////////////

//кнопка7




                   
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button7on\"\">Turn On LED7</a>"));
              client.println(F("<a href=\"/?button7off\"\">Turn Off LED7</a><br />"));   
           //SPACES
                
               



              if (readString.indexOf("?button7on") >0){
               digitalWrite(led8, HIGH);
              }
              if (readString.indexOf("?button7off") >0){
              digitalWrite(led8, LOW);
              }//кнопка6



//кнопка8
                   
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button8on\"\">Turn On LED8</a>"));
              client.println(F("<a href=\"/?button8off\"\">Turn Off LED8</a><br />"));   
           
             



              if (readString.indexOf("?button8on") >0){
               digitalWrite(led9, HIGH);
              }
              if (readString.indexOf("?button8off") >0){
              digitalWrite(led9, LOW);
              }

              
              
            }
          }
          else {
            client.println(F("HTTP/1.0 401 Unauthorized"));
           // client.println(F("WWW-Authenticate: Basic realm=\"Arduino - iT4iT.CLUB\""));
          }
          break;
        }

        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      } 
    }
    delay(10);

    readString = "";
    client.stop();
  }
}

 

Код с библиотекой base64 

 

/*
  sign in (authentication) to the Web server Arduino
  (с) http://it4it.club
*/
#include <SPI.h>
#include <Ethernet.h> // Used for Ethernet
#include <Base64.h>


int led2 = 2;
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;
int led9 = 9;
/*
  Настройки сети
*/
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
//IPAddress ip(10, 10, 10, 11);                        

EthernetServer server(80);
/*
  Переменные для авторизации через web
*/
String readString;                // Буфер для данных от пользователя Web сервера
String auth_hash;                 // Тут храним полноценную строку авторизации, которую ожидаем от браузера в таком виде "Authorization: Basic bG9naW46cGFzc3dvcmQ="
char login[] = "login";           // Логин по дефолту. В дальнейшем необходимо измененные данные авторизации в Web морде хранить в EPROM
char password[] = "password";     // Пароль по умолчанию. -/-
/*
  SETUP
*/
void setup() {

  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  pinMode(led9, OUTPUT);
  Serial.begin(9600);
  // Подготавливаем строку авторизации
  auth_hash = auth_update(login, password);
  // Поднимаем сеть  
  Ethernet.begin(mac);
  server.begin();
  Serial.println(Ethernet.localIP());
}
/*
  LOOP
*/
void loop() {
  EthernetClient client = server.available();
  if (client) {  
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        readString += c;
        if (c == '\n' && currentLineIsBlank) {
          if (readString.lastIndexOf(auth_hash)>-1) {
            if (readString.lastIndexOf("GET /favicon.ico")>-1) {
              client.println(F("HTTP/1.0 404 Not Found"));
            }
            else {
              client.println(F("HTTP/1.0 200 OK"));
              client.println(F("Content-Type: text/html"));
              client.println(F("Pragma: no-cache\r\nRefresh: 10\r\n"));
              client.println(F("<html><head><meta charset=UTF-8\"><title>Arduino - iT4iT.CLUB</title>"));
              client.println(F("<style>body,table,tr,td{font-style:normal;font-family:verdana;font-size:11px;}body{background-color:#FFEBD5;}</style></head><body>"));
              client.print(F("Arduino on <a href=\"https://it4it.club\">iT4iT.CLUB</a>"));
              client.println(F("</body></html>"));

              //////////////////////кнопка1 
                 
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button1on\"\">Turn On LED1</a>"));
              client.println(F("<a href=\"/?button1off\"\">Turn Off LED1</a><br />"));   
           //SPACES
                   
               


              if (readString.indexOf("?button1on") >0){
               digitalWrite(led2, HIGH);
              }
              if (readString.indexOf("?button1off") >0){
              digitalWrite(led2, LOW);
              }

//////////////////////////////////////////////////////////////////
//кнопка2


                   
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button2on\"\">Turn On LED2</a>"));
              client.println(F("<a href=\"/?button2off\"\">Turn Off LED2</a><br />"));   
           //SPACES
                   
              


              if (readString.indexOf("?button2on") >0){
               digitalWrite(led3, HIGH);
              }
              if (readString.indexOf("?button2off") >0){
              digitalWrite(led3, LOW);
              }


///////////////////////////////////////////////////////////////
//кнопка3

                   
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button3on\"\">Turn On LED3</a>"));
              client.println(F("<a href=\"/?button3off\"\">Turn Off LED3</a><br />"));   
           //SPACES
                   
               

              if (readString.indexOf("?button3on") >0){
               digitalWrite(led4, HIGH);
              }
              if (readString.indexOf("?button3off") >0){
              digitalWrite(led4, LOW);
              }
//////////////////////////////////////////////////////////////////////
//кнопка4




                   
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button4on\"\">Turn On LED4</a>"));
              client.println(F("<a href=\"/?button4off\"\">Turn Off LED4</a><br />"));   
           //SPACES
                   
               

              if (readString.indexOf("?button4on") >0){
               digitalWrite(led5, HIGH);
              }
              if (readString.indexOf("?button4off") >0){
              digitalWrite(led5, LOW);
              }

///////////////////////////////////////////////////////////////
//кноака5



                   
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button5on\"\">Turn On LED5</a>"));
              client.println(F("<a href=\"/?button5off\"\">Turn Off LED5</a><br />"));   
           //SPACES
                   
               

              if (readString.indexOf("?button5on") >0){
               digitalWrite(led6, HIGH);
              }
              if (readString.indexOf("?button5off") >0){
              digitalWrite(led6, LOW);
              }

///////////////////////////////////////////////////////
//кнопка6




                   
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button6on\"\">Turn On LED6</a>"));
              client.println(F("<a href=\"/?button6off\"\">Turn Off LED6</a><br />"));   
           //SPACES
            
               



              if (readString.indexOf("?button6on") >0){
               digitalWrite(led7, HIGH);
              }
              if (readString.indexOf("?button6off") >0){
              digitalWrite(led7, LOW);
              }


///////////////////////////////////////////////////////

//кнопка7




                   
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button7on\"\">Turn On LED7</a>"));
              client.println(F("<a href=\"/?button7off\"\">Turn Off LED7</a><br />"));   
           //SPACES
                
               



              if (readString.indexOf("?button7on") >0){
               digitalWrite(led8, HIGH);
              }
              if (readString.indexOf("?button7off") >0){
              digitalWrite(led8, LOW);
              }//кнопка6



//кнопка8
                   
              client.println(F("<br />")); 
              client.println(F("<a href=\"/?button8on\"\">Turn On LED8</a>"));
              client.println(F("<a href=\"/?button8off\"\">Turn Off LED8</a><br />"));   
           
             



              if (readString.indexOf("?button8on") >0){
               digitalWrite(led9, HIGH);
              }
              if (readString.indexOf("?button8off") >0){
              digitalWrite(led9, LOW);
              }

              

              
            }
          }
          else {
            client.println(F("HTTP/1.0 401 Unauthorized"));
            client.println(F("WWW-Authenticate: Basic realm=\"Hello! \""));
          }
          break;
        }

        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      } 
    }
    delay(10);

    readString = "";
    client.stop();
  }
}
/*
  Функция подготавливает строку авторизации с хэшем учетных данных, для сравнения её с данными в HEADER браузера которые мы получим
*/
String auth_update(char login[], char password[]) {
  // Строка для будущего хэша
  String hash = strcat(strcat(login, ":"),password);
  int buf_size = hash.length()+1;
  char buf_char[buf_size];
  // Переводим строку в char для дальнейшей обработки base64
  hash.toCharArray(buf_char, buf_size);
  char encoded[base64_enc_len(buf_size-1)];
  // Получаем хэш для авторизации
  base64_encode(encoded, buf_char, buf_size-1);
  // Формируем полную строку поиска "Authorization: Basic <BASE64-HASH>" чтобы не могли подсунуть хэш в GET или POST
  return "Authorization: Basic " + String(encoded);
}

 

Еще раз всем большое спасибо , всё заработало ! 
 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

ТС , вам дали правильный совет, но вот интересно, вы поняли что в результате сделали ?

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Отвяжите питание релейного модуля от стабилизатора контроллера, а то следующая ваша тема будет в разделе "вопросы по железу" 

georgiy123
Offline
Зарегистрирован: 26.03.2021

brokly пишет:

ТС , вам дали правильный совет, но вот интересно, вы поняли что в результате сделали ?

Я все строки в client.println() завернул в F()        client.println(F("HTTP/1.0 200 OK")); 
В результате всё заработало как хотелось .... 
 

georgiy123
Offline
Зарегистрирован: 26.03.2021

Rumata пишет:

Отвяжите питание релейного модуля от стабилизатора контроллера, а то следующая ваша тема будет в разделе "вопросы по железу" 

Хорошо , сделаю .