My arduino with ethernet sheild W5100 cannot connect to cayenne

My devices : Arduino Mega 2560 with W5100 ethernet shield

Web Dashboard

this is my code .

/*
This example shows how to connect to Cayenne using an Ethernet W5100 shield and send/receive sample data.

The CayenneMQTT Library is required to run this sketch. If you have not already done so you can install it from the Arduino IDE Library Manager.

Steps:

  1. Set the Cayenne authentication info to match the authentication info from the Dashboard.
  2. Compile and upload the sketch.
  3. A temporary widget will be automatically generated in the Cayenne Dashboard. To make the widget permanent click the plus sign on the widget.
    */

//#define CAYENNE_DEBUG // Uncomment to show debug messages
#define CAYENNE_PRINT Serial // Comment this out to disable prints and save space
#include <CayenneMQTTEthernet.h>

// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username = “xxxxxxxxxxxxxxxxxxxxxxxxx”;
char password = “xxxxxxxxxxxxxxxxxxxxxxxxx”;
char clientID = “xxxxxxxxxxxxxxxxxxxxxxxxx”;

void setup() {
Serial.begin(9600);
Cayenne.begin(username, password, clientID);
}

void loop() {
Cayenne.loop();
}

// Default function for sending sensor data at intervals to Cayenne.
// You can also use functions for specific channels, e.g CAYENNE_OUT(1) for sending channel 1 data.
CAYENNE_OUT_DEFAULT()
{
// Write data to Cayenne here. This example just sends the current uptime in milliseconds on virtual channel 0.
Cayenne.virtualWrite(0, millis());
// Some examples of other functions you can use to send data.
//Cayenne.celsiusWrite(1, 22.0);
//Cayenne.luxWrite(2, 700);
//Cayenne.virtualWrite(3, 50, TYPE_PROXIMITY, UNIT_CENTIMETER);
}

// Default function for processing actuator commands from the Cayenne Dashboard.
// You can also use functions for specific channels, e.g CAYENNE_IN(1) for channel 1 commands.
CAYENNE_IN_DEFAULT()
{
CAYENNE_LOG(“Channel %u, value %s”, request.channel, getValue.asString());
//Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError(“Error message”);
}

uncomment this //#define CAYENNE_DEBUG and check your serial monitor for any error. post a screenshot of your serial monitor.

It was error since i compile in arduino ide .

I can connect now. Thank you so much .:smiley:

Hi guys,

I got a similar problem as realplastic01 and I am using the exact same Hardware.

Are there any special settings I have to set on my internet connection?

Thanks!

I don’t have any issue to connect at this time.
Could you please check again ?

Hey eptrak,

I was trying now at a different location. The solution is quiet simple. At the first location I think that the port: 1883 is not open. (I know really dumb and faulty of mine). At home I am able to open port 1883.
So for all make sure ur internet router allows traffic via port 1883

1 Like

Hi there,

Using arduino uno and W5100 I don’t get any connexion. I think my hardware is working properly, as I can get for instance the time from a ntp server.

here is what I get from the serial monitor:

and the code I’m using:

/*
This example shows how to connect to Cayenne using an Ethernet W5100 shield and send/receive sample data.

The CayenneMQTT Library is required to run this sketch. If you have not already done so you can install it from the Arduino IDE Library Manager.

Steps:

  1. Set the Cayenne authentication info to match the authentication info from the Dashboard.
  2. Compile and upload the sketch.
  3. A temporary widget will be automatically generated in the Cayenne Dashboard. To make the widget permanent click the plus sign on the widget.
    */

#define CAYENNE_DEBUG // Uncomment to show debug messages
#define CAYENNE_PRINT Serial // Comment this out to disable prints and save space
#include <CayenneMQTTEthernet.h>

// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username = “xxxxxxxxx”;
char password = “xxxxxxxxxx”;
char clientID = “xxxxxxxxxxxx”;

void setup() {
Serial.begin(9600);
Cayenne.begin(username, password, clientID);
}

void loop() {
Cayenne.loop();
}

// Default function for sending sensor data at intervals to Cayenne.
// You can also use functions for specific channels, e.g CAYENNE_OUT(1) for sending channel 1 data.
CAYENNE_OUT_DEFAULT()
{
// Write data to Cayenne here. This example just sends the current uptime in milliseconds on virtual channel 0.
Cayenne.virtualWrite(0, millis());
// Some examples of other functions you can use to send data.
//Cayenne.celsiusWrite(1, 22.0);
//Cayenne.luxWrite(2, 700);
//Cayenne.virtualWrite(3, 50, TYPE_PROXIMITY, UNIT_CENTIMETER);
}

// Default function for processing actuator commands from the Cayenne Dashboard.
// You can also use functions for specific channels, e.g CAYENNE_IN(1) for channel 1 commands.
CAYENNE_IN_DEFAULT()
{
CAYENNE_LOG(“Channel %u, value %s”, request.channel, getValue.asString());
//Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError(“Error message”);
}

I checked the codes, the library seems properly installed…

thank you for your help!

can you try the manual connection code Cayenne-MQTT-Arduino/ManualConnection.ino at master ¡ myDevicesIoT/Cayenne-MQTT-Arduino ¡ GitHub

I made a copy / paste of your code, replaced the username, password and id with those given by your website, I get the same result:

you need to change those ids to match your router.

I put in my code the ids I got from the step 3 here : Isn’t that te right way to proceed?

i mean these values:

byte arduino_mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
IPAddress arduino_ip(10, 0, 0, 20);
IPAddress dns_ip(8, 8, 8, 8);
IPAddress gateway_ip(10, 0, 0, 1);
IPAddress subnet_mask(255, 255, 255, 0);

I put these Ids, it still doesn’t works:

IPAddress arduino_ip(192, 168, 1, 160);
IPAddress dns_ip(80, 10, 246, 3);
IPAddress gateway_ip(192, 168, 1, 1);
IPAddress subnet_mask(255, 255, 255, 0);

here are my router settings:

I put an ip adress for the arduino which is out of the dhcp range, is that correct?

is this correct?

I found this value here:

I tried both primary and secondary DNS, same result…

try this values:

byte arduino_mac[] = { 0xFF, 0x66, 0xEB, 0x78, 0x46, 0x7E };
IPAddress arduino_ip(192, 168, 1, 30);
IPAddress dns_ip(80, 10, 246, 3);
IPAddress gateway_ip(192, 168, 1, 1);
IPAddress subnet_mask(255, 255, 255, 0);

Also check if the network firewall is blocking traffic to mqtt.mydevices.com or port 1883

I set the firewall on the lowest security level, tried the values you gave me, and got the same result ! :cry:

When setting the lowest firewall security level, I got a note “this firewall won’t stop any traffic, however any connexion initiated from Internet will be rejected if the corresponding NAT / PAT rule hasn’t been created”. No relationship to my issue?