void WifiCreds::connect(int indicator_pin) {
  if (!_is_eeprom_init){
    EEPROM.begin(512);
    _is_eeprom_init = true;
  }
  read_ssid(_ssid);
  read_password(_password);
  if (_verbose) {
    Serial.println("");
    Serial.print("Initializing connection to "); Serial.println(_ssid);
    Serial.println("Send \"ssid password\" to update credentials"); 
    Serial.println("");
  }
  
  WiFi.begin(_ssid, _password);
  
  while (_is_wifi_enabled && WiFi.status() != WL_CONNECTED) {
    if(indicator_pin >= 0) digitalWrite(indicator_pin, LOW);
    delay(5);
    if(indicator_pin >= 0) digitalWrite(indicator_pin, HIGH);
    if (Serial.available() > 0){
      read_from_serial(_ssid, WifiCreds::ssid_max_length);
      read_from_serial(_password, WifiCreds::password_max_length);
      if (_verbose) {
        Serial.println("");
        Serial.println("Got new wifi credentials.");
        Serial.print(" - SSID: "); Serial.println(_ssid);
        Serial.print(" - Password: "******".");
  }
  if (_verbose) {
    Serial.println(""); 
    if (_is_wifi_enabled) {
      Serial.println("WiFi connected");
      Serial.print("IP address: "); Serial.println(WiFi.localIP());
      WiFi.macAddress(mac);
      writeHex(mac[5], id, 1, 2);
      writeHex(mac[4], id, 4, 5);
      writeHex(mac[3], id, 7, 8);
      writeHex(mac[2], id, 10, 11);
      writeHex(mac[1], id, 13, 14);
      writeHex(mac[0], id, 16, 17);
      Serial.print("MAC address: "); Serial.println(id);
    } else {
      Serial.println("Skipping wifi setup");
    }
  }
  if (_is_wifi_enabled) _is_connected = true;;
}
Beispiel #2
0
void _getMonitor(cJSON *root, s_config *config, char *http_packet)
{
	char tmp_value[32];
	int flag = 0;
	cJSON *valueSetObj= cJSON_CreateObject();
	cJSON *package;
	cJSON *list;
	cJSON *transaction_id = cJSON_GetObjectItem(root, "transaction_id");
	if(!transaction_id) {
		debug(LOG_ERR, "Can not find transaction_id parameter: %s", cJSON_GetErrorPtr());
		create_http_json(valueSetObj, 0, RESPONSE, GETMONITOR, "failed", "3", "Missing parameter:{transaction_id}", config->sn, http_packet);
		return;

	}

	cJSON *valueSet = cJSON_GetObjectItem(root, "valueSet");
	if(!valueSet) {
		debug(LOG_ERR, "Can not find valueset parameter: %s", cJSON_GetErrorPtr());
		create_http_json(valueSetObj, transaction_id->valuestring, RESPONSE, GETMONITOR, "failed", "3", "Missing parameter:{valueSet}", config->sn, http_packet);
		return;
	}

	cJSON *monitors = cJSON_GetObjectItem(valueSet, "monitors");
	if(!monitors) {
		debug(LOG_ERR, "Can not find monitor parameter: %s", cJSON_GetErrorPtr());
		create_http_json(valueSetObj, transaction_id->valuestring, RESPONSE, GETMONITOR, "failed", "3", "Missing parameter:{monitors}", config->sn, http_packet);
		return;
	}
	

 	int array_size = cJSON_GetArraySize(monitors);
	debug(LOG_DEBUG, "Array size of monitor is %d",array_size);
 	int i = 0;
 	cJSON *item;
 	for(i=0; i< array_size; i++) {
    	item = cJSON_GetArrayItem(monitors, i);
     	debug(LOG_DEBUG, "%s\n",item->valuestring);
		if(strcmp(item->valuestring , "wireless_traffic") == 0) {
			flag = 1;
			int wifi_index = 0;
			char interface_name[INTERFACELEN];
			char ssid[SSIDLEN];
			char assoc_num[4];
			cJSON_AddItemToObject(valueSetObj, "wireless_traffic", list = cJSON_CreateArray());
			while(read_ssid(wifi_index++, ssid, sizeof(ssid)/sizeof(ssid[0]))) {
				cJSON_AddItemToArray(list, package = cJSON_CreateObject());

				sprintf(tmp_value, "%d", wifi_index-1);
				cJSON_AddStringToObject(package,"radio_index",tmp_value);
				
				snprintf(interface_name, INTERFACELEN, "eth%d", wifi_index);
				
				read_counter(tmp_value, interface_name, "Rxbytes", sizeof(tmp_value)/sizeof(tmp_value[0]));
				cJSON_AddStringToObject(package,"Rxbytes", tmp_value);
			
				read_counter(tmp_value, interface_name, "Txbytes", sizeof(tmp_value)/sizeof(tmp_value[0]));
				cJSON_AddStringToObject(package,"Txbytes", tmp_value);
			
				read_counter(tmp_value, interface_name, "Rxpkt", sizeof(tmp_value)/sizeof(tmp_value[0]));
				cJSON_AddStringToObject(package,"Rxpkt", tmp_value);
			
				read_counter(tmp_value, interface_name, "Txpkt", sizeof(tmp_value)/sizeof(tmp_value[0]));
				cJSON_AddStringToObject(package,"Txpkt", tmp_value);

				read_assoc_client_count(interface_name, assoc_num, sizeof(assoc_num)/sizeof(assoc_num[0]));
				cJSON_AddStringToObject(package,"NumberOfAssociatedClients", assoc_num);

				
			}
		}
		else if(strcmp(item->valuestring , "wired_traffic") == 0) {
			flag = 1;
			cJSON_AddItemToObject(valueSetObj, "wired_traffic", package = cJSON_CreateObject());
			
			read_counter(tmp_value, "vlan2", "Rxbytes", sizeof(tmp_value)/sizeof(tmp_value[0]));
			cJSON_AddStringToObject(package,"Rxbytes", tmp_value);
			
			read_counter(tmp_value, "vlan2", "Txbytes", sizeof(tmp_value)/sizeof(tmp_value[0]));
			cJSON_AddStringToObject(package,"Txbytes", tmp_value);
			
			read_counter(tmp_value, "vlan2", "Rxpkt", sizeof(tmp_value)/sizeof(tmp_value[0]));
			cJSON_AddStringToObject(package,"Rxpkt", tmp_value);
			
			read_counter(tmp_value, "vlan2", "Txpkt", sizeof(tmp_value)/sizeof(tmp_value[0]));
			cJSON_AddStringToObject(package,"Txpkt", tmp_value);
			/*
			read_counter(tmp_value, "vlan2", "rx_errors", sizeof(tmp_value)/sizeof(tmp_value[0]));
			cJSON_AddStringToObject(package,"rx_errors", tmp_value);

			read_counter(tmp_value, "vlan2", "tx_errors", sizeof(tmp_value)/sizeof(tmp_value[0]));
			cJSON_AddStringToObject(package,"tx_errors", tmp_value);

			read_counter(tmp_value, "vlan2", "rx_discards", sizeof(tmp_value)/sizeof(tmp_value[0]));
			cJSON_AddStringToObject(package,"rx_discards", tmp_value);

			read_counter(tmp_value, "vlan2", "tx_discards", sizeof(tmp_value)/sizeof(tmp_value[0]));
			cJSON_AddStringToObject(package,"tx_discards", tmp_value);
			*/
		}
 	}
	flag?create_http_json(valueSetObj, transaction_id->valuestring, RESPONSE, GETMONITOR, "success", "0", NULL, NULL, http_packet):create_http_json(valueSetObj, atoi(transaction_id->valuestring), RESPONSE, GETMONITOR, "failed", "4", "Unsupported value", config->sn, http_packet);
  
}