Brightness can be configured

This commit is contained in:
Ollo 2021-12-15 17:22:10 +01:00
parent db10de101c
commit d6e34a8e75
2 changed files with 15 additions and 9 deletions

View File

@ -13,6 +13,6 @@
#define HOMIE_SETTINGS #define HOMIE_SETTINGS
#define HOMIE_FIRMWARE_NAME "RoomSensor" #define HOMIE_FIRMWARE_NAME "RoomSensor"
#define HOMIE_FIRMWARE_VERSION "2.1.0" #define HOMIE_FIRMWARE_VERSION "2.2.0"
#endif #endif

View File

@ -74,6 +74,8 @@
strcat(topic, "/"); \ strcat(topic, "/"); \
strcat(topic, test); strcat(topic, test);
#define PERCENT2FACTOR(b, a) ((b * a.get()) / 100)
#define NUMBER_TYPE "Number" #define NUMBER_TYPE "Number"
#define NODE_PARTICLE "particle" #define NODE_PARTICLE "particle"
#define NODE_TEMPERATUR "temp" #define NODE_TEMPERATUR "temp"
@ -130,6 +132,7 @@ HomieSetting<bool> i2cEnable("i2c",
); );
HomieSetting<bool> rgbTemp("rgbTemp", "Show temperature via red (>20 °C) and blue (< 20°C)"); HomieSetting<bool> rgbTemp("rgbTemp", "Show temperature via red (>20 °C) and blue (< 20°C)");
HomieSetting<long> rgbDim("rgbDim", "Factor (1 to 200%) of the status LEDs");
static SoftwareSerial pmSerial(SENSOR_PM1006_RX, SENSOR_PM1006_TX); static SoftwareSerial pmSerial(SENSOR_PM1006_RX, SENSOR_PM1006_TX);
#ifdef BME680 #ifdef BME680
@ -258,9 +261,9 @@ void bmpPublishValues() {
String(bmx.readAltitude(SEALEVELPRESSURE_HPA))), MQTT_LOG_I2READ); String(bmx.readAltitude(SEALEVELPRESSURE_HPA))), MQTT_LOG_I2READ);
if ( (rgbTemp.get()) && (!mSomethingReceived) ) { if ( (rgbTemp.get()) && (!mSomethingReceived) ) {
if (bmx.readTemperature() < TEMPBORDER) { if (bmx.readTemperature() < TEMPBORDER) {
strip.setPixelColor(0, strip.Color(0,0,127)); strip.setPixelColor(0, strip.Color(0,0,PERCENT2FACTOR(127, rgbDim)));
} else { } else {
strip.setPixelColor(0, strip.Color(127,0,0)); strip.setPixelColor(0, strip.Color(PERCENT2FACTOR(127, rgbDim),0,0));
} }
strip.show(); strip.show();
} }
@ -286,11 +289,11 @@ void loopHandler()
particle.setProperty(NODE_PARTICLE).send(String(pM25)); particle.setProperty(NODE_PARTICLE).send(String(pM25));
if (!mSomethingReceived) { if (!mSomethingReceived) {
if (pM25 < 35) { if (pM25 < 35) {
strip.fill(strip.Color(0, 127, 0)); /* green */ strip.fill(strip.Color(0, PERCENT2FACTOR(127, rgbDim), 0)); /* green */
} else if (pM25 < 85) { } else if (pM25 < 85) {
strip.fill(strip.Color(127, 64, 0)); /* orange */ strip.fill(strip.Color(PERCENT2FACTOR(127, rgbDim), PERCENT2FACTOR(64, rgbDim), 0)); /* orange */
} else { } else {
strip.fill(strip.Color(127, 0, 0)); /* red */ strip.fill(strip.Color(PERCENT2FACTOR(127, rgbDim), 0, 0)); /* red */
} }
strip.show(); strip.show();
} }
@ -373,6 +376,9 @@ void setup()
Homie.onEvent(onHomieEvent); Homie.onEvent(onHomieEvent);
i2cEnable.setDefaultValue(false); i2cEnable.setDefaultValue(false);
rgbTemp.setDefaultValue(false); rgbTemp.setDefaultValue(false);
rgbDim.setDefaultValue(100).setValidator([] (long candidate) {
return (candidate > 1) && (candidate <= 200);
});
memset(serialRxBuf, 0, 80); memset(serialRxBuf, 0, 80);
pmSerial.begin(PM1006_BIT_RATE); pmSerial.begin(PM1006_BIT_RATE);
@ -420,7 +426,7 @@ void setup()
/* Extracted from library's example */ /* Extracted from library's example */
mFailedI2Cinitialization = !bmx.begin(); mFailedI2Cinitialization = !bmx.begin();
if (!mFailedI2Cinitialization) { if (!mFailedI2Cinitialization) {
strip.fill(strip.Color(0,64,0)); strip.fill(strip.Color(0,PERCENT2FACTOR(64, rgbDim),0));
strip.show(); strip.show();
#ifdef BME680 #ifdef BME680
bmx.setTemperatureOversampling(BME680_OS_8X); bmx.setTemperatureOversampling(BME680_OS_8X);
@ -443,7 +449,7 @@ void setup()
} }
strip.fill(strip.Color(0,0,0)); strip.fill(strip.Color(0,0,0));
for (int i=0;i < (PIXEL_COUNT / 2); i++) { for (int i=0;i < (PIXEL_COUNT / 2); i++) {
strip.setPixelColor(0, strip.Color(0,0,128)); strip.setPixelColor(0, strip.Color(0,0,128 * rgbDim.get()));
} }
strip.show(); strip.show();
} else { } else {
@ -481,7 +487,7 @@ void loop()
if (mButtonPressed > BUTTON_MAX_CYCLE) { if (mButtonPressed > BUTTON_MAX_CYCLE) {
mButtonPressed = (BUTTON_MAX_CYCLE -1); mButtonPressed = (BUTTON_MAX_CYCLE -1);
if (SPIFFS.exists("/homie/config.json")) { if (SPIFFS.exists("/homie/config.json")) {
strip.fill(strip.Color(0,128,0)); strip.fill(strip.Color(0,PERCENT2FACTOR(127, rgbDim),0));
strip.show(); strip.show();
printf("Resetting config\r\n"); printf("Resetting config\r\n");
SPIFFS.remove("/homie/config.json"); SPIFFS.remove("/homie/config.json");