Beispiel #1
0
void ESPHB::restore(void){
	String _null="";
	IPAddress _nil=(0,0,0,0);
	save_ip(_nil,__IP_adrr);
	save_ip(_nil,__gateway_adrr);
	save_ip(_nil,__mask_adrr);
	update1byte_EEPROM(__first_start, 0);
	update1byte_EEPROM(__ip_static, 0);
	save(__ssid,_null);
	save(__password,_null);
}
Beispiel #2
0
boolean ESPHB::save_ip(String _ip,String *_return){	// Hàm check và lưu IP vào EEPROM (_ip: ip cần setup, *_return kết quả chuỗi IP trả về sau lưu)
	String _curent_ip="";	// khởi tạo ip tạm
	*_return="";	// trả về = ""
	IPAddress _ip_tosave;	// khởi tạo struct IPAddress để lưu
	int _start=0;	// vị trí xuất phát String IP
    int _dot=_ip.indexOf('.');	// vị trí dấu . đầu tiên
    int _ends=_ip.length();	// tổng chiều dài String IP
    for(char k=0;k<4;k++){
        String ipk=_ip.substring(_start,_dot);	// octet 1: từ vị trí xuất phát đến dấu . đầu tiên
        _ip_tosave[k]=ipk.toInt();	// convert String to Int
        _start=_dot+1;	// dấu . đầu thành điểm xuất phát
        if(k<3){	
			_dot=_ip.indexOf('.',_start);}
            else{	// tại octet 4(octet cuối) điểm kết thúc là chiều dài String IP(ends)
              _dot=_ends;};
    }
	WiFi.config(_ip_tosave,gateway,mask);	// thiết lập lại địa chỉ IP
	IPtoString(WiFi.localIP(),&_curent_ip);	// lấy địa chỉ IP sau khi thiết lập
	if(_curent_ip==_ip){	// nếu địa chỉ IP nhận được == địa chỉ IP setup
		save_ip(_ip_tosave,__IP_adrr);	// lưu ip mới vào EEPROM
		for (unsigned char i = 0; i < 4; i++) {	// Đọc IP vừa lưu từ EEPROM
			_ip_tosave[i] = read1byte_EEPROM(i + __IP_adrr + 1);
		}
		IPtoString(_ip_tosave,_return);	// trả về String ip sau khi được lưu
		return true;	// return true hàm
	}else{
		*_return=_ip;	// trả về String ip ban đầu đem setup
		return false;
	}
}
Beispiel #3
0
boolean ESPHB::wifi_connect(){
if(ssid!=""){
	unsigned char _timeout=0;	// khởi tạo biến timeout
	debug("Connecting to ");
	char _sta_ssid[(ssid).length()+1];	// chuyển đổi String ssid, password sang char array
	char _sta_password[(password).length()+1];
	ssid.toCharArray(_sta_ssid, ssid.length()+1);
	password.toCharArray(_sta_password, password.length()+1);
	debug(_sta_ssid);
	debug(_sta_password);
	WiFi.begin(_sta_ssid, _sta_password);	// kết nối tới mạng wifi
	while (WiFi.status() != WL_CONNECTED) {	// nếu chưa kết nối được
		delay(500); if(isdebug){Serial.print(".");}	// xuất ký tự . mỗi 0.5s
		_timeout++;	// tăng timeout
		apmode=false;
		if(_timeout>__timeout_STA){	// nếu timeout > thời gian cho phép timeout_STA
			apmode=true;	// bật cờ apmode
			break;
		}
	}
	if((!ipstatic)&&(!apmode)){
		String _tmp="";
		save_ip(WiFi.localIP(),__IP_adrr);
		save_ip(WiFi.gatewayIP(),__gateway_adrr);
		save_ip(WiFi.subnetMask(),__mask_adrr);
		IPtoString(WiFi.localIP(),&_tmp);debug("New IP: "+_tmp);
		IPtoString(WiFi.gatewayIP(),&_tmp);debug("New gateway: "+_tmp);
		IPtoString(WiFi.subnetMask(),&_tmp);debug("New submask: "+_tmp);
		update1byte_EEPROM(__ip_static,1);
		ipstatic=true;
    }
    else if(ipstatic&&(!apmode)){
      WiFi.config(ip,gateway,mask);
    };	
	if(!apmode){	// nếu cờ apmode chưa bật( đã kết nối tới wifi)
		debug("");
		debug("WiFi connected to:");
		debug(_sta_ssid);
    }
}
	return apmode;	// trả về true nếu kết nối và false chưa kết nối
};
Beispiel #4
0
boolean ESPHB::wifi_connect(String _ssid, String _password, String *_ip,String * _result){
	unsigned char _timeout=0;
	String _tmp="";
	boolean _receiveip=true;
	debug("Connecting to ");
	// convert String of ssid, password to array (as update_EEPROM)
	char _sta_ssid[(_ssid).length()+1];
	char _sta_password[(_password).length()+1];
	_ssid.toCharArray(_sta_ssid, _ssid.length()+1);
	_password.toCharArray(_sta_password, _password.length()+1);
	debug(_sta_ssid);
	debug(_sta_password);
	WiFi.begin(_sta_ssid, _sta_password);
	while (WiFi.status() != WL_CONNECTED) {
		delay(500); if(isdebug){Serial.print(".");}
		_timeout++;
		if(_timeout>__timeout_STA){
			_receiveip=false;
			*_result="failed";
			*_ip="";
			break;
		}
	}
	if(_receiveip){
		debug("");
		debug("WiFi connected to:");
		debug(_sta_ssid);
		IPtoString(WiFi.localIP(),&_tmp);
		save_ip(WiFi.localIP(),__IP_adrr);
		save_ip(WiFi.gatewayIP(),__gateway_adrr);
		save_ip(WiFi.subnetMask(),__mask_adrr);
		update1byte_EEPROM(__ip_static,1);
		debug("IP: "+_tmp);
		*_ip=_tmp;
		*_result="connected";
		save(__ssid,_ssid);
		save(__password,_password);
    }
	return !_receiveip;
}
Beispiel #5
0
int set_local_ip(PRO* p)
{
	int ret = 0;
	if(connectState == 1)
	{
        int i = 0,j = 0,k=0;
        u8 str[6]={0};
        while(1)
        {
            str[k] = p->para[i];
            if(p->para[i] == '.' || p->para[i] == '\0')
            {
                str[k] = '\0';
                lip[j] = atof((const char*)str);
                j++;
                k=0;
            }
            else
            {
                k++;
            }
            i++;
            
            if(j>=4 && i <= MAX_LENGTH)
            {
                save_ip(lip);
                ret = 0;
                break;
            }
            
            if(i > MAX_LENGTH)//参数错误
            {
                ret = -1;
                break;
            }
        }        
        uart1.printf("IP : %d.%d.%d.%d\r\n", lip[0],lip[1],lip[2],lip[3]);
        ret = 0;
    }
    else
        ret = -2;
    return ret;

}