mqtts using PubSubClient
This commit is contained in:
parent
d48547b198
commit
3acbbd44c2
@ -1,34 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIF7DCCBXKgAwIBAgITMwAAOwbB7ZfX5rV81AAAAAA7BjAKBggqhkjOPQQDAzBd
|
|
||||||
MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS4w
|
|
||||||
LAYDVQQDEyVNaWNyb3NvZnQgQXp1cmUgRUNDIFRMUyBJc3N1aW5nIENBIDAyMB4X
|
|
||||||
DTI0MDUwOTA4MzM0MloXDTI0MDYyNzIzNTk1OVowbDELMAkGA1UEBhMCVVMxCzAJ
|
|
||||||
BgNVBAgTAldBMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg
|
|
||||||
Q29ycG9yYXRpb24xHjAcBgNVBAMMFSouZXZlbnRncmlkLmF6dXJlLm5ldDB2MBAG
|
|
||||||
ByqGSM49AgEGBSuBBAAiA2IABNo1WD1ITcmvbIrygYnhC2D47oZO7b+eMxrHlKDI
|
|
||||||
9cISbOz3HboMqAj+4eBUJ6Q/GmXbIauMsRdlhQB+nNxTjO/aXW9nK1gX+57qk8yH
|
|
||||||
40vVpMhRqIhBHBMKTiyY7d5V+aOCA+MwggPfMIIBBQYKKwYBBAHWeQIEAgSB9gSB
|
|
||||||
8wDxAHYAdv+IPwq2+5VRwmHM9Ye6NLSkzbsp3GhCCp/mZ0xaOnQAAAGPXIXnAQAA
|
|
||||||
BAMARzBFAiEA2Xiv4QRy2EPdNxir/xoDEFfAuBG3pRJ7CYb0UG4MWxICIC4fBr0D
|
|
||||||
enSOkfazlhbOJKM/tS5jxiRwJwN2ekVUhabLAHcASLDja9qmRzQP5WoC+p0w6xxS
|
|
||||||
ActW3SyB2bu/qznYhHMAAAGPXIXm+QAABAMASDBGAiEAi41NhUHiUY1k7r1MERDM
|
|
||||||
Pt5oEkx8+xzZsL0CnpgW5PMCIQD0bzit3HySHw8KLEOTCkxL0ygdUKtDV3P58qM8
|
|
||||||
MNmU0DAnBgkrBgEEAYI3FQoEGjAYMAoGCCsGAQUFBwMCMAoGCCsGAQUFBwMBMDwG
|
|
||||||
CSsGAQQBgjcVBwQvMC0GJSsGAQQBgjcVCIe91xuB5+tGgoGdLo7QDIfw2h1dgoTl
|
|
||||||
aYLzpz4CAWQCASYwgbQGCCsGAQUFBwEBBIGnMIGkMHMGCCsGAQUFBzAChmdodHRw
|
|
||||||
Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMEF6
|
|
||||||
dXJlJTIwRUNDJTIwVExTJTIwSXNzdWluZyUyMENBJTIwMDIlMjAtJTIweHNpZ24u
|
|
||||||
Y3J0MC0GCCsGAQUFBzABhiFodHRwOi8vb25lb2NzcC5taWNyb3NvZnQuY29tL29j
|
|
||||||
c3AwHQYDVR0OBBYEFFuPa3785IaPHHkuMmN+Lga0w0ujMA4GA1UdDwEB/wQEAwIH
|
|
||||||
gDBlBgNVHREEXjBcghUqLmV2ZW50Z3JpZC5henVyZS5uZXSCIioud2VzdHVzMi0x
|
|
||||||
LnRzLmV2ZW50Z3JpZC5henVyZS5uZXSCHyoud2VzdHVzMi0xLmV2ZW50Z3JpZC5h
|
|
||||||
enVyZS5uZXQwDAYDVR0TAQH/BAIwADBqBgNVHR8EYzBhMF+gXaBbhllodHRwOi8v
|
|
||||||
d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBBenVyZSUy
|
|
||||||
MEVDQyUyMFRMUyUyMElzc3VpbmclMjBDQSUyMDAyLmNybDBmBgNVHSAEXzBdMFEG
|
|
||||||
DCsGAQQBgjdMg30BATBBMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29m
|
|
||||||
dC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0wCAYGZ4EMAQICMB8GA1Ud
|
|
||||||
IwQYMBaAFJ3lDnc3R54JM9mQvioJwhJ/TtKjMB0GA1UdJQQWMBQGCCsGAQUFBwMC
|
|
||||||
BggrBgEFBQcDATAKBggqhkjOPQQDAwNoADBlAjAmmC6OfNCt5iiGDjth3FzRFx/b
|
|
||||||
INmhSkZzZGHjv91uMdStaLfZzlupMmYBXcdtSt0CMQC8XxfbpShXJCRHDkjdZzaB
|
|
||||||
Oy8GeMOEivVZoKTpcEDZuFklOHRlD+1uFWgQP2xmGx0=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
16
main/App.cpp
16
main/App.cpp
@ -12,9 +12,11 @@
|
|||||||
#include <ESPmDNS.h>
|
#include <ESPmDNS.h>
|
||||||
|
|
||||||
#include "Mqtt.h"
|
#include "Mqtt.h"
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
#define LED_PIN 26
|
#define LED_PIN 26
|
||||||
|
|
||||||
|
//static const char * TAG = "app";
|
||||||
|
|
||||||
App::App()
|
App::App()
|
||||||
{
|
{
|
||||||
@ -35,6 +37,14 @@ void App::init()
|
|||||||
uint32_t status = m_wifi->start();
|
uint32_t status = m_wifi->start();
|
||||||
if(status == WH_OK)
|
if(status == WH_OK)
|
||||||
{
|
{
|
||||||
|
ESP_LOGI(TAG, "Getting local time");
|
||||||
|
struct tm timeinfo;
|
||||||
|
configTime(0, 0, "pool.ntp.org");
|
||||||
|
if(getLocalTime(&timeinfo))
|
||||||
|
ESP_LOGI(TAG, "Got local time");
|
||||||
|
else
|
||||||
|
ESP_LOGE(TAG, "Failed to get local time");
|
||||||
|
|
||||||
m_led->setColor(0, 0, 0);
|
m_led->setColor(0, 0, 0);
|
||||||
MDNS.begin("esp32");
|
MDNS.begin("esp32");
|
||||||
needs_provision = false;
|
needs_provision = false;
|
||||||
@ -52,9 +62,9 @@ void App::init()
|
|||||||
ota.start();
|
ota.start();
|
||||||
m_led->setColor(0, 0, 0);
|
m_led->setColor(0, 0, 0);
|
||||||
|
|
||||||
// Mqtt m;
|
Mqtt m;
|
||||||
// m.test();
|
m.test();
|
||||||
Mqtt::test();
|
// Mqtt::test();
|
||||||
}
|
}
|
||||||
|
|
||||||
void App::start()
|
void App::start()
|
||||||
|
|||||||
92
main/Mqtt.h
92
main/Mqtt.h
@ -27,7 +27,7 @@ using namespace std::placeholders;
|
|||||||
|
|
||||||
class Mqtt
|
class Mqtt
|
||||||
{
|
{
|
||||||
#if 1
|
#if 0
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static void log_error_if_nonzero(const char *message, int error_code)
|
static void log_error_if_nonzero(const char *message, int error_code)
|
||||||
@ -131,65 +131,93 @@ static void test()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
public:
|
public:
|
||||||
#if 0
|
#if 1
|
||||||
void callback(char* topic, byte* payload, unsigned int length) {
|
void callback(char* topic, byte* payload, unsigned int length) {
|
||||||
printf("Message arrived in topic: %s", topic);
|
printf("Message arrived in topic: %s\n", topic);
|
||||||
printf("Message:\n");
|
printf("Message:'");
|
||||||
for (int i = 0; i < length; i++) {
|
for (int i = 0; i < length; i++) {
|
||||||
printf("%c", (char)payload[i]);
|
printf("%c", (char)payload[i]);
|
||||||
}
|
}
|
||||||
printf("\n-----------------------\n");
|
printf("'\n");
|
||||||
|
printf("-----------------------\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "time.h"
|
||||||
|
|
||||||
|
|
||||||
|
void printLocalTime()
|
||||||
|
{
|
||||||
|
struct tm timeinfo;
|
||||||
|
char buf[48];
|
||||||
|
if(!getLocalTime(&timeinfo)){
|
||||||
|
printf("Failed to obtain time\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
strftime(buf, 26, "%Y-%m-%d %H:%M:%S", &timeinfo);
|
||||||
|
ESP_LOGI(TAG, "%s", buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test()
|
void test()
|
||||||
{
|
{
|
||||||
const char* mqtt_broker = "91.121.93.94";//"40.64.128.45"; // "mqtt-dev-server.westus2-1.ts.eventgrid.azure.net";
|
const char* mqtt_broker = "mqtt-dev-server.westus2-1.ts.eventgrid.azure.net";
|
||||||
const char* topic = "test";
|
const char* topic = "wellnuotopics/topic1";
|
||||||
const int mqtt_port = 8884 ;
|
const int mqtt_port = 8883 ;
|
||||||
|
|
||||||
// Set ssl certificate
|
|
||||||
const char* root_ca = (const char*)mosq_bin;// ca_bin;
|
|
||||||
const char* client_cert = (const char *)cli_cert_bin;//cert_bin;
|
|
||||||
const char* client_key = (const char *)cli_key_bin;//key_bin;
|
|
||||||
|
|
||||||
printf(root_ca);
|
|
||||||
|
|
||||||
ESP_ERROR_CHECK(esp_netif_init());
|
|
||||||
|
|
||||||
WiFiClientSecure espClient;
|
WiFiClientSecure espClient;
|
||||||
PubSubClient client(espClient);
|
PubSubClient client(espClient);
|
||||||
|
|
||||||
//printf("'%s'", root_ca);
|
espClient.setCACert((const char*)server_cert);
|
||||||
|
espClient.setCertificate((const char *)client_cert); // for client verification
|
||||||
espClient.setCACert(root_ca);
|
espClient.setPrivateKey((const char *)client_key); // for client verification
|
||||||
espClient.setCertificate(client_cert); // for client verification
|
|
||||||
espClient.setPrivateKey(client_key); // for client verification
|
|
||||||
|
|
||||||
|
|
||||||
client.setServer(mqtt_broker, mqtt_port);
|
client.setServer(mqtt_broker, mqtt_port);
|
||||||
client.setCallback(std::bind(&Mqtt::callback, this, _1, _2, _3));
|
client.setCallback(std::bind(&Mqtt::callback, this, _1, _2, _3));
|
||||||
|
|
||||||
|
printLocalTime();
|
||||||
|
|
||||||
while (!client.connected())
|
while (!client.connected())
|
||||||
{
|
{
|
||||||
String client_id = "esp32-client";
|
String client_id = "esp32-client";
|
||||||
client_id += String(WiFi.macAddress());
|
client_id += String(WiFi.macAddress());
|
||||||
// Print the Name and the id of the esp32 controller
|
// Print the Name and the id of the esp32 controller
|
||||||
ESP_LOGI("", "The client %s connects to the public mqtt broker\n", client_id.c_str());
|
ESP_LOGI("", "connecting client %s mqtt broker...", client_id.c_str());
|
||||||
if (client.connect( client_id.c_str())) {
|
if (client.connect("Esp32 client", "client1-authn-ID", NULL)) {
|
||||||
ESP_LOGI("", "Public emqx mqtt broker connected\n");
|
ESP_LOGI("", "Public emqx mqtt broker connected");
|
||||||
} else {
|
} else {
|
||||||
ESP_LOGI("", "failed with state %d", client.state());
|
ESP_LOGE("", "failed with state %d", client.state());
|
||||||
delay(200000);
|
delay(5000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool val;
|
||||||
|
|
||||||
|
// val = client.subscribe(topic);
|
||||||
|
// if(val)
|
||||||
|
// ESP_LOGI(TAG, "sub ok");
|
||||||
|
// else
|
||||||
|
// ESP_LOGI(TAG, "sub failed");
|
||||||
// Publish and Subscribe
|
// Publish and Subscribe
|
||||||
client.publish(topic, "Hi I'm ESP32 ^^");
|
|
||||||
client.subscribe(topic);
|
// val = client.publish(topic, "Hi I'm ESP32 ^^");
|
||||||
|
// if(val)
|
||||||
|
// ESP_LOGI(TAG, "publish ok");
|
||||||
|
// else
|
||||||
|
// ESP_LOGI(TAG, "publish failed");
|
||||||
|
|
||||||
|
int n = 0;
|
||||||
|
|
||||||
while(true)
|
while(true)
|
||||||
{
|
{
|
||||||
client.loop();
|
// client.loop();
|
||||||
delay(1000);
|
delay(2500);
|
||||||
|
|
||||||
|
val = client.publish(topic, "Hi I'm ESP32 ^^");
|
||||||
|
if(val)
|
||||||
|
ESP_LOGI(TAG, "%d publish ok", n);
|
||||||
|
else
|
||||||
|
ESP_LOGE(TAG, "%d publish failed", n);
|
||||||
|
|
||||||
|
n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -122,7 +122,7 @@ void OTA::start()
|
|||||||
memcpy(&new_app_info,
|
memcpy(&new_app_info,
|
||||||
&otaWriteData[sizeof(esp_image_header_t) + sizeof(esp_image_segment_header_t)],
|
&otaWriteData[sizeof(esp_image_header_t) + sizeof(esp_image_segment_header_t)],
|
||||||
sizeof(esp_app_desc_t));
|
sizeof(esp_app_desc_t));
|
||||||
ESP_LOGI(TAG, "New firmware");
|
ESP_LOGI(TAG, "Remote firmware");
|
||||||
ESP_LOGI(TAG, "version: %s", new_app_info.version);
|
ESP_LOGI(TAG, "version: %s", new_app_info.version);
|
||||||
ESP_LOGI(TAG, " name: %s", new_app_info.project_name);
|
ESP_LOGI(TAG, " name: %s", new_app_info.project_name);
|
||||||
ESP_LOGI(TAG, " c time: %s", new_app_info.time);
|
ESP_LOGI(TAG, " c time: %s", new_app_info.time);
|
||||||
|
|||||||
@ -67,8 +67,8 @@ void Wifi::wifi_event(arduino_event_id_t event, arduino_event_info_t info)
|
|||||||
/// @return ok/not connected
|
/// @return ok/not connected
|
||||||
uint32_t Wifi::connectTo(int index)
|
uint32_t Wifi::connectTo(int index)
|
||||||
{
|
{
|
||||||
IPAddress local_IP(192, 168, 1, 155);
|
IPAddress local_IP(0, 0, 0, 0);
|
||||||
IPAddress gateway(192, 168, 1, 100);
|
IPAddress gateway(0, 0, 0, 0);
|
||||||
IPAddress subnet(255, 255, 255, 0);
|
IPAddress subnet(255, 255, 255, 0);
|
||||||
IPAddress primaryDNS(8, 8, 8, 8);
|
IPAddress primaryDNS(8, 8, 8, 8);
|
||||||
IPAddress secondaryDNS(8, 8, 4, 4);
|
IPAddress secondaryDNS(8, 8, 4, 4);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user