ref. #2483, #2546 and #2554
instead of waiting for our time window, attempt to read & parse everything
discard unknown data more frequently, and attempt to store more data as well
- revert to ignoring rgb in color+white+cct case by resetting all its
inputs to minimum and only controlling white channels
- ignore ww and cw in rgb+cct case; use approximated color, thus allowing
us to set a different 'cold temperature' limit
- fix webui layout rules based on root element class(es) and consistent
order for our control elements that does not depend on the order in which
`processData` handles configuration kvs
- internal refactoring to flatten input processing funcs selection
(to possibly replace our boolean flags with a simple list)
ref. #2547, tell gpio side that we don't need any init
may do weird stuff after runtime pin changes, since we won't know our
new pins due to the order of setup() functions
register channels with their respective tags, instead of using count
both on backend and frontend
revert to useCCT mireds slider rule, disallow white channels with useWhite
resolve#2554
make use of cse7766 calculation for factor, too
thanks to @Kaan88
remove reactive power ratio from base sensor as well, since it does not
seem to be used anywhere else (...and does not really make sense in most
situations when sensor inputs are using common gain)
* clean-up useless stream read() / flush(), rely on timer and internal state
avoids wdt reset with sensors looping on available()
* fix some instances of `available()` in boolean context to use `>0`
(not everything returns sign, but if it does - we are in trouble)
* util func to read available bytes from the stream using buffered
interface instead of 1 byte at a time
color temperature applies to input values as and / or
- rgb channels scale, when cct mode is enabled w/ color
- white channel(s), moving between warm and cold
remove two rgb scalers applied one after the other in favour of two
distinct variants - we either subtract common value from rgb or use
mireds as a scale for both rgb and ww+cw
restore brightness control as well
* error code is not buffered through our handler object.
while espasync code does strlen, what it returns is mostly random.
(old request parts, weird data, etc.)
* reworked buffer class to avoid an extra allocation on top of the
existing vector data buffer. plus, simple function pointer as well
* correct id=... and element references, partial changes to element
order were not using the new global 'light' container
* separate block for picker, does not seem consistent to depend on json
key order when processing device cfg
* visibility != display; make sure color picker is hidden when there is
no color control, but not visible when color is on but state is off
disarm is *required* by the underlying API, don't miss it on start()
while the func uses a resource lock internally, it does not seem to be the
source of system lock-ups encountered so far