3
3
4
4
#include < MQTTClient.h>
5
5
#include < ArduinoBearSSL.h>
6
+ #include < ArduinoCloudThing.h>
6
7
7
8
#include " CloudSerial.h"
8
9
@@ -41,9 +42,24 @@ class ArduinoCloudClass {
41
42
// Clean up existing Mqtt connection, create a new one and initialize it
42
43
void reconnect (Client& net);
43
44
45
+ #define addProperty ( v, ...) addPropertyReal(v, #v, __VA_ARGS__)
46
+
47
+ template <typename T> void addPropertyReal (T& property, String name, permissionType _permission = READWRITE, long seconds = ON_CHANGE, T minDelta = T(0 ), void(*fn)(void ) = NULL) {
48
+ Thing.addPropertyReal (property, name).publishEvery (seconds).setPermission (_permission).onUpdate (fn).minimumDelta (&minDelta);
49
+ }
50
+
51
+ template <typename T> void addPropertyReal (T& property, String name, permissionType _permission = READWRITE, long seconds = ON_CHANGE, void (*fn)(void ) = NULL, T minDelta = T(0 )) {
52
+ Thing.addPropertyReal (property, name).publishEvery (seconds).setPermission (_permission).onUpdate (fn).minimumDelta (&minDelta);
53
+ }
54
+
55
+ template <typename T> void addPropertyReal (T& property, String name, permissionType _permission = READWRITE, void (*fn)(void ) = NULL, long seconds = ON_CHANGE, T minDelta = T(0 )) {
56
+ Thing.addPropertyReal (property, name).publishEvery (seconds).setPermission (_permission).onUpdate (fn).minimumDelta (&minDelta);
57
+ }
58
+
44
59
protected:
45
60
friend class CloudSerialClass ;
46
61
int writeStdout (const byte data[], int length);
62
+ int writeProperties (const byte data[], int length);
47
63
// Used to initialize MQTTClient
48
64
void mqttClientBegin (Client& net);
49
65
// Function in charge of perform MQTT reconnection, basing on class parameters(retries,and timeout)
@@ -54,12 +70,15 @@ class ArduinoCloudClass {
54
70
void handleMessage (char topic[], char bytes[], int length);
55
71
56
72
String _id;
73
+ ArduinoCloudThing Thing;
57
74
BearSSLClient* _bearSslClient;
58
75
MQTTClient _mqttClient;
59
76
60
77
// Class attribute to define MTTQ topics 2 for stdIn/out and 2 for data, in order to avoid getting previous pupblished payload
61
78
String _stdinTopic;
62
79
String _stdoutTopic;
80
+ String _dataTopic;
81
+ String _otaTopic;
63
82
};
64
83
65
84
extern ArduinoCloudClass ArduinoCloud;
0 commit comments