- clean-up comparison routines and get rid of most of the casts
- reduces total number of calls to terminalRegisterCommand
replace with a func accepting list of commands, which in
turn get instantiated as constexpr PROGMEM arrays
- reduce ram fragmentation, since we don't need to alloc as much
- reduce flash consumption b/c of lambda -> standalone func conversion
get rid of board module, replace with system calls for hostname, board
and password. move boot (quirks) handlers to system as well
espurna::build { ... } namespace for our app const values
rework more namespaces to use `espurna` root
makes internal references much easier (and shorter)
view class is not specific to settings, could use it across the app
remove duplicate code from IR
- store latest pzem reading and compare with the latest one each reading
- fix `Energy::Energy(double)` scale, it should be kWh and not Wh
- move watt-second accumulator to constructor, allow object addition
resolves#2500resolves#2523
- fixing default config values, make sure we take inputs into
an account and not assume we stay in the 0.0...1.0 range
- use shelly values from tasmota analog sensor impl
- handle edgecase when both resistances are zeroed
- clearer description of available connection schemes
in theory, there is also an option of having *both* up and down
resistors at the same time; right now we simply deduce NTC position by
making it an opposite of resistance. ldrsensor implementation currently
allows to explicitly set sensor position
One namespace for sensor functions and types.
Fix discrepancy between topic and indexed topic funcs.
Energy types fixes, make sure we use known ratios.
Sensor fixes, moving certain pin settings and defaults into the sensor
classes, using those in the actual sensor init code.
Energy is still within the sensor module, pending version bump before moving.
proper support for both conversion directions
ratio object stores the scaling, no need to deduce it through the enum
name anymore
we still don't really enforce incompatible units, though,
but it is unclear at what stage the error should come in
schedule immediately with module functions, don't wait
more flash-strings in the module and utility functions
support rare condition when body cannot be sent on connect, use poll to send it
don't wait for header line in body, and bail out when done parsing
make sure data is copied into the async variant, and remains there for
the duration of the connection
general async api is... more complicated that it needs to be
until wolfssl / brssl port is here, though, there is no other choice
secureclient config becomes a simple struct, pending further rework
generalize topic and value representation
breaking change for rpn, since the magnitude *may not* be indexed
also fixes debug logs, where we would always see units of the 1st
magnitude instead of the one being processed
stronger time types, overrides
init underlying lib object as a member
this might be changed to unique_ptr, in case we really want begin() to
be idempotent and being able to re-init things
(which might not be actually possible?)
updated structure, overrides. strong time type
testing timesource changes. this should work, but might need to tweak
things if it starts to fail b/c of flash code loads
Avoid confusion between ref and pointer when looping over sensors
Re-use helper class in the magnitude object as well
Remove custom code related to filter movement, just use unique_ptr
Plus, updates filter code to use stl vector where possible
Experimening with dynamic cls id. Perhaps this should be something
else... but, at least there are no longer any header-defined values.