progmem chars
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
//#define ARDUINOHA_DEBUG
|
||||
|
||||
// These macros allow to exclude some parts of the library to save more resources.
|
||||
#define EX_ARDUINOHA_BINARY_SENSOR
|
||||
//#define EX_ARDUINOHA_BINARY_SENSOR
|
||||
//#define EX_ARDUINOHA_BUTTON
|
||||
#define EX_ARDUINOHA_CAMERA
|
||||
#define EX_ARDUINOHA_COVER
|
||||
|
||||
102
src/Dictionary.cpp
Normal file
102
src/Dictionary.cpp
Normal file
@@ -0,0 +1,102 @@
|
||||
#include <Arduino.h>
|
||||
#include "Dictionary.h"
|
||||
|
||||
// MQTT
|
||||
const char StatsTopic[] PROGMEM = {"stats"};
|
||||
const char ButtonLeftTopic[] PROGMEM = {"stats/buttonLeft"};
|
||||
const char ButtonSelectTopic[] PROGMEM = {"stats/buttonSelect"};
|
||||
const char ButtonRightTopic[] PROGMEM = {"stats/buttonRight"};
|
||||
|
||||
// Generic
|
||||
const char State0[] PROGMEM = {"0"};
|
||||
const char State1[] PROGMEM = {"1"};
|
||||
|
||||
// HA
|
||||
const char HAmanufacturer[] PROGMEM = {"Blueforcer"};
|
||||
const char HAmodel[] PROGMEM = {"AWTRIX Light"};
|
||||
const char HAmatID[] PROGMEM = {"%s_mat"};
|
||||
const char HAmatIcon[] PROGMEM = {"mdi:lightbulb"};
|
||||
const char HAmatName[] PROGMEM = {"Matrix"};
|
||||
const char HAbriID[] PROGMEM = {"%s_bri"};
|
||||
const char HAbriIcon[] PROGMEM = {"mdi:brightness-auto"};
|
||||
const char HAbriName[] PROGMEM = {"Brightness mode"};
|
||||
const char HAbriOptions[] PROGMEM = {"Manual;Auto"};
|
||||
|
||||
const char HAbtnaID[] PROGMEM = {"%s_btna"};
|
||||
const char HAbtnaIcon[] PROGMEM = {"mdi:bell-off"};
|
||||
const char HAbtnaName[] PROGMEM = {"Dismiss notification"};
|
||||
|
||||
const char HAbtnbID[] PROGMEM = {"%s_btnb"};
|
||||
const char HAbtnbIcon[] PROGMEM = {"mdi:arrow-right-bold"};
|
||||
const char HAbtnbName[] PROGMEM = {"Next app"};
|
||||
|
||||
const char HAbtncID[] PROGMEM = {"%s_btnc"};
|
||||
const char HAbtncIcon[] PROGMEM = {"mdi:arrow-left-bold"};
|
||||
const char HAbtncName[] PROGMEM = {"Previous app"};
|
||||
|
||||
const char HAappID[] PROGMEM = {"%s_app"};
|
||||
const char HAappIcon[] PROGMEM = {"mdi:apps"};
|
||||
const char HAappName[] PROGMEM = {"Current app"};
|
||||
|
||||
const char HAtempID[] PROGMEM = {"%s_temp"};
|
||||
const char HAtempIcon[] PROGMEM = {"mdi:thermometer"};
|
||||
const char HAtempName[] PROGMEM = {"Temperature"};
|
||||
const char HAtempClass[] PROGMEM = {"temperature"};
|
||||
const char HAtempUnit[] PROGMEM = {"°C"};
|
||||
|
||||
const char HAhumID[] PROGMEM = {"%s_hum"};
|
||||
const char HAhumIcon[] PROGMEM = {"mdi:water-percent"};
|
||||
const char HAhumName[] PROGMEM = {"Humidity"};
|
||||
const char HAhumClass[] PROGMEM = {"humidity"};
|
||||
const char HAhumUnit[] PROGMEM = {"%"};
|
||||
|
||||
const char HAbatID[] PROGMEM = {"%s_bat"};
|
||||
const char HAbatIcon[] PROGMEM = {"mdi:battery-90"};
|
||||
const char HAbatName[] PROGMEM = {"Battery"};
|
||||
const char HAbatClass[] PROGMEM = {"battery"};
|
||||
const char HAbatUnit[] PROGMEM = {"%"};
|
||||
|
||||
const char HAluxID[] PROGMEM = {"%s_lux"};
|
||||
const char HAluxIcon[] PROGMEM = {"mdi:sun-wireless"};
|
||||
const char HAluxName[] PROGMEM = {"Illuminance"};
|
||||
const char HAluxClass[] PROGMEM = {"illuminance"};
|
||||
const char HAluxUnit[] PROGMEM = {"lx"};
|
||||
|
||||
const char HAverID[] PROGMEM = {"%s_ver"};
|
||||
const char HAverName[] PROGMEM = {"Version"};
|
||||
|
||||
const char HAsigID[] PROGMEM = {"%s_sig"};
|
||||
const char HAsigIcon[] PROGMEM = {"mdi:sun-wireless"};
|
||||
const char HAsigName[] PROGMEM = {"WiFi strength"};
|
||||
const char HAsigClass[] PROGMEM = {"signal_strength"};
|
||||
const char HAsigUnit[] PROGMEM = {"dB"};
|
||||
|
||||
const char HAupID[] PROGMEM = {"%s_up"};
|
||||
const char HAupName[] PROGMEM = {"Uptime"};
|
||||
const char HAupClass[] PROGMEM = {"duration"};
|
||||
|
||||
const char HAbtnLID[] PROGMEM = {"%s_btnL"};
|
||||
const char HAbtnLName[] PROGMEM = {"Button left"};
|
||||
|
||||
const char HAbtnMID[] PROGMEM = {"%s_btnM"};
|
||||
const char HAbtnMName[] PROGMEM = {"Button select"};
|
||||
|
||||
const char HAbtnRID[] PROGMEM = {"%s_btnR"};
|
||||
const char HAbtnRName[] PROGMEM = {"Button right"};
|
||||
|
||||
const char HAramRID[] PROGMEM = {"%s_btnR"};
|
||||
const char HAramIcon[] PROGMEM = {"mdi:application-cog"};
|
||||
const char HAramName[] PROGMEM = {"Free ram"};
|
||||
const char HAramClass[] PROGMEM = {"data_size"};
|
||||
const char HAramUnit[] PROGMEM = {"B"};
|
||||
|
||||
// JSON properites
|
||||
const char BatKey[] PROGMEM = {"bat"};
|
||||
const char BatRawKey[] PROGMEM = {"bat_raw"};
|
||||
const char LuxKey[] PROGMEM = {"lux"};
|
||||
const char LDRRawKey[] PROGMEM = {"ldr_raw"};
|
||||
const char BrightnessKey[] PROGMEM = {"bri"};
|
||||
const char TempKey[] PROGMEM = {"temp"};
|
||||
const char HumKey[] PROGMEM = {"hum"};
|
||||
const char UpTimeKey[] PROGMEM = {"uptime"};
|
||||
const char SignalStrengthKey[] PROGMEM = {"wifi_signal"};
|
||||
104
src/Dictionary.h
Normal file
104
src/Dictionary.h
Normal file
@@ -0,0 +1,104 @@
|
||||
#ifndef DICTIONARY_H
|
||||
#define DICTIONARY_H
|
||||
|
||||
// MQTT
|
||||
extern const char StatsTopic[];
|
||||
extern const char ButtonLeftTopic[];
|
||||
extern const char ButtonSelectTopic[];
|
||||
extern const char ButtonRightTopic[];
|
||||
|
||||
// Generic
|
||||
extern const char State0[];
|
||||
extern const char State1[];
|
||||
|
||||
// HA
|
||||
extern const char HAmanufacturer[];
|
||||
extern const char HAmodel[];
|
||||
extern const char HAmatID[];
|
||||
extern const char HAmatIcon[];
|
||||
extern const char HAmatName[];
|
||||
extern const char HAbriID[];
|
||||
extern const char HAbriIcon[];
|
||||
extern const char HAbriName[];
|
||||
extern const char HAbriOptions[];
|
||||
|
||||
extern const char HAbtnaID[];
|
||||
extern const char HAbtnaIcon[];
|
||||
extern const char HAbtnaName[];
|
||||
|
||||
extern const char HAbtnbID[];
|
||||
extern const char HAbtnbIcon[];
|
||||
extern const char HAbtnbName[];
|
||||
|
||||
extern const char HAbtncID[];
|
||||
extern const char HAbtncIcon[];
|
||||
extern const char HAbtncName[];
|
||||
|
||||
extern const char HAappID[];
|
||||
extern const char HAappIcon[];
|
||||
extern const char HAappName[];
|
||||
|
||||
extern const char HAtempID[];
|
||||
extern const char HAtempIcon[];
|
||||
extern const char HAtempName[];
|
||||
extern const char HAtempClass[];
|
||||
extern const char HAtempUnit[];
|
||||
|
||||
extern const char HAhumID[];
|
||||
extern const char HAhumIcon[];
|
||||
extern const char HAhumName[];
|
||||
extern const char HAhumClass[];
|
||||
extern const char HAhumUnit[];
|
||||
|
||||
extern const char HAbatID[];
|
||||
extern const char HAbatIcon[];
|
||||
extern const char HAbatName[];
|
||||
extern const char HAbatClass[];
|
||||
extern const char HAbatUnit[];
|
||||
|
||||
extern const char HAluxID[];
|
||||
extern const char HAluxIcon[];
|
||||
extern const char HAluxName[];
|
||||
extern const char HAluxClass[];
|
||||
extern const char HAluxUnit[];
|
||||
|
||||
extern const char HAverID[];
|
||||
extern const char HAverName[];
|
||||
|
||||
extern const char HAsigID[];
|
||||
extern const char HAsigIcon[];
|
||||
extern const char HAsigName[];
|
||||
extern const char HAsigClass[];
|
||||
extern const char HAsigUnit[];
|
||||
|
||||
extern const char HAupID[];
|
||||
extern const char HAupName[];
|
||||
extern const char HAupClass[];
|
||||
|
||||
extern const char HAbtnLID[];
|
||||
extern const char HAbtnLName[];
|
||||
|
||||
extern const char HAbtnMID[];
|
||||
extern const char HAbtnMName[];
|
||||
|
||||
extern const char HAbtnRID[];
|
||||
extern const char HAbtnRName[];
|
||||
|
||||
extern const char HAramRID[];
|
||||
extern const char HAramIcon[];
|
||||
extern const char HAramName[];
|
||||
extern const char HAramClass[];
|
||||
extern const char HAramUnit[];
|
||||
|
||||
// JSON properites
|
||||
extern const char BatKey[];
|
||||
extern const char BatRawKey[];
|
||||
extern const char LuxKey[];
|
||||
extern const char LDRRawKey[];
|
||||
extern const char BrightnessKey[];
|
||||
extern const char TempKey[];
|
||||
extern const char HumKey[];
|
||||
extern const char UpTimeKey[];
|
||||
extern const char SignalStrengthKey[];
|
||||
|
||||
#endif
|
||||
@@ -260,6 +260,11 @@ void DisplayManager_::generateCustomPage(String name, String payload)
|
||||
|
||||
CustomApp customApp;
|
||||
|
||||
if (customApps.find(name) != customApps.end())
|
||||
{
|
||||
customApp = customApps[name];
|
||||
}
|
||||
|
||||
if (doc.containsKey("sound"))
|
||||
{
|
||||
customApp.sound = ("/" + doc["sound"].as<String>() + ".txt");
|
||||
@@ -308,21 +313,27 @@ void DisplayManager_::generateCustomPage(String name, String payload)
|
||||
if (doc.containsKey("icon"))
|
||||
{
|
||||
String iconFileName = String(doc["icon"].as<String>());
|
||||
|
||||
if (LittleFS.exists("/ICONS/" + iconFileName + ".jpg"))
|
||||
if (customApp.icon && String(customApp.icon.name()).startsWith(iconFileName))
|
||||
{
|
||||
customApp.isGif = false;
|
||||
customApp.icon = LittleFS.open("/ICONS/" + iconFileName + ".jpg");
|
||||
}
|
||||
else if (LittleFS.exists("/ICONS/" + iconFileName + ".gif"))
|
||||
{
|
||||
customApp.isGif = true;
|
||||
customApp.icon = LittleFS.open("/ICONS/" + iconFileName + ".gif");
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fs::File nullPointer;
|
||||
customApp.icon = nullPointer;
|
||||
if (LittleFS.exists("/ICONS/" + iconFileName + ".jpg"))
|
||||
{
|
||||
customApp.isGif = false;
|
||||
customApp.icon = LittleFS.open("/ICONS/" + iconFileName + ".jpg");
|
||||
}
|
||||
else if (LittleFS.exists("/ICONS/" + iconFileName + ".gif"))
|
||||
{
|
||||
customApp.isGif = true;
|
||||
customApp.icon = LittleFS.open("/ICONS/" + iconFileName + ".gif");
|
||||
}
|
||||
else
|
||||
{
|
||||
fs::File nullPointer;
|
||||
customApp.icon = nullPointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <ArduinoHA.h>
|
||||
#include <WiFi.h>
|
||||
#include <ArduinoJson.h>
|
||||
#include "Dictionary.h"
|
||||
|
||||
unsigned long startTime;
|
||||
|
||||
@@ -29,9 +30,11 @@ HASensor *humidity = nullptr;
|
||||
HASensor *illuminance = nullptr;
|
||||
HASensor *uptime = nullptr;
|
||||
HASensor *strength = nullptr;
|
||||
|
||||
HASensor *version = nullptr;
|
||||
HASensor *ram = nullptr;
|
||||
HABinarySensor *btnleft = nullptr;
|
||||
HABinarySensor *btnmid = nullptr;
|
||||
HABinarySensor *btnright = nullptr;
|
||||
|
||||
// The getter for the instantiated singleton instance
|
||||
MQTTManager_ &MQTTManager_::getInstance()
|
||||
@@ -212,14 +215,14 @@ void connect()
|
||||
}
|
||||
|
||||
char matID[40], briID[40];
|
||||
char btnAID[40], btnBID[40], btnCID[40], appID[40], tempID[40], humID[40], luxID[40], verID[40], batID[40], ramID[40], upID[40], sigID[40];
|
||||
char btnAID[40], btnBID[40], btnCID[40], appID[40], tempID[40], humID[40], luxID[40], verID[40], batID[40], ramID[40], upID[40], sigID[40], btnLID[40], btnMID[40], btnRID[40];
|
||||
|
||||
void MQTTManager_::setup()
|
||||
{
|
||||
startTime = millis();
|
||||
if (HA_DISCOVERY)
|
||||
{
|
||||
Serial.println("Starting Homeassistant discorvery");
|
||||
Serial.println(F("Starting Homeassistant discorvery"));
|
||||
|
||||
uint8_t mac[6];
|
||||
WiFi.macAddress(mac);
|
||||
@@ -228,17 +231,17 @@ void MQTTManager_::setup()
|
||||
device.setUniqueId(mac, sizeof(mac));
|
||||
device.setName(uniqueID);
|
||||
device.setSoftwareVersion(VERSION);
|
||||
device.setManufacturer("Blueforcer");
|
||||
device.setModel("AWTRIX Light");
|
||||
device.setManufacturer(HAmanufacturer);
|
||||
device.setModel(HAmodel);
|
||||
device.setAvailability(true);
|
||||
|
||||
String uniqueIDWithSuffix;
|
||||
|
||||
sprintf(matID, "%s_mat", macStr);
|
||||
sprintf(matID, HAmatID, macStr);
|
||||
Matrix = new HALight(matID, HALight::BrightnessFeature | HALight::RGBFeature);
|
||||
|
||||
Matrix->setIcon("mdi:lightbulb");
|
||||
Matrix->setName("Matrix");
|
||||
Matrix->setIcon(HAmatIcon);
|
||||
Matrix->setName(HAmatName);
|
||||
Matrix->onStateCommand(onStateCommand);
|
||||
Matrix->onBrightnessCommand(onBrightnessCommand);
|
||||
Matrix->onRGBColorCommand(onRGBColorCommand);
|
||||
@@ -252,87 +255,99 @@ void MQTTManager_::setup()
|
||||
Matrix->setCurrentRGBColor(color);
|
||||
Matrix->setState(true, true);
|
||||
|
||||
sprintf(briID, "%s_bri", macStr);
|
||||
sprintf(briID, HAbriID, macStr);
|
||||
BriMode = new HASelect(briID);
|
||||
BriMode->setOptions("Manual;Auto"); // use semicolons as separator of options
|
||||
BriMode->setOptions(HAbriOptions); // use semicolons as separator of options
|
||||
BriMode->onCommand(onSelectCommand);
|
||||
BriMode->setIcon("mdi:brightness-auto"); // optional
|
||||
BriMode->setName("Brightness mode"); // optional
|
||||
BriMode->setIcon(HAbriIcon); // optional
|
||||
BriMode->setName(HAbriName); // optional
|
||||
BriMode->setState(AUTO_BRIGHTNESS, true);
|
||||
|
||||
sprintf(btnAID, "%s_btna", macStr);
|
||||
sprintf(btnAID, HAbtnaID, macStr);
|
||||
dismiss = new HAButton(btnAID);
|
||||
dismiss->setIcon("mdi:bell-off");
|
||||
dismiss->setName("Dismiss notification");
|
||||
dismiss->setIcon(HAbtnaIcon);
|
||||
dismiss->setName(HAbtnaName);
|
||||
|
||||
sprintf(btnBID, "%s_btnb", macStr);
|
||||
sprintf(btnBID, HAbtnbID, macStr);
|
||||
nextApp = new HAButton(btnBID);
|
||||
nextApp->setIcon("mdi:arrow-right-bold");
|
||||
nextApp->setName("Next app");
|
||||
nextApp->setIcon(HAbtnbIcon);
|
||||
nextApp->setName(HAbtnbName);
|
||||
|
||||
sprintf(btnCID, "%s_btnc", macStr);
|
||||
sprintf(btnCID, HAbtncID, macStr);
|
||||
prevApp = new HAButton(btnCID);
|
||||
prevApp->setIcon("mdi:arrow-left-bold");
|
||||
prevApp->setName("Previous app");
|
||||
prevApp->setIcon(HAbtncIcon);
|
||||
prevApp->setName(HAbtncName);
|
||||
|
||||
dismiss->onCommand(onButtonCommand);
|
||||
nextApp->onCommand(onButtonCommand);
|
||||
prevApp->onCommand(onButtonCommand);
|
||||
|
||||
sprintf(appID, "%s_app", macStr);
|
||||
sprintf(appID, HAappID, macStr);
|
||||
curApp = new HASensor(appID);
|
||||
curApp->setIcon("mdi:apps");
|
||||
curApp->setName("Current app");
|
||||
curApp->setIcon(HAappIcon);
|
||||
curApp->setName(HAappName);
|
||||
|
||||
sprintf(tempID, "%s_temp", macStr);
|
||||
sprintf(tempID, HAtempID, macStr);
|
||||
temperature = new HASensor(tempID);
|
||||
temperature->setIcon("mdi:thermometer");
|
||||
temperature->setName("Temperature");
|
||||
temperature->setDeviceClass("temperature");
|
||||
temperature->setUnitOfMeasurement("°C");
|
||||
temperature->setIcon(HAtempIcon);
|
||||
temperature->setName(HAtempName);
|
||||
temperature->setDeviceClass(HAtempClass);
|
||||
temperature->setUnitOfMeasurement(HAtempUnit);
|
||||
|
||||
sprintf(humID, "%s_hum", macStr);
|
||||
sprintf(humID, HAhumID, macStr);
|
||||
humidity = new HASensor(humID);
|
||||
humidity->setIcon("mdi:water-percent");
|
||||
humidity->setName("Humidity");
|
||||
humidity->setDeviceClass("humidity");
|
||||
humidity->setUnitOfMeasurement("%");
|
||||
humidity->setIcon(HAhumIcon);
|
||||
humidity->setName(HAhumName);
|
||||
humidity->setDeviceClass(HAhumClass);
|
||||
humidity->setUnitOfMeasurement(HAhumUnit);
|
||||
|
||||
sprintf(batID, "%s_bat", macStr);
|
||||
sprintf(batID, HAbatID, macStr);
|
||||
battery = new HASensor(batID);
|
||||
battery->setIcon("mdi:battery-90");
|
||||
battery->setName("Battery");
|
||||
battery->setDeviceClass("battery");
|
||||
battery->setUnitOfMeasurement("%");
|
||||
battery->setIcon(HAbatIcon);
|
||||
battery->setName(HAbatName);
|
||||
battery->setDeviceClass(HAbatClass);
|
||||
battery->setUnitOfMeasurement(HAbatUnit);
|
||||
|
||||
sprintf(luxID, "%s_lux", macStr);
|
||||
sprintf(luxID, HAluxID, macStr);
|
||||
illuminance = new HASensor(luxID);
|
||||
illuminance->setIcon("mdi:sun-wireless");
|
||||
illuminance->setName("Illuminance");
|
||||
illuminance->setDeviceClass("illuminance");
|
||||
illuminance->setUnitOfMeasurement("lx");
|
||||
illuminance->setIcon(HAluxIcon);
|
||||
illuminance->setName(HAluxName);
|
||||
illuminance->setDeviceClass(HAluxClass);
|
||||
illuminance->setUnitOfMeasurement(HAluxUnit);
|
||||
|
||||
sprintf(verID, "%s_ver", macStr);
|
||||
sprintf(verID, HAverID, macStr);
|
||||
version = new HASensor(verID);
|
||||
version->setName("Version");
|
||||
version->setName(HAverName);
|
||||
|
||||
sprintf(sigID, "%s_sig", macStr);
|
||||
sprintf(sigID, HAsigID, macStr);
|
||||
strength = new HASensor(sigID);
|
||||
strength->setName("WiFi strength");
|
||||
strength->setDeviceClass("signal_strength");
|
||||
strength->setUnitOfMeasurement("dB");
|
||||
strength->setName(HAsigName);
|
||||
strength->setDeviceClass(HAsigClass);
|
||||
strength->setUnitOfMeasurement(HAsigUnit);
|
||||
|
||||
sprintf(upID, "%s_up", macStr);
|
||||
sprintf(upID, HAupID, macStr);
|
||||
uptime = new HASensor(upID);
|
||||
uptime->setName("Uptime");
|
||||
uptime->setDeviceClass("duration");
|
||||
uptime->setName(HAupName);
|
||||
uptime->setDeviceClass(HAupClass);
|
||||
|
||||
sprintf(ramID, "%s_ram", macStr);
|
||||
sprintf(btnLID, HAbtnLID, macStr);
|
||||
btnleft = new HABinarySensor(btnLID);
|
||||
btnleft->setName(HAbtnLName);
|
||||
|
||||
sprintf(btnMID, HAbtnMID, macStr);
|
||||
btnmid = new HABinarySensor(btnMID);
|
||||
btnmid->setName(HAbtnMName);
|
||||
|
||||
sprintf(btnRID, HAbtnRID, macStr);
|
||||
btnright = new HABinarySensor(btnRID);
|
||||
btnright->setName(HAbtnRName);
|
||||
|
||||
sprintf(ramID, HAramRID, macStr);
|
||||
ram = new HASensor(ramID);
|
||||
ram->setDeviceClass("data_size");
|
||||
ram->setIcon("mdi:application-cog");
|
||||
ram->setName("Free ram");
|
||||
ram->setUnitOfMeasurement("B");
|
||||
ram->setDeviceClass(HAramClass);
|
||||
ram->setIcon(HAramIcon);
|
||||
ram->setName(HAramName);
|
||||
ram->setUnitOfMeasurement(HAramUnit);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -419,22 +434,55 @@ void MQTTManager_::sendStats()
|
||||
|
||||
StaticJsonDocument<200> doc;
|
||||
char buffer[5];
|
||||
doc["bat"] = BATTERY_PERCENT;
|
||||
doc["batraw"] = BATTERY_RAW;
|
||||
doc[BatKey] = BATTERY_PERCENT;
|
||||
doc[BatRawKey] = BATTERY_RAW;
|
||||
snprintf(buffer, 5, "%.0f", CURRENT_LUX);
|
||||
doc["lux"] = buffer;
|
||||
doc["ldrraw"] = LDR_RAW;
|
||||
doc["bri"] = BRIGHTNESS;
|
||||
doc[LuxKey] = buffer;
|
||||
doc[LDRRawKey] = LDR_RAW;
|
||||
doc[BrightnessKey] = BRIGHTNESS;
|
||||
snprintf(buffer, 5, "%.0f", CURRENT_TEMP);
|
||||
doc["temp"] = buffer;
|
||||
doc[TempKey] = buffer;
|
||||
snprintf(buffer, 5, "%.0f", CURRENT_HUM);
|
||||
doc["hum"] = buffer;
|
||||
doc["uptime"] = readUptime();
|
||||
doc["wifi"] = WiFi.RSSI();
|
||||
doc[HumKey] = buffer;
|
||||
doc[UpTimeKey] = readUptime();
|
||||
doc[SignalStrengthKey] = WiFi.RSSI();
|
||||
String jsonString;
|
||||
serializeJson(doc, jsonString);
|
||||
char topic[50];
|
||||
strcpy(topic, MQTT_PREFIX.c_str());
|
||||
strcat(topic, "/stats");
|
||||
mqtt.publish(topic, jsonString.c_str());
|
||||
publish(StatsTopic, jsonString.c_str());
|
||||
}
|
||||
|
||||
void MQTTManager_::sendButton(byte btn, bool state)
|
||||
{
|
||||
static bool btn0State, btn1State, btn2State;
|
||||
|
||||
switch (btn)
|
||||
{
|
||||
case 0:
|
||||
if (btn0State != state)
|
||||
{
|
||||
btnleft->setState(state, false);
|
||||
btn0State = state;
|
||||
publish(ButtonLeftTopic, state ? State1 : State0);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (btn1State != state)
|
||||
{
|
||||
btnmid->setState(state, false);
|
||||
btn1State = state;
|
||||
publish(ButtonSelectTopic, state ? State1 : State0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 2:
|
||||
if (btn2State != state)
|
||||
{
|
||||
btnright->setState(state, false);
|
||||
btn2State = state;
|
||||
publish(ButtonRightTopic, state ? State1 : State0);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ public:
|
||||
void publish(const char *topic, const char *payload);
|
||||
void setCurrentApp(String value);
|
||||
void sendStats();
|
||||
void sendButton(byte btn, bool state);
|
||||
};
|
||||
|
||||
extern MQTTManager_ &MQTTManager;
|
||||
|
||||
@@ -9,27 +9,26 @@
|
||||
#include <LightDependentResistor.h>
|
||||
#include <MenuManager.h>
|
||||
|
||||
#define SOUND_OFF false
|
||||
#define SOUND_OFF true
|
||||
|
||||
#ifdef ULANZI
|
||||
// Pinouts für das ULANZI-Environment
|
||||
#define BATTERY_PIN 34
|
||||
#define BUZZER_PIN 15
|
||||
#define LDR_PIN 35
|
||||
#define BUTTON_UP_PIN 26
|
||||
#define BUTTON_DOWN_PIN 14
|
||||
#define BUTTON_SELECT_PIN 27
|
||||
#define BATTERY_PIN 34
|
||||
#define BUZZER_PIN 15
|
||||
#define LDR_PIN 35
|
||||
#define BUTTON_UP_PIN 26
|
||||
#define BUTTON_DOWN_PIN 14
|
||||
#define BUTTON_SELECT_PIN 27
|
||||
#else
|
||||
// Pinouts für das WEMOS_D1_MINI32-Environment
|
||||
#define BATTERY_PIN -1
|
||||
#define BUZZER_PIN -1
|
||||
#define LDR_PIN A0
|
||||
#define BUTTON_UP_PIN D0
|
||||
#define BUTTON_DOWN_PIN D4
|
||||
#define BUTTON_SELECT_PIN D8
|
||||
#define BATTERY_PIN -1
|
||||
#define BUZZER_PIN -1
|
||||
#define LDR_PIN A0
|
||||
#define BUTTON_UP_PIN D0
|
||||
#define BUTTON_DOWN_PIN D4
|
||||
#define BUTTON_SELECT_PIN D8
|
||||
#endif
|
||||
|
||||
|
||||
Adafruit_SHT31 sht31;
|
||||
EasyButton button_left(BUTTON_UP_PIN);
|
||||
EasyButton button_right(BUTTON_DOWN_PIN);
|
||||
@@ -58,8 +57,6 @@ float sampleSum = 0.0;
|
||||
float sampleAverage = 0.0;
|
||||
float brightnessPercent = 0.0;
|
||||
|
||||
|
||||
|
||||
// The getter for the instantiated singleton instance
|
||||
PeripheryManager_ &PeripheryManager_::getInstance()
|
||||
{
|
||||
@@ -140,7 +137,7 @@ void fistStart()
|
||||
|
||||
uint16_t ADCVALUE = analogRead(BATTERY_PIN);
|
||||
|
||||
BATTERY_PERCENT = min((int)map(ADCVALUE, 490, 660, 0, 100), 100);
|
||||
BATTERY_PERCENT = min((int)map(ADCVALUE, 490, 690, 0, 100), 100);
|
||||
sht31.readBoth(&CURRENT_TEMP, &CURRENT_HUM);
|
||||
|
||||
uint16_t LDRVALUE = analogRead(LDR_PIN);
|
||||
@@ -170,9 +167,10 @@ void PeripheryManager_::setup()
|
||||
|
||||
void PeripheryManager_::tick()
|
||||
{
|
||||
button_left.read();
|
||||
button_right.read();
|
||||
button_select.read();
|
||||
|
||||
MQTTManager.sendButton(0, button_left.read());
|
||||
MQTTManager.sendButton(1, button_select.read());
|
||||
MQTTManager.sendButton(2, button_right.read());
|
||||
|
||||
unsigned long currentMillis_BatTempHum = millis();
|
||||
if (currentMillis_BatTempHum - previousMillis_BatTempHum >= interval_BatTempHum)
|
||||
@@ -212,8 +210,6 @@ void PeripheryManager_::tick()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
const int MIN_ALARM_INTERVAL = 60; // 1 Minute
|
||||
time_t lastAlarmTime = 0;
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ void ServerManager_::setup()
|
||||
{
|
||||
WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS);
|
||||
}
|
||||
IPAddress myIP = mws.startWiFi(150000, uniqueID, "12345678");
|
||||
IPAddress myIP = mws.startWiFi(10000, uniqueID, "12345678");
|
||||
isConnected = !(myIP == IPAddress(192, 168, 4, 1));
|
||||
Serial.println(myIP.toString());
|
||||
|
||||
@@ -117,7 +117,7 @@ void ServerManager_::tick()
|
||||
|
||||
uint16_t stringToColor(const String &str)
|
||||
{
|
||||
// Aufteilen des Strings in seine Bestandteile
|
||||
|
||||
int comma1 = str.indexOf(',');
|
||||
int comma2 = str.lastIndexOf(',');
|
||||
if (comma1 < 0 || comma2 < 0 || comma2 == comma1)
|
||||
@@ -129,36 +129,33 @@ uint16_t stringToColor(const String &str)
|
||||
String gStr = str.substring(comma1 + 1, comma2);
|
||||
String bStr = str.substring(comma2 + 1);
|
||||
|
||||
// Konvertieren der Werte von Strings zu Zahlen
|
||||
|
||||
int r = rStr.toInt();
|
||||
int g = gStr.toInt();
|
||||
int b = bStr.toInt();
|
||||
|
||||
// Sicherheitsabfrage: Werte müssen zwischen 0 und 255 liegen
|
||||
|
||||
if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255)
|
||||
{
|
||||
return 0xFFFF;
|
||||
}
|
||||
|
||||
// Konvertieren der Werte zu 5-6-5 Bitformat
|
||||
uint16_t color = ((r >> 3) << 11) | ((g >> 2) & 0x3F) << 5 | (b >> 3);
|
||||
return color;
|
||||
}
|
||||
|
||||
String colorToString(uint16_t color)
|
||||
{
|
||||
// Konvertieren der Farbwerte von 5-6-5 Bitformat zu 8 Bit
|
||||
|
||||
uint8_t r = (color >> 11) << 3;
|
||||
uint8_t g = ((color >> 5) & 0x3F) << 2;
|
||||
uint8_t b = (color & 0x1F) << 3;
|
||||
|
||||
// Sicherheitsabfrage: Werte müssen zwischen 0 und 255 liegen
|
||||
if (r > 255 || g > 255 || b > 255)
|
||||
{
|
||||
return "#FFFFFF";
|
||||
}
|
||||
|
||||
// Konvertieren der Farbwerte zu Strings und Zusammenführen
|
||||
String rStr = String(r);
|
||||
String gStr = String(g);
|
||||
String bStr = String(b);
|
||||
@@ -202,4 +199,3 @@ void ServerManager_::loadSettings()
|
||||
Serial.println(F("Configuration file not exist"));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user