super cool buttons
Код: Выбрать все
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <EEPROM.h>
#define LEVO1 D8 ////
#define LEVO2 D7 ////
#define PRAVO1 D6 ///
#define PRAVO2 D5 ///
#define DETECTOR D0 ///
//#define tonePin D2 //d5
int deluha=300;
////ultra datch
//int echoPin = D2;
//int trigPin = D1;
/////
ESP8266WebServer server(80);
const char* ssid2="TANK8266"; //название точки доступа
const char* password2=""; // пароль не будем писать
const char* ssid="Gansta-Paradise.com"; // здесь пишем название домашней точки доступа
const char* password="123412345"; // и пароль
String webSite,javaScript,XML;
unsigned long wait000=0UL,wait001=1000UL;
int Sila, SilaLow = -43; // Контроль силы сигнала WiFi
int Batareya, BatLow = 400; //Контроль напряжения батареи
float Povorot = 0.8, Trimer; // Переменные для значений поворота и тримера двигателя
String Bat, SilaW;
////brut shlak;
int stoppriem=1;
int muzi ;
int pir = 0;
int alarma = 0;
int alarmaoff =-1;
int vlazh = 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
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 sending ="nothing no send";
String button ="";
String gasa="zagasa";
int shlakoffpriem=1;
int stopsigi =1;
///////////sensor vlazhnosti
float temperature;
float humundity;
int schetvl=0;
///////////////
void codanz(){
codan;
}
void Batare(){
/// Batareya = 333666; // Меряем напряжение батареи
}
void SilaWifi(){
Sila = WiFi.RSSI(); // Меряем силу сигнала WiFi
if (Sila < SilaLow){
SilaW = " Сигнал слабый";
}
else{
SilaW = "";
}
}
void buildJavascript(){
javaScript="<SCRIPT>\n";
javaScript+="var voh=1;var voh1=1;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('Sila2')[0].firstChild.nodeValue;\n";// Сила сигнала WiFi
javaScript+=" document.getElementById('progbar').value=-xmlmsg;\n"; // Сила сигнала WiFi
javaScript+=" xmlmsg=xmlDoc.getElementsByTagName('Batareya')[0].firstChild.nodeValue;\n";// Напряжение батареи
javaScript+=" document.getElementById('Batareya').innerHTML=xmlmsg;\n"; // Напряжение батареи
javaScript+=" document.getElementById('vnizon').onclick = function (nizon) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZON',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vnizoff').onclick = function (nizoff) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZOFF',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vverhon').onclick = function (vverhon) {voh++;if(voh>1){document.getElementById('vverhon').style.backgroundColor='red';xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VONN',true);xmlhttp.send();};if(voh>2){document.getElementById('vverhon').style.backgroundColor='green';voh=1;xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZOFF',true);xmlhttp.send();};};\n" ;
javaScript+=" document.getElementById('vverhoff').onclick = function (vverhoff) {voh1++;if(voh1>1){document.getElementById('vverhoff').style.backgroundColor='red'; xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VOFF',true);xmlhttp.send();};if(voh1>2){document.getElementById('vverhoff').style.backgroundColor='green';voh1=1;xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZOFF',true);xmlhttp.send();};};\n" ;
javaScript+=" document.getElementById('vlevo').onclick = function (vlevo) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VLEVO',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('bumer').onclick = function (bumer) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/BUMER',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('kasta').onclick = function (kasta) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/KASTA',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('dasboot').onclick = function (dasboot) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/DASBOOT',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('sirena').onclick = function (sirena) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/SIRENA',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('ala').onclick = function (ala) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/AlarmOff',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('bethoven').onclick = function (bethoven) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/BETHOVEN',true);xmlhttp.send();};" ;
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('deluha')[0].firstChild.nodeValue;\n";// deluha
javaScript+=" document.getElementById('valBox').innerHTML=xmlmsg;\n"; // deluha
javaScript+=" xmlmsg=xmlDoc.getElementsByTagName('deluha')[0].firstChild.nodeValue;\n";// deluha
javaScript+=" document.getElementById('slidr').value=xmlmsg;\n"; // deluha
/////javaScript+=" document.getElementById('button').onclick = function (button) { alert('Сюрприз!');" ;
//// 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 slid(newVal){\n";
javaScript+=" document.getElementById('valBox').innerHTML=newVal;\n";
javaScript+=" xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/SLID?val='+newVal,true);xmlhttp.send();";
/// 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+="<link rel='shortcut icon' type='image/x-icon' href='http://gansta-paradise.com/favicon.ico'>";
webSite+="<style>input#slidr { width: 100%;} progress#temperaturepb {background: green;} progress::-webkit-progress-bar { background: red; } #Paket{color:green}button{border: solid;border-radius: 300px;border-color: green;font-size: 15px;font-family: -webkit-pictograph;background: #d5e0d3;width: 150px;}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;}progress#progbar { background: #551be2;}</style>";
webSite+=javaScript;
webSite+="<BODY onload='process()'>\n";
webSite+="ТАНК\n<br>";
webSite+="Время работы = <A ID='runtime'></A>\n<br>";
webSite+="Сила сигнала <A ID='Sila'></A>\n<br>"; // Сила сигнала WiFi
webSite+="ДАННЫЕ ТАНКА<br> <A ID='Batareya'></A>\n<br>"; // Напряжение батареи
webSite+="Алярма:<A ID='Paket'></A>\n<br>"; // Напряжение батареи
webSite+="Напруга:<A ID='Paket1'></A>\n<br>"; // Напряжение батареи
webSite+="<div id='sending'>\n";
webSite+="</div>\n";
webSite+="<p>Сила Сигнала</p>";
webSite+="<div class='progress'>";
webSite+=" <progress id='progbar' max='100' value='0'></progress>";
webSite+=" <div class='progress-value'></div>";
webSite+=" <div class='progress-bg'><div class='progress-bar'></div></div>";
webSite+="</div>";
webSite+="<br><span id='valBox'></span><input width='100%' type='range' min='0' max='5000' step='1' id='slidr' oninput='slid(this.value)' onchange='slid(this.value)'>\n"; // это пример слайдера
webSite+="<br><br><br><table id='cepka' align='center'><tr>";
webSite+="<td><button id='vverhon' onclick='doFunction();'>VPERED";
webSite+="</button></td><td></td>";
webSite+="<td><button id='vverhoff' onclick='doFunction();'>NAZAD</button></td></tr><br><br><tr><td></td><td><h4 align='center'>✵✵✵РУЛЬ✵✵✵</h4></td></tr>";
webSite+="<tr><td><button id='vlevo' onclick='doFunction();'>☜ VLEVO</button>";
webSite+="</td><td></td><td><button id='vnizon' onclick='doFunction();'>VPRAVO ☞</button></td></tr>";
webSite+="<tr></tr><tr><td></td><td><button id='vnizoff' onclick='doFunction();'>STOP";
webSite+="</button></td></tr></table><br>";
webSite+="<table id='bumerang'><tr>";
webSite+="<td><button id='bumer' onclick='doFunction();'>Bumer";
webSite+="</button></td>";
webSite+="<td><button id='dasboot' onclick='doFunction();'>Dasboot</button></td></tr>";
webSite+="<tr><td><button id='kasta' onclick='doFunction();'>Kasta";
webSite+="</button></td>";
webSite+="<td><button id='sirena' onclick='doFunction();'>Sirena";
webSite+="</button></td></tr></table><br>";
webSite+="<table id='ala'><tr>";
webSite+="<td><button id='ala' onclick='doFunction();'>Alarm-on-off";
webSite+="</button></td>";
webSite+="<td><button id='bethoven' onclick='doFunction();'>Bethoven</button></td></tr>";
webSite+="</td></tr></table><br>";
webSite+="<p>ФУНКЦИИ ЗАПАСНЫЕ</p><br> <a href=\"ShlakOn\"><button>Reboot</button></a> <a href=\"TEMPERATURE\"><button>DATCHIK VLAZHNOSTY</button></a><br>";
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
XML+="<Sila2>"; // Сила сигнала WiFi
XML+=String(Sila);// Сила сигнала WiFi
XML+="</Sila2>"; // Сила сигнала 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+="<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+="<deluha>";
XML+=String(deluha);
XML+="</deluha>";
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();
ESP.wdtEnable(WDTO_8S);
EEPROM.begin(3512);
Serial.begin(115200);
// call sensor.begin() to initialize the library
//////////sensor
pinMode(LEVO1, OUTPUT);
pinMode(LEVO2, OUTPUT);
pinMode(PRAVO1, OUTPUT);
pinMode(PRAVO2, OUTPUT);
// pinMode(tonePin, OUTPUT);
pinMode(DETECTOR,INPUT);
digitalWrite(DETECTOR,LOW);
// digitalWrite(tonePin,LOW);
// pinMode(trigPin, OUTPUT);
// pinMode(echoPin, INPUT);
WiFi.softAP(ssid2, password2); // Создаём точку доступа
WiFi.begin(ssid,password); //Это вариант для подключения к существующей точке
while(WiFi.status()!=WL_CONNECTED){Serial.print(".");delay(500);}
WiFi.mode(WIFI_STA);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Establishing connection to WiFi..");
}
Serial.println("\n\nBOOTING ESP8266 ...");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("Station IP address: ");
Serial.println(WiFi.localIP()); // Вывод в монитор порта присвоенный IP sensor.begin();
server.on("/",handleWebsite);
server.on("/xml",handleXML);
server.on("/setESPval",handleESPval);
server.on("/TEMPERATURE", [](){
server.send(200, "text/html", webSite);
Serial.println("GET TEMPERATURE ...");
sending="GET TEMPERATURE";
vlazh=1;
});
server.on("/SLID", [](){
server.send(200, "text/html", webSite);
String message = "";
message +=server.arg(0);
Serial.println(message);
const int n = 10;
char *z = new char[n];
message.toCharArray(z,n);
deluha=atoi(z);
Serial.println(deluha);
});
server.on("/NIZON", [](){
server.send(200, "text/html", webSite);
Serial.println("PRAVO...");
digitalWrite (LEVO1, HIGH);
digitalWrite (LEVO2, LOW);
///digitalWrite (PRAVO1,HIGH);
/// digitalWrite (PRAVO2,LOW);
sending="PRAVO";
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/VLEVO", [](){
server.send(200, "text/html", webSite);
Serial.println("LEVO...");
//// digitalWrite (LEVO1, HIGH);
///digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,HIGH);
digitalWrite (PRAVO2,LOW);
sending="LEVO";
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/NIZOFF", [](){
server.send(200, "text/html", webSite);
Serial.println("STOP ...");
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
sending="STOP";
/////server.send(200, "text/html", webSite);
});
server.on("/VONN", [](){
server.send(200, "text/html", webSite);
Serial.println("VPERED...");
digitalWrite (LEVO1,HIGH);
digitalWrite (LEVO2,LOW);
digitalWrite (PRAVO1,HIGH);
digitalWrite (PRAVO2,LOW);
sending="VPERED";
///////////// server.send(200, "text/html", webSite);
//
// delay(deluha);
//
// digitalWrite (LEVO1, LOW);
//digitalWrite (LEVO2, LOW);
//digitalWrite (PRAVO1,LOW);
// digitalWrite (PRAVO2,LOW);
});
server.on("/VOFF", [](){
server.send(200, "text/html", webSite);
Serial.println(" NAZAD...");
digitalWrite (LEVO1,LOW);
digitalWrite (LEVO2,HIGH);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,HIGH);
sending="NAZAD";
//////////////// server.send(200, "text/html", webSite);
// delay(deluha);
//
// digitalWrite (LEVO1, LOW);
//digitalWrite (LEVO2, LOW);
//digitalWrite (PRAVO1,LOW);
// digitalWrite (PRAVO2,LOW);
});
server.on("/BUMER", [](){
sending="BUUMER";
server.send(200, "text/html", webSite);
Serial.println("bumer");
// bumer();
});
server.on("/DASBOOT", [](){
sending="DASBOOT";
server.send(200, "text/html", webSite);
Serial.println(" DASBOOT");
// dasboot();
});
///////////////////////////////////////////////////////////////////////////////////new
/////////////sigi/////////////////////////////
///////server.on("/GETS", HTTP_GET, []{
server.on("/AlarmOff", [](){
server.send(200, "text/html", webSite);
Serial.println("priem on");
if(alarmaoff==0){
sending ="ALARMA-OFF";}
else{
sending ="ALARMA-ONN";
}
alarmaoff = ~alarmaoff;
Serial.println(alarmaoff);
});
server.on("/BETHOVEN", [](){
server.send(200, "text/html", webSite);
Serial.println("DETHOV");
sending ="BETHOVEN-ONN";
//bet();
});
server.on("/KASTA", [](){
sending="KASTA";
server.send(200, "text/html", webSite);
// muz();
});
//////////////////////////////
///////////brutshlak
server.on("/ShlakOn", [](){
sending ="Shlak-Brut-Long-Wait";
Serial.println(" Send Reboot");
server.send(200, "text/html", webSite);
ESP.restart();
///ESP.reset() ;
/////BrutSh2
});
server.on("/BrutSh2", [](){
sending ="Shlak-Brut-Long-Wait";
Serial.println(" Send Shlak code");
server.send(200, "text/html", webSite);
/////BrutSh2
});
//////////////////
//////////ShlakSendOff
server.on("/SIRENA", [](){
server.send(200, "text/html", webSite);
// siren();
});
//////////////////
server.begin();
}
void loop() {
ESP.wdtFeed();
server.handleClient();
// digitalWrite(tonePin,LOW);
if(millis()>wait000){
buildXML();
wait000=millis()+1000UL;
// digitalWrite(tonePin,LOW);
}
if(millis()>wait001){
wait001=millis()+300; //Обновляем значения раз в 300 милисекунд
// digitalWrite(tonePin,LOW);
}
codan2 ="NO DETECT";
}
old code
Код: Выбрать все
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <EEPROM.h>
#define LEVO1 D8 ////
#define LEVO2 D7 ////
#define PRAVO1 D6 ///
#define PRAVO2 D5 ///
#define DETECTOR D0 ///
//#define tonePin D2 //d5
int deluha=300;
////ultra datch
//int echoPin = D2;
//int trigPin = D1;
/////
ESP8266WebServer server(80);
const char* ssid2="TANK8266"; //название точки доступа
const char* password2=""; // пароль не будем писать
const char* ssid="Gansta-Paradise.com"; // здесь пишем название домашней точки доступа
const char* password="123412345"; // и пароль
String webSite,javaScript,XML;
unsigned long wait000=0UL,wait001=1000UL;
int Sila, SilaLow = -43; // Контроль силы сигнала WiFi
int Batareya, BatLow = 400; //Контроль напряжения батареи
float Povorot = 0.8, Trimer; // Переменные для значений поворота и тримера двигателя
String Bat, SilaW;
////brut shlak;
int stoppriem=1;
int muzi ;
int pir = 0;
int alarma = 0;
int alarmaoff =-1;
int vlazh = 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
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 sending ="nothing no send";
String button ="";
String gasa="zagasa";
int shlakoffpriem=1;
int stopsigi =1;
///////////sensor vlazhnosti
float temperature;
float humundity;
int schetvl=0;
///////////////
void codanz(){
codan;
}
void Batare(){
/// Batareya = 333666; // Меряем напряжение батареи
}
void SilaWifi(){
Sila = WiFi.RSSI(); // Меряем силу сигнала WiFi
if (Sila < SilaLow){
SilaW = " Сигнал слабый";
}
else{
SilaW = "";
}
}
void buildJavascript(){
javaScript="<SCRIPT>\n";
javaScript+="var voh=1;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('Sila2')[0].firstChild.nodeValue;\n";// Сила сигнала WiFi
javaScript+=" document.getElementById('progbar').value=-xmlmsg;\n"; // Сила сигнала WiFi
javaScript+=" xmlmsg=xmlDoc.getElementsByTagName('Batareya')[0].firstChild.nodeValue;\n";// Напряжение батареи
javaScript+=" document.getElementById('Batareya').innerHTML=xmlmsg;\n"; // Напряжение батареи
javaScript+=" document.getElementById('vnizon').onclick = function (nizon) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZON',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vnizoff').onclick = function (nizoff) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZOFF',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vverhon').onclick = function (vverhon) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VONN',true);xmlhttp.send();voh++;if(voh>1){document.getElementById('vverhon').style.backgroundColor='red'};if(voh>2){document.getElementById('vverhon').style.backgroundColor='green';voh=1;};};\n" ;
javaScript+=" document.getElementById('vverhoff').onclick = function (vverhoff) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VOFF',true);xmlhttp.send();voh++;if(voh>1){document.getElementById('vverhoff').style.backgroundColor='red'};if(voh>2){document.getElementById('vverhoff').style.backgroundColor='green';voh=1;};};\n" ;
javaScript+=" document.getElementById('vlevo').onclick = function (vlevo) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VLEVO',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('bumer').onclick = function (bumer) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/BUMER',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('kasta').onclick = function (kasta) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/KASTA',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('dasboot').onclick = function (dasboot) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/DASBOOT',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('sirena').onclick = function (sirena) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/SIRENA',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('ala').onclick = function (ala) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/AlarmOff',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('bethoven').onclick = function (bethoven) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/BETHOVEN',true);xmlhttp.send();};" ;
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('deluha')[0].firstChild.nodeValue;\n";// deluha
javaScript+=" document.getElementById('valBox').innerHTML=xmlmsg;\n"; // deluha
javaScript+=" xmlmsg=xmlDoc.getElementsByTagName('deluha')[0].firstChild.nodeValue;\n";// deluha
javaScript+=" document.getElementById('slidr').value=xmlmsg;\n"; // deluha
/////javaScript+=" document.getElementById('button').onclick = function (button) { alert('Сюрприз!');" ;
//// 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 slid(newVal){\n";
javaScript+=" document.getElementById('valBox').innerHTML=newVal;\n";
javaScript+=" xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/SLID?val='+newVal,true);xmlhttp.send();";
/// 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+="<link rel='shortcut icon' type='image/x-icon' href='http://gansta-paradise.com/favicon.ico'>";
webSite+="<style>input#slidr { width: 100%;} progress#temperaturepb {background: green;} progress::-webkit-progress-bar { background: red; } #Paket{color:green}button{border: solid;border-radius: 300px;border-color: green;font-size: 15px;font-family: -webkit-pictograph;background: #d5e0d3;width: 150px;}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;}progress#progbar { background: #551be2;}</style>";
webSite+=javaScript;
webSite+="<BODY onload='process()'>\n";
webSite+="ТАНК\n<br>";
webSite+="Время работы = <A ID='runtime'></A>\n<br>";
webSite+="Сила сигнала <A ID='Sila'></A>\n<br>"; // Сила сигнала WiFi
webSite+="ДАННЫЕ ТАНКА<br> <A ID='Batareya'></A>\n<br>"; // Напряжение батареи
webSite+="Алярма:<A ID='Paket'></A>\n<br>"; // Напряжение батареи
webSite+="Напруга:<A ID='Paket1'></A>\n<br>"; // Напряжение батареи
webSite+="<div id='sending'>\n";
webSite+="</div>\n";
webSite+="<p>Сила Сигнала</p>";
webSite+="<div class='progress'>";
webSite+=" <progress id='progbar' max='100' value='0'></progress>";
webSite+=" <div class='progress-value'></div>";
webSite+=" <div class='progress-bg'><div class='progress-bar'></div></div>";
webSite+="</div>";
webSite+="<br><span id='valBox'></span><input width='100%' type='range' min='0' max='5000' step='1' id='slidr' oninput='slid(this.value)' onchange='slid(this.value)'>\n"; // это пример слайдера
webSite+="<br><br><br><table id='cepka' align='center'><tr>";
webSite+="<td><button id='vverhon' onclick='doFunction();'>VPERED";
webSite+="</button></td><td></td>";
webSite+="<td><button id='vverhoff' onclick='doFunction();'>NAZAD</button></td></tr><br><br><tr><td></td><td><h4 align='center'>✵✵✵РУЛЬ✵✵✵</h4></td></tr>";
webSite+="<tr><td><button id='vlevo' onclick='doFunction();'>☜ VLEVO</button>";
webSite+="</td><td></td><td><button id='vnizon' onclick='doFunction();'>VPRAVO ☞</button></td></tr>";
webSite+="<tr></tr><tr><td></td><td><button id='vnizoff' onclick='doFunction();'>STOP";
webSite+="</button></td></tr></table><br>";
webSite+="<table id='bumerang'><tr>";
webSite+="<td><button id='bumer' onclick='doFunction();'>Bumer";
webSite+="</button></td>";
webSite+="<td><button id='dasboot' onclick='doFunction();'>Dasboot</button></td></tr>";
webSite+="<tr><td><button id='kasta' onclick='doFunction();'>Kasta";
webSite+="</button></td>";
webSite+="<td><button id='sirena' onclick='doFunction();'>Sirena";
webSite+="</button></td></tr></table><br>";
webSite+="<table id='ala'><tr>";
webSite+="<td><button id='ala' onclick='doFunction();'>Alarm-on-off";
webSite+="</button></td>";
webSite+="<td><button id='bethoven' onclick='doFunction();'>Bethoven</button></td></tr>";
webSite+="</td></tr></table><br>";
webSite+="<p>ФУНКЦИИ ЗАПАСНЫЕ</p><br> <a href=\"ShlakOn\"><button>Reboot</button></a> <a href=\"TEMPERATURE\"><button>DATCHIK VLAZHNOSTY</button></a><br>";
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
XML+="<Sila2>"; // Сила сигнала WiFi
XML+=String(Sila);// Сила сигнала WiFi
XML+="</Sila2>"; // Сила сигнала 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+="<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+="<deluha>";
XML+=String(deluha);
XML+="</deluha>";
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();
ESP.wdtEnable(WDTO_8S);
EEPROM.begin(3512);
Serial.begin(115200);
// call sensor.begin() to initialize the library
//////////sensor
pinMode(LEVO1, OUTPUT);
pinMode(LEVO2, OUTPUT);
pinMode(PRAVO1, OUTPUT);
pinMode(PRAVO2, OUTPUT);
// pinMode(tonePin, OUTPUT);
pinMode(DETECTOR,INPUT);
digitalWrite(DETECTOR,LOW);
// digitalWrite(tonePin,LOW);
// pinMode(trigPin, OUTPUT);
// pinMode(echoPin, INPUT);
WiFi.softAP(ssid2, password2); // Создаём точку доступа
WiFi.begin(ssid,password); //Это вариант для подключения к существующей точке
while(WiFi.status()!=WL_CONNECTED){Serial.print(".");delay(500);}
WiFi.mode(WIFI_STA);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Establishing connection to WiFi..");
}
Serial.println("\n\nBOOTING ESP8266 ...");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("Station IP address: ");
Serial.println(WiFi.localIP()); // Вывод в монитор порта присвоенный IP sensor.begin();
server.on("/",handleWebsite);
server.on("/xml",handleXML);
server.on("/setESPval",handleESPval);
server.on("/TEMPERATURE", [](){
server.send(200, "text/html", webSite);
Serial.println("GET TEMPERATURE ...");
sending="GET TEMPERATURE";
vlazh=1;
});
server.on("/SLID", [](){
server.send(200, "text/html", webSite);
String message = "";
message +=server.arg(0);
Serial.println(message);
const int n = 10;
char *z = new char[n];
message.toCharArray(z,n);
deluha=atoi(z);
Serial.println(deluha);
});
server.on("/NIZON", [](){
server.send(200, "text/html", webSite);
Serial.println("PRAVO...");
digitalWrite (LEVO1, HIGH);
digitalWrite (LEVO2, LOW);
///digitalWrite (PRAVO1,HIGH);
/// digitalWrite (PRAVO2,LOW);
sending="PRAVO";
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/VLEVO", [](){
server.send(200, "text/html", webSite);
Serial.println("LEVO...");
//// digitalWrite (LEVO1, HIGH);
///digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,HIGH);
digitalWrite (PRAVO2,LOW);
sending="LEVO";
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/NIZOFF", [](){
server.send(200, "text/html", webSite);
Serial.println("STOP ...");
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
sending="STOP";
/////server.send(200, "text/html", webSite);
});
server.on("/VONN", [](){
server.send(200, "text/html", webSite);
Serial.println("VPERED...");
digitalWrite (LEVO1,HIGH);
digitalWrite (LEVO2,LOW);
digitalWrite (PRAVO1,HIGH);
digitalWrite (PRAVO2,LOW);
sending="VPERED";
///////////// server.send(200, "text/html", webSite);
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/VOFF", [](){
server.send(200, "text/html", webSite);
Serial.println(" NAZAD...");
digitalWrite (LEVO1,LOW);
digitalWrite (LEVO2,HIGH);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,HIGH);
sending="NAZAD";
//////////////// server.send(200, "text/html", webSite);
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/BUMER", [](){
sending="BUUMER";
server.send(200, "text/html", webSite);
Serial.println("bumer");
// bumer();
});
server.on("/DASBOOT", [](){
sending="DASBOOT";
server.send(200, "text/html", webSite);
Serial.println(" DASBOOT");
// dasboot();
});
///////////////////////////////////////////////////////////////////////////////////new
/////////////sigi/////////////////////////////
///////server.on("/GETS", HTTP_GET, []{
server.on("/AlarmOff", [](){
server.send(200, "text/html", webSite);
Serial.println("priem on");
if(alarmaoff==0){
sending ="ALARMA-OFF";}
else{
sending ="ALARMA-ONN";
}
alarmaoff = ~alarmaoff;
Serial.println(alarmaoff);
});
server.on("/BETHOVEN", [](){
server.send(200, "text/html", webSite);
Serial.println("DETHOV");
sending ="BETHOVEN-ONN";
//bet();
});
server.on("/KASTA", [](){
sending="KASTA";
server.send(200, "text/html", webSite);
// muz();
});
//////////////////////////////
///////////brutshlak
server.on("/ShlakOn", [](){
sending ="Shlak-Brut-Long-Wait";
Serial.println(" Send Reboot");
server.send(200, "text/html", webSite);
ESP.restart();
///ESP.reset() ;
/////BrutSh2
});
server.on("/BrutSh2", [](){
sending ="Shlak-Brut-Long-Wait";
Serial.println(" Send Shlak code");
server.send(200, "text/html", webSite);
/////BrutSh2
});
//////////////////
//////////ShlakSendOff
server.on("/SIRENA", [](){
server.send(200, "text/html", webSite);
// siren();
});
//////////////////
server.begin();
}
void loop() {
ESP.wdtFeed();
server.handleClient();
// digitalWrite(tonePin,LOW);
if(millis()>wait000){
buildXML();
wait000=millis()+1000UL;
// digitalWrite(tonePin,LOW);
}
if(millis()>wait001){
wait001=millis()+300; //Обновляем значения раз в 300 милисекунд
// digitalWrite(tonePin,LOW);
}
codan2 ="NO DETECT";
}
old
Код: Выбрать все
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <EEPROM.h>
#define LEVO1 D8 ////
#define LEVO2 D7 ////
#define PRAVO1 D6 ///
#define PRAVO2 D5 ///
#define DETECTOR D0 ///
//#define tonePin D2 //d5
int deluha=300;
////ultra datch
//int echoPin = D2;
//int trigPin = D1;
/////
ESP8266WebServer server(80);
const char* ssid2="TANK8266"; //название точки доступа
const char* password2=""; // пароль не будем писать
const char* ssid="Gansta-Paradise.com"; // здесь пишем название домашней точки доступа
const char* password="123412345"; // и пароль
String webSite,javaScript,XML;
unsigned long wait000=0UL,wait001=1000UL;
int Sila, SilaLow = -43; // Контроль силы сигнала WiFi
int Batareya, BatLow = 400; //Контроль напряжения батареи
float Povorot = 0.8, Trimer; // Переменные для значений поворота и тримера двигателя
String Bat, SilaW;
////brut shlak;
int stoppriem=1;
int muzi ;
int pir = 0;
int alarma = 0;
int alarmaoff =-1;
int vlazh = 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
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 sending ="nothing no send";
String button ="";
String gasa="zagasa";
int shlakoffpriem=1;
int stopsigi =1;
///////////sensor vlazhnosti
float temperature;
float humundity;
int schetvl=0;
///////////////
void codanz(){
codan;
}
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('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('Sila2')[0].firstChild.nodeValue;\n";// Сила сигнала WiFi
javaScript+=" document.getElementById('progbar').value=-xmlmsg;\n"; // Сила сигнала WiFi
javaScript+=" xmlmsg=xmlDoc.getElementsByTagName('Batareya')[0].firstChild.nodeValue;\n";// Напряжение батареи
javaScript+=" document.getElementById('Batareya').innerHTML=xmlmsg;\n"; // Напряжение батареи
javaScript+=" document.getElementById('vnizon').onclick = function (nizon) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZON',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vnizoff').onclick = function (nizoff) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZOFF',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vverhon').onclick = function (vverhon) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VONN',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vverhoff').onclick = function (vverhoff) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VOFF',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vlevo').onclick = function (vlevo) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VLEVO',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('bumer').onclick = function (bumer) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/BUMER',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('kasta').onclick = function (kasta) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/KASTA',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('dasboot').onclick = function (dasboot) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/DASBOOT',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('sirena').onclick = function (sirena) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/SIRENA',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('ala').onclick = function (ala) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/AlarmOff',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('bethoven').onclick = function (bethoven) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/BETHOVEN',true);xmlhttp.send();};" ;
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('deluha')[0].firstChild.nodeValue;\n";// deluha
javaScript+=" document.getElementById('valBox').innerHTML=xmlmsg;\n"; // deluha
javaScript+=" xmlmsg=xmlDoc.getElementsByTagName('deluha')[0].firstChild.nodeValue;\n";// deluha
javaScript+=" document.getElementById('slidr').value=xmlmsg;\n"; // deluha
/////javaScript+=" document.getElementById('button').onclick = function (button) { alert('Сюрприз!');" ;
//// 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 slid(newVal){\n";
javaScript+=" document.getElementById('valBox').innerHTML=newVal;\n";
javaScript+=" xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/SLID?val='+newVal,true);xmlhttp.send();";
/// 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+="<link rel='shortcut icon' type='image/x-icon' href='http://gansta-paradise.com/favicon.ico'>";
webSite+="<style>input#slidr { width: 100%;} progress#temperaturepb {background: green;} progress::-webkit-progress-bar { background: red; } #Paket{color:green}button{border: solid;border-radius: 300px;border-color: green;font-size: 15px;font-family: -webkit-pictograph;background: #d5e0d3;width: 150px;}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;}progress#progbar { background: #551be2;}</style>";
webSite+=javaScript;
webSite+="<BODY onload='process()'>\n";
webSite+="ТАНК\n<br>";
webSite+="Время работы = <A ID='runtime'></A>\n<br>";
webSite+="Сила сигнала <A ID='Sila'></A>\n<br>"; // Сила сигнала WiFi
webSite+="ДАННЫЕ ТАНКА<br> <A ID='Batareya'></A>\n<br>"; // Напряжение батареи
webSite+="Алярма:<A ID='Paket'></A>\n<br>"; // Напряжение батареи
webSite+="Напруга:<A ID='Paket1'></A>\n<br>"; // Напряжение батареи
webSite+="<div id='sending'>\n";
webSite+="</div>\n";
webSite+="<p>Сила Сигнала</p>";
webSite+="<div class='progress'>";
webSite+=" <progress id='progbar' max='100' value='0'></progress>";
webSite+=" <div class='progress-value'></div>";
webSite+=" <div class='progress-bg'><div class='progress-bar'></div></div>";
webSite+="</div>";
webSite+="<br><span id='valBox'></span><input width='100%' type='range' min='0' max='5000' step='1' id='slidr' oninput='slid(this.value)' onchange='slid(this.value)'>\n"; // это пример слайдера
webSite+="<br><br><br><table id='cepka' align='center'><tr>";
webSite+="<td><button id='vverhon' onclick='doFunction();'>VPERED";
webSite+="</button></td><td></td>";
webSite+="<td><button id='vverhoff' onclick='doFunction();'>NAZAD</button></td></tr><br><br><tr><td></td><td><h4 align='center'>✵✵✵РУЛЬ✵✵✵</h4></td></tr>";
webSite+="<tr><td><button id='vlevo' onclick='doFunction();'>☜ VLEVO</button>";
webSite+="</td><td></td><td><button id='vnizon' onclick='doFunction();'>VPRAVO ☞</button></td></tr>";
webSite+="<tr></tr><tr><td></td><td><button id='vnizoff' onclick='doFunction();'>STOP";
webSite+="</button></td></tr></table><br>";
webSite+="<table id='bumerang'><tr>";
webSite+="<td><button id='bumer' onclick='doFunction();'>Bumer";
webSite+="</button></td>";
webSite+="<td><button id='dasboot' onclick='doFunction();'>Dasboot</button></td></tr>";
webSite+="<tr><td><button id='kasta' onclick='doFunction();'>Kasta";
webSite+="</button></td>";
webSite+="<td><button id='sirena' onclick='doFunction();'>Sirena";
webSite+="</button></td></tr></table><br>";
webSite+="<table id='ala'><tr>";
webSite+="<td><button id='ala' onclick='doFunction();'>Alarm-on-off";
webSite+="</button></td>";
webSite+="<td><button id='bethoven' onclick='doFunction();'>Bethoven</button></td></tr>";
webSite+="</td></tr></table><br>";
webSite+="<p>ФУНКЦИИ ЗАПАСНЫЕ</p><br> <a href=\"ShlakOn\"><button>Reboot</button></a> <a href=\"TEMPERATURE\"><button>DATCHIK VLAZHNOSTY</button></a><br>";
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
XML+="<Sila2>"; // Сила сигнала WiFi
XML+=String(Sila);// Сила сигнала WiFi
XML+="</Sila2>"; // Сила сигнала 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+="<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+="<deluha>";
XML+=String(deluha);
XML+="</deluha>";
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();
ESP.wdtEnable(WDTO_8S);
EEPROM.begin(3512);
Serial.begin(115200);
// call sensor.begin() to initialize the library
//////////sensor
pinMode(LEVO1, OUTPUT);
pinMode(LEVO2, OUTPUT);
pinMode(PRAVO1, OUTPUT);
pinMode(PRAVO2, OUTPUT);
// pinMode(tonePin, OUTPUT);
pinMode(DETECTOR,INPUT);
digitalWrite(DETECTOR,LOW);
// digitalWrite(tonePin,LOW);
// pinMode(trigPin, OUTPUT);
// pinMode(echoPin, INPUT);
WiFi.softAP(ssid2, password2); // Создаём точку доступа
WiFi.begin(ssid,password); //Это вариант для подключения к существующей точке
while(WiFi.status()!=WL_CONNECTED){Serial.print(".");delay(500);}
WiFi.mode(WIFI_STA);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Establishing connection to WiFi..");
}
Serial.println("\n\nBOOTING ESP8266 ...");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("Station IP address: ");
Serial.println(WiFi.localIP()); // Вывод в монитор порта присвоенный IP sensor.begin();
server.on("/",handleWebsite);
server.on("/xml",handleXML);
server.on("/setESPval",handleESPval);
server.on("/TEMPERATURE", [](){
server.send(200, "text/html", webSite);
Serial.println("GET TEMPERATURE ...");
sending="GET TEMPERATURE";
vlazh=1;
});
server.on("/SLID", [](){
server.send(200, "text/html", webSite);
String message = "";
message +=server.arg(0);
Serial.println(message);
const int n = 10;
char *z = new char[n];
message.toCharArray(z,n);
deluha=atoi(z);
Serial.println(deluha);
});
server.on("/NIZON", [](){
server.send(200, "text/html", webSite);
Serial.println("PRAVO...");
digitalWrite (LEVO1, HIGH);
digitalWrite (LEVO2, LOW);
///digitalWrite (PRAVO1,HIGH);
/// digitalWrite (PRAVO2,LOW);
sending="PRAVO";
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/VLEVO", [](){
server.send(200, "text/html", webSite);
Serial.println("LEVO...");
//// digitalWrite (LEVO1, HIGH);
///digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,HIGH);
digitalWrite (PRAVO2,LOW);
sending="LEVO";
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/NIZOFF", [](){
server.send(200, "text/html", webSite);
Serial.println("STOP ...");
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
sending="STOP";
/////server.send(200, "text/html", webSite);
});
server.on("/VONN", [](){
server.send(200, "text/html", webSite);
Serial.println("VPERED...");
digitalWrite (LEVO1,HIGH);
digitalWrite (LEVO2,LOW);
digitalWrite (PRAVO1,HIGH);
digitalWrite (PRAVO2,LOW);
sending="VPERED";
///////////// server.send(200, "text/html", webSite);
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/VOFF", [](){
server.send(200, "text/html", webSite);
Serial.println(" NAZAD...");
digitalWrite (LEVO1,LOW);
digitalWrite (LEVO2,HIGH);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,HIGH);
sending="NAZAD";
//////////////// server.send(200, "text/html", webSite);
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/BUMER", [](){
sending="BUUMER";
server.send(200, "text/html", webSite);
Serial.println("bumer");
// bumer();
});
server.on("/DASBOOT", [](){
sending="DASBOOT";
server.send(200, "text/html", webSite);
Serial.println(" DASBOOT");
// dasboot();
});
///////////////////////////////////////////////////////////////////////////////////new
/////////////sigi/////////////////////////////
///////server.on("/GETS", HTTP_GET, []{
server.on("/AlarmOff", [](){
server.send(200, "text/html", webSite);
Serial.println("priem on");
if(alarmaoff==0){
sending ="ALARMA-OFF";}
else{
sending ="ALARMA-ONN";
}
alarmaoff = ~alarmaoff;
Serial.println(alarmaoff);
});
server.on("/BETHOVEN", [](){
server.send(200, "text/html", webSite);
Serial.println("DETHOV");
sending ="BETHOVEN-ONN";
//bet();
});
server.on("/KASTA", [](){
sending="KASTA";
server.send(200, "text/html", webSite);
// muz();
});
//////////////////////////////
///////////brutshlak
server.on("/ShlakOn", [](){
sending ="Shlak-Brut-Long-Wait";
Serial.println(" Send Reboot");
server.send(200, "text/html", webSite);
ESP.restart();
///ESP.reset() ;
/////BrutSh2
});
server.on("/BrutSh2", [](){
sending ="Shlak-Brut-Long-Wait";
Serial.println(" Send Shlak code");
server.send(200, "text/html", webSite);
/////BrutSh2
});
//////////////////
//////////ShlakSendOff
server.on("/SIRENA", [](){
server.send(200, "text/html", webSite);
// siren();
});
//////////////////
server.begin();
}
void loop() {
ESP.wdtFeed();
server.handleClient();
// digitalWrite(tonePin,LOW);
if(millis()>wait000){
buildXML();
wait000=millis()+1000UL;
// digitalWrite(tonePin,LOW);
}
if(millis()>wait001){
wait001=millis()+300; //Обновляем значения раз в 300 милисекунд
// digitalWrite(tonePin,LOW);
}
codan2 ="NO DETECT";
}
usrar
Код: Выбрать все
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <EEPROM.h>
#define LEVO1 D8 ////
#define LEVO2 D7 ////
#define PRAVO1 D6 ///
#define PRAVO2 D5 ///
#define DETECTOR D0 ///
//#define tonePin D2 //d5
int deluha=300;
////ultra datch
//int echoPin = D2;
//int trigPin = D1;
/////
ESP8266WebServer server(80);
const char* ssid2="TANK8266"; //название точки доступа
const char* password2=""; // пароль не будем писать
const char* ssid="Gansta-Paradise.com"; // здесь пишем название домашней точки доступа
const char* password="123412345"; // и пароль
String webSite,javaScript,XML;
unsigned long wait000=0UL,wait001=1000UL;
int Sila, SilaLow = -43; // Контроль силы сигнала WiFi
int Batareya, BatLow = 400; //Контроль напряжения батареи
float Povorot = 0.8, Trimer; // Переменные для значений поворота и тримера двигателя
String Bat, SilaW;
////brut shlak;
int stoppriem=1;
int muzi ;
int pir = 0;
int alarma = 0;
int alarmaoff =-1;
int vlazh = 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
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 sending ="nothing no send";
String button ="";
String gasa="zagasa";
int shlakoffpriem=1;
int stopsigi =1;
///////////sensor vlazhnosti
float temperature;
float humundity;
int schetvl=0;
///////////////
void codanz(){
codan;
}
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('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('Sila2')[0].firstChild.nodeValue;\n";// Сила сигнала WiFi
javaScript+=" document.getElementById('progbar').value=-xmlmsg;\n"; // Сила сигнала WiFi
javaScript+=" xmlmsg=xmlDoc.getElementsByTagName('Batareya')[0].firstChild.nodeValue;\n";// Напряжение батареи
javaScript+=" document.getElementById('Batareya').innerHTML=xmlmsg;\n"; // Напряжение батареи
javaScript+=" document.getElementById('vnizon').onclick = function (nizon) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZON',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vnizoff').onclick = function (nizoff) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZOFF',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vverhon').onclick = function (vverhon) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VONN',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vverhoff').onclick = function (vverhoff) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VOFF',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vlevo').onclick = function (vlevo) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VLEVO',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('bumer').onclick = function (bumer) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/BUMER',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('kasta').onclick = function (kasta) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/KASTA',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('dasboot').onclick = function (dasboot) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/DASBOOT',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('sirena').onclick = function (sirena) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/SIRENA',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('ala').onclick = function (ala) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/AlarmOff',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('bethoven').onclick = function (bethoven) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/BETHOVEN',true);xmlhttp.send();};" ;
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('deluha')[0].firstChild.nodeValue;\n";// deluha
javaScript+=" document.getElementById('valBox').innerHTML=xmlmsg;\n"; // deluha
javaScript+=" xmlmsg=xmlDoc.getElementsByTagName('deluha')[0].firstChild.nodeValue;\n";// deluha
javaScript+=" document.getElementById('slidr').value=xmlmsg;\n"; // deluha
/////javaScript+=" document.getElementById('button').onclick = function (button) { alert('Сюрприз!');" ;
//// 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 slid(newVal){\n";
javaScript+=" document.getElementById('valBox').innerHTML=newVal;\n";
javaScript+=" xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/SLID?val='+newVal,true);xmlhttp.send();";
/// 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+="<link rel='shortcut icon' type='image/x-icon' href='http://gansta-paradise.com/favicon.ico'>";
webSite+="<style>input#slidr { width: 100%;} progress#temperaturepb {background: green;} progress::-webkit-progress-bar { background: red; } #Paket{color:green}button{border: solid;border-radius: 300px;border-color: green;font-size: 15px;font-family: -webkit-pictograph;background: #d5e0d3;width: 150px;}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;}progress#progbar { background: #551be2;}</style>";
webSite+=javaScript;
webSite+="<BODY onload='process()'>\n";
webSite+="ТАНК\n<br>";
webSite+="Время работы = <A ID='runtime'></A>\n<br>";
webSite+="Сила сигнала <A ID='Sila'></A>\n<br>"; // Сила сигнала WiFi
webSite+="ДАННЫЕ ТАНКА<br> <A ID='Batareya'></A>\n<br>"; // Напряжение батареи
webSite+="Алярма:<A ID='Paket'></A>\n<br>"; // Напряжение батареи
webSite+="Напруга:<A ID='Paket1'></A>\n<br>"; // Напряжение батареи
webSite+="<div id='sending'>\n";
webSite+="</div>\n";
webSite+="<p>Сила Сигнала</p>";
webSite+="<div class='progress'>";
webSite+=" <progress id='progbar' max='100' value='0'></progress>";
webSite+=" <div class='progress-value'></div>";
webSite+=" <div class='progress-bg'><div class='progress-bar'></div></div>";
webSite+="</div>";
webSite+="<br><span id='valBox'></span><input width='100%' type='range' min='0' max='5000' step='1' id='slidr' oninput='slid(this.value)' onchange='slid(this.value)'>\n"; // это пример слайдера
webSite+="<br><br><br><table id='cepka' align='center'><tr>";
webSite+="<td><button id='vverhon' onclick='doFunction();'>VPERED";
webSite+="</button></td><td></td>";
webSite+="<td><button id='vverhoff' onclick='doFunction();'>NAZAD</button></td></tr><br><br><tr><td></td><td><h4 align='center'>✵✵✵РУЛЬ✵✵✵</h4></td></tr>";
webSite+="<tr><td><button id='vnizon' onclick='doFunction();'>VPRAVO ☞";
webSite+="</button></td><td></td><td><button id='vlevo' onclick='doFunction();'>☜ VLEVO</button></td></tr>";
webSite+="<tr></tr><tr><td></td><td><button id='vnizoff' onclick='doFunction();'>STOP";
webSite+="</button></td></tr></table><br>";
webSite+="<table id='bumerang'><tr>";
webSite+="<td><button id='bumer' onclick='doFunction();'>Bumer";
webSite+="</button></td>";
webSite+="<td><button id='dasboot' onclick='doFunction();'>Dasboot</button></td></tr>";
webSite+="<tr><td><button id='kasta' onclick='doFunction();'>Kasta";
webSite+="</button></td>";
webSite+="<td><button id='sirena' onclick='doFunction();'>Sirena";
webSite+="</button></td></tr></table><br>";
webSite+="<table id='ala'><tr>";
webSite+="<td><button id='ala' onclick='doFunction();'>Alarm-on-off";
webSite+="</button></td>";
webSite+="<td><button id='bethoven' onclick='doFunction();'>Bethoven</button></td></tr>";
webSite+="</td></tr></table><br>";
webSite+="<p>ФУНКЦИИ ЗАПАСНЫЕ</p><br> <a href=\"ShlakOn\"><button>Reboot</button></a> <a href=\"TEMPERATURE\"><button>DATCHIK VLAZHNOSTY</button></a><br>";
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
XML+="<Sila2>"; // Сила сигнала WiFi
XML+=String(Sila);// Сила сигнала WiFi
XML+="</Sila2>"; // Сила сигнала 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+="<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+="<deluha>";
XML+=String(deluha);
XML+="</deluha>";
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();
ESP.wdtEnable(WDTO_8S);
EEPROM.begin(3512);
Serial.begin(115200);
// call sensor.begin() to initialize the library
//////////sensor
pinMode(LEVO1, OUTPUT);
pinMode(LEVO2, OUTPUT);
pinMode(PRAVO1, OUTPUT);
pinMode(PRAVO2, OUTPUT);
// pinMode(tonePin, OUTPUT);
pinMode(DETECTOR,INPUT);
digitalWrite(DETECTOR,LOW);
// digitalWrite(tonePin,LOW);
// pinMode(trigPin, OUTPUT);
// pinMode(echoPin, INPUT);
WiFi.softAP(ssid2, password2); // Создаём точку доступа
WiFi.begin(ssid,password); //Это вариант для подключения к существующей точке
while(WiFi.status()!=WL_CONNECTED){Serial.print(".");delay(500);}
WiFi.mode(WIFI_STA);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Establishing connection to WiFi..");
}
Serial.println("\n\nBOOTING ESP8266 ...");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("Station IP address: ");
Serial.println(WiFi.localIP()); // Вывод в монитор порта присвоенный IP sensor.begin();
server.on("/",handleWebsite);
server.on("/xml",handleXML);
server.on("/setESPval",handleESPval);
server.on("/TEMPERATURE", [](){
server.send(200, "text/html", webSite);
Serial.println("GET TEMPERATURE ...");
sending="GET TEMPERATURE";
vlazh=1;
});
server.on("/SLID", [](){
server.send(200, "text/html", webSite);
String message = "";
message +=server.arg(0);
Serial.println(message);
const int n = 10;
char *z = new char[n];
message.toCharArray(z,n);
deluha=atoi(z);
Serial.println(deluha);
});
server.on("/NIZON", [](){
server.send(200, "text/html", webSite);
Serial.println("PRAVO...");
digitalWrite (LEVO1, HIGH);
digitalWrite (LEVO2, LOW);
///digitalWrite (PRAVO1,HIGH);
/// digitalWrite (PRAVO2,LOW);
sending="PRAVO";
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/VLEVO", [](){
server.send(200, "text/html", webSite);
Serial.println("LEVO...");
//// digitalWrite (LEVO1, HIGH);
///digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,HIGH);
digitalWrite (PRAVO2,LOW);
sending="LEVO";
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/NIZOFF", [](){
server.send(200, "text/html", webSite);
Serial.println("STOP ...");
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
sending="STOP";
/////server.send(200, "text/html", webSite);
});
server.on("/VONN", [](){
server.send(200, "text/html", webSite);
Serial.println("VPERED...");
digitalWrite (LEVO1,HIGH);
digitalWrite (LEVO2,LOW);
digitalWrite (PRAVO1,HIGH);
digitalWrite (PRAVO2,LOW);
sending="VPERED";
///////////// server.send(200, "text/html", webSite);
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/VOFF", [](){
server.send(200, "text/html", webSite);
Serial.println(" NAZAD...");
digitalWrite (LEVO1,LOW);
digitalWrite (LEVO2,HIGH);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,HIGH);
sending="NAZAD";
//////////////// server.send(200, "text/html", webSite);
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/BUMER", [](){
sending="BUUMER";
server.send(200, "text/html", webSite);
Serial.println("bumer");
// bumer();
});
server.on("/DASBOOT", [](){
sending="DASBOOT";
server.send(200, "text/html", webSite);
Serial.println(" DASBOOT");
// dasboot();
});
///////////////////////////////////////////////////////////////////////////////////new
/////////////sigi/////////////////////////////
///////server.on("/GETS", HTTP_GET, []{
server.on("/AlarmOff", [](){
server.send(200, "text/html", webSite);
Serial.println("priem on");
if(alarmaoff==0){
sending ="ALARMA-OFF";}
else{
sending ="ALARMA-ONN";
}
alarmaoff = ~alarmaoff;
Serial.println(alarmaoff);
});
server.on("/BETHOVEN", [](){
server.send(200, "text/html", webSite);
Serial.println("DETHOV");
sending ="BETHOVEN-ONN";
//bet();
});
server.on("/KASTA", [](){
sending="KASTA";
server.send(200, "text/html", webSite);
// muz();
});
//////////////////////////////
///////////brutshlak
server.on("/ShlakOn", [](){
sending ="Shlak-Brut-Long-Wait";
Serial.println(" Send Reboot");
server.send(200, "text/html", webSite);
ESP.restart();
///ESP.reset() ;
/////BrutSh2
});
server.on("/BrutSh2", [](){
sending ="Shlak-Brut-Long-Wait";
Serial.println(" Send Shlak code");
server.send(200, "text/html", webSite);
/////BrutSh2
});
//////////////////
//////////ShlakSendOff
server.on("/SIRENA", [](){
server.send(200, "text/html", webSite);
// siren();
});
//////////////////
server.begin();
}
void loop() {
ESP.wdtFeed();
server.handleClient();
// digitalWrite(tonePin,LOW);
if(millis()>wait000){
buildXML();
wait000=millis()+1000UL;
// digitalWrite(tonePin,LOW);
}
if(millis()>wait001){
wait001=millis()+300; //Обновляем значения раз в 300 милисекунд
// digitalWrite(tonePin,LOW);
}
codan2 ="NO DETECT";
}
устарел
Код: Выбрать все
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <EEPROM.h>
#define LEVO1 D8 ////
#define LEVO2 D7 ////
#define PRAVO1 D6 ///
#define PRAVO2 D5 ///
#define DETECTOR D0 ///
//#define tonePin D2 //d5
int deluha=300;
////ultra datch
//int echoPin = D2;
//int trigPin = D1;
/////
ESP8266WebServer server(80);
const char* ssid2="TANK8266"; //название точки доступа
const char* password2=""; // пароль не будем писать
const char* ssid="Gansta-Paradise.com"; // здесь пишем название домашней точки доступа
const char* password="123412345"; // и пароль
String webSite,javaScript,XML;
unsigned long wait000=0UL,wait001=1000UL;
int Sila, SilaLow = -43; // Контроль силы сигнала WiFi
int Batareya, BatLow = 400; //Контроль напряжения батареи
float Povorot = 0.8, Trimer; // Переменные для значений поворота и тримера двигателя
String Bat, SilaW;
////brut shlak;
int stoppriem=1;
int muzi ;
int pir = 0;
int alarma = 0;
int alarmaoff =-1;
int vlazh = 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
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 sending ="nothing no send";
String button ="";
String gasa="zagasa";
int shlakoffpriem=1;
int stopsigi =1;
///////////sensor vlazhnosti
float temperature;
float humundity;
int schetvl=0;
///////////////
void codanz(){
codan;
}
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('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('Sila2')[0].firstChild.nodeValue;\n";// Сила сигнала WiFi
javaScript+=" document.getElementById('progbar').value=-xmlmsg;\n"; // Сила сигнала WiFi
javaScript+=" xmlmsg=xmlDoc.getElementsByTagName('Batareya')[0].firstChild.nodeValue;\n";// Напряжение батареи
javaScript+=" document.getElementById('Batareya').innerHTML=xmlmsg;\n"; // Напряжение батареи
javaScript+=" document.getElementById('vnizon').onclick = function (nizon) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZON',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vnizoff').onclick = function (nizoff) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZOFF',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vverhon').onclick = function (vverhon) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VONN',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vverhoff').onclick = function (vverhoff) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VOFF',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vlevo').onclick = function (vlevo) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VLEVO',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('bumer').onclick = function (bumer) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/BUMER',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('kasta').onclick = function (kasta) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/KASTA',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('dasboot').onclick = function (dasboot) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/DASBOOT',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('sirena').onclick = function (sirena) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/SIRENA',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('ala').onclick = function (ala) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/AlarmOff',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('bethoven').onclick = function (bethoven) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/BETHOVEN',true);xmlhttp.send();};" ;
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('deluha')[0].firstChild.nodeValue;\n";// deluha
javaScript+=" document.getElementById('valBox').innerHTML=xmlmsg;\n"; // deluha
javaScript+=" xmlmsg=xmlDoc.getElementsByTagName('deluha')[0].firstChild.nodeValue;\n";// deluha
javaScript+=" document.getElementById('slidr').value=xmlmsg;\n"; // deluha
/////javaScript+=" document.getElementById('button').onclick = function (button) { alert('Сюрприз!');" ;
//// 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 slid(newVal){\n";
javaScript+=" document.getElementById('valBox').innerHTML=newVal;\n";
javaScript+=" xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/SLID?val='+newVal,true);xmlhttp.send();";
/// 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+="<link rel='shortcut icon' type='image/x-icon' href='http://gansta-paradise.com/favicon.ico'>";
webSite+="<style>input#slidr { width: 100%;} progress#temperaturepb {background: green;} progress::-webkit-progress-bar { background: red; } #Paket{color:green}button{border: solid;border-radius: 300px;border-color: green;font-size: 15px;font-family: -webkit-pictograph;background: #d5e0d3;width: 150px;}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;}progress#progbar { background: #551be2;}</style>";
webSite+=javaScript;
webSite+="<BODY onload='process()'>\n";
webSite+="ТАНК\n<br>";
webSite+="Время работы = <A ID='runtime'></A>\n<br>";
webSite+="Сила сигнала <A ID='Sila'></A>\n<br>"; // Сила сигнала WiFi
webSite+="ДАННЫЕ ТАНКА<br> <A ID='Batareya'></A>\n<br>"; // Напряжение батареи
webSite+="Алярма:<A ID='Paket'></A>\n<br>"; // Напряжение батареи
webSite+="Напруга:<A ID='Paket1'></A>\n<br>"; // Напряжение батареи
webSite+="<div id='sending'>\n";
webSite+="</div>\n";
webSite+="<p>Сила Сигнала</p>";
webSite+="<div class='progress'>";
webSite+=" <progress id='progbar' max='100' value='0'></progress>";
webSite+=" <div class='progress-value'></div>";
webSite+=" <div class='progress-bg'><div class='progress-bar'></div></div>";
webSite+="</div>";
webSite+="<br><span id='valBox'></span><input width='100%' type='range' min='0' max='5000' step='1' id='slidr' oninput='slid(this.value)' onchange='slid(this.value)'>\n"; // это пример слайдера
webSite+="<br><br><br><table id='cepka'><tr>";
webSite+="<td><button id='vverhon' onclick='doFunction();'>VPERED";
webSite+="</button></td><td></td>";
webSite+="<td><button id='vverhoff' onclick='doFunction();'>NAZAD</button></td></tr><br><br><tr><td></td><td><h1>✵✵✵РУЛЬ✵✵✵</h1></td></tr>";
webSite+="<tr><td><button id='vnizon' onclick='doFunction();'>VPRAVO";
webSite+="</button></td><td></td><td><button id='vlevo' onclick='doFunction();'>VLEVO</button></td></tr>";
webSite+="<tr><td></td><td><button id='vnizoff' onclick='doFunction();'>STOP";
webSite+="</button></td></tr></table><br>";
webSite+="<table id='bumerang'><tr>";
webSite+="<td><button id='bumer' onclick='doFunction();'>Bumer";
webSite+="</button></td>";
webSite+="<td><button id='dasboot' onclick='doFunction();'>Dasboot</button></td></tr>";
webSite+="<tr><td><button id='kasta' onclick='doFunction();'>Kasta";
webSite+="</button></td>";
webSite+="<td><button id='sirena' onclick='doFunction();'>Sirena";
webSite+="</button></td></tr></table><br>";
webSite+="<table id='ala'><tr>";
webSite+="<td><button id='ala' onclick='doFunction();'>Alarm-on-off";
webSite+="</button></td>";
webSite+="<td><button id='bethoven' onclick='doFunction();'>Bethoven</button></td></tr>";
webSite+="</td></tr></table><br>";
webSite+="<p>ФУНКЦИИ ЗАПАСНЫЕ</p><br> <a href=\"ShlakOn\"><button>Reboot</button></a> <a href=\"TEMPERATURE\"><button>DATCHIK VLAZHNOSTY</button></a><br>";
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
XML+="<Sila2>"; // Сила сигнала WiFi
XML+=String(Sila);// Сила сигнала WiFi
XML+="</Sila2>"; // Сила сигнала 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+="<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+="<deluha>";
XML+=String(deluha);
XML+="</deluha>";
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();
ESP.wdtEnable(WDTO_8S);
EEPROM.begin(3512);
Serial.begin(115200);
// call sensor.begin() to initialize the library
//////////sensor
pinMode(LEVO1, OUTPUT);
pinMode(LEVO2, OUTPUT);
pinMode(PRAVO1, OUTPUT);
pinMode(PRAVO2, OUTPUT);
// pinMode(tonePin, OUTPUT);
pinMode(DETECTOR,INPUT);
digitalWrite(DETECTOR,LOW);
// digitalWrite(tonePin,LOW);
// pinMode(trigPin, OUTPUT);
// pinMode(echoPin, INPUT);
WiFi.softAP(ssid2, password2); // Создаём точку доступа
WiFi.begin(ssid,password); //Это вариант для подключения к существующей точке
while(WiFi.status()!=WL_CONNECTED){Serial.print(".");delay(500);}
WiFi.mode(WIFI_STA);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Establishing connection to WiFi..");
}
Serial.println("\n\nBOOTING ESP8266 ...");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("Station IP address: ");
Serial.println(WiFi.localIP()); // Вывод в монитор порта присвоенный IP sensor.begin();
server.on("/",handleWebsite);
server.on("/xml",handleXML);
server.on("/setESPval",handleESPval);
server.on("/TEMPERATURE", [](){
server.send(200, "text/html", webSite);
Serial.println("GET TEMPERATURE ...");
sending="GET TEMPERATURE";
vlazh=1;
});
server.on("/SLID", [](){
server.send(200, "text/html", webSite);
String message = "";
message +=server.arg(0);
Serial.println(message);
const int n = 10;
char *z = new char[n];
message.toCharArray(z,n);
deluha=atoi(z);
Serial.println(deluha);
});
server.on("/NIZON", [](){
server.send(200, "text/html", webSite);
Serial.println("PRAVO...");
digitalWrite (LEVO1, HIGH);
digitalWrite (LEVO2, LOW);
///digitalWrite (PRAVO1,HIGH);
/// digitalWrite (PRAVO2,LOW);
sending="PRAVO";
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/VLEVO", [](){
server.send(200, "text/html", webSite);
Serial.println("LEVO...");
//// digitalWrite (LEVO1, HIGH);
///digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,HIGH);
digitalWrite (PRAVO2,LOW);
sending="LEVO";
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/NIZOFF", [](){
server.send(200, "text/html", webSite);
Serial.println("STOP ...");
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
sending="STOP";
/////server.send(200, "text/html", webSite);
});
server.on("/VONN", [](){
server.send(200, "text/html", webSite);
Serial.println("VPERED...");
digitalWrite (LEVO1,HIGH);
digitalWrite (LEVO2,LOW);
digitalWrite (PRAVO1,HIGH);
digitalWrite (PRAVO2,LOW);
sending="VPERED";
///////////// server.send(200, "text/html", webSite);
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/VOFF", [](){
server.send(200, "text/html", webSite);
Serial.println(" NAZAD...");
digitalWrite (LEVO1,LOW);
digitalWrite (LEVO2,HIGH);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,HIGH);
sending="NAZAD";
//////////////// server.send(200, "text/html", webSite);
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/BUMER", [](){
sending="BUUMER";
server.send(200, "text/html", webSite);
Serial.println("bumer");
// bumer();
});
server.on("/DASBOOT", [](){
sending="DASBOOT";
server.send(200, "text/html", webSite);
Serial.println(" DASBOOT");
// dasboot();
});
///////////////////////////////////////////////////////////////////////////////////new
/////////////sigi/////////////////////////////
///////server.on("/GETS", HTTP_GET, []{
server.on("/AlarmOff", [](){
server.send(200, "text/html", webSite);
Serial.println("priem on");
if(alarmaoff==0){
sending ="ALARMA-OFF";}
else{
sending ="ALARMA-ONN";
}
alarmaoff = ~alarmaoff;
Serial.println(alarmaoff);
});
server.on("/BETHOVEN", [](){
server.send(200, "text/html", webSite);
Serial.println("DETHOV");
sending ="BETHOVEN-ONN";
//bet();
});
server.on("/KASTA", [](){
sending="KASTA";
server.send(200, "text/html", webSite);
// muz();
});
//////////////////////////////
///////////brutshlak
server.on("/ShlakOn", [](){
sending ="Shlak-Brut-Long-Wait";
Serial.println(" Send Reboot");
server.send(200, "text/html", webSite);
ESP.restart();
///ESP.reset() ;
/////BrutSh2
});
server.on("/BrutSh2", [](){
sending ="Shlak-Brut-Long-Wait";
Serial.println(" Send Shlak code");
server.send(200, "text/html", webSite);
/////BrutSh2
});
//////////////////
//////////ShlakSendOff
server.on("/SIRENA", [](){
server.send(200, "text/html", webSite);
// siren();
});
//////////////////
server.begin();
}
void loop() {
ESP.wdtFeed();
server.handleClient();
// digitalWrite(tonePin,LOW);
if(millis()>wait000){
buildXML();
wait000=millis()+1000UL;
// digitalWrite(tonePin,LOW);
}
if(millis()>wait001){
wait001=millis()+300; //Обновляем значения раз в 300 милисекунд
// digitalWrite(tonePin,LOW);
}
codan2 ="NO DETECT";
}
устаревший
Код: Выбрать все
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <EEPROM.h>
#define LEVO1 D8 ////
#define LEVO2 D7 ////
#define PRAVO1 D6 ///
#define PRAVO2 D5 ///
#define DETECTOR D0 ///
//#define tonePin D2 //d5
int deluha=300;
////ultra datch
//int echoPin = D2;
//int trigPin = D1;
/////
ESP8266WebServer server(80);
const char* ssid2="TANK8266"; //название точки доступа
const char* password2=""; // пароль не будем писать
const char* ssid="Gansta-Paradise.com"; // здесь пишем название домашней точки доступа
const char* password="123412345"; // и пароль
String webSite,javaScript,XML;
unsigned long wait000=0UL,wait001=1000UL;
int Sila, SilaLow = -43; // Контроль силы сигнала WiFi
int Batareya, BatLow = 400; //Контроль напряжения батареи
float Povorot = 0.8, Trimer; // Переменные для значений поворота и тримера двигателя
String Bat, SilaW;
////brut shlak;
int stoppriem=1;
int muzi ;
int pir = 0;
int alarma = 0;
int alarmaoff =-1;
int vlazh = 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
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 sending ="nothing no send";
String button ="";
String gasa="zagasa";
int shlakoffpriem=1;
int stopsigi =1;
///////////sensor vlazhnosti
float temperature;
float humundity;
int schetvl=0;
///////////////
void codanz(){
codan;
}
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('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('Sila2')[0].firstChild.nodeValue;\n";// Сила сигнала WiFi
javaScript+=" document.getElementById('progbar').value=-xmlmsg;\n"; // Сила сигнала WiFi
javaScript+=" xmlmsg=xmlDoc.getElementsByTagName('Batareya')[0].firstChild.nodeValue;\n";// Напряжение батареи
javaScript+=" document.getElementById('Batareya').innerHTML=xmlmsg;\n"; // Напряжение батареи
javaScript+=" document.getElementById('vnizon').onclick = function (nizon) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZON',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vnizoff').onclick = function (nizoff) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZOFF',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vverhon').onclick = function (vverhon) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VONN',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vverhoff').onclick = function (vverhoff) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VOFF',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vlevo').onclick = function (vlevo) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VLEVO',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('bumer').onclick = function (bumer) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/BUMER',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('kasta').onclick = function (kasta) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/KASTA',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('dasboot').onclick = function (dasboot) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/DASBOOT',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('sirena').onclick = function (sirena) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/SIRENA',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('ala').onclick = function (ala) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/AlarmOff',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('bethoven').onclick = function (bethoven) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/BETHOVEN',true);xmlhttp.send();};" ;
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) { alert('Сюрприз!');" ;
//// 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 slid(newVal){\n";
javaScript+=" document.getElementById('valBox').innerHTML=newVal;\n";
javaScript+=" xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/SLID?val='+newVal,true);xmlhttp.send();";
/// 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+="<link rel='shortcut icon' type='image/x-icon' href='http://gansta-paradise.com/favicon.ico'>";
webSite+="<style> progress#temperaturepb {background: green;} progress::-webkit-progress-bar { background: red; } #Paket{color:green}button{border: solid;border-radius: 300px;border-color: green;font-size: 15px;font-family: -webkit-pictograph;background: #d5e0d3;width: 150px;}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;}progress#progbar { background: #551be2;}</style>";
webSite+=javaScript;
webSite+="<BODY onload='process()'>\n";
webSite+="ТАНК\n<br>";
webSite+="Время работы = <A ID='runtime'></A>\n<br>";
webSite+="Сила сигнала <A ID='Sila'></A>\n<br>"; // Сила сигнала WiFi
webSite+="ДАННЫЕ ТАНКА<br> <A ID='Batareya'></A>\n<br>"; // Напряжение батареи
webSite+="Алярма:<A ID='Paket'></A>\n<br>"; // Напряжение батареи
webSite+="Напруга:<A ID='Paket1'></A>\n<br>"; // Напряжение батареи
webSite+="<div id='sending'>\n";
webSite+="</div>\n";
webSite+="<p>Сила Сигнала</p>";
webSite+="<div class='progress'>";
webSite+=" <progress id='progbar' max='100' value='0'></progress>";
webSite+=" <div class='progress-value'></div>";
webSite+=" <div class='progress-bg'><div class='progress-bar'></div></div>";
webSite+="</div>";
webSite+="<br><span id='valBox'></span><input type='range' min='0' max='1000' step='1' oninput='slid(this.value)' onchange='slid(this.value)'>\n"; // это пример слайдера
webSite+="<br><table id='cepka'><tr>";
webSite+="<td><button id='vverhon' onclick='doFunction();'>VPERED";
webSite+="</button></td>";
webSite+="<td><button id='vverhoff' onclick='doFunction();'>NAZAD</button></td></tr>";
webSite+="<tr><td><button id='vnizon' onclick='doFunction();'>VPRAVO";
webSite+="</button><button id='vlevo' onclick='doFunction();'>VLEVO</button></td>";
webSite+="<td><button id='vnizoff' onclick='doFunction();'>STOP";
webSite+="</button></td></tr></table><br>";
webSite+="<table id='bumerang'><tr>";
webSite+="<td><button id='bumer' onclick='doFunction();'>Bumer";
webSite+="</button></td>";
webSite+="<td><button id='dasboot' onclick='doFunction();'>Dasboot</button></td></tr>";
webSite+="<tr><td><button id='kasta' onclick='doFunction();'>Kasta";
webSite+="</button></td>";
webSite+="<td><button id='sirena' onclick='doFunction();'>Sirena";
webSite+="</button></td></tr></table><br>";
webSite+="<table id='ala'><tr>";
webSite+="<td><button id='ala' onclick='doFunction();'>Alarm-on-off";
webSite+="</button></td>";
webSite+="<td><button id='bethoven' onclick='doFunction();'>Bethoven</button></td></tr>";
webSite+="</td></tr></table><br>";
webSite+="<p>ФУНКЦИИ ЗАПАСНЫЕ</p><br> <a href=\"ShlakOn\"><button>Reboot</button></a> <a href=\"TEMPERATURE\"><button>DATCHIK VLAZHNOSTY</button></a><br>";
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
XML+="<Sila2>"; // Сила сигнала WiFi
XML+=String(Sila);// Сила сигнала WiFi
XML+="</Sila2>"; // Сила сигнала 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+="<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+="</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();
ESP.wdtEnable(WDTO_8S);
EEPROM.begin(3512);
Serial.begin(115200);
// call sensor.begin() to initialize the library
//////////sensor
pinMode(LEVO1, OUTPUT);
pinMode(LEVO2, OUTPUT);
pinMode(PRAVO1, OUTPUT);
pinMode(PRAVO2, OUTPUT);
// pinMode(tonePin, OUTPUT);
pinMode(DETECTOR,INPUT);
digitalWrite(DETECTOR,LOW);
// digitalWrite(tonePin,LOW);
// pinMode(trigPin, OUTPUT);
// pinMode(echoPin, INPUT);
WiFi.softAP(ssid2, password2); // Создаём точку доступа
WiFi.begin(ssid,password); //Это вариант для подключения к существующей точке
while(WiFi.status()!=WL_CONNECTED){Serial.print(".");delay(500);}
WiFi.mode(WIFI_STA);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Establishing connection to WiFi..");
}
Serial.println("\n\nBOOTING ESP8266 ...");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("Station IP address: ");
Serial.println(WiFi.localIP()); // Вывод в монитор порта присвоенный IP sensor.begin();
server.on("/",handleWebsite);
server.on("/xml",handleXML);
server.on("/setESPval",handleESPval);
server.on("/TEMPERATURE", [](){
server.send(200, "text/html", webSite);
Serial.println("GET TEMPERATURE ...");
sending="GET TEMPERATURE";
vlazh=1;
});
server.on("/SLID", [](){
server.send(200, "text/html", webSite);
String message = "";
message +=server.arg(0);
Serial.println(message);
const int n = 10;
char *z = new char[n];
message.toCharArray(z,n);
deluha=atoi(z);
Serial.println(deluha);
});
server.on("/NIZON", [](){
server.send(200, "text/html", webSite);
Serial.println("PRAVO...");
digitalWrite (LEVO1, HIGH);
digitalWrite (LEVO2, LOW);
///digitalWrite (PRAVO1,HIGH);
/// digitalWrite (PRAVO2,LOW);
sending="PRAVO";
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/VLEVO", [](){
server.send(200, "text/html", webSite);
Serial.println("LEVO...");
//// digitalWrite (LEVO1, HIGH);
///digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,HIGH);
digitalWrite (PRAVO2,LOW);
sending="LEVO";
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/NIZOFF", [](){
server.send(200, "text/html", webSite);
Serial.println("STOP ...");
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
sending="STOP";
/////server.send(200, "text/html", webSite);
});
server.on("/VONN", [](){
server.send(200, "text/html", webSite);
Serial.println("VPERED...");
digitalWrite (LEVO1,HIGH);
digitalWrite (LEVO2,LOW);
digitalWrite (PRAVO1,HIGH);
digitalWrite (PRAVO2,LOW);
sending="VPERED";
///////////// server.send(200, "text/html", webSite);
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/VOFF", [](){
server.send(200, "text/html", webSite);
Serial.println(" NAZAD...");
digitalWrite (LEVO1,LOW);
digitalWrite (LEVO2,HIGH);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,HIGH);
sending="NAZAD";
//////////////// server.send(200, "text/html", webSite);
delay(deluha);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/BUMER", [](){
sending="BUUMER";
server.send(200, "text/html", webSite);
Serial.println("bumer");
// bumer();
});
server.on("/DASBOOT", [](){
sending="DASBOOT";
server.send(200, "text/html", webSite);
Serial.println(" DASBOOT");
// dasboot();
});
///////////////////////////////////////////////////////////////////////////////////new
/////////////sigi/////////////////////////////
///////server.on("/GETS", HTTP_GET, []{
server.on("/AlarmOff", [](){
server.send(200, "text/html", webSite);
Serial.println("priem on");
if(alarmaoff==0){
sending ="ALARMA-OFF";}
else{
sending ="ALARMA-ONN";
}
alarmaoff = ~alarmaoff;
Serial.println(alarmaoff);
});
server.on("/BETHOVEN", [](){
server.send(200, "text/html", webSite);
Serial.println("DETHOV");
sending ="BETHOVEN-ONN";
//bet();
});
server.on("/KASTA", [](){
sending="KASTA";
server.send(200, "text/html", webSite);
// muz();
});
//////////////////////////////
///////////brutshlak
server.on("/ShlakOn", [](){
sending ="Shlak-Brut-Long-Wait";
Serial.println(" Send Reboot");
server.send(200, "text/html", webSite);
ESP.restart();
///ESP.reset() ;
/////BrutSh2
});
server.on("/BrutSh2", [](){
sending ="Shlak-Brut-Long-Wait";
Serial.println(" Send Shlak code");
server.send(200, "text/html", webSite);
/////BrutSh2
});
//////////////////
//////////ShlakSendOff
server.on("/SIRENA", [](){
server.send(200, "text/html", webSite);
// siren();
});
//////////////////
server.begin();
}
void loop() {
ESP.wdtFeed();
server.handleClient();
// digitalWrite(tonePin,LOW);
if(millis()>wait000){
buildXML();
wait000=millis()+1000UL;
// digitalWrite(tonePin,LOW);
}
if(millis()>wait001){
wait001=millis()+300; //Обновляем значения раз в 300 милисекунд
// digitalWrite(tonePin,LOW);
}
codan2 ="NO DETECT";
}
олд
Код: Выбрать все
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <EEPROM.h>
#define LEVO1 D8 ////
#define LEVO2 D7 ////
#define PRAVO1 D6 ///
#define PRAVO2 D5 ///
#define DETECTOR D0 ///
#define tonePin D2 //d5
ESP8266WebServer server(80);
const char* ssid2="TANK8266"; //название точки доступа
const char* password2=""; // пароль не будем писать
//const char* ssid="Gansta-Paradise.com"; // здесь пишем название домашней точки доступа
//const char* password="123412345"; // и пароль
String webSite,javaScript,XML;
unsigned long wait000=0UL,wait001=1000UL;
int Sila, SilaLow = -43; // Контроль силы сигнала WiFi
int Batareya, BatLow = 400; //Контроль напряжения батареи
float Povorot = 0.8, Trimer; // Переменные для значений поворота и тримера двигателя
String Bat, SilaW;
////brut shlak;
int stoppriem=1;
int muzi ;
int pir = 0;
int alarma = 0;
int alarmaoff =-1;
int vlazh = 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
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 sending ="nothing no send";
String button ="";
String gasa="zagasa";
int shlakoffpriem=1;
int stopsigi =1;
///////////sensor vlazhnosti
float temperature;
float humundity;
int schetvl=0;
///////////////
void codanz(){
codan;
}
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('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('Sila2')[0].firstChild.nodeValue;\n";// Сила сигнала WiFi
javaScript+=" document.getElementById('progbar').value=-xmlmsg;\n"; // Сила сигнала WiFi
javaScript+=" xmlmsg=xmlDoc.getElementsByTagName('Batareya')[0].firstChild.nodeValue;\n";// Напряжение батареи
javaScript+=" document.getElementById('Batareya').innerHTML=xmlmsg;\n"; // Напряжение батареи
javaScript+=" document.getElementById('vnizon').onclick = function (nizon) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZON',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vnizoff').onclick = function (nizoff) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/NIZOFF',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vverhon').onclick = function (vverhon) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VONN',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vverhoff').onclick = function (vverhoff) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VOFF',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('vlevo').onclick = function (vlevo) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/VLEVO',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('bumer').onclick = function (bumer) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/BUMER',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('kasta').onclick = function (kasta) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/KASTA',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('dasboot').onclick = function (dasboot) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/DASBOOT',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('sirena').onclick = function (sirena) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/SIRENA',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('ala').onclick = function (ala) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/AlarmOff',true);xmlhttp.send();};" ;
javaScript+=" document.getElementById('bethoven').onclick = function (bethoven) { xmlhttp=new XMLHttpRequest();xmlhttp.open('GET','/BETHOVEN',true);xmlhttp.send();};" ;
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) { alert('Сюрприз!');" ;
//// 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+="</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='http://gansta-paradise.com/favicon.ico'>";
webSite+="<style> progress#temperaturepb {background: green;} progress::-webkit-progress-bar { background: red; } #Paket{color:green}button{border: solid;border-radius: 300px;border-color: green;font-size: 15px;font-family: -webkit-pictograph;background: #d5e0d3;width: 150px;}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;}progress#progbar { background: #551be2;}</style>";
webSite+=javaScript;
webSite+="<BODY onload='process()'>\n";
webSite+="ТАНК\n<br>";
webSite+="Время работы = <A ID='runtime'></A>\n<br>";
webSite+="Сила сигнала <A ID='Sila'></A>\n<br>"; // Сила сигнала WiFi
webSite+="ДАННЫЕ ТАНКА<br> <A ID='Batareya'></A>\n<br>"; // Напряжение батареи
webSite+="Алярма:<A ID='Paket'></A>\n<br>"; // Напряжение батареи
webSite+="Напруга:<A ID='Paket1'></A>\n<br>"; // Напряжение батареи
webSite+="<div id='sending'>\n";
webSite+="</div>\n";
webSite+="<p>Сила Сигнала</p>";
webSite+="<div class='progress'>";
webSite+=" <progress id='progbar' max='100' value='0'></progress>";
webSite+=" <div class='progress-value'></div>";
webSite+=" <div class='progress-bg'><div class='progress-bar'></div></div>";
webSite+="</div>";
webSite+="<br><table id='cepka'><tr>";
webSite+="<td><button id='vverhon' onclick='doFunction();'>VPERED";
webSite+="</button></td>";
webSite+="<td><button id='vverhoff' onclick='doFunction();'>NAZAD</button></td></tr>";
webSite+="<tr><td><button id='vnizon' onclick='doFunction();'>VPRAVO";
webSite+="</button><button id='vlevo' onclick='doFunction();'>VLEVO</button></td>";
webSite+="<td><button id='vnizoff' onclick='doFunction();'>STOP";
webSite+="</button></td></tr></table><br>";
webSite+="<table id='bumerang'><tr>";
webSite+="<td><button id='bumer' onclick='doFunction();'>Bumer";
webSite+="</button></td>";
webSite+="<td><button id='dasboot' onclick='doFunction();'>Dasboot</button></td></tr>";
webSite+="<tr><td><button id='kasta' onclick='doFunction();'>Kasta";
webSite+="</button></td>";
webSite+="<td><button id='sirena' onclick='doFunction();'>Sirena";
webSite+="</button></td></tr></table><br>";
webSite+="<table id='ala'><tr>";
webSite+="<td><button id='ala' onclick='doFunction();'>Alarm-on-off";
webSite+="</button></td>";
webSite+="<td><button id='bethoven' onclick='doFunction();'>Bethoven</button></td></tr>";
webSite+="</td></tr></table><br>";
webSite+="<p>ФУНКЦИИ ЗАПАСНЫЕ</p><br> <a href=\"ShlakOn\"><button>Reboot</button></a> <a href=\"TEMPERATURE\"><button>DATCHIK VLAZHNOSTY</button></a><br>";
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
XML+="<Sila2>"; // Сила сигнала WiFi
XML+=String(Sila);// Сила сигнала WiFi
XML+="</Sila2>"; // Сила сигнала 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+="<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+="</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();
ESP.wdtEnable(WDTO_8S);
EEPROM.begin(3512);
Serial.begin(115200);
// call sensor.begin() to initialize the library
//////////sensor
pinMode(LEVO1, OUTPUT);
pinMode(LEVO2, OUTPUT);
pinMode(PRAVO1, OUTPUT);
pinMode(PRAVO2, OUTPUT);
pinMode(tonePin, OUTPUT);
pinMode(DETECTOR,INPUT);
digitalWrite(DETECTOR,LOW);
digitalWrite(tonePin,LOW);
WiFi.softAP(ssid2, password2); // Создаём точку доступа
//WiFi.begin(ssid,password); //Это вариант для подключения к существующей точке
////while(WiFi.status()!=WL_CONNECTED){Serial.print(".");delay(500);}
////WiFi.mode(WIFI_STA);
//while (WiFi.status() != WL_CONNECTED) {
// delay(1000);
// Serial.println("Establishing connection to WiFi..");
// }
//
//
// Serial.println("\n\nBOOTING ESP8266 ...");
// Serial.print("Connected to ");
// Serial.println(ssid);
Serial.print("Station IP address: ");
Serial.println(WiFi.localIP()); // Вывод в монитор порта присвоенный IP sensor.begin();
server.on("/",handleWebsite);
server.on("/xml",handleXML);
server.on("/setESPval",handleESPval);
server.on("/TEMPERATURE", [](){
server.send(200, "text/html", webSite);
Serial.println("GET TEMPERATURE ...");
sending="GET TEMPERATURE";
vlazh=1;
});
server.on("/NIZON", [](){
server.send(200, "text/html", webSite);
Serial.println("PRAVO...");
digitalWrite (LEVO1, HIGH);
digitalWrite (LEVO2, LOW);
///digitalWrite (PRAVO1,HIGH);
/// digitalWrite (PRAVO2,LOW);
sending="PRAVO";
delay(150);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/VLEVO", [](){
server.send(200, "text/html", webSite);
Serial.println("LEVO...");
//// digitalWrite (LEVO1, HIGH);
///digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,HIGH);
digitalWrite (PRAVO2,LOW);
sending="LEVO";
delay(150);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/NIZOFF", [](){
server.send(200, "text/html", webSite);
Serial.println("STOP ...");
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
sending="STOP";
/////server.send(200, "text/html", webSite);
});
server.on("/VONN", [](){
server.send(200, "text/html", webSite);
Serial.println("VPERED...");
digitalWrite (LEVO1,HIGH);
digitalWrite (LEVO2,LOW);
digitalWrite (PRAVO1,HIGH);
digitalWrite (PRAVO2,LOW);
sending="VPERED";
///////////// server.send(200, "text/html", webSite);
delay(300);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/VOFF", [](){
server.send(200, "text/html", webSite);
Serial.println(" NAZAD...");
digitalWrite (LEVO1,LOW);
digitalWrite (LEVO2,HIGH);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,HIGH);
sending="NAZAD";
//////////////// server.send(200, "text/html", webSite);
delay(300);
digitalWrite (LEVO1, LOW);
digitalWrite (LEVO2, LOW);
digitalWrite (PRAVO1,LOW);
digitalWrite (PRAVO2,LOW);
});
server.on("/BUMER", [](){
sending="BUUMER";
server.send(200, "text/html", webSite);
Serial.println("bumer");
bumer();
});
server.on("/DASBOOT", [](){
sending="DASBOOT";
server.send(200, "text/html", webSite);
Serial.println(" DASBOOT");
dasboot();
});
///////////////////////////////////////////////////////////////////////////////////new
/////////////sigi/////////////////////////////
///////server.on("/GETS", HTTP_GET, []{
server.on("/AlarmOff", [](){
server.send(200, "text/html", webSite);
Serial.println("priem on");
if(alarmaoff==0){
sending ="ALARMA-OFF";}
else{
sending ="ALARMA-ONN";
}
alarmaoff = ~alarmaoff;
Serial.println(alarmaoff);
});
server.on("/BETHOVEN", [](){
server.send(200, "text/html", webSite);
Serial.println("DETHOV");
sending ="BETHOVEN-ONN";
bet();
});
server.on("/KASTA", [](){
sending="KASTA";
server.send(200, "text/html", webSite);
muz();
});
//////////////////////////////
///////////brutshlak
server.on("/ShlakOn", [](){
sending ="Shlak-Brut-Long-Wait";
Serial.println(" Send Reboot");
server.send(200, "text/html", webSite);
ESP.restart();
///ESP.reset() ;
/////BrutSh2
});
server.on("/BrutSh2", [](){
sending ="Shlak-Brut-Long-Wait";
Serial.println(" Send Shlak code");
server.send(200, "text/html", webSite);
/////BrutSh2
});
//////////////////
//////////ShlakSendOff
server.on("/SIRENA", [](){
server.send(200, "text/html", webSite);
siren();
});
//////////////////
server.begin();
}
void loop() {
ESP.wdtFeed();
server.handleClient();
digitalWrite(tonePin,LOW);
if(millis()>wait000){
buildXML();
wait000=millis()+1000UL;
digitalWrite(tonePin,LOW);
}
if(millis()>wait001){
wait001=millis()+300; //Обновляем значения раз в 300 милисекунд
digitalWrite(tonePin,LOW);
}
codan2 ="NO DETECT";
pir = digitalRead(DETECTOR);
if(alarmaoff==0){
if(pir>0){
Serial.println(pir);
//// pir = 0;
Serial.println("datchik srabotal");
Serial.println(pir);
tone(tonePin, 2793, 2571.426);
pir = 0;
alarma++;
codan2 ="ALARMA HUILI PIDORI";
}}
digitalWrite(tonePin,LOW);
}
//////////////////muzon////////////////////////
void bumer (){
tone(tonePin, 1244, 156.2499375);
delay(173.611041667);
tone(tonePin, 1479, 624.99975);
delay(694.444166667);
delay(520.833125);
tone(tonePin, 1479, 156.2499375);
delay(173.611041667);
tone(tonePin, 1244, 624.99975);
delay(694.444166667);
delay(520.833125);
tone(tonePin, 1661, 156.2499375);
delay(173.611041667);
tone(tonePin, 1479, 156.2499375);
delay(173.611041667);
tone(tonePin, 1661, 156.2499375);
delay(173.611041667);
tone(tonePin, 1479, 156.2499375);
delay(173.611041667);
tone(tonePin, 1661, 156.2499375);
delay(173.611041667);
tone(tonePin, 1479, 156.2499375);
delay(173.611041667);
tone(tonePin, 1661, 156.2499375);
delay(173.611041667);
tone(tonePin, 1479, 156.2499375);
delay(173.611041667);
tone(tonePin, 1661, 156.2499375);
delay(173.611041667);
tone(tonePin, 1864, 624.99975);
delay(694.444166667);
delay(520.833125);
}
void dasboot(){
}
void muz(){
tone(tonePin, 466, 118.538519531);
delay(131.709466146);
delay(43.1462044271);
tone(tonePin, 523, 138.294939453);
delay(153.661043837);
delay(37.8475477431);
tone(tonePin, 554, 181.895314453);
delay(202.105904948);
delay(18.1668229167);
tone(tonePin, 523, 133.526148438);
delay(148.362387153);
delay(21.951577691);
tone(tonePin, 466, 131.482380859);
delay(146.091534288);
delay(53.7435177951);
tone(tonePin, 369, 334.496626953);
delay(371.662918837);
delay(18.1668229167);
tone(tonePin, 349, 1100.90946875);
delay(1223.23274306);
delay(100.674476997);
tone(tonePin, 554, 173.720244141);
delay(193.02249349);
delay(22.7085286458);
tone(tonePin, 622, 135.569916016);
delay(150.633240017);
delay(34.8197439236);
tone(tonePin, 554, 565.442363281);
delay(628.269292535);
delay(151.390190972);
tone(tonePin, 622, 143.744986328);
delay(159.716651476);
delay(35.5766948785);
tone(tonePin, 698, 146.470009766);
delay(162.744455295);
delay(33.3058420139);
tone(tonePin, 622, 393.084630859);
delay(436.760700955);
delay(30.2780381944);
tone(tonePin, 466, 119.90103125);
delay(133.223368056);
delay(34.8197439236);
tone(tonePin, 523, 132.163636719);
delay(146.848485243);
delay(18.1668229167);
tone(tonePin, 554, 153.963824219);
delay(171.070915799);
delay(17.4098719618);
tone(tonePin, 523, 142.382474609);
delay(158.202749566);
delay(21.951577691);
tone(tonePin, 466, 142.382474609);
delay(158.202749566);
delay(30.2780381944);
tone(tonePin, 369, 366.515652344);
delay(407.239613715);
delay(24.2224305556);
tone(tonePin, 349, 1499.44414648);
delay(1666.04905165);
delay(223.300531684);
tone(tonePin, 277, 508.898126953);
delay(565.442363281);
delay(15.8959700521);
tone(tonePin, 311, 658.093160156);
delay(731.214622396);
delay(68.1255859375);
tone(tonePin, 466, 118.538519531);
delay(131.709466146);
delay(43.1462044271);
tone(tonePin, 523, 138.294939453);
delay(153.661043837);
delay(37.8475477431);
tone(tonePin, 554, 181.895314453);
delay(202.105904948);
delay(18.1668229167);
tone(tonePin, 523, 133.526148438);
delay(148.362387153);
delay(21.951577691);
tone(tonePin, 466, 131.482380859);
delay(146.091534288);
delay(53.7435177951);
tone(tonePin, 369, 334.496626953);
delay(371.662918837);
delay(18.1668229167);
tone(tonePin, 349, 1100.90946875);
delay(1223.23274306);
delay(100.674476997);
tone(tonePin, 554, 173.720244141);
delay(193.02249349);
delay(22.7085286458);
tone(tonePin, 622, 135.569916016);
delay(150.633240017);
delay(34.8197439236);
tone(tonePin, 554, 565.442363281);
delay(628.269292535);
delay(116.570447049);
tone(tonePin, 622, 143.744986328);
delay(159.716651476);
delay(35.5766948785);
tone(tonePin, 698, 146.470009766);
delay(162.744455295);
delay(33.3058420139);
tone(tonePin, 622, 393.084630859);
delay(436.760700955);
delay(65.0977821181);
tone(tonePin, 466, 119.90103125);
delay(133.223368056);
delay(34.8197439236);
tone(tonePin, 523, 132.163636719);
delay(146.848485243);
delay(18.1668229167);
delay(188.48078776);
tone(tonePin, 554, 3.40627929688);
delay(3.78475477431);
tone(tonePin, 523, 138.976195313);
delay(154.417994792);
delay(21.951577691);
tone(tonePin, 466, 142.382474609);
delay(158.202749566);
delay(30.2780381944);
tone(tonePin, 369, 366.515652344);
delay(407.239613715);
delay(24.2224305556);
tone(tonePin, 349, 1499.44414648);
delay(1666.04905165);
delay(153.661043837);
tone(tonePin, 277, 570.211154297);
delay(633.567949219);
delay(17.4098719618);
tone(tonePin, 311, 658.093160156);
delay(731.214622396);
}
void siren() {
tone(tonePin, 2793, 2571.426);
delay(2857.14);
tone(tonePin, 3951, 241.0711875);
delay(267.856875);
delay(89.285625);
tone(tonePin, 3951, 160.714125);
delay(178.57125);
delay(178.57125);
tone(tonePin, 3951, 160.714125);
delay(178.57125);
delay(178.57125);
tone(tonePin, 3951, 241.0711875);
delay(267.856875);
delay(89.285625);
delay(2142.855);
tone(tonePin, 2793, 241.0711875);
delay(267.856875);
tone(tonePin, 3520, 401.7853125);
delay(446.428125);
}
void bet(){
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 174, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 174, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 174, 263.15775);
delay(292.3975);
tone(tonePin, 233, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 174, 263.15775);
delay(292.3975);
tone(tonePin, 233, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 207, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 146, 263.15775);
delay(292.3975);
tone(tonePin, 207, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 110, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 329, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 131.578875);
delay(146.19875);
tone(tonePin, 329, 131.578875);
delay(146.19875);
tone(tonePin, 329, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 329, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 293, 131.578875);
delay(146.19875);
tone(tonePin, 329, 131.578875);
delay(146.19875);
tone(tonePin, 329, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 349, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 174, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 329, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 391, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 155, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 155, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 155, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 311, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 261, 131.578875);
delay(146.19875);
tone(tonePin, 311, 131.578875);
delay(146.19875);
tone(tonePin, 311, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 277, 263.15775);
delay(292.3975);
tone(tonePin, 155, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 277, 263.15775);
delay(292.3975);
tone(tonePin, 155, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 277, 263.15775);
delay(292.3975);
tone(tonePin, 311, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 277, 131.578875);
delay(146.19875);
tone(tonePin, 311, 131.578875);
delay(146.19875);
tone(tonePin, 311, 263.15775);
delay(292.3975);
tone(tonePin, 207, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 97, 263.15775);
delay(292.3975);
tone(tonePin, 207, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 92, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 233, 263.15775);
delay(292.3975);
tone(tonePin, 146, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 233, 263.15775);
delay(292.3975);
tone(tonePin, 311, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 233, 263.15775);
delay(292.3975);
tone(tonePin, 146, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 233, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 184, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 146, 263.15775);
delay(292.3975);
tone(tonePin, 184, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 233, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 233, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 391, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 415, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 311, 263.15775);
delay(292.3975);
tone(tonePin, 130, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 311, 263.15775);
delay(292.3975);
tone(tonePin, 155, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 311, 263.15775);
delay(292.3975);
tone(tonePin, 369, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 311, 263.15775);
delay(292.3975);
tone(tonePin, 391, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 391, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 415, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 311, 263.15775);
delay(292.3975);
tone(tonePin, 130, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 311, 263.15775);
delay(292.3975);
tone(tonePin, 155, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 311, 263.15775);
delay(292.3975);
tone(tonePin, 369, 263.15775);
delay(292.3975);
tone(tonePin, 261, 263.15775);
delay(292.3975);
tone(tonePin, 311, 263.15775);
delay(292.3975);
tone(tonePin, 391, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 391, 263.15775);
delay(292.3975);
tone(tonePin, 233, 263.15775);
delay(292.3975);
tone(tonePin, 277, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 233, 263.15775);
delay(292.3975);
tone(tonePin, 277, 263.15775);
delay(292.3975);
tone(tonePin, 391, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 329, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 329, 263.15775);
delay(292.3975);
tone(tonePin, 349, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 174, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 311, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 233, 263.15775);
delay(292.3975);
tone(tonePin, 155, 263.15775);
delay(292.3975);
tone(tonePin, 195, 263.15775);
delay(292.3975);
tone(tonePin, 233, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 174, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 146, 263.15775);
delay(292.3975);
tone(tonePin, 174, 263.15775);
delay(292.3975);
tone(tonePin, 246, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 146, 263.15775);
delay(292.3975);
tone(tonePin, 174, 263.15775);
delay(292.3975);
tone(tonePin, 110, 263.15775);
delay(292.3975);
tone(tonePin, 146, 263.15775);
delay(292.3975);
tone(tonePin, 174, 263.15775);
delay(292.3975);
tone(tonePin, 110, 263.15775);
delay(292.3975);
tone(tonePin, 146, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 110, 263.15775);
delay(292.3975);
tone(tonePin, 138, 263.15775);
delay(292.3975);
tone(tonePin, 164, 263.15775);
delay(292.3975);
tone(tonePin, 146, 263.15775);
delay(292.3975);
tone(tonePin, 174, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 174, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 349, 263.15775);
delay(292.3975);
tone(tonePin, 440, 263.15775);
delay(292.3975);
tone(tonePin, 293, 263.15775);
delay(292.3975);
tone(tonePin, 349, 131.578875);
delay(146.19875);
tone(tonePin, 440, 131.578875);
delay(146.19875);
tone(tonePin, 440, 263.15775);
delay(292.3975);
tone(tonePin, 277, 263.15775);
delay(292.3975);
tone(tonePin, 391, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
delay(292.3975);
tone(tonePin, 277, 263.15775);
delay(292.3975);
tone(tonePin, 391, 263.15775);
delay(292.3975);
tone(tonePin, 220, 263.15775);
}