-->
Page 1 of 1

esp8266 + arduino + ubidots

PostPosted: Mon Jun 08, 2015 11:59 am
by thivaakar
greetings.

not sure if I'm posting at the correct section but here goes;

I'm trying to get photosensor reading on Ubidots.

I've updated the firmware of the Esp module and the following;

Code: Select all#define SSID        "FreeWifi"
#define PASS        "b1tchpl3as3"
#define DST_IP      "things.ubidots.com"
#define idvariable  "557000297625423d2e059974"   // replace with your Ubidots Variable ID
#define token       "JTV7TqHW7GmDZuQOmb1KASZiYjel62a1PFz7w1rdW4sMjD8xwPY39h06zpmU"  // replace with your Ubidots token
int len;
int sensorValue = 0;
int sensorPin = A5;

void setup()
{
  // Open serial communications and wait for port to open:
  char cmd[254];
  Serial.begin(115200);
  Serial.setTimeout(5000);
  //test if the module is ready
  Serial.println("AT+RST");
  delay(1000);
  if (Serial.find("ready"))
  {
    //dbgSerial.println("Module is ready");
  }
  else
  {
    //dbgSerial.println("Module have no response.");
    while (1);
  }
  delay (1000);
  //connect to the wifi
  boolean connected = false;
  for (int i = 0; i < 5; i++)
  {
    if (connectWiFi())
    {
      connected = true;
      break;
    }
  }
  if (!connected) {
    while (1);
  }
  delay(5000);
  Serial.println("AT+CIPMUX=0");
}

void loop()
{
  int num = 0;
  sensorValue = analogRead(sensorPin);
  String var = "{\"sensorValue\":" + String(sensorValue) + "}";
  num = var.length();
  String cmd = "AT+CIPSTART=\"TCP\",\"";
  cmd += DST_IP;
  cmd += "\",80";
  Serial.println(cmd);
  if (Serial.find("Error")) return;

  len = strlen ("POST /api/v1.6/datasources/");
  len = len + strlen (idvariable);
  len = len + strlen ("/values HTTP/1.1\nContent-Type: application/json\nContent-Length: ");
  char numlenght[4]; // this will hold the length of num which is the length of the JSON element
  sprintf(numlenght, "%d", num); // saw this clever code off the net; works yay
  len = len + strlen (numlenght);
  len = len + num; //fixed length of the string that will print as Content-Length: in the POST
  len = len + strlen ("\nX-Auth-Token: ");
  len = len + strlen (token);
  len = len + strlen ("\nHost: things.ubidots.com\n\n");
  len = len + strlen ("\n\n");
  Serial.print("AT+CIPSEND=");
  Serial.println (len); //lenght of the entire data POST for the CIPSEND command of ESP2866
  //Serial.println(cmd.length());
  if (Serial.find(">"))
  {
    //Serial.print(">");
  } else
  {
    Serial.println("AT+CIPCLOSE");
    delay(1000);
    return;
  }
  Serial.print ("POST /api/v1.6/variables/");
  Serial.print (idvariable);
  Serial.print ("/values HTTP/1.1\nContent-Type: application/json\nContent-Length: ");
  Serial.print (num);
  Serial.print ("\nX-Auth-Token: ");
  Serial.print (token);
  Serial.print ("\nHost: things.ubidots.com\n\n");
  Serial.print (var);
  Serial.println ("\n\n");
  delay(9000);
  //Serial.find("+IPD"); clear the input buffer after the web site responds to the POST
  while (Serial.available())
  {
    char c = Serial.read();
  }
  delay(1000);
}
boolean connectWiFi()
{
  Serial.println("AT+CWMODE=1");
  String cmd = "AT+CWJAP=\"";
  cmd += SSID;
  cmd += "\",\"";
  cmd += PASS;
  cmd += "\"";
  Serial.println(cmd);
  delay(2000);
  if (Serial.find("OK"))
  {
    return true;
  } else
  {
    return false;
  }
}


I got this on my serial monitor and it just stuck like so;
Image

Any idea why is it so?

thanks in advance.

Re: esp8266 + arduino + ubidots

PostPosted: Wed Jun 10, 2015 2:12 pm
by tytower
try commenting out the " while (1);"
maybe have a look herehttp://www.esp8266.com/viewtopic.php?f=6&t=3486

Re: esp8266 + arduino + ubidots

PostPosted: Wed Jun 10, 2015 11:48 pm
by aguspg
Hi Tytower,

Thanks to your contribution we were able to update our ESP8266 tutorial. We mentioned your username, but let us know how else we should credit you in it: http://ubidots.com/docs/devices/ESP8266.html

Re: esp8266 + arduino + ubidots

PostPosted: Sat Apr 09, 2016 11:47 am
by sareesh
Hello thivaakar, hav you got this working. I have been using thingspeak and would like to try ubidots now. Also, do you know how to read data from Ubidots or thingspeak with same setup (ESP8266 connected to Arduino Pro). I couldnt find a code yet. I was trying UNO with Ethernet shield and somehow not yet found a solution..