Sending my geolocation data from the esp8266 to a server to fetch it in arduino

Hello world,

I have been trying to find out a way to send my geolocation data extracted from geolocation api by google using my nodemcu to a server. First thing what is the easiest way to create a server or to even use a ready server. And how would I do that in my code ? I have uploaded my geolocation code down below.

  This is the code for Fetching your location from Google Geolocation API
  This code is provided by 

#include <ESP8266HTTPClient.h>
#include <ArduinoJson.h>
#include "ESP8266WiFi.h"

char myssid[] = "HUAWEI-E5372-81F1";         // your network SSID (name)
char mypass[] = "23811865";          // your network password

//Credentials for Google GeoLocation API...
const char* Host = "";
String thisPage = "/geolocation/v1/geolocate?key=";
String key = "AIzaSyDgM2RQB3hq9pFxV33JvfGgbFp2VCoJbQ4";

int status = WL_IDLE_STATUS;
String jsonString = "{\n";

double latitude    = 0.0;
double longitude   = 0.0;
double accuracy    = 0.0;
int more_text = 1; // set to 1 for more debug output

void setup()   {

  // Set WiFi to station mode and disconnect from an AP if it was previously connected
  Serial.println("Setup done");
  // We start by connecting to a WiFi network
  Serial.print("Connecting to ");
  WiFi.begin(myssid, mypass);

  while (WiFi.status() != WL_CONNECTED) {


void loop() {

  char bssid[6];
  DynamicJsonBuffer jsonBuffer;
  Serial.println("scan start");
  // WiFi.scanNetworks will return the number of networks found
  int n = WiFi.scanNetworks();
  Serial.println("scan done");
  if (n == 0)
    Serial.println("no networks found");
    Serial.println(" networks found...");

    if (more_text) {
      // Print out the formatted json...
      Serial.println("\"homeMobileCountryCode\": 234,");  // this is a real UK MCC
      Serial.println("\"homeMobileNetworkCode\": 27,");   // and a real UK MNC
      Serial.println("\"radioType\": \"gsm\",");          // for gsm
      Serial.println("\"carrier\": \"Vodafone\",");       // associated with Vodafone
      //Serial.println("\"cellTowers\": [");                // I'm not reporting any cell towers
      Serial.println("\"wifiAccessPoints\": [");
      for (int i = 0; i < n; ++i)
        Serial.print("\"macAddress\" : \"");
        Serial.print("\"signalStrength\": ");
        if (i < n - 1)
    Serial.println(" ");
  // now build the jsonString...
  jsonString = "{\n";
  jsonString += "\"homeMobileCountryCode\": 234,\n"; // this is a real UK MCC
  jsonString += "\"homeMobileNetworkCode\": 27,\n";  // and a real UK MNC
  jsonString += "\"radioType\": \"gsm\",\n";         // for gsm
  jsonString += "\"carrier\": \"Vodafone\",\n";      // associated with Vodafone
  jsonString += "\"wifiAccessPoints\": [\n";
  for (int j = 0; j < n; ++j)
    jsonString += "{\n";
    jsonString += "\"macAddress\" : \"";
    jsonString += (WiFi.BSSIDstr(j));
    jsonString += "\",\n";
    jsonString += "\"signalStrength\": ";
    jsonString += WiFi.RSSI(j);
    jsonString += "\n";
    if (j < n - 1)
      jsonString += "},\n";
      jsonString += "}\n";
  jsonString += ("]\n");
  jsonString += ("}\n");


  WiFiClientSecure client;

  //Connect to the client and make the api call
  Serial.print("Requesting URL: ");
  Serial.println("https://" + (String)Host + thisPage + "AIzaSyCYNXIYINPmTNIdusMjJloS4_BXSOff1_g");
  Serial.println(" ");
  if (client.connect(Host, 443)) {
    client.println("POST " + thisPage + key + " HTTP/1.1");
    client.println("Host: " + (String)Host);
    client.println("Connection: close");
    client.println("Content-Type: application/json");
    client.println("User-Agent: Arduino/1.0");
    client.print("Content-Length: ");

  //Read and parse all the lines of the reply from server
  while (client.available()) {
    String line = client.readStringUntil('\r');
    if (more_text) {
    JsonObject& root = jsonBuffer.parseObject(line);
    if (root.success()) {
      latitude    = root["location"]["lat"];
      longitude   = root["location"]["lng"];
      accuracy   = root["accuracy"];

  Serial.println("closing connection");

  Serial.print("Latitude = ");
  Serial.println(latitude, 6);
  Serial.print("Longitude = ");
  Serial.println(longitude, 6);
  Serial.print("Accuracy = ");



First thing what is the easiest way to create a server or to even use a ready server.

That has NOTHING to do with the Arduino. And, frankly, if you don’t understand how to do that, your project stands little chance of success. might provide some food for thought.

I mean I want to know what is the commands that I have to keep in my code to send my data to an external server?

To fetch your geolocation data to an Arduino, buy a GPS module and interface it directly to the Arduino.

That way, you can skip all the tedious, error prone intermediate steps!

Tens of thousands of web pages are available to help you in this process.

I am using two arduinos right now.. The idea is to use one for getting the geolocation and the other arduino is in another place that is the supposed to recieve the geolocation attributes from the first one. My idea is there has to be a brdige between these two arduinos that might be a web or a local server, that is what am stuck in right now.

My idea is there has to be a brdige between these two arduinos that might be a web or a local server, that is what am stuck in right now.

Well, you are going to STAY stuck until you have a server.

Lets pretend that I had a server. What are the commands used in arduino to send & receive from that server? I have used an IoT platform for now. How can I receive data from the platform to send it to Arduino?

Consult the documentation for whatever IoT platform you will be using.

Lets pretend that I had a server.

Lets also pretend that you know how to use Google.

Lets also pretend that you know how to use Google.

Ok thanks dude for your precious holy time. Don’t bother yourself if you are not willing to help. Your place doesn’t belong here.

Your post does not belong on this forum.

Goodbye, and have a nice life!