Ссылка посылающая 0 или 1 в eeprom

ergeykl
Offline
Зарегистрирован: 20.04.2017

Всех приветствую!

Есть ардуинка и интернет шилд, уже наклепал скетч который позволяет создавать веб "сервер-страничку"

Всё работает, всё замечательно, но появилась необходимость вносить в eeprom всего лишь два значения, это ноль или единица. Нужно сделать кнопку или хотябы ссылку которая записывала бы в память контроллера значение. Как это сделать ума не приложу.

Помогите пожалуйста.

Есть 

int Regim;

Regim= EEPROM.read(8);                   // Чтение значения в ячейке 5

а как дальше сделать форму отправки значения не понимаю

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
ergeykl
Offline
Зарегистрирован: 20.04.2017

qwone благодарю за информацию.

Почитал, что то собрал, но не работает. Не могу понять в чем ошибка. Выдают ошибку при нажатии на ссылку "Not found: /minus1"

Перепилил код на esp8266 (12e) Работает всё, кроме главных задумок) Может код глянете?


#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>



#include <EEPROM.h>                 // Библиотека памяти

#include <OneWire.h>
#include <DallasTemperature.h>



OneWire oneWire(5); // вход датчиков 18b20
DallasTemperature ds(&oneWire);



DeviceAddress T1 = {0x28, 0xFF, 0x4E, 0x70, 0x84, 0x16, 0x05, 0x2E};   // Адрес датчика температуры Т1 (ПИН 9) (2 полоски) (28 FF 4E 70 84 16 5 2E)
DeviceAddress T2 = {0x28, 0xFF, 0x06, 0x3D, 0x82, 0x16, 0x05, 0x55};   // Адрес датчика температуры Т2 (ПИН 9) (1 полоска) (28 FF 6 3D 82 16 5 55)
DeviceAddress T7 = {0x28, 0xFF, 0x8A, 0x99, 0x84, 0x16, 0x05, 0xC9};   // Адрес датчика температуры Тбак (ПИН 9) (3 полоски) (28 FF 8A 99 84 16 5 C9)
DeviceAddress T13 = {0x28, 0xFF, 0xDA, 0x04, 0xB5, 0x16, 0x03, 0x88};   // Адрес датчика температуры Т13 (ПИН 9) (4 полоски) (28 FF DA 4 B5 16 3 88)
DeviceAddress TNV = {0x28, 0xFF, 0x2A, 0x07, 0xC1, 0x16, 0x04, 0x54};   // Адрес датчика температуры ЗАРЕЗЕРВИРОВАННЫЙ (ПИН 9) (5 полосок) (28 FF 2A 7 C1 16 4 54)



MDNSResponder mdns;

// Wi-Fi
const char* ssid = "ergeykl";
const char* password = "seredinskoe";

byte arduino_mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
IPAddress ip(192,168,0,200);
IPAddress gateway(192,168,0,1);
IPAddress subnet(255,255,255,0);

ESP8266WebServer server(80);



int  PinSSR1 = 4;               // Реле SSR 1 (Электрокотел ГВС) на пине D2
int  PinSSR2 = 0;               // Реле 2 (Клапан ГВС 7) на пине D3
int  PinSSR3 = 2;               // Реле 3 (Клапан ГВС 13) на пине D4
int  PinSSR4 = 14;               // Реле 4 (Насос ЦО обр.) на пине D5
int  PinSSR5 = 12;               // Реле 5 (Котел ЦО) на пине D6
int  PinSSR6 = 13;               // Реле 6 (Насос ГВС) на пине D7
int  PinSSR7 = 15;              // Реле 7 (Клапан ГВС 7') на пине D8



byte TargetTemp1; // переменная для значения сработки во флеше
byte TargetTemp2; // переменная для значения сработки во флеше
byte TargetTemp3; // переменная для значения сработки во флеше



byte Otoplenie;                        // Работа Отопления (0 - выкл; 1 - вкл)
byte GVS;                              // Работа ГВС (0 - выкл; 1 - вкл)
byte Mode;                             // Режим поддержания темп-ры Отопления (0 - выкл; 1 - вкл)




