#include <ESP8266WiFi.h>
#include <Wire.h>
#include <ArduinoHttpClient.h>
#include <ESP8266WebServer.h>
#include <WiFiClient.h>
#include <EEPROM.h>
#define EEPROM_I2C_ADDRESS 0x50
#define trigger D0
#define LED D3
#define power D6
#define VEH_NUM 10
#define VEH_TYPE 8
#define NAME 16
#define ADD 10
#define ITEM 8
#define CHARGES 5
#define RST 5
#define WET 6
#define KEY 13
#define TIME 16
#define Ad_lsb_1st 65533
#define Ad_msb_1st 65532
#define Ad_2nd_lsb 65530
#define Ad_2nd_msb 65529
#define Msb_Count1st 65528
#define Lsb_Count1st 65527
#define Msb_Count2nd 65526
#define Lsb_Count2nd 65525
#define Msb_Count3rd 65521
#define Lsb_Count3rd 65520
#define Ad_man_lsb 65518
#define Ad_man_msb 65517
#define rst_add 65500
#define Key_msb 9001
#define Key_lsb 9002
#define Strt_1st_wet 9004
#define Stop_1st_wet 26604
#define Strt_2nd_wet 26606
#define Stop_2d_wet 45506
#define Strt_man_wet 45508
#define Stop_man_wet 65410
//---host
String a;
String p;
//Variables
int i = 0;
const char* ssid = "text";
const char* passphrase = "text";
String st;
String content;
String epass = "";
String esid;
//Function Decalration
bool testWifi(void);
void launchWeb(void);
void setupAP(void);
ESP8266WebServer server(80);
String search="";
unsigned short int add,lastadd,offadd,from,temp,count_1st,count_2nd,count_3rd;
String data ="";
String charges ="";
String charges_2 ="";
String first_weight_time ="";
String gross ="";
String item="";
String net ="";
String party_address="";
String party_name="";
String rstNo ="";
String second_weight_time ="";
String tare="";
String vehicle_type ="";
String vehile_no="";
String weighbridgeId ="012555";
String local_rst_no ="";
String lable="";
String chek="";
String Wet_type="";
byte high,low;
const char serverAddress[] = "jbcweighingscale.com";
int port = 80;
String postData="";
String path ="/admin_ws/api.php/PARAM-data";
String contentType ="application/x-www-form-urlencoded";
int statusCode,state,k,l,s,m,n,v;
String response="";
WiFiClient wifi;
HttpClient client = HttpClient(wifi, serverAddress, port);
int status = WL_IDLE_STATUS;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Wire.begin(D2,D1);
Serial.println("Disconnecting previously connected WiFi");
WiFi.disconnect();
EEPROM.begin(512); //Initialasing EEPROM
delay(10);
Serial.println("Startup");
pinMode(LED,OUTPUT);
pinMode(trigger,INPUT_PULLUP);
pinMode(power,OUTPUT);
digitalWrite(power,LOW);
//---------------------------------------- Read eeprom for ssid and pass
Serial.println("Reading EEPROM ssid");
for (int i = 0; i < 32; ++i)
{
esid += char(EEPROM.read(i));
}
Serial.println();
Serial.print("SSID: ");
Serial.println(esid);
Serial.println("Reading EEPROM pass");
for (int i = 32; i < 96; ++i)
{
epass += char(EEPROM.read(i));
}
Serial.print("PASS: ");
Serial.println(epass);
WiFi.begin(esid.c_str(), epass.c_str());
if(digitalRead(trigger)==0){
digitalWrite(power,HIGH);
digitalWrite(LED,HIGH);
launchWeb();
setupAP();
}
while (digitalRead(trigger)==0)
{
Serial.println("Seting wifi SSID ,Treigger on");
delay(100);
server.handleClient();
}
delay(500);
Serial.println("welcome");
}
//----------------------------------------------- Fuctions used for WiFi credentials saving and connecting to it which you do not need to change
bool testWifi(void)
{
int c = 0;
Serial.println("Waiting for Wifi to connect");
while ( c < 20 ) {
if (WiFi.status() == WL_CONNECTED)
{
return true;
}
delay(500);
Serial.print("*");
c++;
}
Serial.println("");
Serial.println("Connect timed out, opening AP");
return false;
}
void launchWeb()
{
Serial.println("");
if (WiFi.status() == WL_CONNECTED)
Serial.println("WiFi connected");
Serial.print("Local IP: ");
Serial.println(WiFi.localIP());
Serial.print("SoftAP IP: ");
Serial.println(WiFi.softAPIP());
createWebServer();
// Start the server
server.begin();
Serial.println("Server started");
}
void setupAP(void)
{
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
int n = WiFi.scanNetworks();
Serial.println("scan done");
if (n == 0)
Serial.println("no networks found");
else
{
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i)
{
// Print SSID and RSSI for each network found
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*");
delay(10);
}
}
Serial.println("");
st = "<ol>";
for (int i = 0; i < n; ++i)
{
// Print SSID and RSSI for each network found
st += "<li>";
st += WiFi.SSID(i);
st += " (";
st += WiFi.RSSI(i);
st += ")";
st += (WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*";
st += "</li>";
}
st += "</ol>";
delay(100);
WiFi.softAP("JBC Server", "jbc12345");
Serial.println("softap");
launchWeb();
Serial.println("over");
}
void createWebServer()
{
{
server.on("/", []() {
IPAddress ip = WiFi.softAPIP();
String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]);
content = "<!DOCTYPE HTML>\r\n<html>Hello from JBC ";
content += "<form action=\"/scan\" method=\"POST\"><input type=\"submit\" value=\"scan\"></form>";
content += ipStr;
content += "<p>";
content += st;
content += "</p><form method='get' action='setting'><label>SSID: </label><input name='ssid' length=32><input name='pass' length=64><input type='submit'></form>";
content += "</html>";
server.send(200, "text/html", content);
});
server.on("/scan", []() {
//setupAP();
IPAddress ip = WiFi.softAPIP();
String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]);
content = "<!DOCTYPE HTML>\r\n<html>go back";
server.send(200, "text/html", content);
});
server.on("/setting", []() {
String qsid = server.arg("ssid");
String qpass = server.arg("pass");
if (qsid.length() > 0 && qpass.length() > 0) {
Serial.println("clearing eeprom");
for (int i = 0; i < 96; ++i) {
EEPROM.write(i, 0);
}
Serial.println(qsid);
Serial.println("");
Serial.println(qpass);
Serial.println("");
Serial.println("writing eeprom ssid:");
for (int i = 0; i < qsid.length(); ++i)
{
EEPROM.write(i, qsid[i]);
Serial.print("Wrote: ");
Serial.println(qsid[i]);
}
Serial.println("writing eeprom pass:");
for (int i = 0; i < qpass.length(); ++i)
{
EEPROM.write(32 + i, qpass[i]);
Serial.print("Wrote: ");
Serial.println(qpass[i]);
}
EEPROM.commit();
content = "{\"Success\":\"saved to eeprom... reset to boot into new wifi\"}";
statusCode = 200;
while(digitalRead(trigger)==0){
digitalWrite(LED,HIGH);
digitalWrite(power,HIGH);
delay(100);
digitalWrite(LED,LOW);
digitalWrite(power,LOW);
delay(100);
}
ESP.reset();
} else {
content = "{\"Error\":\"404 not found\"}";
statusCode = 404;
Serial.println("Sending 404");
}
server.sendHeader("Access-Control-Allow-Origin", "*");
server.send(statusCode, "application/json", content);
});
}
}
//---------------------------------------------------------------------------------Write byte---------------------------------------------------------------------------------------------
void writebyte(unsigned short int address, byte val)
{
Wire.beginTransmission(EEPROM_I2C_ADDRESS);
Wire.write((unsigned short int)(address >> 8)); // MSB
Wire.write((unsigned short int)(address & 0xFF)); // lSB
Wire.write(val);
Wire.endTransmission();
delay(6);
}
//---------------------------------------------------------------------------------Write String -----------------------------------------------------------------------------------------
void write_string(unsigned short int address, String val){
Serial.println("writing data");
Serial.println(val);
for (int x=0;x<val.length();x++){
writebyte(address,val[x]);
address++;
}
}
//-----------------------------------------------------------------------------------READ Byte -------------------------------------------------------------------------------------------------------------
byte readbyte(unsigned short int address)
{
byte rData = 0xFF;
Wire.beginTransmission(EEPROM_I2C_ADDRESS);
Wire.write(( unsigned short int)(address >> 8)); // MSB
Wire.write((unsigned short int)(address & 0xFF)); // LSB
Wire.endTransmission();
Wire.requestFrom(EEPROM_I2C_ADDRESS, address);
rData = Wire.read();
return rData;
delay(6);
}
////---------------------------------------------------------------------------------Read Strign------------------------------------------------------------------------------------------
String read_string(unsigned short int address,char len){
Serial.println("reading data");
String r="";
for(unsigned short int i=0;i<len;i++){
r+=char(readbyte(address));
address++;
}
Serial.println(r);
return r;
}
//--------------------------------------------------------Post 1st weightment data-----------------------------------------------------------------------------------------------------
void send_1stweight_data(){
postData="tag=addData&data=charges="+charges+"#charges_2="+charges_2+"#first_weight_time="+first_weight_time+"#gross="+gross+"#item="+item+"#net="+net+"#party_address="+party_address+"#party_name="+party_name+"#rstNo="+rstNo+"#second_weight_time="+second_weight_time+"#tare="+tare+"#vehicle_type="+vehicle_type +"#vehile_no="+vehile_no+"#weighbridgeId="+weighbridgeId+"#local_rst_no="+local_rst_no;
Serial.println("Making Data Upload FOR FIRST WEIGHT Request......");
client.post(path, contentType, postData);
statusCode = client.responseStatusCode();
response = client.responseBody();
rstNo =response;
Serial.print("Key no.: ");
Serial.println(rstNo);
Serial.println(rstNo.length());
Serial.print("Status code: ");
Serial.println(statusCode);
Serial.print("Response: ");
Serial.println(response);
Serial.println(response.length());
return;
}
//----------------------------------------------------------Post 2nd Weightment Data------------------------------------------------------------------------------------------------------
void send_2ndWet_data(){
postData="tag=addData&data=rstNo="+rstNo+"#second_weight_time="+second_weight_time+"#tare="+tare+"#charges_2="+charges_2+"#first_weight_time="+first_weight_time+"#net="+net+"#gross="+gross+"#weighbridgeId="+weighbridgeId;
Serial.println("Making Data Upload SECOND WEIGHT Request......");
Serial.println(rstNo);
Serial.println(gross);
Serial.println(tare);
Serial.println(net);
Serial.println(charges_2);
Serial.println(first_weight_time);
Serial.println(second_weight_time);
Serial.println(weighbridgeId);
client.post(path, contentType, postData);
statusCode = client.responseStatusCode();
response = client.responseBody();
rstNo =client.responseBody();
Serial.print("Status code: ");
Serial.println(statusCode);
Serial.print("Response: ");
Serial.println(response);
Serial.println(response.length());
return;
}
//----------------------------------------------------------------------------Save first Weightment Data----------------------------------------------------------------------------------
void save_1st(){
delay(6);
high= readbyte(Ad_msb_1st);
low= readbyte(Ad_lsb_1st);
Serial.print("write lable at add=");
offadd=word(high,low);
Serial.println(offadd);
lable="@1";
Serial.println(lable);
delay(6);
write_string(offadd,lable);
offadd+=lable.length();
write_string(offadd,local_rst_no);
Serial.println(local_rst_no);
offadd+=RST;
write_string(offadd,vehile_no);
Serial.println(vehile_no);
offadd+=VEH_NUM;
write_string(offadd,vehicle_type);
Serial.println(vehicle_type);
offadd+=VEH_TYPE;
write_string(offadd,party_name);
Serial.println(party_name);
offadd+=NAME;
write_string(offadd,party_address);
Serial.println(party_address);
offadd+=ADD;
write_string(offadd,item);
Serial.println(item);
offadd+=ITEM;
if (Wet_type=="T"){
Serial.print("Saving Tare: ");
write_string(offadd,Wet_type);
Serial.println(Wet_type);
offadd+=1;
write_string(offadd,tare);
Serial.println(tare);
offadd+=WET;
write_string(offadd,first_weight_time);
Serial.println(first_weight_time);
}
if (Wet_type=="G"){
Serial.print("Saing Gross: ");
write_string(offadd,Wet_type);
Serial.println(Wet_type);
offadd+=1;
write_string(offadd,gross);
Serial.println(gross);
offadd+=WET;
write_string(offadd,second_weight_time);
Serial.println(second_weight_time);
}
offadd+=TIME;
write_string(offadd,charges);
Serial.println(charges);
offadd+=CHARGES+1;
if(offadd>=Stop_1st_wet){Serial.print("memory full");offadd=Strt_1st_wet;}
high=highByte(offadd);
low=lowByte(offadd);
writebyte(Ad_msb_1st, high);
writebyte(Ad_lsb_1st, low);
high= readbyte(Ad_msb_1st);
low= readbyte(Ad_lsb_1st);
Serial.print("last add");
offadd=word(high,low);
Serial.println(offadd);
Serial.println("Data Save On Memory");
count_1st++;
high=highByte(count_1st);
low=lowByte(count_1st);
writebyte(Msb_Count1st , high);
writebyte(Lsb_Count1st, low);
Serial.print("total ofliine 1ST wet entery = ");
Serial.println(count_1st);
vehicle_type="";
party_address="";
data="";
local_rst_no="";
vehile_no="";
party_name="";
item="";
Wet_type="";
rstNo="";
tare="";
gross="";
first_weight_time="";
charges="";
lable="";
second_weight_time="";
charges_2="";
delay(6);
return;
}
//----------------------------------------------------------------Save 2nd Weightmetn Data-------------------------------------------------------------------------------------------------
void save_2nd(){
delay(6);
high= readbyte(Ad_2nd_msb );
low= readbyte(Ad_2nd_lsb);
Serial.print("write 2nd lable at add=");
offadd=word(high,low);
Serial.println(offadd);
lable="@2";
Serial.println(lable);
delay(6);
write_string(offadd,lable);
offadd+=lable.length();
write_string(offadd,local_rst_no);
Serial.println(local_rst_no);
offadd+=RST;
write_string(offadd,gross);
Serial.println(gross);
offadd+=WET;
write_string(offadd,second_weight_time);
Serial.println(second_weight_time);
offadd+=TIME;
write_string(offadd,tare);
Serial.println(tare);
offadd+=WET;
write_string(offadd,first_weight_time);
Serial.println(first_weight_time);
offadd+=TIME;
write_string(offadd,net);
Serial.println(net);
offadd+=WET;
write_string(offadd,charges_2);
Serial.println(charges_2);
offadd+=CHARGES+1;
if(add>=Stop_2d_wet ){Serial.print("memory full");add=Strt_2nd_wet;}
high=highByte(offadd);
low=lowByte(offadd);
writebyte(Ad_2nd_msb , high);
writebyte(Ad_2nd_lsb, low);
high= readbyte(Ad_2nd_msb );
low= readbyte(Ad_2nd_lsb);
Serial.print("last add");
offadd=word(high,low);
Serial.println(offadd);
Serial.println("Data Second weightment Save On Memory");
Serial.println("Dtat from Second wirght ");
count_2nd++;
high=highByte(count_2nd);
low=lowByte(count_2nd);
writebyte(Msb_Count2nd , high);
writebyte(Lsb_Count2nd, low);
Serial.print("total ofliine 2nd wet entery = ");
Serial.println(count_2nd);
vehicle_type="";
party_address="";
data="";
local_rst_no="";
vehile_no="";
party_name="";
item="";
Wet_type="";
rstNo="";
tare="";
gross="";
first_weight_time="";
charges="";
lable="";
second_weight_time="";
charges_2="";
delay(6);
return;
}
//----------------------------------------------------------------------Save Manual Weigthment------------------------------------------------------------------------------------------
void save_manual_wet(){
delay(6);
high= readbyte(Ad_man_msb );
low= readbyte(Ad_man_lsb);
Serial.print("write maanual lable at add=");
offadd=word(high,low);
Serial.println(offadd);
lable="@3";
Serial.println(lable);
delay(6);
write_string(offadd,lable);
offadd+=lable.length();
write_string(offadd,local_rst_no);
Serial.println(local_rst_no);
offadd+=RST;
write_string(offadd,vehile_no);
Serial.println(vehile_no);
offadd+=VEH_NUM;
write_string(offadd,vehicle_type);
Serial.println(vehicle_type);
offadd+=VEH_TYPE;
write_string(offadd,party_name);
Serial.println(party_name);
offadd+=NAME;
write_string(offadd,party_address);
Serial.println(party_address);
offadd+=ADD;
write_string(offadd,item);
Serial.println(item);
offadd+=ITEM;
write_string(offadd,gross);
Serial.println(gross);
offadd+=WET;
write_string(offadd,second_weight_time);
Serial.println(second_weight_time);
offadd+=TIME;
write_string(offadd,tare);
Serial.println(tare);
offadd+=WET;
write_string(offadd,first_weight_time);
Serial.println(first_weight_time);
offadd+=TIME;
write_string(offadd,net);
Serial.println(net);
offadd+=WET;
write_string(offadd,charges_2);
Serial.println(charges_2);
offadd+=CHARGES+1;
if(add>=Stop_man_wet ){Serial.print("memory full");add=Strt_man_wet;}
high=highByte(offadd);
low=lowByte(offadd);
writebyte(Ad_man_msb , high);
writebyte(Ad_man_lsb, low);
high= readbyte(Ad_man_msb );
low= readbyte(Ad_man_lsb);
Serial.print("last add");
offadd=word(high,low);
Serial.println(offadd);
Serial.println("Data Manual weightment Save On Memory");
Serial.println("Dtat from Manual wirght ");
count_3rd++;
high=highByte(count_3rd);
low=lowByte(count_3rd);
writebyte(Msb_Count3rd, high);
writebyte(Lsb_Count3rd, low);
Serial.print("total ofliine Manual wet entery = ");
Serial.println(count_3rd);
vehicle_type="";
party_address="";
data="";
local_rst_no="";
vehile_no="";
party_name="";
item="";
Wet_type="";
rstNo="";
tare="";
gross="";
first_weight_time="";
charges="";
lable="";
second_weight_time="";
charges_2="";
delay(6);
return;
}
//-------------------------------------------------------------Read 1st Weigthment Data- From Memory-------------------------------------------------------------------------------------------------
void search_1st(){
add=Strt_1st_wet;
lable="@1";
rep:
Serial.print("Sraching for 1st wightment fromm add = ");
Serial.println(add);
if(add>=Stop_1st_wet){Serial.print("No recoreds found for first weight");
return;}
search=read_string(add,lable.length());
Serial.println(search);
if(search==lable){
from=add;
Serial.print("reading lables from add=");
Serial.println(from);
Serial.print("Recoreds found for first weight");
add+=lable.length();
local_rst_no=read_string(add,RST);
Serial.println(local_rst_no);
add+=RST;
vehile_no=read_string(add,VEH_NUM);
Serial.println(vehile_no);
add+=VEH_NUM;
vehicle_type=read_string(add,VEH_TYPE);
Serial.println(vehicle_type);
add+=VEH_TYPE;
party_name=read_string(add,NAME);
Serial.println(party_name);
add+=NAME;
party_address=read_string(add,ADD);
Serial.println(party_address);
add+=ADD;
item=read_string(add,ITEM);
Serial.println(item);
add+=ITEM;
Wet_type=read_string(add,1);
Serial.println(Wet_type);
add+=1;
if (Wet_type=="T"){
Serial.print("Reading Tare: ");
tare=read_string(add,WET);
Serial.println(tare);
add+=WET;
first_weight_time=read_string(add,TIME);
Serial.println(first_weight_time);
}
if (Wet_type=="G"){
Serial.print("Reading Gross: ");
gross=read_string(add,WET);
Serial.println(gross);
add+=WET;
second_weight_time=read_string(add,TIME);
Serial.println(second_weight_time);
}
add+=TIME;
charges=read_string(add,CHARGES);
Serial.println(charges);
add+=CHARGES+1;
return;
}
if(search!=lable){add+=lable.length()+ RST + VEH_NUM + VEH_TYPE + NAME + ADD + 1 + ITEM + WET + TIME + CHARGES+1;
Serial.println("lable not found");
Serial.println("Searching.... again");
search="";
goto rep;}
}
//--------------------------------------------------------Read 2nd Weightment Data From memory---------------------------------------------------------------------------------------------
void search_2nd() {
add=Strt_2nd_wet;
lable="@2";
re:
Serial.print("Sraching for 2nd wightment fromm add = ");
Serial.println(add);
if(add>=Stop_2d_wet ){Serial.print("No recoreds found for first weight");
return;}
search=read_string(add,lable.length());
Serial.println(search);
if(search==lable){
from=add;
Serial.print("Recoreds found for Second weight");
add+=lable.length();
local_rst_no=read_string(add,RST);
Serial.println(local_rst_no);
add+=RST;
gross=read_string(add,WET);
Serial.println(gross);
add+=WET;
second_weight_time=read_string(add,TIME);
Serial.println(second_weight_time);
add+=TIME;
tare=read_string(add,WET);
Serial.println(tare);
add+=WET;
first_weight_time=read_string(add,TIME);
Serial.println(first_weight_time);
add+=TIME;
net=read_string(add,WET);
Serial.println(net);
add+=WET;
charges_2=read_string(add,CHARGES);
Serial.println(charges_2);
add+=CHARGES+1;
//-----------------------------------Read Rst number from EEPROM-------------
add=1;
repat:
if(add>=9000){Serial.print("Wrong RST");
local_rst_no="";
rstNo="";
search="";
party_name="";
data="";
charges="";
charges_2="";
second_weight_time="";
return;}
search=read_string(add,RST);
Serial.println(search);
if(search== local_rst_no){
Serial.println("number found");
Serial.println(search);
add+=RST;
charges=read_string(add,CHARGES);
Serial.println("first charges");
Serial.println(charges);
l=charges.toInt();
Serial.println(l);
Serial.println("Total charges");
Serial.println(charges_2);
k=charges_2.toInt();
Serial.println(k);
s=k-l;
charges_2=String(s);
Serial.println(s);
Serial.println("final charge");
Serial.println(charges_2);
add+=CHARGES;
rstNo=read_string(add,13);
return;
}
if(search!= local_rst_no){
Serial.println("number not found");
Serial.println("Searching.... again");
search="";
add+=RST+CHARGES+14;
goto repat;
}
}
if(search!=lable){add+=lable.length()+ RST + WET + WET +WET+ TIME + TIME +CHARGES+ 1;
Serial.println("lable for second weight not found");
Serial.println("Searching.... again");
search="";
goto re;}
}
//------------------------------------------------------------------------------------Read Manual wightmnet---------------------------------------------------------------------------------
void search_manual (){
add=Strt_man_wet;
lable="@3";
point:
Serial.print("Sraching forMnaual wightment fromm add = ");
Serial.println(add);
if(add>=Stop_man_wet){Serial.print("No recoreds found for Manula weight");
return;}
search=read_string(add,lable.length());
Serial.println(search);
if(search==lable){
from=add;
Serial.print("reading lables from add=");
Serial.println(from);
Serial.print("Recoreds found for Manual weight");
add+=lable.length();
local_rst_no=read_string(add,RST);
Serial.println(local_rst_no);
add+=RST;
vehile_no=read_string(add,VEH_NUM);
Serial.println(vehile_no);
add+=VEH_NUM;
vehicle_type=read_string(add,VEH_TYPE);
Serial.println(vehicle_type);
add+=VEH_TYPE;
party_name=read_string(add,NAME);
Serial.println(party_name);
add+=NAME;
party_address=read_string(add,ADD);
Serial.println(party_address);
add+=ADD;
item=read_string(add,ITEM);
Serial.println(item);
add+=ITEM;
gross=read_string(add,WET);
Serial.println(gross);
add+=WET;
second_weight_time=read_string(add,TIME);
Serial.println(second_weight_time);
add+=TIME;
tare=read_string(add,WET);
Serial.println(tare);
add+=WET;
first_weight_time=read_string(add,TIME);
Serial.println(first_weight_time);
add+=TIME;
net=read_string(add,WET);
Serial.println(net);
add+=WET;
charges_2=read_string(add,CHARGES);
Serial.println(charges_2);
add+=CHARGES+1;
return;}
if(search!=lable){add+=lable.length()+ RST + VEH_NUM + VEH_TYPE + NAME + ADD + ITEM + WET + WET + WET + TIME + TIME + CHARGES + 1;
Serial.println("lable not found");
Serial.println("Searching.... again");
search="";
goto point;}
}
//----------------------------------------------------------------------------------Chek Response for Firstweight------------------------------------------------------------------------------------------------------------------
void chk_resp_1st_wt(){
Serial.println("Cheking response for first weightment");
if(response.length()==13){
Serial.print("First weight Data sent on server");
Serial.print("Saving RST Number for local rast= ");
Serial.println(local_rst_no);
delay(6);
high= readbyte(Key_msb);
low= readbyte(Key_lsb);
Serial.print("write RST at add=");
add=word(high,low);
Serial.println(add);
write_string(add,local_rst_no);
add+=RST;
write_string(add,charges);
add+=CHARGES;
write_string(add,rstNo);
add+=13+1;
lastadd=add;
high=highByte(lastadd);
low=lowByte(lastadd);
writebyte(Key_msb, high);
writebyte(Key_lsb, low);
high= readbyte(Key_msb);
low= readbyte(Key_lsb);
Serial.println(high);
Serial.println(low);
Serial.print("last add");
lastadd=word(high,low);
Serial.println(lastadd);
vehicle_type="";
party_address="";
data="";
local_rst_no="";
vehile_no="";
party_name="";
item="";
Wet_type="";
rstNo="";
tare="";
gross="";
first_weight_time="";
charges="";
lable="";
second_weight_time="";
delay(5);
return;
}
if(response.length()!=13){
Serial.println("bad tresponse, Saving data ");
save_1st();
Serial.println("Saving process for 1st wt complete.. ");
delay(6);
return;
}
}
//---------------------------------------------------------Chek response for Second weightment data--------------------------------------------------------------------------------------------
void resp_chk_2nd_wt(){
Serial.println("Cheking response for Second weihgtment");
if(response.length()==13){
Serial.print("Second weight Data sent on server");
Serial.println("2nd wet data send copmlete");
for(int z=0;z<10;z++){
writebyte(from,' ');
from++;
}
Serial.println("removing lable");
local_rst_no="";
rstNo="";
search="";
net="";
gross="";
tare="";
charges_2="";
charges="";
second_weight_time="";
data="";
delay(6);
vehicle_type="";
party_address="";
data="";
local_rst_no="";
vehile_no="";
party_name="";
item="";
Wet_type="";
rstNo="";
tare="";
gross="";
first_weight_time="";
charges="";
lable="";
second_weight_time="";
charges_2="";
return;
}
if(response.length()!=13){
Serial.println("Data not Send ,Saving data");
Serial.println("Saving Data for Second weightment");
save_2nd();
Serial.println("Data save for 2nd wt complete");
delay(6);
return;
}
}
//---------------------------------------------------------Chek Response For Mnaula Weightment Data--------------------------------------------------------------------------------------------
void resp_chk_manual(){
Serial.println("Cheking response for Manual weihgtment");
if(response.length()==13){
Serial.print("Mnaula weight Data sent on server");
for(int z=0;z<10;z++){
writebyte(from,' ');
from++;
}
Serial.println("removing lable");
party_address="";
local_rst_no="";
rstNo="";
search="";
net="";
gross="";
tare="";
charges_2="";
charges="";
first_weight_time="";
second_weight_time="";
data="";
vehicle_type="";
vehile_no="";
party_name="";
lable="";
chek="";
delay(6);
return;
}
if(response.length()!=13){
Serial.println("Data not Send ,Saving data");
Serial.println("Saving Data for Manual weightment");
save_manual_wet();
Serial.println("Data save for Mnaula wet complete");
delay(10000);
return;
}
}
//------------------------------------------------------------------------VOID LOOP-----------------------------------------------------------------------------------------------------------------
void loop() {
if (state==WL_CONNECTED){
digitalWrite(LED,HIGH);
digitalWrite(power,HIGH);}
top:
state =WiFi.status();
if (Serial.available()>0){
Serial.println("data reciving");
data=Serial.readString();
if(data==NULL)goto top;
Serial.println(data);
Serial.println("data lenght");
Serial.println(data.length());
if(data.length()==109){//--------------------------------------------------Get Firts weightment Data--------------------------------------------------------------------------------------
Serial.println("Dtat from first weight");
local_rst_no=data.substring(3,8);//rst
Serial.print("local_rst_no:");
Serial.println(local_rst_no);
vehile_no=data.substring(9,19);//veh no
Serial.println(vehile_no);
vehicle_type=data.substring(21,29);//veh type
Serial.println(vehicle_type);
party_name=data.substring(31,47);//part
Serial.println(party_name);
party_address=data.substring(49,59);//add
Serial.println(party_address);
item=data.substring(61,69);//item
Serial.println(item);
Wet_type=data.substring(71,72);//weight type
Serial.println(Wet_type);
if (Wet_type=="T"){
Serial.print("Tare: ");
tare=data.substring(73,79);//weight
Serial.println(tare);
first_weight_time=data.substring(83,99);//time
Serial.println(first_weight_time);
}
if (Wet_type=="G"){
Serial.print("Gross: ");
gross=data.substring(73,79);//weight
Serial.println(gross);
second_weight_time=data.substring(83,99);//time
Serial.println(second_weight_time);
}
charges=data.substring(102,107);//charge
Serial.println(charges);
delay(1000);
state =WiFi.status();
Serial.println("Reading complete");
if (state ==WL_CONNECTED){//--------------------------------------------Send First Weihgtment data online ----------------------------------------------------------------------------
Serial.println("We are connected send direct");
digitalWrite(LED,HIGH);
digitalWrite(power,HIGH);
write_string(rst_add,local_rst_no);
Serial.println("New RST number saved");
send_1stweight_data();
delay(5);
chk_resp_1st_wt();
Serial.println("local rst key and charges saved");
delay(5000);}
if (state !=WL_CONNECTED){//--------------------------------------------Save First Weihgtment data offline -------------------------------------------------------------------------------
Serial.println("Connection Lost");
digitalWrite(LED,LOW);
digitalWrite(power,LOW);
Serial.println("Saving Data, your are offline ");
Serial.print("Saving RST Number for local rast= ");
Serial.println(local_rst_no);
write_string(rst_add,local_rst_no);
Serial.println("New RST number saved");
save_1st();
Serial.println("Saving process for 1st wt complete.. ");
delay(6);}
}
if(data.length()==150){ //-------------------------------------------Get Second weigtment Data----------------------------------------------------------------------------------------
Serial.println("Dtat from second weight");
local_rst_no=data.substring(3,8);//rst
Serial.print("local_rst_no:");
Serial.println(local_rst_no);
vehile_no=data.substring(9,19);//veh no
Serial.println(vehile_no);
vehicle_type=data.substring(21,29);//veh type
Serial.println(vehicle_type);
party_name=data.substring(31,47);//part
Serial.println(party_name);
party_address=data.substring(49,59);//add
Serial.println(party_address);
item=data.substring(61,69);//item
Serial.println(item);
Wet_type=data.substring(71,72);//weight type
gross=data.substring(73,79);//gross
Serial.println(gross);
first_weight_time=data.substring(83,99);//time 1
Serial.println(first_weight_time);
tare=data.substring(102,108);//tare
Serial.println(tare);
second_weight_time=data.substring(112,128);//time 2
Serial.println(second_weight_time);
net=data.substring(131,137);//net
Serial.println(net);
charges_2=data.substring(143,148);//charge
Serial.println(charges_2);
delay(6);
state =WiFi.status();
Serial.println("Reading complete");
if (state==WL_CONNECTED){//--------------------------------------------Send Second Weihgtment data online ----------------------------------------------------------------------------
Serial.println("We are connected");
digitalWrite(LED,HIGH);
digitalWrite(power,HIGH);
//-----------------------------------------***----chek for manual weightment-to send data online-***--------------------
Serial.println("reading RST connected");
chek=read_string(rst_add,RST);
m=chek.toInt();
m++;
Serial.println(m);
n=local_rst_no.toInt();
Serial.println(n);
if(m==n){
delay(5);
write_string(rst_add,local_rst_no);
Serial.println("New RST number saved");
Serial.println("This is Manual Weightment");
Serial.println("Sending Manual Weightment Data Ditrect");
send_1stweight_data();
delay(5);
resp_chk_manual();
Serial.println("Sending Manual Weightment Data Complete.....");
delay(6);
Serial.println(local_rst_no);
goto top;
}
Serial.println("This is Second Weightment");
Serial.println("Sending Second Weightment Data Ditrect");
//-----------------------------------Read Rst number from EEPROM-------------
add=1;
repat:
if(add>=9000){Serial.print("Wrong RST");
local_rst_no="";
rstNo="";
search="";
party_name="";
data="";
charges="";
charges_2="";
second_weight_time="";
goto top;}
search=read_string(add,RST);
Serial.println(search);
if(search==local_rst_no){
Serial.println("number found");
Serial.println(search);
add+=RST;
charges=read_string(add,CHARGES);
Serial.println("first charges");
Serial.println(charges);
l=charges.toInt();
Serial.println(l);
Serial.println("Total charges");
Serial.println(charges_2);
k=charges_2.toInt();
Serial.println(k);
s=k-l;
charges_2=String(s);
Serial.println(s);
Serial.println("final charge");
Serial.println(charges_2);
add+=CHARGES;
rstNo=read_string(add,13);
Serial.println(rstNo);
delay(6);
send_2ndWet_data();
delay(5);
resp_chk_2nd_wt();
goto top;
}
if(search!= local_rst_no){
Serial.println("number not found");
Serial.println("Searching.... again");
search="";
add+=RST+CHARGES+14;
goto repat;
}
}
if (state!=WL_CONNECTED){//--------------------------------------------Save Second Weihgtment data offline -------------------------------------------------------------------------------
Serial.println("Connection Lost");
digitalWrite(LED,LOW);
digitalWrite(power,LOW);
Serial.println("Chekig wetmet 2nd or Mnaual");
chek=read_string(rst_add,RST);
m=chek.toInt();
m++;
Serial.println(m);
n=local_rst_no.toInt();
Serial.println(n);
delay(5);
if(m==n){//---------------------------------------------Save Manual wet data offline------------------------------
Serial.println("This is Manual Weightment");
delay(5);
write_string(rst_add,local_rst_no);
Serial.println("New RST number saved");
Serial.println("Sending Manual Weightment Data Ditrect");
save_manual_wet();
delay(5);
Serial.println("New RST number saved");
Serial.println("Saving Manual Weightment Data Complete.....");
delay(6);
goto top;}
Serial.println("Saving Data for Second weightment");
save_2nd();
Serial.println("Data save for 2nd wt complete");
delay(6);}
}
}
//----------------------------------------------------------Send Data From Memory----------------------------------------------------------------------------------------------------
while (!Serial.available()){Serial.println("not reciving");
if (state==WL_CONNECTED){
digitalWrite(LED,HIGH);
digitalWrite(power,HIGH);
Serial.println("Cheking for pending Data");
high=readbyte(Msb_Count1st);
low=readbyte(Lsb_Count1st);
count_1st=word(high,low);
if(count_1st>0){
Serial.print("total pending 1st wet data=");
Serial.println(count_1st);
search_1st();
delay(5);
send_1stweight_data();
Serial.println("1st wet Data Send On Server, chek response");
if(response.length()==13){
Serial.print("First weight Data sent on server");
Serial.print("Saving RST Number for local rast= ");
Serial.println(local_rst_no);
delay(6);
for(int z=0;z<10;z++){
writebyte(from,' ');
from++;
}
Serial.println("lable removed");
count_1st--;
high=highByte(count_1st);
low=lowByte(count_1st);
writebyte(Msb_Count1st , high);
writebyte(Lsb_Count1st, low);
Serial.print("Remanig ofliine 1ST wet entery = ");
Serial.println(count_1st);
high= readbyte(Key_msb);
low= readbyte(Key_lsb);
Serial.print("write RST at add=");
add=word(high,low);
Serial.println(add);
write_string(add,local_rst_no);
add+=RST;
write_string(add,charges);
add+=CHARGES;
write_string(add,rstNo);
add+=13+1;
lastadd=add;
high=highByte(lastadd);
low=lowByte(lastadd);
writebyte(Key_msb, high);
writebyte(Key_lsb, low);
high= readbyte(Key_msb);
low= readbyte(Key_lsb);
Serial.println(high);
Serial.println(low);
Serial.print("last add");
lastadd=word(high,low);
Serial.println(lastadd);
delay(6);
vehicle_type="";
party_address="";
data="";
local_rst_no="";
vehile_no="";
party_name="";
item="";
Wet_type="";
rstNo="";
tare="";
gross="";
first_weight_time="";
charges="";
lable="";
second_weight_time="";
delay(5);
goto top;
}
if(response.length()!=13){
Serial.println("bad tresponse, try againg ");
goto top;
}
}
high=readbyte(Msb_Count2nd);
low=readbyte(Lsb_Count2nd);
count_2nd=word(high,low);
if(count_2nd>0 &&count_1st==0 ){
Serial.print("total pending 2ndwet data=");
Serial.println(count_2nd);
search_2nd();
delay(5);
send_2ndWet_data();
Serial.println("2nd wet Data Send On Server, chek response");
if(response.length()==13){
Serial.print("Second weight Data sent on server");
for(int z=0;z<10;z++){
writebyte(from,' ');
from++;
}
Serial.println("removing lable");
count_2nd--;
high=highByte(count_2nd);
low=lowByte(count_2nd);
writebyte(Msb_Count2nd, high);
writebyte(Lsb_Count2nd, low);
Serial.print("remaing ofliine 2nd wet entery = ");
Serial.println(count_2nd);
delay(6);
vehicle_type="";
party_address="";
data="";
local_rst_no="";
vehile_no="";
party_name="";
item="";
Wet_type="";
rstNo="";
tare="";
gross="";
first_weight_time="";
charges="";
lable="";
second_weight_time="";
charges_2="";
goto top;
}
if(response.length()!=13){
Serial.println("Data not Send ,try again");
delay(5);
goto top;
}
}
high=readbyte(Msb_Count3rd);
low=readbyte(Lsb_Count3rd);
count_3rd=word(high,low);
if(count_3rd>0 &&count_1st==0 && count_2nd==0){//-----------------------*-*-*-*-*-*-*--
Serial.print("total pending Manual wte data=");
Serial.println(count_3rd);
search_manual ();
delay(5);
send_1stweight_data();
Serial.println("Mnaual Data Send On Server, chek response");
if(response.length()==13){
Serial.print("Second weight Data sent on server");
for(int z=0;z<10;z++){
writebyte(from,' ');
from++;
}
Serial.println("removing lable");
count_3rd--;
high=highByte(count_3rd);
low=lowByte(count_3rd);
writebyte(Msb_Count3rd, high);
writebyte(Lsb_Count3rd, low);
Serial.print("remaing ofliine 2nd wet entery = ");
Serial.println(count_3rd);
delay(6);
vehicle_type="";
party_address="";
data="";
local_rst_no="";
vehile_no="";
party_name="";
item="";
Wet_type="";
rstNo="";
tare="";
gross="";
first_weight_time="";
charges="";
lable="";
second_weight_time="";
charges_2="";
goto top;
}
if(response.length()!=13){
Serial.println("Data not Send ,try again");
delay(5);
goto top;
}
}
goto top;
}
if (state!=WL_CONNECTED){
Serial.println("Connection Lost");
digitalWrite(LED,LOW);
digitalWrite(power,LOW);
goto top;}
}
}