Initial commit of Arduino libraries
This commit is contained in:
@@ -0,0 +1,194 @@
|
||||
/*
|
||||
ArduinoMqttClient - WiFi Advanced Callback
|
||||
|
||||
This example connects to a MQTT broker and subscribes to a single topic,
|
||||
it also publishes a message to another topic every 10 seconds.
|
||||
When a message is received it prints the message to the Serial Monitor,
|
||||
it uses the callback functionality of the library.
|
||||
|
||||
It also demonstrates how to set the will message, get/set QoS,
|
||||
duplicate and retain values of messages.
|
||||
|
||||
The circuit:
|
||||
- Arduino MKR 1000, MKR 1010 or Uno WiFi Rev2 board
|
||||
|
||||
This example code is in the public domain.
|
||||
*/
|
||||
|
||||
#include <ArduinoMqttClient.h>
|
||||
#if defined(ARDUINO_SAMD_MKRWIFI1010) || defined(ARDUINO_SAMD_NANO_33_IOT) || defined(ARDUINO_AVR_UNO_WIFI_REV2)
|
||||
#include <WiFiNINA.h>
|
||||
#elif defined(ARDUINO_SAMD_MKR1000)
|
||||
#include <WiFi101.h>
|
||||
#elif defined(ARDUINO_ARCH_ESP8266)
|
||||
#include <ESP8266WiFi.h>
|
||||
#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_GIGA) || defined(ARDUINO_OPTA)
|
||||
#include <WiFi.h>
|
||||
#elif defined(ARDUINO_PORTENTA_C33)
|
||||
#include <WiFiC3.h>
|
||||
#elif defined(ARDUINO_UNOR4_WIFI)
|
||||
#include <WiFiS3.h>
|
||||
#endif
|
||||
|
||||
#include "arduino_secrets.h"
|
||||
///////please enter your sensitive data in the Secret tab/arduino_secrets.h
|
||||
char ssid[] = SECRET_SSID; // your network SSID (name)
|
||||
char pass[] = SECRET_PASS; // your network password (use for WPA, or use as key for WEP)
|
||||
|
||||
// To connect with SSL/TLS:
|
||||
// 1) Change WiFiClient to WiFiSSLClient.
|
||||
// 2) Change port value from 1883 to 8883.
|
||||
// 3) Change broker value to a server with a known SSL/TLS root certificate
|
||||
// flashed in the WiFi module.
|
||||
|
||||
WiFiClient wifiClient;
|
||||
MqttClient mqttClient(wifiClient);
|
||||
|
||||
const char broker[] = "test.mosquitto.org";
|
||||
int port = 1883;
|
||||
const char willTopic[] = "arduino/will";
|
||||
const char inTopic[] = "arduino/in";
|
||||
const char outTopic[] = "arduino/out";
|
||||
|
||||
const long interval = 10000;
|
||||
unsigned long previousMillis = 0;
|
||||
|
||||
int count = 0;
|
||||
|
||||
void setup() {
|
||||
//Initialize serial and wait for port to open:
|
||||
Serial.begin(9600);
|
||||
while (!Serial) {
|
||||
; // wait for serial port to connect. Needed for native USB port only
|
||||
}
|
||||
|
||||
// attempt to connect to WiFi network:
|
||||
Serial.print("Attempting to connect to WPA SSID: ");
|
||||
Serial.println(ssid);
|
||||
while (WiFi.begin(ssid, pass) != WL_CONNECTED) {
|
||||
// failed, retry
|
||||
Serial.print(".");
|
||||
delay(5000);
|
||||
}
|
||||
|
||||
Serial.println("You're connected to the network");
|
||||
Serial.println();
|
||||
|
||||
// You can provide a unique client ID, if not set the library uses Arduino-millis()
|
||||
// Each client must have a unique client ID
|
||||
// mqttClient.setId("clientId");
|
||||
|
||||
// You can provide a username and password for authentication
|
||||
// mqttClient.setUsernamePassword("username", "password");
|
||||
|
||||
// By default the library connects with the "clean session" flag set,
|
||||
// you can disable this behaviour by using
|
||||
// mqttClient.setCleanSession(false);
|
||||
|
||||
// set a will message, used by the broker when the connection dies unexpectedly
|
||||
// you must know the size of the message beforehand, and it must be set before connecting
|
||||
String willPayload = "oh no!";
|
||||
bool willRetain = true;
|
||||
int willQos = 1;
|
||||
|
||||
mqttClient.beginWill(willTopic, willPayload.length(), willRetain, willQos);
|
||||
mqttClient.print(willPayload);
|
||||
mqttClient.endWill();
|
||||
|
||||
Serial.print("Attempting to connect to the MQTT broker: ");
|
||||
Serial.println(broker);
|
||||
|
||||
if (!mqttClient.connect(broker, port)) {
|
||||
Serial.print("MQTT connection failed! Error code = ");
|
||||
Serial.println(mqttClient.connectError());
|
||||
|
||||
while (1);
|
||||
}
|
||||
|
||||
Serial.println("You're connected to the MQTT broker!");
|
||||
Serial.println();
|
||||
|
||||
// set the message receive callback
|
||||
mqttClient.onMessage(onMqttMessage);
|
||||
|
||||
Serial.print("Subscribing to topic: ");
|
||||
Serial.println(inTopic);
|
||||
Serial.println();
|
||||
|
||||
// subscribe to a topic
|
||||
// the second parameter sets the QoS of the subscription,
|
||||
// the the library supports subscribing at QoS 0, 1, or 2
|
||||
int subscribeQos = 1;
|
||||
|
||||
mqttClient.subscribe(inTopic, subscribeQos);
|
||||
|
||||
// topics can be unsubscribed using:
|
||||
// mqttClient.unsubscribe(inTopic);
|
||||
|
||||
Serial.print("Waiting for messages on topic: ");
|
||||
Serial.println(inTopic);
|
||||
Serial.println();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// call poll() regularly to allow the library to receive MQTT messages and
|
||||
// send MQTT keep alives which avoids being disconnected by the broker
|
||||
mqttClient.poll();
|
||||
|
||||
// to avoid having delays in loop, we'll use the strategy from BlinkWithoutDelay
|
||||
// see: File -> Examples -> 02.Digital -> BlinkWithoutDelay for more info
|
||||
unsigned long currentMillis = millis();
|
||||
|
||||
if (currentMillis - previousMillis >= interval) {
|
||||
// save the last time a message was sent
|
||||
previousMillis = currentMillis;
|
||||
|
||||
String payload;
|
||||
|
||||
payload += "hello world!";
|
||||
payload += " ";
|
||||
payload += count;
|
||||
|
||||
Serial.print("Sending message to topic: ");
|
||||
Serial.println(outTopic);
|
||||
Serial.println(payload);
|
||||
|
||||
// send message, the Print interface can be used to set the message contents
|
||||
// in this case we know the size ahead of time, so the message payload can be streamed
|
||||
|
||||
bool retained = false;
|
||||
int qos = 1;
|
||||
bool dup = false;
|
||||
|
||||
mqttClient.beginMessage(outTopic, payload.length(), retained, qos, dup);
|
||||
mqttClient.print(payload);
|
||||
mqttClient.endMessage();
|
||||
|
||||
Serial.println();
|
||||
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
void onMqttMessage(int messageSize) {
|
||||
// we received a message, print out the topic and contents
|
||||
Serial.print("Received a message with topic '");
|
||||
Serial.print(mqttClient.messageTopic());
|
||||
Serial.print("', duplicate = ");
|
||||
Serial.print(mqttClient.messageDup() ? "true" : "false");
|
||||
Serial.print(", QoS = ");
|
||||
Serial.print(mqttClient.messageQoS());
|
||||
Serial.print(", retained = ");
|
||||
Serial.print(mqttClient.messageRetain() ? "true" : "false");
|
||||
Serial.print("', length ");
|
||||
Serial.print(messageSize);
|
||||
Serial.println(" bytes:");
|
||||
|
||||
// use the Stream interface to print the contents
|
||||
while (mqttClient.available()) {
|
||||
Serial.print((char)mqttClient.read());
|
||||
}
|
||||
Serial.println();
|
||||
|
||||
Serial.println();
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
#define SECRET_SSID ""
|
||||
#define SECRET_PASS ""
|
||||
Reference in New Issue
Block a user