mirror of
https://github.com/xoseperez/espurna.git
synced 2026-03-05 16:04:19 +01:00
tuya: send channel value directly
This commit is contained in:
@@ -75,7 +75,7 @@ class LightProvider {
|
||||
public:
|
||||
virtual void update() = 0;
|
||||
virtual void state(bool) = 0;
|
||||
virtual void channel(unsigned char ch, double value) = 0;
|
||||
virtual void channel(unsigned char ch, float value) = 0;
|
||||
};
|
||||
|
||||
struct LightTransition {
|
||||
|
||||
@@ -139,7 +139,7 @@ namespace tuya {
|
||||
}
|
||||
}
|
||||
|
||||
void channel(unsigned char channel, double value) override {
|
||||
void channel(unsigned char channel, float value) override {
|
||||
// XXX: can't handle channel values when OFF, and will turn the lights ON
|
||||
if (!_last_state) {
|
||||
return;
|
||||
@@ -150,18 +150,9 @@ namespace tuya {
|
||||
return;
|
||||
}
|
||||
|
||||
auto rounded = static_cast<unsigned int>(value);
|
||||
|
||||
// input dimmer channel value when lights are OFF is 16
|
||||
// for the same reason as above, don't send OFF values
|
||||
constexpr unsigned int Low { 16u };
|
||||
constexpr unsigned int High { 255u };
|
||||
rounded = std::clamp(rounded, Low, High);
|
||||
if (rounded == 16u) {
|
||||
return;
|
||||
}
|
||||
|
||||
send(entry->dp_id, rounded);
|
||||
send(entry->dp_id, static_cast<unsigned int>(value));
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user