Skip to content
This repository has been archived by the owner on Jun 18, 2022. It is now read-only.

Commit

Permalink
Initial commit: MQTT with certificate auth works.
Browse files Browse the repository at this point in the history
  • Loading branch information
Felix "xq" Queißner committed Jun 13, 2022
0 parents commit 565840f
Show file tree
Hide file tree
Showing 19 changed files with 1,856 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.cache/
build/
8 changes: 8 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# For more information about build system see
# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html
# The following five lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(portal300-buzzer)
Binary file added doc/AV02_0265EN_2021_04_26-2935641.pdf
Binary file not shown.
Binary file added doc/RBS14115-WT32-ETH01_datasheet_V1-1-en.pdf
Binary file not shown.
Binary file added doc/pinout.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions doc/pinout.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
IO39: opener
IO15: klingel-leser


Grau und Orange: 5V
Grau: GND
Orange: 5V
Gelb: Klingelsignal (Grau ist ref GND)
Braun: Emitter
Lila: Collector


Future Extensions:
Shutdown => Kellerlicht ausmachen
Binary file added doc/schematic.xcf
Binary file not shown.
2 changes: 2 additions & 0 deletions main/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
idf_component_register(SRCS "portal300-buzzer.c" "mqtt.c"
INCLUDE_DIRS ".")
19 changes: 19 additions & 0 deletions main/certs/buzzer.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDGTCCAgECFGSEMc0xHeqOlXG0/NtJUtwhgQHtMA0GCSqGSIb3DQEBCwUAMEcx
CzAJBgNVBAYTAkRFMRMwEQYDVQQKDApzaGFja3NwYWNlMQ8wDQYDVQQLDAZwb3J0
YWwxEjAQBgNVBAMMCWNhLnBvcnRhbDAeFw0yMjA2MTAwODEyMjlaFw0yMzA2MTAw
ODEyMjlaMEsxCzAJBgNVBAYTAkRFMRMwEQYDVQQKDApzaGFja3NwYWNlMQ8wDQYD
VQQLDAZwb3J0YWwxFjAUBgNVBAMMDXBvcnRhbC5wb3J0YWwwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDi6V3TIVpzumR/cCcNArjKr5o4qopgYbO12Qk1
vaspjlVb9EYDrWhAz22MXX9JNzd9oYkWS7C/KloXo0RSAkauIDFZMDmoVJtZCAn+
xGvt65qRzUlJvGkuvfQH8e6A7lx8Y2hSiDiK4ptXFA0zr26qNYFs4ACWU5G3QHMw
0HRXWQ7eA/wl13Do7IwVW/82LkQyr03O9NuxyVLJn3/1BUaIQ2OHFn5CE0zuRA7+
+/OCkmf5r36x8gYLZz8q2wj+i9MiAOAGqN69AJjWrRS9993FpNHcc/NcVmS3RQqM
S6zLaKHiC7yZxlSlFqd81CrnBDIkV4fStGrgK7N9VFgRGVkrAgMBAAEwDQYJKoZI
hvcNAQELBQADggEBABwCTKUBVwbwNF9Pa/QbcFRNqJ+M8yjKgZdt/oys6Q2Uh/gG
9ZyiRKnC+yUOcAY0IX5FZsi4QNddm4P5f76Jr3YJT/c6yP+MNJ3saay+XUUi4aI2
4dlcdNzUuBUzf0wyKxIA7j4ZKRBi9LMVPsbT8+Qbu+Pfpbj/M//8ALbmp7Y+LDdE
fkZ6vnUTM4r4e2gob9UvWrh8DfjtJA7E3mGaszBWfY73hKrZNlzJlmeyMu7acZn2
4BYj+E4Dn3INXp/ccjK6mQlMhGd6JQCMpe9QgJxvS3asuJRA0MxybZWo8vi7hIrq
G9lJaK40TyyJNkM1g0/VmIwWYdPHAc4pWSCfdXA=
-----END CERTIFICATE-----
19 changes: 19 additions & 0 deletions main/certs/buzzer.crt.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
"-----BEGIN CERTIFICATE-----\n"
"MIIDGTCCAgECFGSEMc0xHeqOlXG0/NtJUtwhgQHtMA0GCSqGSIb3DQEBCwUAMEcx\n"
"CzAJBgNVBAYTAkRFMRMwEQYDVQQKDApzaGFja3NwYWNlMQ8wDQYDVQQLDAZwb3J0\n"
"YWwxEjAQBgNVBAMMCWNhLnBvcnRhbDAeFw0yMjA2MTAwODEyMjlaFw0yMzA2MTAw\n"
"ODEyMjlaMEsxCzAJBgNVBAYTAkRFMRMwEQYDVQQKDApzaGFja3NwYWNlMQ8wDQYD\n"
"VQQLDAZwb3J0YWwxFjAUBgNVBAMMDXBvcnRhbC5wb3J0YWwwggEiMA0GCSqGSIb3\n"
"DQEBAQUAA4IBDwAwggEKAoIBAQDi6V3TIVpzumR/cCcNArjKr5o4qopgYbO12Qk1\n"
"vaspjlVb9EYDrWhAz22MXX9JNzd9oYkWS7C/KloXo0RSAkauIDFZMDmoVJtZCAn+\n"
"xGvt65qRzUlJvGkuvfQH8e6A7lx8Y2hSiDiK4ptXFA0zr26qNYFs4ACWU5G3QHMw\n"
"0HRXWQ7eA/wl13Do7IwVW/82LkQyr03O9NuxyVLJn3/1BUaIQ2OHFn5CE0zuRA7+\n"
"+/OCkmf5r36x8gYLZz8q2wj+i9MiAOAGqN69AJjWrRS9993FpNHcc/NcVmS3RQqM\n"
"S6zLaKHiC7yZxlSlFqd81CrnBDIkV4fStGrgK7N9VFgRGVkrAgMBAAEwDQYJKoZI\n"
"hvcNAQELBQADggEBABwCTKUBVwbwNF9Pa/QbcFRNqJ+M8yjKgZdt/oys6Q2Uh/gG\n"
"9ZyiRKnC+yUOcAY0IX5FZsi4QNddm4P5f76Jr3YJT/c6yP+MNJ3saay+XUUi4aI2\n"
"4dlcdNzUuBUzf0wyKxIA7j4ZKRBi9LMVPsbT8+Qbu+Pfpbj/M//8ALbmp7Y+LDdE\n"
"fkZ6vnUTM4r4e2gob9UvWrh8DfjtJA7E3mGaszBWfY73hKrZNlzJlmeyMu7acZn2\n"
"4BYj+E4Dn3INXp/ccjK6mQlMhGd6JQCMpe9QgJxvS3asuJRA0MxybZWo8vi7hIrq\n"
"G9lJaK40TyyJNkM1g0/VmIwWYdPHAc4pWSCfdXA=\n"
"-----END CERTIFICATE-----\n"
27 changes: 27 additions & 0 deletions main/certs/buzzer.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpgIBAAKCAQEA4uld0yFac7pkf3AnDQK4yq+aOKqKYGGztdkJNb2rKY5VW/RG
A61oQM9tjF1/STc3faGJFkuwvypaF6NEUgJGriAxWTA5qFSbWQgJ/sRr7euakc1J
SbxpLr30B/HugO5cfGNoUog4iuKbVxQNM69uqjWBbOAAllORt0BzMNB0V1kO3gP8
Jddw6OyMFVv/Ni5EMq9NzvTbsclSyZ9/9QVGiENjhxZ+QhNM7kQO/vvzgpJn+a9+
sfIGC2c/KtsI/ovTIgDgBqjevQCY1q0UvffdxaTR3HPzXFZkt0UKjEusy2ih4gu8
mcZUpRanfNQq5wQyJFeH0rRq4CuzfVRYERlZKwIDAQABAoIBAQC/V8qmnxmHPUZB
sHE9p23sfOevoR/O5pSEY+BAURBkmoGgaPwhXbjr7f6SvsT3GHjSl8Th6DHDAhO2
mxahkQnJC5yRePkl2TKmgQDstPXOSz6sdE+4vgh0QfnmOTzFvDqBKdJuxi/n7e7Q
HziCvQy0uynIhZv5J79YqCB6qU1x2TEU9/MyiOgkdqw5/gCLn9huHNpSk+SB+cL+
/XuZruIElobErNJ/UZ7oWSbvSG51X7x2lNElHY6RRB3xvwQvYVasmbdLgeIzlQka
MNjOa2wuO+YMFPhAcguESg/PPh2i4KtJph34ecV8UwzAXl7EggiUmlLOFR2ps3DD
YTsmL7QBAoGBAPFIWNu1SI0A8w0+YMenbLB8H6LaXaOQbbIctGXhYWTqZTGFn482
S9GGAFaZuG4tlKQv9jrrRUsOxm7npkpl4yjIRGejET7Fde2jYvU2hLqPSb672syz
6zlVFHUyWSNjn2aIXhl7/pmWlDAnIzFBg/tRn84XAqXCUuB1Ck8RRxfxAoGBAPDA
nU2aOt3EQXW4ZdKQ1GJJXMjTw+EEA/+UKTyn+UiygcsBX7OyOhM6DWVYccfAPzOZ
6Y2f6uXB/T20xG4J4kzmCa6eUxPJVVHkmviMBoHQoT5f6s7N38YvPt52MhHGqeOM
SyyvFnPNUj+CQhmm1MuLjUvaV5bfgm36t3BIs77bAoGBANhEFpFn3g20yiYWwTxz
jvJpbxnTTJcs/4XkQLYI2/lON0G6GZiN/EtjJq54vlzTMiYwby3Eb6mlJquFqwGI
baHCT73s5aoz504HYs2T/kgR4vG5A5bztWUAI4QgitEznE6U8HM7NquH0m+OxPaD
WL9NHEXnThIxKYPSpFjWjbihAoGBAMfJ8EBgBw3WOcRpXAZbrgRKgTcflWP8Ix1L
ZNUzSAnuKQvAfhzvgIZIHKnHtdRgU5KM3WZsGVDFpVQ52PDAPw41sD86oBLBd45Y
Ocqc2SGNcuICUyd/bX5X4sJWL8LUrFNrL09LlURQVTri69vBuMGZc45JCXrozKJb
9zK1AoUVAoGBAIirgdsBukQJL1/FPgttEEdFS+chuxf4ei3O33m+HbGEiONzCGl3
sbk43JQao4/j3VI8+rG1FsXulMq1kOhZkmE5HAlEHfwbmbqxzRZqP2K/zuN03Azd
fdisj1SjtB/HFZjUxwGepS0Oka7Zp5HZklf+S9nIVPL5wyfQk04RHQCc
-----END RSA PRIVATE KEY-----
27 changes: 27 additions & 0 deletions main/certs/buzzer.key.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
"-----BEGIN RSA PRIVATE KEY-----\n"
"MIIEpgIBAAKCAQEA4uld0yFac7pkf3AnDQK4yq+aOKqKYGGztdkJNb2rKY5VW/RG\n"
"A61oQM9tjF1/STc3faGJFkuwvypaF6NEUgJGriAxWTA5qFSbWQgJ/sRr7euakc1J\n"
"SbxpLr30B/HugO5cfGNoUog4iuKbVxQNM69uqjWBbOAAllORt0BzMNB0V1kO3gP8\n"
"Jddw6OyMFVv/Ni5EMq9NzvTbsclSyZ9/9QVGiENjhxZ+QhNM7kQO/vvzgpJn+a9+\n"
"sfIGC2c/KtsI/ovTIgDgBqjevQCY1q0UvffdxaTR3HPzXFZkt0UKjEusy2ih4gu8\n"
"mcZUpRanfNQq5wQyJFeH0rRq4CuzfVRYERlZKwIDAQABAoIBAQC/V8qmnxmHPUZB\n"
"sHE9p23sfOevoR/O5pSEY+BAURBkmoGgaPwhXbjr7f6SvsT3GHjSl8Th6DHDAhO2\n"
"mxahkQnJC5yRePkl2TKmgQDstPXOSz6sdE+4vgh0QfnmOTzFvDqBKdJuxi/n7e7Q\n"
"HziCvQy0uynIhZv5J79YqCB6qU1x2TEU9/MyiOgkdqw5/gCLn9huHNpSk+SB+cL+\n"
"/XuZruIElobErNJ/UZ7oWSbvSG51X7x2lNElHY6RRB3xvwQvYVasmbdLgeIzlQka\n"
"MNjOa2wuO+YMFPhAcguESg/PPh2i4KtJph34ecV8UwzAXl7EggiUmlLOFR2ps3DD\n"
"YTsmL7QBAoGBAPFIWNu1SI0A8w0+YMenbLB8H6LaXaOQbbIctGXhYWTqZTGFn482\n"
"S9GGAFaZuG4tlKQv9jrrRUsOxm7npkpl4yjIRGejET7Fde2jYvU2hLqPSb672syz\n"
"6zlVFHUyWSNjn2aIXhl7/pmWlDAnIzFBg/tRn84XAqXCUuB1Ck8RRxfxAoGBAPDA\n"
"nU2aOt3EQXW4ZdKQ1GJJXMjTw+EEA/+UKTyn+UiygcsBX7OyOhM6DWVYccfAPzOZ\n"
"6Y2f6uXB/T20xG4J4kzmCa6eUxPJVVHkmviMBoHQoT5f6s7N38YvPt52MhHGqeOM\n"
"SyyvFnPNUj+CQhmm1MuLjUvaV5bfgm36t3BIs77bAoGBANhEFpFn3g20yiYWwTxz\n"
"jvJpbxnTTJcs/4XkQLYI2/lON0G6GZiN/EtjJq54vlzTMiYwby3Eb6mlJquFqwGI\n"
"baHCT73s5aoz504HYs2T/kgR4vG5A5bztWUAI4QgitEznE6U8HM7NquH0m+OxPaD\n"
"WL9NHEXnThIxKYPSpFjWjbihAoGBAMfJ8EBgBw3WOcRpXAZbrgRKgTcflWP8Ix1L\n"
"ZNUzSAnuKQvAfhzvgIZIHKnHtdRgU5KM3WZsGVDFpVQ52PDAPw41sD86oBLBd45Y\n"
"Ocqc2SGNcuICUyd/bX5X4sJWL8LUrFNrL09LlURQVTri69vBuMGZc45JCXrozKJb\n"
"9zK1AoUVAoGBAIirgdsBukQJL1/FPgttEEdFS+chuxf4ei3O33m+HbGEiONzCGl3\n"
"sbk43JQao4/j3VI8+rG1FsXulMq1kOhZkmE5HAlEHfwbmbqxzRZqP2K/zuN03Azd\n"
"fdisj1SjtB/HFZjUxwGepS0Oka7Zp5HZklf+S9nIVPL5wyfQk04RHQCc\n"
"-----END RSA PRIVATE KEY-----\n"
19 changes: 19 additions & 0 deletions main/certs/ca.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDFTCCAf0CFAX3mPUo3MOsMG847BZ4BNB8Gln/MA0GCSqGSIb3DQEBCwUAMEcx
CzAJBgNVBAYTAkRFMRMwEQYDVQQKDApzaGFja3NwYWNlMQ8wDQYDVQQLDAZwb3J0
YWwxEjAQBgNVBAMMCWNhLnBvcnRhbDAeFw0yMjA2MTAwODEyMDdaFw0yMzA2MTAw
ODEyMDdaMEcxCzAJBgNVBAYTAkRFMRMwEQYDVQQKDApzaGFja3NwYWNlMQ8wDQYD
VQQLDAZwb3J0YWwxEjAQBgNVBAMMCWNhLnBvcnRhbDCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBALKdZbwPulb6q2/aHraZLIymW/ccWsoV7f2432lwKm+i
aVCkL/Nk7ToggtikFk1qPEGUQZeDwTmwasPPAUPLwsnqVXkMuXWtyErZPIPGvNh6
hb2ktwJmxQ1dEzTIQ5RYFOQNKoA0h1NJV1HHtvTDrq8q0JzDWtpLkXgr9GtMMd9i
Y8hwxu9fzz6+Gbui7aD8qSNmUBW9fT6wgOq+/OknvCUFP97GNuyt+tyogGT/G1Up
f4h6Xj68IaHUJDRoE2bRqaFVtcmH4WAXB9gAcVD0ZF43hSnuu7HPSIuTadPl3zxH
UNVZzFwsgog+pjmchh9P712ZAk7EAEN+wETdJ4kNMuUCAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAJ9xiurpsdUP9obJ5Hf9RB1vbnWfzsRecIdM9OCQHVoai62eatmyc
8YEnCbCB3sgW49s67Hi4a0NeAkH3X/GDsJoxexgadjqiYex+GCAFyS999CVnHQHO
g3i+X7/2bNo2GagGDwzLSI1+KdC+USlva4516msQ0ml4GL/9v5oP530KdJE/6vsU
j2xQHo7lq+0ctvkG/CdUkOWePcGe5Xemu3IN6NHDoKb3Y6PI38guj4qdlWZjrWGj
Vx9zoKOIaxMU4WSs/A54lqeCbaRqqZGx8DNdBKUNLtMZquK7lzZYUwsHizqYMSxc
s4Wh0rtwTsWZqymmduS9rsfInHFXxk/RxA==
-----END CERTIFICATE-----
19 changes: 19 additions & 0 deletions main/certs/ca.crt.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
"-----BEGIN CERTIFICATE-----\n"
"MIIDFTCCAf0CFAX3mPUo3MOsMG847BZ4BNB8Gln/MA0GCSqGSIb3DQEBCwUAMEcx\n"
"CzAJBgNVBAYTAkRFMRMwEQYDVQQKDApzaGFja3NwYWNlMQ8wDQYDVQQLDAZwb3J0\n"
"YWwxEjAQBgNVBAMMCWNhLnBvcnRhbDAeFw0yMjA2MTAwODEyMDdaFw0yMzA2MTAw\n"
"ODEyMDdaMEcxCzAJBgNVBAYTAkRFMRMwEQYDVQQKDApzaGFja3NwYWNlMQ8wDQYD\n"
"VQQLDAZwb3J0YWwxEjAQBgNVBAMMCWNhLnBvcnRhbDCCASIwDQYJKoZIhvcNAQEB\n"
"BQADggEPADCCAQoCggEBALKdZbwPulb6q2/aHraZLIymW/ccWsoV7f2432lwKm+i\n"
"aVCkL/Nk7ToggtikFk1qPEGUQZeDwTmwasPPAUPLwsnqVXkMuXWtyErZPIPGvNh6\n"
"hb2ktwJmxQ1dEzTIQ5RYFOQNKoA0h1NJV1HHtvTDrq8q0JzDWtpLkXgr9GtMMd9i\n"
"Y8hwxu9fzz6+Gbui7aD8qSNmUBW9fT6wgOq+/OknvCUFP97GNuyt+tyogGT/G1Up\n"
"f4h6Xj68IaHUJDRoE2bRqaFVtcmH4WAXB9gAcVD0ZF43hSnuu7HPSIuTadPl3zxH\n"
"UNVZzFwsgog+pjmchh9P712ZAk7EAEN+wETdJ4kNMuUCAwEAATANBgkqhkiG9w0B\n"
"AQsFAAOCAQEAJ9xiurpsdUP9obJ5Hf9RB1vbnWfzsRecIdM9OCQHVoai62eatmyc\n"
"8YEnCbCB3sgW49s67Hi4a0NeAkH3X/GDsJoxexgadjqiYex+GCAFyS999CVnHQHO\n"
"g3i+X7/2bNo2GagGDwzLSI1+KdC+USlva4516msQ0ml4GL/9v5oP530KdJE/6vsU\n"
"j2xQHo7lq+0ctvkG/CdUkOWePcGe5Xemu3IN6NHDoKb3Y6PI38guj4qdlWZjrWGj\n"
"Vx9zoKOIaxMU4WSs/A54lqeCbaRqqZGx8DNdBKUNLtMZquK7lzZYUwsHizqYMSxc\n"
"s4Wh0rtwTsWZqymmduS9rsfInHFXxk/RxA==\n"
"-----END CERTIFICATE-----\n"
156 changes: 156 additions & 0 deletions main/mqtt.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
// https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_netif.html

