Allow status led to be disabled (fixes #156) (#196)

This commit is contained in:
Darrell 2022-01-23 12:38:05 -05:00 committed by GitHub
parent 7c6e5939c8
commit 3a54825c2c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 102 additions and 43 deletions

View File

@ -4,6 +4,37 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [2.0.15]
- Allow status led to be disabled (#156)
## [2.0.14]
- Add eddystone uid support @DTTerastar (#188)
- Add support for alt-beacons @DTTerastar (#187)
## [2.0.13]
- Bump NimBLE-Arduino.git to 1.3.3 @DTTerastar (#145)
## [2.0.11] && [2.0.12]
- Requery if room assistant broadcast found after query @DTTerastar (#126)
- Slight tweaks and logging to try and fix #125
## [2.0.10]
- Add trackr support @DTTerastar (#121)
## [2.0.9]
- Add support for ATC\_MiThermometer @DTTerastar (#124)
- Add initial support for meater @DTTerastar (#124)
- Improve msft:cdp fingerprint @DTTerastar (#124)
## [2.0.7] && [2.0.8]
- Add entity categories for config items @DTTerastar (#114)
## [2.0.6] ## [2.0.6]

View File

@ -1,5 +1,30 @@
#include "GUI.h" #include "GUI.h"
#if defined M5STICK
#define LED_BUILTIN 10
#define LED_BUILTIN_ON 0
#define BUTTON 39
#define BUTTON_PRESSED 0
#elif defined M5ATOM
#define BUTTON 39
#define BUTTON_PRESSED 0
#elif defined HUZZAH32
#define LED_BUILTIN 13
#define LED_BUILTIN_ON 1
#else //DevKit / generic
#define LED_BUILTIN 2
#define LED_BUILTIN_ON 1
#endif
GUI Display; GUI Display;
void GUI::seenStart() void GUI::seenStart()
@ -8,7 +33,7 @@ void GUI::seenStart()
#ifdef M5ATOM #ifdef M5ATOM
M5.dis.drawpix(0, CRGB(15, 15, 15)); M5.dis.drawpix(0, CRGB(15, 15, 15));
#else #else
digitalWrite(LED_BUILTIN, LED_BUILTIN_ON); if (_statusLed) digitalWrite(LED_BUILTIN, LED_BUILTIN_ON);
#endif #endif
} }
@ -37,7 +62,7 @@ void GUI::connecting()
status("Connecting..."); status("Connecting...");
connected(false, false); connected(false, false);
#ifdef LED_BUILTIN #ifdef LED_BUILTIN
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); if (_statusLed) digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
#endif #endif
} }
@ -107,6 +132,13 @@ void GUI::status(const char *format, ...)
#endif #endif
} }
void GUI::setup()
{
#ifdef LED_BUILTIN
pinMode(LED_BUILTIN, OUTPUT);
#endif
}
void GUI::begin() void GUI::begin()
{ {
if (!init) if (!init)
@ -124,7 +156,7 @@ void GUI::begin()
} }
} }
void GUI::update() void GUI::blit()
{ {
begin(); begin();
#ifdef M5STICK #ifdef M5STICK
@ -137,10 +169,17 @@ void GUI::update()
#endif #endif
} }
void GUI::updateStart()
{
#ifdef LED_BUILTIN
if (_statusLed) digitalWrite(LED_BUILTIN, LED_BUILTIN_ON);
#endif
}
void GUI::updateProgress(unsigned int percent) void GUI::updateProgress(unsigned int percent)
{ {
#ifdef LED_BUILTIN #ifdef LED_BUILTIN
digitalWrite(LED_BUILTIN, percent % 2); if (_statusLed) digitalWrite(LED_BUILTIN, percent % 2);
#endif #endif
} }

View File

@ -14,36 +14,13 @@
#include <M5Atom.h> #include <M5Atom.h>
#endif #endif
#if defined M5STICK
#define LED_BUILTIN 10
#define LED_BUILTIN_ON 0
#define BUTTON 39
#define BUTTON_PRESSED 0
#elif defined M5ATOM
#define BUTTON 39
#define BUTTON_PRESSED 0
#elif defined HUZZAH32
#define LED_BUILTIN 13
#define LED_BUILTIN_ON 1
#else //DevKit / generic
#define LED_BUILTIN 2
#define LED_BUILTIN_ON 1
#endif
class BleFingerprint; class BleFingerprint;
class GUI class GUI
{ {
public: public:
void setup();
void added(BleFingerprint *f); void added(BleFingerprint *f);
void removed(BleFingerprint *f, long age); void removed(BleFingerprint *f, long age);
void close(BleFingerprint *f); void close(BleFingerprint *f);
@ -55,6 +32,7 @@ public:
void seenStart(); void seenStart();
void seenEnd(); void seenEnd();
void updateStart();
void updateProgress(unsigned int percent); void updateProgress(unsigned int percent);
void updateEnd(); void updateEnd();
@ -62,9 +40,12 @@ public:
void connected(bool wifi, bool mqtt); void connected(bool wifi, bool mqtt);
void status(const char *message, ...); void status(const char *message, ...);
void update(); void blit();
void setStatusLed(bool enabled) { _statusLed = enabled; }
private: private:
bool _statusLed = true;
void begin(); void begin();
bool init; bool init;

View File

@ -16,7 +16,7 @@ bool sendTelemetry(int totalSeen, int totalFpSeen, int totalFpQueried, int total
if (discovery && !sentDiscovery) if (discovery && !sentDiscovery)
{ {
if (sendDiscoveryConnectivity() && sendNumberDiscovery("Max Distance", "config") && sendSwitchDiscovery("Active Scan", "config") && sendSwitchDiscovery("Query", "config") && sendDiscoveryMotion() && sendDiscoveryHumidity() && sendDiscoveryTemperature() && sendDiscoveryLux()) if (sendDiscoveryConnectivity() && sendSwitchDiscovery("Status LED", "config") && sendNumberDiscovery("Max Distance", "config") && sendSwitchDiscovery("Active Scan", "config") && sendSwitchDiscovery("Query", "config") && sendDiscoveryMotion() && sendDiscoveryHumidity() && sendDiscoveryTemperature() && sendDiscoveryLux())
{ {
sentDiscovery = true; sentDiscovery = true;
} }
@ -81,7 +81,7 @@ bool sendTelemetry(int totalSeen, int totalFpSeen, int totalFpQueried, int total
void connectToWifi() void connectToWifi()
{ {
Serial.printf("Connecting to WiFi (%s)...\n", WiFi.macAddress().c_str()); Serial.printf("Connecting to WiFi (%s)...\n", WiFi.macAddress().c_str());
Display.update(); Display.blit();
WiFiSettings.onConnect = []() WiFiSettings.onConnect = []()
{ {
@ -118,6 +118,9 @@ void connectToWifi()
WiFiSettings.heading("Preferences"); WiFiSettings.heading("Preferences");
statusLed = WiFiSettings.checkbox("status_led", true, "Status LED");
Display.setStatusLed(statusLed);
autoUpdate = WiFiSettings.checkbox("auto_update", DEFAULT_AUTO_UPDATE, "Automatically Update"); autoUpdate = WiFiSettings.checkbox("auto_update", DEFAULT_AUTO_UPDATE, "Automatically Update");
otaUpdate = WiFiSettings.checkbox("ota_update", DEFAULT_OTA_UPDATE, "Arduino OTA Update"); otaUpdate = WiFiSettings.checkbox("ota_update", DEFAULT_OTA_UPDATE, "Arduino OTA Update");
discovery = WiFiSettings.checkbox("discovery", true, "Home Assistant Discovery"); discovery = WiFiSettings.checkbox("discovery", true, "Home Assistant Discovery");
@ -231,6 +234,13 @@ void onMqttMessage(char *topic, char *payload, AsyncMqttClientMessageProperties
spurt("/query", String(allowQuery)); spurt("/query", String(allowQuery));
online = false; online = false;
} }
else if (top == roomsTopic + "/status_led/set")
{
statusLed = pay == "ON";
spurt("/status_led", String(statusLed));
Display.setStatusLed(statusLed);
online = false;
}
fingerprints.setParams(refRssi, forgetMs, skipDistance, skipMs, maxDistance); fingerprints.setParams(refRssi, forgetMs, skipDistance, skipMs, maxDistance);
} }
@ -397,9 +407,7 @@ void triggerGetTemp()
void setup() void setup()
{ {
#ifdef LED_BUILTIN Display.setup();
pinMode(LED_BUILTIN, OUTPUT);
#endif
Serial.begin(115200); Serial.begin(115200);
Serial.setDebugOutput(true); Serial.setDebugOutput(true);
@ -664,7 +672,7 @@ void loop()
if (otaUpdate) if (otaUpdate)
ArduinoOTA.handle(); ArduinoOTA.handle();
firmwareUpdate(); firmwareUpdate();
Display.update(); Display.blit();
pirLoop(); pirLoop();
radarLoop(); radarLoop();
dhtLoop(); dhtLoop();

View File

@ -57,7 +57,7 @@ String teleTopic;
String roomsTopic; String roomsTopic;
String subTopic; String subTopic;
bool autoUpdate, otaUpdate; bool autoUpdate, otaUpdate;
bool discovery; bool discovery, statusLed;
bool activeScan, allowQuery; bool activeScan, allowQuery;
bool publishTele; bool publishTele;
bool publishRooms; bool publishRooms;
@ -236,11 +236,10 @@ void firmwareUpdate()
updateInProgress = true; updateInProgress = true;
fingerprints.setDisable(updateInProgress); fingerprints.setDisable(updateInProgress);
#ifdef LED_BUILTIN Display.updateStart();
httpUpdate.setLedPin(LED_BUILTIN, LED_BUILTIN_ON);
#endif
httpUpdate.setFollowRedirects(HTTPC_FORCE_FOLLOW_REDIRECTS); httpUpdate.setFollowRedirects(HTTPC_FORCE_FOLLOW_REDIRECTS);
t_httpUpdate_return ret = httpUpdate.update(client, firmwareUrl); t_httpUpdate_return ret = httpUpdate.update(client, firmwareUrl);
Display.updateEnd();
switch (ret) switch (ret)
{ {
@ -297,7 +296,7 @@ void spiffsInit()
bool sendOnline() bool sendOnline()
{ {
return mqttClient.publish(statusTopic.c_str(), 0, 1, "online") && mqttClient.publish((roomsTopic + "/max_distance").c_str(), 0, 1, String(maxDistance).c_str()) && mqttClient.publish((roomsTopic + "/query").c_str(), 0, 1, String(allowQuery ? "ON" : "OFF").c_str()) && mqttClient.publish((roomsTopic + "/active_scan").c_str(), 0, 1, String(activeScan ? "ON" : "OFF").c_str()); return mqttClient.publish(statusTopic.c_str(), 0, 1, "online") && mqttClient.publish((roomsTopic + "/max_distance").c_str(), 0, 1, String(maxDistance).c_str()) && mqttClient.publish((roomsTopic + "/query").c_str(), 0, 1, String(allowQuery ? "ON" : "OFF").c_str()) && mqttClient.publish((roomsTopic + "/status_led").c_str(), 0, 1, String(statusLed ? "ON" : "OFF").c_str()) && mqttClient.publish((roomsTopic + "/active_scan").c_str(), 0, 1, String(activeScan ? "ON" : "OFF").c_str());
} }
void commonDiscovery(JsonDocument *doc) void commonDiscovery(JsonDocument *doc)
@ -311,9 +310,10 @@ void commonDiscovery(JsonDocument *doc)
(*doc)["dev"]["name"] = "ESPresense " + room; (*doc)["dev"]["name"] = "ESPresense " + room;
(*doc)["dev"]["sa"] = room; (*doc)["dev"]["sa"] = room;
#ifdef VERSION #ifdef VERSION
(*doc)["dev"]["sw_version"] = VERSION; (*doc)["dev"]["sw"] = VERSION;
#endif #endif
(*doc)["dev"]["manufacturer"] = "ESPresense (" FIRMWARE ")"; (*doc)["dev"]["mf"] = "ESPresense (" FIRMWARE ")";
(*doc)["dev"]["cu"] = "http://" + localIp;
(*doc)["dev"]["mdl"] = ESP.getChipModel(); (*doc)["dev"]["mdl"] = ESP.getChipModel();
} }