diff --git a/Somfy.cpp b/Somfy.cpp index 3c1e4f6..4a12fb1 100644 --- a/Somfy.cpp +++ b/Somfy.cpp @@ -1010,7 +1010,6 @@ void SomfyShade::emitState(uint8_t num, const char *evt) { mqtt.publish(topic, static_cast(floor(this->myPos))); snprintf(topic, sizeof(topic), "shades/%u/tiltType", this->shadeId); mqtt.publish(topic, static_cast(this->tiltType)); - snprintf(topic, sizeof(topic), "shades/%u/flags", this->flags); if(this->tiltType != tilt_types::none) { snprintf(topic, sizeof(topic), "shades/%u/myTiltPos", this->shadeId); mqtt.publish(topic, static_cast(floor(this->myTiltPos))); @@ -1019,6 +1018,18 @@ void SomfyShade::emitState(uint8_t num, const char *evt) { snprintf(topic, sizeof(topic), "shades/%u/tiltTarget", this->shadeId); mqtt.publish(topic, static_cast(floor(this->tiltTarget))); } + else if (this->shadeType == shade_types::awning) { + const uint8_t sunFlag = !!(this->flags & static_cast(somfy_flags_t::SunFlag)); + const uint8_t isSunny = !!(this->flags & static_cast(somfy_flags_t::Sunny)); + const uint8_t isWindy = !!(this->flags & static_cast(somfy_flags_t::Windy)); + + snprintf(topic, sizeof(topic), "shades/%u/sunFlag", this->shadeId); + mqtt.publish(topic, sunFlag); + snprintf(topic, sizeof(topic), "shades/%u/sunny", this->shadeId); + mqtt.publish(topic, isSunny); + snprintf(topic, sizeof(topic), "shades/%u/windy", this->shadeId); + mqtt.publish(topic, isWindy); + } } } bool SomfyShade::isIdle() { return this->direction == 0 && this->tiltDirection == 0; }