#include "mqtt.h"
#include <esp_log.h>
#include <mqtt_client.h>
#include <freertos/event_groups.h>

static const char *TAG = "MQTT";

static const char STATUS_TOPIC[] = "esp32/ethernet/status";
static const char STATUS_ONLINE[] = "online";
static const char STATUS_OFFLINE[] = "offline";

static const EventBits_t EVENT_CONNECTED_BIT = 1;

static esp_mqtt_client_handle_t client = NULL;
static EventGroupHandle_t event_group = NULL;

bool is_mqtt_connected(void)
{
EventBits_t bits = xEventGroupGetBits(event_group);
return (bits & EVENT_CONNECTED_BIT) != 0;
}

static void log_error_if_nonzero(const char *message, int error_code)
{
if (error_code != 0) {
ESP_LOGE(TAG, "Last error %s: 0x%x", message, error_code);
}
}

bool mqtt_pub(char const * topic, char const * data)
{
int msg_id = esp_mqtt_client_publish(client, topic, data, 0, 0, 0);
ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id);
return (msg_id != -1);
}

/*
* @brief Event handler registered to receive MQTT events
*
* This function is called by the MQTT client event loop.
*
* @param handler_args user data registered to the event.
* @param base Event base for the handler(always MQTT Base in this example).
* @param event_id The id for the received event.
* @param event_data The data for the event, esp_mqtt_event_handle_t.
*/
static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data)
{
ESP_LOGD(TAG, "Event dispatched from event loop base=%s, event_id=%d", base, event_id);
esp_mqtt_event_handle_t event = event_data;
esp_mqtt_client_handle_t client = event->client;
int msg_id;
switch ((esp_mqtt_event_id_t)event_id) {
case MQTT_EVENT_CONNECTED:
xEventGroupSetBits(event_group, EVENT_CONNECTED_BIT);
ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED");
msg_id = esp_mqtt_client_publish(client, STATUS_TOPIC, STATUS_ONLINE, 0, 2, 0); // exactly once
ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id);

msg_id = esp_mqtt_client_subscribe(client, "#", 0);
ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);

