Using Blynk.config(auth) no matching function for call to 'BlynkWifi::config(char [33])'

Using Blynk 0.4.6
Arduino IDE 1.8.1
Arduino Uno R3 w ESP8266-01 firmware 1.5.4 (AiThinker_ESP8266_DIO_8M_8M_20160615_V1.5.4.bin)

Hello,

I’d like some more control over testing if the wifi connection has dropped and/or Blynk server connection has dropped.
I’ve read this forum topic to get started.

The problem I am having is: Blynk.config(auth); is throwing error: no matching function for call to 'BlynkWifi::config(char [33])'

Relevant code snippets:

#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
#include "WiFiEsp.h"

char auth[] = "<my 33 char token value>";
Blynk.config(auth);

I see the code does have this function call with this signature…so what else could be the problem?

void config(const char* auth,
                const char* domain = BLYNK_DEFAULT_DOMAIN,
                uint16_t    port   = BLYNK_DEFAULT_PORT)
    {
        Base::begin(auth);
        this->conn.begin(domain, port);
    }

Full Code:

/*
 WiFiEsp example: ConnectWPA
 
 This example connects to an encrypted WiFi network using an ESP8266 module.
 Then it prints the  MAC address of the WiFi shield, the IP address obtained
 and other network details.

 For more details see: http://yaab-arduino.blogspot.com/p/wifiesp-example-connect.html
*/

#include "WiFiEsp.h"
#include <BlynkSimpleShieldEsp8266.h>

// Emulate Serial1 on pins 6/7 if not present
#ifndef HAVE_HWSERIAL1
#include "SoftwareSerial.h"
SoftwareSerial Serial1(2, 3); // RX, TX
#endif

char ssid[] = "myssid";            // your network SSID (name)
char pass[] = "mypwd";        // your network password
int status = WL_IDLE_STATUS;     // the Wifi radio's status

char auth[] = "11111111111111111111111111111111";

void setup()
{
  // initialize serial for debugging
  Serial.begin(9600);
  // initialize serial for ESP module
  Serial1.begin(9600);
  // initialize ESP module
  WiFi.init(&Serial1);

  // check for the presence of the shield
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue
    while (true);
  }

  // attempt to connect to WiFi network
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to WPA SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network
    status = WiFi.begin(ssid, pass);
  }

  Serial.println("You're connected to the network");

  Blynk.config(auth);  // in place of Blynk.begin(auth, ssid, pass);
  Blynk.connect(10000);  // timeout set to 10 seconds and then continue without Blynk
  while (Blynk.connected() == false) {
    // Wait until connected
  }
  
  Serial.println("Connected to Blynk server");
  Serial.print("Is Blynk Connected? ");
  Serial.println(Blynk.connected());
}

void loop()
{
  bool isconnected = Blynk.connected();
  if(isconnected)
  {
    Blynk.run();
  } else {
    Serial.println("Blynk not connected in loop :(");
  }
  // print the network connection information every 10 seconds
//  Serial.println();
//  printCurrentNet();
//  printWifiData();
//  
//  delay(10000);
}

void printWifiData()
{
  // print your WiFi shield's IP address
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print your MAC address
  byte mac[6];
  WiFi.macAddress(mac);
  char buf[20];
  sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", mac[5], mac[4], mac[3], mac[2], mac[1], mac[0]);
  Serial.print("MAC address: ");
  Serial.println(buf);
}

void printCurrentNet()
{
  // print the SSID of the network you're attached to
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print the MAC address of the router you're attached to
  byte bssid[6];
  WiFi.BSSID(bssid);
  char buf[20];
  sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", bssid[5], bssid[4], bssid[3], bssid[2], bssid[1], bssid[0]);
  Serial.print("BSSID: ");
  Serial.println(buf);

  // print the received signal strength
  long rssi = WiFi.RSSI();
  Serial.print("Signal strength (RSSI): ");
  Serial.println(rssi);
}

Thanks in advance,
Chad

Paste your entire code untouched as your snippet is misleading.

It looks like you’re trying to call Blynk.config(auth); right after your auth code without putting it in setup().

Ok, see updated question.

1 Like

Bump. Anyone?

Perhaps try with const char *auth = "xxx";
That is how I’m declaring auth, and it works with Blynk.config(auth), though not tested on 0.4.6

Try 115200 for the ESP module baude rate.

edit:
>Look here<

Thanks Marvin, no luck though. Getting error: no matching function for call to 'BlynkWifi::config(const char*&)'

Thanks for the idea, but this is a compile time issue that baud rate won’t affect, and with the ESP software serial, you can’t use 115200, it’s too fast and there are many issues reported with trying to run at that speed. The consensus is to set it to 9600 and to make sure you set up the ESP to be that rate as well through AT commands.

1 Like

Withdrawn, read first post again

Think I’m on the trail now…
There are 2 Blynk libraries that have different config methods that accept different parameters.

1.) BlynkSimpleEsp8266.h
Which has this config method below and is what is commonly referenced in the forum, which you can call via Blynk.config(auth);, but is intended to be used when you are using a stand alone ESP8266 board…NOT when you use an ESP8266 board WITH and Ardunio Uno.

void config(const char* auth,
                const char* domain = BLYNK_DEFAULT_DOMAIN,
                uint16_t    port   = BLYNK_DEFAULT_PORT)
    {
        Base::begin(auth);
        this->conn.begin(domain, port);
    }

2.) BlynkSimpleShieldEsp8266.h. Which has a config method, but takes different parameters, that requires you to pass an ESP8266 type object to it, in addition to the auth. And it is this library that is meant to use with an ESP8266 board WITH and Ardunio Uno:

void config(ESP8266&    esp8266,
                const char* auth,
                const char* domain = BLYNK_DEFAULT_DOMAIN,
                uint16_t    port   = BLYNK_DEFAULT_PORT)
    {
        Base::begin(auth);
        wifi = &esp8266;
        this->conn.setEsp8266(wifi);
        this->conn.begin(domain, port);
    }

I’ve gotten it to work…making an example sketch to upload here for others to follow if they have the same issue. Will post it momentarily.

3 Likes

Figured it out Fettkeewl…see my latest post.

Fun thing is I skimmed through those functions and was entirely blind to the parameter of passing the esp object type… Sigh I might need glasses soon or a caffeine injection

:slight_smile:

yeah I was thinking someone who knew the libraries and their uses with different hardware configs would’ve noticed that distinction, but I know how it goes…many a times I’ve overlooked something simple like that.

This is where I’d love if the arduino IDE would be more like visual studio, showing every version of a function with the different parameters possible… And a little tool tip explanation to follow.

Ha! Yeah me too. I am a long time Visual Studio user and C# coder…so I’m missing the luxuries of intellisense, object explorer, F12 to show object definitions, etc. :slight_smile:

Maybe a jackpot here
http://playground.arduino.cc/Code/VisualMicro

Need to read some more :smile:

Hi, Can you please tell me how to pass an ESP8266 type object to it.
means how to create that type of object. If possible send some any example related to it.

@Jaya_Teja_Kalla This is like a two year old topic :stuck_out_tongue: and the OP hasn’t been around since.

And the OP issue has since been resolved in that Blynk.config() will now work with either library (one meant for standalone ESP8266 and the other for when using an ESP as a shield for Arduino)

Whatever it is you are trying to do, please create a new topic… supply lots of details and relevant code, and show what you have been trying and any results so far.

Thank you.