-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSensorBoxTB.h
More file actions
145 lines (98 loc) · 3.5 KB
/
Copy pathSensorBoxTB.h
File metadata and controls
145 lines (98 loc) · 3.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#ifndef SENSOR_BOX_TB_H
#define SENSOR_BOX_TB_H
#define COUNT_OF(x) ((sizeof(x)/sizeof(0[x])) / ((size_t)(!(sizeof(x) % sizeof(0[x])))))
#define SERIAL_DEBUG true
#include <Arduino.h>
#include <ThingsBoard.h>
#if defined(ESP8266)
#pragma message "Compiling for ESP8266."
#include <ESP8266WiFi.h>
#include <EEPROM.h>
#elif defined(ESP32)
#pragma message "Compiling for ESP32."
#include <WiFi.h>
#include <EEPROM.h>
#include "esp_wpa2.h"
#elif defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__)
#pragma message "Compiling for Arduino Uno."
#include <WiFiEspAT.h>
#define WIFI_SHIELD_BAUD_RATE 9600
#else
#error "This device is not supported, use an ESP32, ESP8266 or Arduino."
#endif
class DeviceDetails {
public:
inline DeviceDetails():m_name(), m_units() { }
inline DeviceDetails(const char *deviceName, const char *units):m_name(deviceName), m_units(units) { }
const char *m_name;
const char *m_units;
};
class SensorBox: public ThingsBoard {
public:
SensorBox(const char *ap_name, const char *password, const char *server_ip, const char *token) : ThingsBoard(wifi_client) {
_ap_name = ap_name;
_password = password;
_server_ip = server_ip;
_token = token;
}
SensorBox(char *ap_name, char *password, char *server_ip, const char* deviceName, const char* provisionDeviceKey, const char* provisionDeviceSecret) : ThingsBoard(wifi_client) {
_ap_name = ap_name;
_password = password;
_server_ip = server_ip;
_deviceName = deviceName;
_provisionDeviceKey = provisionDeviceKey;
_provisionDeviceSecret = provisionDeviceSecret;
}
#ifdef ESP32
// WPA2 Enterprise
SensorBox(const char *ap_name, const char *username, const char *password, const char *server_ip, const char *token) : ThingsBoard(wifi_client) {
_ap_name = ap_name;
_username = username;
_password = password;
_server_ip = server_ip;
_token = token;
}
SensorBox(char *ap_name, const char *username, char *password, char *server_ip, const char* deviceName, const char* provisionDeviceKey, const char* provisionDeviceSecret) : ThingsBoard(wifi_client) {
_ap_name = ap_name;
_username = username;
_password = password;
_server_ip = server_ip;
_deviceName = deviceName;
_provisionDeviceKey = provisionDeviceKey;
_provisionDeviceSecret = provisionDeviceSecret;
}
#endif
~SensorBox() {}
void provision();
void initComms();
void connectWiFi();
boolean connectThingsBoardProvision();
boolean connectThingsBoard();
boolean subscribeActuatorsCmds(RPC_Callback *callbacks, size_t callbacks_size);
boolean sendDeviceDetails(DeviceDetails *details, size_t details_size);
void checkFirmwareUpdates(const char* currFwTitle, const char* currFwVersion);
void loop();
private:
#if defined(ESP8266)
WiFiClient wifi_client;
#elif defined(ESP32)
WiFiClient wifi_client;
#elif defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__)
// WiFiEspClient wifi_client;
WiFiClient wifi_client;
#endif
int status = WL_IDLE_STATUS;
bool subscribedRPC = false;
const char *_ap_name;
const char *_username;
const char *_password;
const char *_server_ip;
const char * _token;
const char* _deviceName;
const char* _provisionDeviceKey;
const char* _provisionDeviceSecret;
RPC_Callback *_callbacks;
size_t _callbacks_size;
};
void clearSavedToken();
#endif