====== ESPDUINO ======
This is MQTT client for arduino connect to broker via ESP8266 AT command, port from [[https://github.com/esar/contiki-mqtt|MQTT client library for Contiki]]
You can find the Native MQTT client library for ESP8266 work well here: [[esp_mqtt]]
===== Features =====
* Support subscribing, publishing, authentication, will messages, keep alive pings and all 3 QoS levels (it should be a fully functional client).
* Easy to setup and use
===== Required =====
You will need V0.2 AT+ commands from Espressif, if you do not have you can download and flash the following: ESP8266 At Command 0.2: [[https://github.com/espressif/esp8266_at|https://github.com/espressif/esp8266_at]]
You will also need the ESPDUINO library for Arduino that can be found here: https://github.com/tuanpmt/espduino
===== Warning =====
you have to change the SERIAL_BUFFER_SIZE minimum is 64 bytes in
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp
===== Status =====
WORKING
===== Usage =====
#include
#include
SoftwareSerial debugPort(2, 3); // RX, TX
ESP esp(&Serial, &debugPort, 13);
void wifiCb(uint8_t status)
{
debugPort.println("WIFI: Connected");
esp.mqttConnect("mqtt.domain.io", 1880);
}
void mqttConnected(uint32_t* args)
{
debugPort.println("MQTT:Connected");
esp.subscribe("/topic");
}
void mqttDisconnected(uint32_t* args)
{
debugPort.println("MQTT:Disconnected");
}
void mqttPublished(uint32_t* args)
{
debugPort.println("MQTT:Published");
}
void mqttData(uint32_t* args)
{
mqtt_event_data_t *event_data = (mqtt_event_data_t *)args;
char topic[16];
char data[32];
memcpy(topic, event_data->topic, event_data->topic_length);
memcpy(data, event_data->data, event_data->data_length);
topic[event_data->topic_length] = 0;
data[event_data->data_length] = 0;
debugPort.print("Received, topic:");
debugPort.print(topic);
debugPort.print(", data:");
debugPort.println(data);
}
const char clientId[] = "clientId";
const char user[] = "user";
const char pass[] = "pass";
void setup() {
delay(200);
Serial.begin(115200);
debugPort.begin(9600);
/* setup event */
esp.wifiCb.attach(&wifiCb);
esp.mqttConnected.attach(&mqttConnected);
esp.mqttDisconnected.attach(&mqttDisconnected);
esp.mqttPublished.attach(&mqttPublished);
esp.mqttData.attach(&mqttData);
/* Init data */
esp.initMqttClient(clientId, user, pass, 30);
/* wifi connect */
esp.wifiConnect("DVES_HOME", "yourpassword");
}
void loop() {
esp.process();
}