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)
|
||||
|
||||
# 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
|
||||
|
||||
|
@ -157,7 +157,7 @@ The broker does not yet support:
|
|||
- TLS
|
||||
"
|
||||
# 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")
|
||||
- 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.
|
||||
|
||||
You can find a sample sketch in the "Arduino" directory.
|
||||
|
||||
# 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.
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue