Error: 'auth' was not declared in this scope; did you mean 'auto'

Trying to get an old project to work on the new Blynk platform. It’s just a DHT sensor that sends two values that I can monitor remotely. I looked around and didn’t find a solution for this specific issue:

Current error for this line:

error: ‘auth’ was not declared in this scope; did you mean ‘auto’?
** 103 | Blynk.begin (auth, ssid, pass);**

Here’s my includes:

#define BLYNK_PRINT Serial// Comment this out to disable prints and save space
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// #include <SimpleTimer.h> Old from 2018
#include <Blynk.h>
#include <DHT.h>

The thing is, I have a test sketch working just fine with the exact same syntax for “Blynk.begin (auth, ssid, pass);” so not sure why that is not working here.

• NodeMCU 0.9 + WIFI
• Blynk server
• Blynk Library version 1.1 (but tried 0.6 and 0.4 and neither helped)

My original project from 2018:

Posting your whole sketch might help.

I’m guessing that you’ve pasted the three lines of firmware configuration from the web console Device > Device Info screen to the very top of your sketch?

That will give you three lines of code that look like this:

#define BLYNK_TEMPLATE_ID "REDACTED"
#define BLYNK_DEVICE_NAME "REDACTED"
#define BLYNK_AUTH_TOKEN "REDACTED"

The last of these lines of code is your Blynk authorisation token, and this is what you need to use in your Blynk.begin command.

The simplest way to do this is to change this:

Blynk.begin (auth, ssid, pass);

to this:

Blynk.begin (BLYNK_AUTH_TOKEN , ssid, pass);

Pete.

1 Like

Thanks Pete. Yes, I do have the token lines in there. As I said, I had a working sketch and this is not my first rodeo. I didn’t post them because then I have to redact them.

Your suggestion on this worked though:

Blynk.begin (BLYNK_AUTH_TOKEN , ssid, pass);

The sketch now compiles. Thanks!
But it is still odd that the test sketch does not use that line and yet works.

/*************************************************************

  This is a simple demo of sending and receiving some data.
  Be sure to check out other examples!
 *************************************************************/

// Template ID, Device Name and Auth Token are provided by the Blynk.Cloud
// See the Device Info tab, or Template settings
#define BLYNK_TEMPLATE_ID           "XXXXX"
#define BLYNK_DEVICE_NAME           "Quickstart Device"
#define BLYNK_AUTH_TOKEN            "X"


// Comment this out to disable prints and save space
#define BLYNK_PRINT Serial


#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = BLYNK_AUTH_TOKEN;

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "XXXX";
char pass[] = "XXXX";

BlynkTimer timer;

// This function is called every time the Virtual Pin 0 state changes
BLYNK_WRITE(V0)
{
  // Set incoming value from pin V0 to a variable
  int value = param.asInt();

  // Update state
  Blynk.virtualWrite(V1, value);
}

// This function is called every time the device is connected to the Blynk.Cloud
BLYNK_CONNECTED()
{
  // Change Web Link Button message to "Congratulations!"
  Blynk.setProperty(V3, "offImageUrl", "https://static-image.nyc3.cdn.digitaloceanspaces.com/general/fte/congratulations.png");
  Blynk.setProperty(V3, "onImageUrl",  "https://static-image.nyc3.cdn.digitaloceanspaces.com/general/fte/congratulations_pressed.png");
  Blynk.setProperty(V3, "url", "https://docs.blynk.io/en/getting-started/what-do-i-need-to-blynk/how-quickstart-device-was-made");
}

// This function sends Arduino's uptime every second to Virtual Pin 2.
void myTimerEvent()
{
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V2, millis() / 1000);
}

void setup()
{
  // Debug console
  Serial.begin(115200);

  Blynk.begin(auth, ssid, pass);
  // You can also specify server:
  //Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);

  // Setup a function to be called every second
  timer.setInterval(1000L, myTimerEvent);
}

void loop()
{
  Blynk.run();
  timer.run();
  // You can inject your own code or combine it with other sketches.
  // Check other examples on how to communicate with Blynk. Remember
  // to avoid delay() function!
}

The examples use this line instead…

which translates the new variable name of BLYNK_AUTH_TOKEN into the old variable name of auth.
Both approaches work, but mine is neater :innocent:

Pete.