Hello
I am having a lot of connectivity trouble with my Arduino to my MQTT server. My setup is a Mosquitto Broker on a local computer and then I am trying to have my Arduino subscribe to the Topic "outTopic" and publish to the Topic "inTopic". My arduino is using the Arduino Wifi Shield to connect to my router. I have already updated my IDE to the latest version and my wifi shield to the newest firmware. I have no problem connecting to the router. I have run the WebServer script on my Arduino and it worked perfectly fine. The problem I am having is when the code gets to "if (!client.connect("Arduino"))" it just fails to connect to the server and just does nothing. Any suggestions on what I should do to fix the issue. Below are the code and the resulting serial output. The serial commands are just for troubleshooting. I am using the PubSubClient, from Arduino Client for MQTT · knolleary
/*
Basic MQTT example** - connects to an MQTT server**
** - publishes "hello world" to the topic "outTopic"**
** - subscribes to the topic "inTopic"**
*/
#include <SPI.h>
#include <WiFi.h>
#include <PubSubClient.h>
// Update these with values suitable for your network.
char ssid[] = "#######"; // your network SSID (name)
char pass[] = "#######"; // your network password
int status = WL_IDLE_STATUS; // the Wifi radio's status
byte server[] = {###,###,#,#};
void callback(char* topic, byte* payload, unsigned int length) {
** // handle message arrived**
}
WiFiClient wifiClient;
PubSubClient client(server, 1883, callback, wifiClient);
void setup()
{
//Initialize serial and wait for port to open:
** Serial.begin(9600);**
** while (!Serial) {**
** ; // wait for serial port to connect. Needed for Leonardo only**
** }**
** // check for the presence of the shield:**
** if (WiFi.status() == WL_NO_SHIELD) {**
** Serial.println("WiFi shield not present");**
** // don't continue:**
** while (true);**
** }**
** String fv = WiFi.firmwareVersion();**
** if ( fv != "1.1.0" )**
** Serial.println("Please upgrade the firmware");**
** // 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);**
** // wait 10 seconds for connection:**
** delay(10000);**
** }**
** // you're connected now, so print out the data:**
** Serial.print("You're connected to the network");**
** printCurrentNet();**
** printWifiData();**** delay(1000);**
** if (!client.connected())**
** {**
** Serial.println("client.connected Passed");**** if (!client.connect("Arduino")) // Fails everytime right here**
** Serial.println("client.connect FAILED");**** if (!client.publish("outTopic","hello world"))**
** Serial.println("client.publish FAILED");**** if (!client.subscribe("inTopic"))**
** Serial.println("client.subscribe FAILED");**** Serial.println("Publication and Subscription are done");**
** }**
** else**
** Serial.println("Connection Failed");**
}
void loop()
{
** client.loop();**
}
void printWifiData() {
** // print your WiFi shield's IP address:**
** IPAddress ip = WiFi.localIP();**
** Serial.print("IP Address: ");**
** Serial.println(ip);**
** Serial.println(ip);**
** // print your MAC address:**
** byte mac[6];**
** WiFi.macAddress(mac);**
** Serial.print("MAC address: ");**
** Serial.print(mac[5], HEX);**
** Serial.print(":");**
** Serial.print(mac[4], HEX);**
** Serial.print(":");**
** Serial.print(mac[3], HEX);**
** Serial.print(":");**
** Serial.print(mac[2], HEX);**
** Serial.print(":");**
** Serial.print(mac[1], HEX);**
** Serial.print(":");**
** Serial.println(mac[0], HEX);**
}
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);**
** Serial.print("BSSID: ");**
** Serial.print(bssid[5], HEX);**
** Serial.print(":");**
** Serial.print(bssid[4], HEX);**
** Serial.print(":");**
** Serial.print(bssid[3], HEX);**
** Serial.print(":");**
** Serial.print(bssid[2], HEX);**
** Serial.print(":");**
** Serial.print(bssid[1], HEX);**
** Serial.print(":");**
** Serial.println(bssid[0], HEX);**
** // print the received signal strength:**
** long rssi = WiFi.RSSI();**
** Serial.print("signal strength (RSSI):");**
** Serial.println(rssi);**
** // print the encryption type:**
** byte encryption = WiFi.encryptionType();**
** Serial.print("Encryption Type:");**
** Serial.println(encryption, HEX);**
** Serial.println();**
}
Attempting to connect to WPA SSID: ######
You're connected to the networkSSID: ######
BSSID: #########
signal strength (RSSI): ###
Encryption Type:#IP Address: ########
#########
MAC address: #########
client.connected Passed
client.connect FAILED
client.publish FAILED
client.subscribe FAILED
Publication and Subscription are done