// msg_id = esp_mqtt_client_subscribe(client, "/topic/qos1", 1);
// ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);

// msg_id = esp_mqtt_client_unsubscribe(client, "/topic/qos1");
// ESP_LOGI(TAG, "sent unsubscribe successful, msg_id=%d", msg_id);
break;

case MQTT_EVENT_DISCONNECTED:
xEventGroupClearBits(event_group, EVENT_CONNECTED_BIT);
ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED");
break;

case MQTT_EVENT_SUBSCRIBED:
// ESP_LOGI(TAG, "MQTT_EVENT_SUBSCRIBED, msg_id=%d", event->msg_id);
// msg_id = esp_mqtt_client_publish(client, "/topic/qos0", "data", 0, 0, 0);
// ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id);
break;

case MQTT_EVENT_UNSUBSCRIBED:
// ESP_LOGI(TAG, "MQTT_EVENT_UNSUBSCRIBED, msg_id=%d", event->msg_id);
break;

case MQTT_EVENT_PUBLISHED:
// ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id);
break;

case MQTT_EVENT_DATA:
ESP_LOGI(TAG, "MQTT_EVENT_DATA");
printf("TOPIC=%.*s\r\n", event->topic_len, event->topic);
printf("DATA=%.*s\r\n", event->data_len, event->data);
break;

