Control of arduino MKR 1010 everywhere from internet


I would like to control arduino MKR WiFi 1010. I tried to use Cayenne but something is wrong. I can’t connect to Caye dashboard.

#include <PubSubClient.h>

//#include <WiFi101.h>

#include <WiFiNINA.h>

This example shows how to connect to Cayenne using an Arduino/Genuino MKR1000 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.


  1. Install the Arduino SAMD Boards from the Arduino IDE Boards Manager if you have not already done so.
  2. Select the MKR1000 board from the Arduino IDE Tools menu.
  3. Set the Cayenne authentication info to match the authentication info from the Dashboard.
  4. Set the network name and password.
  5. Compile and upload the sketch.
  6. 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>

// WiFi network info.
char ssid = “Tihomir”;
char password = “Tihomir79062444”;

WiFiClient espClient;
PubSubClient client(espClient);

void callback(char* topic, byte* payload, unsigned int length);

// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username = “3836bcd0-8ab0-11ea-b767-3f1a8f1211ba”;
char password1 = “fbee6fa6489face00636d7c0cf530df7788878e1”;
char clientID = “a7c629d0-8c47-11ea-b767-3f1a8f1211ba”;

unsigned long lastMillis = 0;
void setup() {

WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
Serial.println(“Not connected”);
WiFi.begin(ssid, password);
Serial.println(“WiFi Connected”);


Cayenne.begin(username, password1, clientID);//, ssid, password);

void loop() {
//if (millis() - lastMillis > 10000)
//lastMillis = millis();
//Cayenne.virtualWrite(0, lastMillis);

void callback(char* topic, byte* payload, unsigned int length)

// 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.
// 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_LOG(“Channel %u, value %s”,, getValue.asString());
//Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError(“Error message”);


I connected the board using arduino IoT cloud. I can control it now via internet. I would like to ask if this is a stable solution or I have to check about any other possibility controlling the arduino MKR 1010 WiFi through internet and smart phone?

Thank you