Merge branch 'mdev' into audio_fastpath
This commit is contained in:
@@ -133,13 +133,13 @@ private:
|
||||
return false;
|
||||
}
|
||||
|
||||
read32(bmpFS); // filesize in bytes
|
||||
read32(bmpFS); // reserved
|
||||
(void) read32(bmpFS); // filesize in bytes
|
||||
(void) read32(bmpFS); // reserved
|
||||
seekOffset = read32(bmpFS); // start of bitmap
|
||||
headerSize = read32(bmpFS); // header size
|
||||
w = read32(bmpFS); // width
|
||||
h = read32(bmpFS); // height
|
||||
read16(bmpFS); // color planes (must be 1)
|
||||
(void) read16(bmpFS); // color planes (must be 1)
|
||||
bitDepth = read16(bmpFS);
|
||||
|
||||
if (read32(bmpFS) != 0 || (bitDepth != 24 && bitDepth != 1 && bitDepth != 4 && bitDepth != 8)) {
|
||||
@@ -151,9 +151,9 @@ private:
|
||||
uint32_t palette[256];
|
||||
if (bitDepth <= 8) // 1,4,8 bit bitmap: read color palette
|
||||
{
|
||||
read32(bmpFS); read32(bmpFS); read32(bmpFS); // size, w resolution, h resolution
|
||||
(void) read32(bmpFS); (void) read32(bmpFS); (void) read32(bmpFS); // size, w resolution, h resolution
|
||||
paletteSize = read32(bmpFS);
|
||||
if (paletteSize == 0) paletteSize = bitDepth * bitDepth; //if 0, size is 2^bitDepth
|
||||
if (paletteSize == 0) paletteSize = 1 << bitDepth; //if 0, size is 2^bitDepth
|
||||
bmpFS.seek(14 + headerSize); // start of color palette
|
||||
for (uint16_t i = 0; i < paletteSize; i++) {
|
||||
palette[i] = read32(bmpFS);
|
||||
@@ -198,7 +198,7 @@ private:
|
||||
}
|
||||
b = c; g = c >> 8; r = c >> 16;
|
||||
}
|
||||
if (dimming != 255) { // only dimm when needed
|
||||
if (dimming != 255) { // only dim when needed
|
||||
r *= dimming; g *= dimming; b *= dimming;
|
||||
r = r >> 8; g = g >> 8; b = b >> 8;
|
||||
}
|
||||
|
||||
122
usermods/mcu_temp/mcuTemp.h
Normal file
122
usermods/mcu_temp/mcuTemp.h
Normal file
@@ -0,0 +1,122 @@
|
||||
#pragma once
|
||||
|
||||
#include "wled.h"
|
||||
|
||||
// class name. Use something descriptive and leave the ": public Usermod" part :)
|
||||
class mcuTemp : public Usermod
|
||||
{
|
||||
|
||||
private:
|
||||
float mcutemp = 0;
|
||||
|
||||
// any private methods should go here (non-inline methosd should be defined out of class)
|
||||
void publishMqtt(const char *state, bool retain = false); // example for publishing MQTT message
|
||||
|
||||
public:
|
||||
mcuTemp(const char *name, bool enabled) : Usermod(name, enabled) {} // WLEDMM
|
||||
|
||||
void setup()
|
||||
{
|
||||
}
|
||||
|
||||
void connected()
|
||||
{
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
// if usermod is disabled or called during strip updating just exit
|
||||
// NOTE: on very long strips strip.isUpdating() may always return true so update accordingly
|
||||
if (!enabled || strip.isUpdating())
|
||||
return;
|
||||
|
||||
#ifdef ESP8266 // ESP8266
|
||||
// does not seem possible
|
||||
mcutemp = -1;
|
||||
#elif defined(CONFIG_IDF_TARGET_ESP32S2) // ESP32S2
|
||||
mcutemp = -1;
|
||||
#else // ESP32 ESP32S3 and ESP32C3
|
||||
mcutemp = roundf(temperatureRead() * 100) / 100;
|
||||
#endif
|
||||
|
||||
if (millis() - lastTime > 10000)
|
||||
{
|
||||
char array[10];
|
||||
snprintf(array, sizeof(array), "%f", mcutemp);
|
||||
publishMqtt(array);
|
||||
lastTime = millis();
|
||||
}
|
||||
}
|
||||
/*
|
||||
* addToJsonInfo() can be used to add custom entries to the /json/info part of the JSON API.
|
||||
* Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI.
|
||||
* Below it is shown how this could be used for e.g. a light sensor
|
||||
*/
|
||||
void addToJsonInfo(JsonObject &root)
|
||||
{
|
||||
// if "u" object does not exist yet wee need to create it
|
||||
JsonObject user = root["u"];
|
||||
if (user.isNull())
|
||||
user = root.createNestedObject("u");
|
||||
|
||||
// this code adds "u":{"ExampleUsermod":[20," lux"]} to the info object
|
||||
// int reading = 20;
|
||||
JsonArray lightArr = user.createNestedArray(FPSTR(_name)); // name
|
||||
lightArr.add(mcutemp); // value
|
||||
lightArr.add(F(" °C")); // unit
|
||||
|
||||
// if you are implementing a sensor usermod, you may publish sensor data
|
||||
// JsonObject sensor = root[F("sensor")];
|
||||
// if (sensor.isNull()) sensor = root.createNestedObject(F("sensor"));
|
||||
// temp = sensor.createNestedArray(F("light"));
|
||||
// temp.add(reading);
|
||||
// temp.add(F("lux"));
|
||||
}
|
||||
|
||||
void addToJsonState(JsonObject &root)
|
||||
{
|
||||
}
|
||||
void readFromJsonState(JsonObject &root)
|
||||
{
|
||||
}
|
||||
|
||||
void addToConfig(JsonObject &root)
|
||||
{
|
||||
}
|
||||
|
||||
bool readFromConfig(JsonObject &root)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void appendConfigData()
|
||||
{
|
||||
}
|
||||
|
||||
void handleOverlayDraw()
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!).
|
||||
* This could be used in the future for the system to determine whether your usermod is installed.
|
||||
*/
|
||||
uint16_t getId()
|
||||
{
|
||||
return USERMOD_ID_MCUTEMP;
|
||||
}
|
||||
};
|
||||
|
||||
void mcuTemp::publishMqtt(const char *state, bool retain)
|
||||
{
|
||||
#ifndef WLED_DISABLE_MQTT
|
||||
// Check if MQTT Connected, otherwise it will crash the 8266
|
||||
if (WLED_MQTT_CONNECTED)
|
||||
{
|
||||
char subuf[64];
|
||||
strcpy(subuf, mqttDeviceTopic);
|
||||
strcat_P(subuf, PSTR("/mcutemp"));
|
||||
mqtt->publish(subuf, 0, retain, state);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
11
usermods/mcu_temp/readme.md
Normal file
11
usermods/mcu_temp/readme.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# MCU Temp Usermod
|
||||
This usermod adds the temperature readout to the Info tab and also publishes that over the topic `mcutemp` topic.
|
||||
|
||||
|
||||
A shown temp of 53,33°C might indicate that the internal temp is not supported.
|
||||
|
||||
ESP8266 does not have a internal temp sensor
|
||||
|
||||
ESP32S2 seems to crash on reading the sensor -> disabled
|
||||
|
||||
Buildflag: `-D USERMOD_MCUTEMP`
|
||||
@@ -1,6 +1,9 @@
|
||||
# Multi Relay
|
||||
|
||||
This usermod-v2 modification allows the connection of multiple relays, each with individual delay and on/off mode.
|
||||
Usermod supports PCF8574 I2C port expander to reduce GPIO use.
|
||||
PCF8574 supports 8 outputs and each output corresponds to a relay in WLED (relay 0 = port 0, etc). I you are using more than 8 relays with multiple PCF8574 make sure their addresses are set conscutively (e.g. 0x20 and 0x21). You can set address of first expander in settings.
|
||||
(**NOTE:** Will require Wire library and global I2C pins defined.)
|
||||
|
||||
## HTTP API
|
||||
All responses are returned in JSON format.
|
||||
@@ -81,13 +84,15 @@ void registerUsermods()
|
||||
Usermod can be configured via the Usermods settings page.
|
||||
|
||||
* `enabled` - enable/disable usermod
|
||||
* `use-PCF8574` - use PCF8574 port expander instead of GPIO pins
|
||||
* `first-PCF8574` - I2C address of first expander (WARNING: enter *decimal* value)
|
||||
* `broadcast`- time in seconds between MQTT relay-state broadcasts
|
||||
* `HA-discovery`- enable Home Assistant auto discovery
|
||||
* `pin` - ESP GPIO pin the relay is connected to (can be configured at compile time `-D MULTI_RELAY_PINS=xx,xx,...`)
|
||||
* `delay-s` - delay in seconds after on/off command is received
|
||||
* `active-high` - assign high/low activation of relay (can be used to reverse relay states)
|
||||
* `external` - if enabled, WLED does not control relay, it can only be triggered by an external command (MQTT, HTTP, JSON or button)
|
||||
* `button` - button (from LED Settings) that controls this relay
|
||||
* `broadcast`- time in seconds between MQTT relay-state broadcasts
|
||||
* `HA-discovery`- enable Home Assistant auto discovery
|
||||
|
||||
If there is no MultiRelay section, just save current configuration and re-open Usermods settings page.
|
||||
|
||||
@@ -100,3 +105,6 @@ Have fun - @blazoncek
|
||||
2021-11
|
||||
* Added information about dynamic configuration options
|
||||
* Added button support.
|
||||
|
||||
2023-05
|
||||
* Added support for PCF8574 I2C port expander (multiple)
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user