case MQTT_EVENT_ERROR:
ESP_LOGI(TAG, "MQTT_EVENT_ERROR");
if (event->error_handle->error_type == MQTT_ERROR_TYPE_TCP_TRANSPORT) {
log_error_if_nonzero("reported from esp-tls", event->error_handle->esp_tls_last_esp_err);
log_error_if_nonzero("reported from tls stack", event->error_handle->esp_tls_stack_err);
log_error_if_nonzero("captured as transport's socket errno", event->error_handle->esp_transport_sock_errno);
ESP_LOGI(TAG, "Last errno string (%s)", strerror(event->error_handle->esp_transport_sock_errno));
}
break;

default:
ESP_LOGI(TAG, "Other event id:%d", event->event_id);
break;
}
}

static const char client_crt[] =
#include "certs/buzzer.crt.h"
;
static const char client_key[] =
#include "certs/buzzer.key.h"
;
static const char ca_crt[] =
#include "certs/ca.crt.h"
;

void mqtt_init()
{
if(client != NULL) {
return;
}
event_group = xEventGroupCreate();

esp_mqtt_client_config_t mqtt_cfg = {

.host = "10.0.0.11",
.port = 8883,
.transport = MQTT_TRANSPORT_OVER_SSL,

.client_id = "buzzer.portal",

.client_cert_pem = client_crt,
.client_key_pem = client_key,

.cert_pem = ca_crt,
.use_global_ca_store = false,
.skip_cert_common_name_check = true,

.lwt_topic = STATUS_TOPIC,
.lwt_msg = STATUS_OFFLINE,
.lwt_qos = 2, // exactly once
.lwt_retain = 0,
.lwt_msg_len = 0, // NUL terminated
};

client = esp_mqtt_client_init(&mqtt_cfg);
/* The last argument may be used to pass data to the event handler, in this example mqtt_event_handler */
esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, NULL);
esp_mqtt_client_start(client);
}
12 changes: 12 additions & 0 deletions main/mqtt.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#ifndef RIIF_MQTT
#define RIIF_MQTT

#include <stdbool.h>

void mqtt_init();

bool mqtt_pub(char const *topic, char const *data);

bool is_mqtt_connected(void);

#endif
Loading

0 comments on commit 565840f

Please sign in to comment.