Post topics, source code that relate to the Arduino Platform

User avatar
By N_spot
#79743 Problem

am having issues sending HTTP GET requests to a GoPro Camera. I have gotten this to work for 3 different GoPro cameras, it is just the newer Hero 5 that is giving me problems. It is probably something simple, but the client connection works and the HTTP requests work right after the wifi connections have been reset on the camera, but if the ESP8266 is reset after a first WiFi connection, it connects to the WiFi fine, but all HTTP requests return a -1 HTTP Code and the client fails to connect.

I've tried calling client.flush(), client.stop() and just about anything else I can think of or find online. The only way to make the commands work again is to reset the WiFi connections on the camera. If I connect using my computer, I have no problem sending the commands from Google Chrome as shown in the attached picture. I've tried using the regular ESP8266WiFi library and the ESP8266HTTPClient library as shown below. Any help would be appreciated! Thanks

Image

Source Code - Arduino IDE Sketch

Code: Select all#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

// Use WiFiclient class to create TCP connections
WiFiClient client;
HTTPClient http;

const char* ssid     = "GP25000830";
const char* password = "vault9291";

String wifi_ssid = "GP25000830";
String wifi_password = "vault9291";

const char* host = "10.5.5.9";
const int httpPort = 80;


String StartURL = "/gp/gpControl/command/shutter?p=1";


void Trigger() {
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }

  //Command for starting recording
  client.print(String("GET ") + StartURL + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "User-Agent: RCRemote\r\n" +
               "Connection: close\r\n\r\n");
  Serial.println("Triggering");
  delay(20);
}


void Trigger_http() {
  http.begin("http://10.5.5.9/gp/gpControl/command/shutter?p=1");
  int httpCode = http.GET();
  Serial.print("Http Code is: ");
  Serial.println(httpCode);
  http.end();
}


void setup() {
  WiFi.disconnect(true);
  WiFi.disconnect();

  Serial.begin(115200);

  // We start by connecting to a WiFi network

  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  client.flush();

}


void loop() {

  Trigger();
  delay(5000);
  Trigger_http();
  delay(5000);
}


Debug Messages

This is just the debug messages generated via the Serial Port (Debug Level = HTTP_CLIENT). The sketch output is intermixed with the debug messages.

Code: Select allSDK:3.0.0-dev(c0f7b44)/Core:2.5.0-beta2=20499902/lwIP:STABLE-2_1_2_RELEASE/glue:1.0-4-gc434c6f/BearSSL:2398cc6
Connecting to GP25000830
mode : sta(38:2b:78:04:3b:81)
add if0
.....scandone
state: 0 -> 2 (b0)
.state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 1
cnt
.
connected with GP25000830, channel 6
dhcp client start...
....ip:10.5.5.100,mask:255.255.255.0,gw:10.5.5.9
.
WiFi connected
IP address: 10.5.5.100
connection failed
pm open,type:2 0
[HTTP-Client][begin] url: http://10.5.5.9/gp/gpControl/command/shutter?p=1
[HTTP-Client][begin] host: 10.5.5.9 port: 80 url: /gp/gpControl/command/shutter?p=1
[HTTP-Client] failed connect to 10.5.5.9:80
[HTTP-Client][returnError] error(-1): connection refused
Http Code is: -1
[HTTP-Client][end] tcp is closed
connection failed
[HTTP-Client][begin] url: http://10.5.5.9/gp/gpControl/command/shutter?p=1
[HTTP-Client][begin] host: 10.5.5.9 port: 80 url: /gp/gpControl/command/shutter?p=1
[HTTP-Client] failed connect to 10.5.5.9:80
[HTTP-Client][returnError] error(-1): connection refused
Http Code is: -1
[HTTP-Client][end] tcp is closed


If you need any other details, please let me know. Thanks!