void setup(void){

  pinMode(PinSSR1, OUTPUT);               //Назначение пина на выход. Реле SSR 1 (Электрокотел ГВС) на пине D2
  digitalWrite(PinSSR1, HIGH);            //Изначально Реле 1 ВЫКЛ
  pinMode(PinSSR2, OUTPUT);               //Назначение пина на выход. Реле 2 (Клапан ГВС 7) на пине D3     
  digitalWrite(PinSSR2, HIGH);            //Изначально Реле 2 ВЫКЛ
  pinMode(PinSSR3, OUTPUT);               //Назначение пина на выход. Реле 3 (Клапан ГВС 13) на пине D4
  digitalWrite(PinSSR3, HIGH);            //Изначально Реле 3 ВЫКЛ 
  pinMode(PinSSR4, OUTPUT);               //Назначение пина на выход. Реле 4 (Насос ЦО обр.) на пине D5
  digitalWrite(PinSSR4, HIGH);            //Изначально Реле 4 ВЫКЛ
  pinMode(PinSSR5, OUTPUT);               //Назначение пина на выход. Реле 5 (Котел ЦО) на пине D6
  digitalWrite(PinSSR5, HIGH);            //Изначально Реле 5 ВЫКЛ 
  pinMode(PinSSR6, OUTPUT);               //Назначение пина на выход. Реле 6 (Насос ГВС) на пине D7
  digitalWrite(PinSSR6, HIGH);            //Изначально Реле 6 ВЫКЛ 
  pinMode(PinSSR7, OUTPUT);               //Назначение пина на выход. Реле 7 (Клапан ГВС 7') на пине D8
  digitalWrite(PinSSR7, HIGH);            //Изначально Реле 7 ВЫКЛ 



  TargetTemp1 = EEPROM.read(0);           // Чтение "предельной" темп-ры в ячейке 1 (Тн.в.)
  TargetTemp2 = EEPROM.read(2);           // Чтение "предельной" темп-ры в ячейке 2 (ЦО Т2)
  TargetTemp3 = EEPROM.read(4);           // Чтение "предельной" темп-ры в ячейке 3 (ГВС Т13)

  Otoplenie = EEPROM.read(6);             // Чтение работы Отопления в ячейке 4
  GVS = EEPROM.read(8);                   // Чтение работы ГВС в ячейке 5
  Mode = EEPROM.read(10);                 // Чтение режима поддержания темп-ры Отопления в ячейке 6









  ds.begin();

 

  delay(100);
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  WiFi.config(ip, gateway, subnet);
  
 
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
   Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  
  if (mdns.begin("esp8266", WiFi.localIP())) {
    Serial.println("MDNS responder started");
  }


  server.on("/", [](){
    server.send(200, "text/html", webPage());
  });


  server.begin();
  Serial.println("HTTP server started");
}





 
void loop(void){
  server.handleClient();

ds.requestTemperatures(); // считываем температуру с датчиков

           
          
     if (ds.getTempC(TNV) < 0)        //Условие для включения обогрева дома
          {
       digitalWrite(PinSSR1, LOW);        // Реле 1 вкл (Электрокотел ГВС) на пине 3   
       digitalWrite(PinSSR2, LOW);        // Реле 2 вкл (Клапан ГВС 7) на пине 4   
       digitalWrite(PinSSR3, LOW);        // Реле 3 вкл (Клапан ГВС 13) на пине 5   
       digitalWrite(PinSSR4, LOW);        // Реле 4 вкл (Насос ЦО обр.) на пине 6   
          }  
      else if (ds.getTempC(TNV) > 0)  //Условие для выключения обогрева дома
          {
       digitalWrite(PinSSR1, HIGH);       // Реле 1 выкл (Электрокотел ГВС) на пине 3         
          }
















}




String webPage()
{
  String web; 







    if (web == "plus1")
           {
           TargetTemp1++;                    // Уваличить значение
           if ( TargetTemp1 > 1)             // максимальное значение
           {
           TargetTemp1=1;                    // значение если было превышения максимального
           }
           EEPROM.write(0, TargetTemp1);     // Запись нового значения в Флеш         
           }
           
    if (web == "minus1")
           {
           TargetTemp1--;                    // Уменшить значение
           if ( TargetTemp1 < 0)             // минимальное значение
           {
           TargetTemp1=0;                    // значение, если было занижения значения ниже минимального
           }
           EEPROM.write(0, TargetTemp1);     // Запись нового значения в Флеш
           }

                         



  web += "<center><a href=\"/minus1\">Уменьшить</a>&nbsp;&nbsp;<a href=\"/plus1\">Увеличить</a></center><br>";



  web += "<center><table border=1 cellpadding=5 cellspacing=1 style=width: 800px; border-collapse: collapse border: 1px solid black align: center>";
  web += "<tbody>";
  web += "<tr style=background-color: silver>";
  web += "<tr>";
  web += "<td><center>";
  web += (TargetTemp1);           // Вывод инф из ячейки с "пределом" темп-ры (Тн.в.)
  web += "&deg;C</center></td>";
  web += "</tr>";  
  web += "</tbody>";
  web += "</table>";
  web += "</center>";




  return(web);
}