Debug printing
Work on MQTT topic switching
This commit is contained in:
parent
79968b727a
commit
9d51792402
@ -27,7 +27,71 @@
|
|||||||
"string": "cpp",
|
"string": "cpp",
|
||||||
"unordered_map": "cpp",
|
"unordered_map": "cpp",
|
||||||
"unordered_set": "cpp",
|
"unordered_set": "cpp",
|
||||||
"string_view": "cpp"
|
"string_view": "cpp",
|
||||||
|
"algorithm": "cpp",
|
||||||
|
"atomic": "cpp",
|
||||||
|
"bit": "cpp",
|
||||||
|
"cctype": "cpp",
|
||||||
|
"charconv": "cpp",
|
||||||
|
"clocale": "cpp",
|
||||||
|
"compare": "cpp",
|
||||||
|
"concepts": "cpp",
|
||||||
|
"condition_variable": "cpp",
|
||||||
|
"cstdarg": "cpp",
|
||||||
|
"cstddef": "cpp",
|
||||||
|
"cstdint": "cpp",
|
||||||
|
"cstdio": "cpp",
|
||||||
|
"cstdlib": "cpp",
|
||||||
|
"cstring": "cpp",
|
||||||
|
"ctime": "cpp",
|
||||||
|
"cwchar": "cpp",
|
||||||
|
"cwctype": "cpp",
|
||||||
|
"exception": "cpp",
|
||||||
|
"fstream": "cpp",
|
||||||
|
"functional": "cpp",
|
||||||
|
"iomanip": "cpp",
|
||||||
|
"ios": "cpp",
|
||||||
|
"iosfwd": "cpp",
|
||||||
|
"istream": "cpp",
|
||||||
|
"iterator": "cpp",
|
||||||
|
"limits": "cpp",
|
||||||
|
"locale": "cpp",
|
||||||
|
"map": "cpp",
|
||||||
|
"memory": "cpp",
|
||||||
|
"mutex": "cpp",
|
||||||
|
"new": "cpp",
|
||||||
|
"numeric": "cpp",
|
||||||
|
"optional": "cpp",
|
||||||
|
"ostream": "cpp",
|
||||||
|
"queue": "cpp",
|
||||||
|
"random": "cpp",
|
||||||
|
"ratio": "cpp",
|
||||||
|
"shared_mutex": "cpp",
|
||||||
|
"sstream": "cpp",
|
||||||
|
"stdexcept": "cpp",
|
||||||
|
"stop_token": "cpp",
|
||||||
|
"streambuf": "cpp",
|
||||||
|
"system_error": "cpp",
|
||||||
|
"thread": "cpp",
|
||||||
|
"tuple": "cpp",
|
||||||
|
"type_traits": "cpp",
|
||||||
|
"typeinfo": "cpp",
|
||||||
|
"utility": "cpp",
|
||||||
|
"xfacet": "cpp",
|
||||||
|
"xiosbase": "cpp",
|
||||||
|
"xlocale": "cpp",
|
||||||
|
"xlocbuf": "cpp",
|
||||||
|
"xlocinfo": "cpp",
|
||||||
|
"xlocmes": "cpp",
|
||||||
|
"xlocmon": "cpp",
|
||||||
|
"xlocnum": "cpp",
|
||||||
|
"xloctime": "cpp",
|
||||||
|
"xmemory": "cpp",
|
||||||
|
"xstddef": "cpp",
|
||||||
|
"xtr1common": "cpp",
|
||||||
|
"*.tcc": "cpp",
|
||||||
|
"memory_resource": "cpp",
|
||||||
|
"cinttypes": "cpp"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
14
src/global.h
14
src/global.h
@ -2,6 +2,20 @@
|
|||||||
#define GLOBAL_H
|
#define GLOBAL_H
|
||||||
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
// Debug
|
||||||
|
#define DEBUG 1
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
#define D_SerialBegin(...) Serial.begin(__VA_ARGS__);
|
||||||
|
#define D_print(...) Serial.print(__VA_ARGS__)
|
||||||
|
#define D_println(...) Serial.println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define D_SerialBegin(...)
|
||||||
|
#define D_print(...)
|
||||||
|
#define D_println(...)
|
||||||
|
#endif
|
||||||
|
|
||||||
// Wifi
|
// Wifi
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
@ -6,7 +6,7 @@ MqttTopic::MqttTopic(WiFiClient* espClient): wifiClient(espClient), client(PubSu
|
|||||||
server.fromString(MQTT_ADDR);
|
server.fromString(MQTT_ADDR);
|
||||||
|
|
||||||
this->client.setServer(server, MQTT_PORT);
|
this->client.setServer(server, MQTT_PORT);
|
||||||
this->client.setCallback(this->callback);
|
this->client.setCallback([&](char *a, byte *b, unsigned int c){ this->callback(a, b, c); });
|
||||||
}
|
}
|
||||||
|
|
||||||
MqttTopic::~MqttTopic()
|
MqttTopic::~MqttTopic()
|
||||||
@ -16,14 +16,49 @@ MqttTopic::~MqttTopic()
|
|||||||
|
|
||||||
void MqttTopic::callback(char *topic, byte *payload, unsigned int length)
|
void MqttTopic::callback(char *topic, byte *payload, unsigned int length)
|
||||||
{
|
{
|
||||||
Serial.print("Message arrived [");
|
// Topic should be homeassistant/ead/unique_id
|
||||||
Serial.print(topic);
|
char *token = strtok(topic, "/"); // homeassistant
|
||||||
Serial.println("] ");
|
uint8_t i = 0;
|
||||||
|
while (token != NULL && i < 2)
|
||||||
|
{
|
||||||
|
// Move to next token
|
||||||
|
token = strtok(NULL, "/"); // ead
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
D_print("Topic: ");
|
||||||
|
D_println(token);
|
||||||
|
|
||||||
|
// Check if subtopic has been found
|
||||||
|
if (i == 2)
|
||||||
|
{
|
||||||
|
// Check if token exists in topics
|
||||||
|
if (std::find(std::begin(topics), std::end(topics), token) != std::end(topics))
|
||||||
|
{
|
||||||
|
// Token exists
|
||||||
|
D_println("Token exists");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Add token to topics
|
||||||
|
D_print((char*)topics);
|
||||||
|
strcpy(topics[available], token);
|
||||||
|
available++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// In case the strtok fails entirely
|
||||||
|
D_println("Topic invalid");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// char array[length + 1] = {};
|
// char array[length + 1] = {};
|
||||||
// memcpy(array, payload, length);
|
// memcpy(array, payload, length);
|
||||||
// array[length] = '\0';
|
// array[length] = '\0';
|
||||||
// Serial.println(String(array).toFloat() / 1000.0);
|
// D_println(String(array).toFloat() / 1000.0);
|
||||||
// ead.setArm(String(array).toFloat() / 1000.0);
|
// ead.setArm(String(array).toFloat() / 1000.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,18 +66,18 @@ void MqttTopic::loop()
|
|||||||
{
|
{
|
||||||
while (!this->client.connected())
|
while (!this->client.connected())
|
||||||
{
|
{
|
||||||
Serial.print("Attempting MQTT connection...");
|
D_print("Attempting MQTT connection...");
|
||||||
// Attempt to connect
|
// Attempt to connect
|
||||||
if (this->client.connect("espead", "arne", "ThinkCentreM58"))
|
if (this->client.connect("espead", "arne", "ThinkCentreM58"))
|
||||||
{
|
{
|
||||||
Serial.println("connected");
|
D_println("connected");
|
||||||
this->client.subscribe("homeassistant/ead/#");
|
this->client.subscribe("homeassistant/ead/#");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Serial.print("failed, rc=");
|
D_print("failed, rc=");
|
||||||
Serial.print(this->client.state());
|
D_print(this->client.state());
|
||||||
Serial.println(" try again in 5 seconds");
|
D_println(" try again in 5 seconds");
|
||||||
// Wait 5 seconds before retrying
|
// Wait 5 seconds before retrying
|
||||||
delay(5000);
|
delay(5000);
|
||||||
}
|
}
|
||||||
|
@ -10,14 +10,18 @@
|
|||||||
class MqttTopic
|
class MqttTopic
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
WiFiClient* wifiClient; // Pointer to WiFiClient, for use with PubSubClient
|
WiFiClient* wifiClient;
|
||||||
PubSubClient client;
|
PubSubClient client;
|
||||||
uint8_t topic = 0;
|
|
||||||
|
// Home assistant topic should follow /homeassistant/ead/unique_id
|
||||||
|
char topics[10][8]; // Array of topics available, we'll go with 10 for now
|
||||||
|
uint8_t available = 0; // Topics present
|
||||||
|
uint8_t current = 0; // Current topic
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MqttTopic(WiFiClient* espClient);
|
MqttTopic(WiFiClient* espClient);
|
||||||
~MqttTopic();
|
~MqttTopic();
|
||||||
static void callback(char *topic, byte *payload, unsigned int length);
|
void callback(char *topic, byte *payload, unsigned int length);
|
||||||
void loop();
|
void loop();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
32
src/main.cpp
32
src/main.cpp
@ -21,21 +21,21 @@ void btnHandler(Button2 &btn)
|
|||||||
case single_click:
|
case single_click:
|
||||||
break;
|
break;
|
||||||
case double_click:
|
case double_click:
|
||||||
Serial.print("double ");
|
D_print("double ");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Serial.print("click ");
|
D_print("click ");
|
||||||
Serial.print("on button #");
|
D_print("on button #");
|
||||||
Serial.print((btn == btn_L) ? "L" : "R");
|
D_print((btn == btn_L) ? "L" : "R");
|
||||||
Serial.println();
|
D_println();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
Serial.begin(115200);
|
D_SerialBegin(115200);
|
||||||
delay(10);
|
delay(10);
|
||||||
|
|
||||||
Serial.println("T5 Dashboard " __DATE__ " " __TIME__);
|
D_println("T5 Dashboard " __DATE__ " " __TIME__);
|
||||||
|
|
||||||
// Buttons
|
// Buttons
|
||||||
btn_L.begin(BTN_L, INPUT_PULLUP, true);
|
btn_L.begin(BTN_L, INPUT_PULLUP, true);
|
||||||
@ -61,34 +61,18 @@ void setup()
|
|||||||
delay(20);
|
delay(20);
|
||||||
}
|
}
|
||||||
|
|
||||||
// display.setCursor(0, 6);
|
|
||||||
// // display.println("TTGO T5 V2.3 ePaper PlatformIO");
|
|
||||||
// display.println("T5 Analog/Digital Display, " __DATE__ " " __TIME__);
|
|
||||||
// display.nextPage();
|
|
||||||
|
|
||||||
WiFiMulti.addAP("Langeboomgaard", "ACvI4152EK");
|
WiFiMulti.addAP("Langeboomgaard", "ACvI4152EK");
|
||||||
WiFiMulti.addAP("ARNE-LAPTOPV3 6821", "P3900:q5");
|
WiFiMulti.addAP("ARNE-LAPTOPV3 6821", "P3900:q5");
|
||||||
|
|
||||||
if (int stat = WiFiMulti.run() != WL_CONNECTED)
|
if (int stat = WiFiMulti.run() != WL_CONNECTED)
|
||||||
{
|
{
|
||||||
Serial.println(WiFi.status());
|
D_println(WiFi.status());
|
||||||
display.print("WiFi connection failed");
|
display.print("WiFi connection failed");
|
||||||
display.println(stat);
|
display.println(stat);
|
||||||
display.nextPage();
|
display.nextPage();
|
||||||
esp_deep_sleep_start();
|
esp_deep_sleep_start();
|
||||||
}
|
}
|
||||||
|
|
||||||
// display.printf("WiFi connected to ");
|
|
||||||
// display.println(WiFi.SSID());
|
|
||||||
// display.print("IP address: ");
|
|
||||||
// display.println(WiFi.localIP());
|
|
||||||
// display.nextPage();
|
|
||||||
|
|
||||||
// delay(1000);
|
|
||||||
|
|
||||||
// display.fillScreen(GxEPD_WHITE);
|
|
||||||
// display.nextPage();
|
|
||||||
|
|
||||||
display.fillScreen(GxEPD_WHITE);
|
display.fillScreen(GxEPD_WHITE);
|
||||||
ead.drawFace(0, 9, "Solax Prod.", "kW", 10);
|
ead.drawFace(0, 9, "Solax Prod.", "kW", 10);
|
||||||
ead.drawMeta(WiFi.localIP().toString().c_str());
|
ead.drawMeta(WiFi.localIP().toString().c_str());
|
||||||
|
Loading…
Reference in New Issue
Block a user