kopia lustrzana https://github.com/martin-ger/esp_mqtt
Added Arduino sample code
rodzic
a71414f77e
commit
cb563d13fd
|
@ -0,0 +1,91 @@
|
||||||
|
/*
|
||||||
|
* esp_uMQTT_broker demo for Arduino
|
||||||
|
*
|
||||||
|
* The program starts a broker, subscribes to anything and publishs a topic every second.
|
||||||
|
* Try to connect from a remote client and publish something - the console will show this as well.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ESP8266WiFi.h>
|
||||||
|
|
||||||
|
#include "mqtt_server.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Your WiFi config here
|
||||||
|
*/
|
||||||
|
char ssid[] = "MySSID"; // your network SSID (name)
|
||||||
|
char pass[] = "MyPassword"; // your network password
|
||||||
|
|
||||||
|
|
||||||
|
unsigned int mqttPort = 1883; // the standard MQTT broker port
|
||||||
|
unsigned int max_subscriptions = 30;
|
||||||
|
unsigned int max_retained_topics = 30;
|
||||||
|
|
||||||
|
void data_callback(uint32_t *client /* we can ignore this */, const char* topic, uint32_t topic_len, const char *data, uint32_t lengh) {
|
||||||
|
char topic_str[topic_len+1];
|
||||||
|
os_memcpy(topic_str, topic, topic_len);
|
||||||
|
topic_str[topic_len] = '\0';
|
||||||
|
|
||||||
|
char data_str[lengh+1];
|
||||||
|
os_memcpy(data_str, data, lengh);
|
||||||
|
data_str[lengh] = '\0';
|
||||||
|
|
||||||
|
Serial.print("received topic '");
|
||||||
|
Serial.print(topic_str);
|
||||||
|
Serial.print("' with data '");
|
||||||
|
Serial.print(data_str);
|
||||||
|
Serial.println("'");
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println();
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
// We start by connecting to a WiFi network
|
||||||
|
Serial.print("Connecting to ");
|
||||||
|
Serial.println(ssid);
|
||||||
|
WiFi.begin(ssid, pass);
|
||||||
|
|
||||||
|
while (WiFi.status() != WL_CONNECTED) {
|
||||||
|
delay(500);
|
||||||
|
Serial.print(".");
|
||||||
|
}
|
||||||
|
Serial.println("");
|
||||||
|
|
||||||
|
Serial.println("WiFi connected");
|
||||||
|
Serial.println("IP address: ");
|
||||||
|
Serial.println(WiFi.localIP());
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register the callback
|
||||||
|
*/
|
||||||
|
MQTT_server_onData(data_callback);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Start the broker
|
||||||
|
*/
|
||||||
|
Serial.println("Starting MQTT broker");
|
||||||
|
MQTT_server_start(mqttPort, max_subscriptions, max_retained_topics);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Subscribe to anything
|
||||||
|
*/
|
||||||
|
MQTT_local_subscribe((unsigned char *)"#", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int counter = 0;
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
String myData(counter++);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Publish the counter value as String
|
||||||
|
*/
|
||||||
|
MQTT_local_publish((unsigned char *)"/MyBroker/count", (unsigned char *)myData.c_str(), myData.length(), 0, 0);
|
||||||
|
|
||||||
|
// wait a second
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
|
|
|
@ -129,9 +129,9 @@ mDNS is supported and depending on "mdns_mode" the broker responds on the name "
|
||||||
- set mdns_mode [0|1|2]: selects, which interface address should be announced via mDNS (0=none (default), 1 = STA, 2 = SoftAP)
|
- set mdns_mode [0|1|2]: selects, which interface address should be announced via mDNS (0=none (default), 1 = STA, 2 = SoftAP)
|
||||||
|
|
||||||
# Building and Flashing
|
# Building and Flashing
|
||||||
The code can be used in any project that is compiled using the NONOS_SDK or the esp-open-sdk. Also the sample code in the user directory can be build using the standard SDKs after adapting the variables in the Makefile.
|
The code can be used in any project that is compiled using the NONOS_SDK or the esp-open-sdk. Also the complete broker in the user directory can be build using the standard SDKs after adapting the variables in the Makefile.
|
||||||
|
|
||||||
Build the esp_uMQTT_broker firmware with "make". "make flash" flashes it onto an esp8266.
|
Configure the build options in "user_config.h", then build the esp_uMQTT_broker firmware with "make". "make flash" flashes it onto an esp8266.
|
||||||
|
|
||||||
If you want to use the precompiled binaries from the firmware directory you can flash them directly on an ESP8266, e.g. with
|
If you want to use the precompiled binaries from the firmware directory you can flash them directly on an ESP8266, e.g. with
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ The broker does not yet support:
|
||||||
- TLS
|
- TLS
|
||||||
"
|
"
|
||||||
# Using the esp_uMQTT_broker in an Arduino project
|
# Using the esp_uMQTT_broker in an Arduino project
|
||||||
There is a fast-and-dirty hack to add the pure broker functionality (not the CLI and the scripting) to any ESP Arduino project:
|
There is a quick-and-dirty hack to add the pure broker functionality (not the CLI and the scripting) to any ESP Arduino project:
|
||||||
|
|
||||||
- Go to the install directory of the ESP8266 support package (something like: "[yourArduinoDir]/hardware/esp8266com/esp8266")
|
- Go to the install directory of the ESP8266 support package (something like: "[yourArduinoDir]/hardware/esp8266com/esp8266")
|
||||||
- Look for the file "platform.txt"
|
- Look for the file "platform.txt"
|
||||||
|
@ -183,6 +183,8 @@ MQTT_server_start(1883, 30, 30);
|
||||||
|
|
||||||
The MQTT server will now run in the background and you can connect with any MQTT client. Your Arduino project might do other application logic in its loop.
|
The MQTT server will now run in the background and you can connect with any MQTT client. Your Arduino project might do other application logic in its loop.
|
||||||
|
|
||||||
|
You can find a sample sketch in the "Arduino" directory.
|
||||||
|
|
||||||
# Using the Source Code
|
# Using the Source Code
|
||||||
The complete broker functionality is included in the mqtt directory and can be integrated into any NONOS SDK (or ESP Arduino) program ("make -f Makefile.orig lib" will build the mqtt code as a C library). You can find a minimal demo in the directory "user_basic". Rename it to "user", adapt "user_config.h", and do the "make" to build a small demo that just starts an MQTT broker without any additional logic.
|
The complete broker functionality is included in the mqtt directory and can be integrated into any NONOS SDK (or ESP Arduino) program ("make -f Makefile.orig lib" will build the mqtt code as a C library). You can find a minimal demo in the directory "user_basic". Rename it to "user", adapt "user_config.h", and do the "make" to build a small demo that just starts an MQTT broker without any additional logic.
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue