Gbox 4.20
Grow box automation and monitoring - <a href='https://sites.google.com/site/growboxguy/'>https://sites.google.com/site/growboxguy/</a>
 
Loading...
Searching...
No Matches
ELClientMqtt.cpp
Go to the documentation of this file.
1
7// Copyright (c) 2016 by B. Runnels and T. von Eicken
8
9#include <Arduino.h>
10#include "ELClientMqtt.h"
11
12// constructor
21
35 Serial.print(F("ConnectedCB is 0x")); Serial.println((uint32_t)&connectedCb, 16);
36 _elc->Request(CMD_MQTT_SETUP, 0, 4);
37 uint32_t cb = (uint32_t)&connectedCb;
38 _elc->Request(&cb, 4);
39 cb = (uint32_t)&disconnectedCb;
40 _elc->Request(&cb, 4);
41 cb = (uint32_t)&publishedCb;
42 _elc->Request(&cb, 4);
43 cb = (uint32_t)&dataCb;
44 _elc->Request(&cb, 4);
45 _elc->Request();
46}
47
48// LWT
49
68void ELClientMqtt::lwt(const char* topic, const char* message, uint8_t qos, uint8_t retain) {
69 _elc->Request(CMD_MQTT_LWT, 0, 4);
70 _elc->Request(topic, strlen(topic));
71 _elc->Request(message, strlen(message));
72 _elc->Request(&qos, 1);
73 _elc->Request(&retain, 1);
74 _elc->Request();
75}
76
94void ELClientMqtt::lwt(const __FlashStringHelper* topic, const __FlashStringHelper* message,
95 uint8_t qos, uint8_t retain)
96{
97 _elc->Request(CMD_MQTT_LWT, 0, 4);
98 _elc->Request(topic, strlen_P((const char*)topic));
99 _elc->Request(message, strlen_P((const char*)message));
100 _elc->Request(&qos, 1);
101 _elc->Request(&retain, 1);
102 _elc->Request();
103}
104
105// SUBSCRIBE
106
121void ELClientMqtt::subscribe(const char* topic, uint8_t qos) {
122 _elc->Request(CMD_MQTT_SUBSCRIBE, 0, 2);
123 _elc->Request(topic, strlen(topic));
124 _elc->Request(&qos, 1);
125 _elc->Request();
126}
127
141void ELClientMqtt::subscribe(const __FlashStringHelper* topic, uint8_t qos) {
142 _elc->Request(CMD_MQTT_SUBSCRIBE, 0, 2);
143 _elc->Request(topic, strlen_P((const char*)topic));
144 _elc->Request(&qos, 1);
145 _elc->Request();
146}
147
148// PUBLISH
149
173void ELClientMqtt::publish(const char* topic, const uint8_t* data, const uint16_t len,
174 uint8_t qos, uint8_t retain)
175{
176 _elc->Request(CMD_MQTT_PUBLISH, 0, 5);
177 _elc->Request(topic, strlen(topic));
178 _elc->Request(data, len);
179 _elc->Request(&len, 2);
180 _elc->Request(&qos, 1);
181 _elc->Request(&retain, 1);
182 _elc->Request();
183}
184
206void ELClientMqtt::publish(const char* topic, const char* data, uint8_t qos, uint8_t retain)
207{
208 publish(topic, (uint8_t*)data, strlen(data), qos, retain);
209}
210
230void ELClientMqtt::publish(const __FlashStringHelper* topic, const __FlashStringHelper* data,
231 const uint16_t len, uint8_t qos, uint8_t retain)
232{
233 _elc->Request(CMD_MQTT_PUBLISH, 0, 5);
234 _elc->Request(topic, strlen_P((const char*)topic));
235 _elc->Request(data, len);
236 _elc->Request(&len, 2);
237 _elc->Request(&qos, 1);
238 _elc->Request(&retain, 1);
239 _elc->Request();
240}
241
261void ELClientMqtt::publish(const char* topic, const __FlashStringHelper* data,
262 const uint16_t len, uint8_t qos, uint8_t retain)
263{
264 _elc->Request(CMD_MQTT_PUBLISH, 0, 5);
265 _elc->Request(topic, strlen(topic));
266 _elc->Request(data, len);
267 _elc->Request(&len, 2);
268 _elc->Request(&qos, 1);
269 _elc->Request(&retain, 1);
270 _elc->Request();
271}
272
292void ELClientMqtt::publish(const __FlashStringHelper* topic, const uint8_t* data,
293 const uint16_t len, uint8_t qos, uint8_t retain)
294{
295 _elc->Request(CMD_MQTT_PUBLISH, 0, 5);
296 _elc->Request(topic, strlen_P((const char*)topic));
297 _elc->Request(data, len);
298 _elc->Request(&len, 2);
299 _elc->Request(&qos, 1);
300 _elc->Request(&retain, 1);
301 _elc->Request();
302}
Definitions for ELClientMqtt.
@ CMD_MQTT_SUBSCRIBE
Definition ELClient.h:31
@ CMD_MQTT_PUBLISH
Definition ELClient.h:30
@ CMD_MQTT_SETUP
Definition ELClient.h:29
@ CMD_MQTT_LWT
Definition ELClient.h:32
FP< void, void * > publishedCb
FP< void, void * > disconnectedCb
void lwt(const char *topic, const char *message, uint8_t qos=0, uint8_t retain=0)
Set MQTT last will.
void publish(const char *topic, const uint8_t *data, const uint16_t len, uint8_t qos=0, uint8_t retain=0)
Subscribe to MQTT topic.
FP< void, void * > connectedCb
void subscribe(const char *topic, uint8_t qos=0)
Subscribe to MQTT topic.
void setup(void)
Setup mqtt.
FP< void, void * > dataCb
ELClientMqtt(ELClient *elc)
Constructor for ELClientMqtt.
void Request(uint16_t cmd, uint32_t value, uint16_t argc)
Start a request.
Definition ELClient.cpp:211
ESP esp & Serial
Definition demo.ino:9