From a23dea333f89ee0ddeefbb20b328ffbd2afa1037 Mon Sep 17 00:00:00 2001 From: kenji Date: Thu, 31 Jul 2025 08:49:44 -0400 Subject: [PATCH] switch to ESP-IDF --- components/hauslane/hauslane.cpp | 34 ++++++++++++++++++-------------- components/hauslane/hauslane.h | 9 +++++---- uc-ps18.yaml | 2 ++ 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/components/hauslane/hauslane.cpp b/components/hauslane/hauslane.cpp index 7f38839..48b2541 100644 --- a/components/hauslane/hauslane.cpp +++ b/components/hauslane/hauslane.cpp @@ -51,6 +51,10 @@ void Hauslane::loop() { } else { pos++; } + } else if (rx_message.size() > MAX_RX) { + parse_state(); + reading = false; + pos = 0; } else { pos = 0; } @@ -145,7 +149,7 @@ void Hauslane::set_speed(int new_speed) { // read message on rx line and turn into current state of fan and light void Hauslane::parse_state() { - size_t len = rx_message.size()-4; + size_t len = rx_message.size()-END_LEN; std::string msg; std::vector msg_hex; @@ -161,20 +165,20 @@ void Hauslane::parse_state() { // oscilloscope, but as there is only one-way communication from the front // panel to the main controller board, this would only be useful if // replacing the front panel entirely - const std::vector off_0{0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce}; - const std::vector on_0{0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6}; - const std::vector off_1{0xce, 0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6, 0xce, 0xce}; - const std::vector on_1{0xce, 0xc6, 0xce, 0xce, 0xce, 0xce, 0xce}; - const std::vector off_2{0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6, 0xce, 0xce}; - const std::vector on_2{0xce, 0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6, 0xce, 0xc6}; - const std::vector off_3{0x38, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce}; - const std::vector on_3{0x38, 0xc6, 0xce, 0xce, 0xce, 0xce, 0xce}; - const std::vector off_4{0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6, 0xce, 0xce, 0xce}; - const std::vector on_4{0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce}; - const std::vector off_5{0xc6, 0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6, 0xc6, 0xce, 0xce}; - const std::vector on_5{0xc6, 0xc6, 0xce, 0xce, 0xce, 0xce, 0xc6}; - const std::vector off_6{0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0x38, 0xce, 0xce}; - const std::vector on_6{0xce, 0xc6, 0xce, 0xce, 0xce, 0xce, 0x38}; + const std::vector off_0{0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0x00}; + const std::vector on_0{0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6, 0xfe}; + const std::vector off_1{0xce, 0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6, 0xce, 0xce, 0xc0}; + const std::vector on_1{0xce, 0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xfe}; + const std::vector off_2{0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6, 0xce, 0xce, 0xfe}; + const std::vector on_2{0xce, 0xce, 0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6, 0xce, 0xc6, 0xfe}; + const std::vector off_3{0xce, 0x38, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6, 0xce, 0xce, 0x00}; + const std::vector on_3{0xce, 0x38, 0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6, 0xce, 0xfe}; + const std::vector off_4{0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6, 0xce, 0xce, 0xce, 0x00}; + const std::vector on_4{0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xfe}; + const std::vector off_5{0xc6, 0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6, 0xc6, 0xce, 0xce, 0x00}; + const std::vector on_5{0xc6, 0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xc6, 0xce, 0xfe}; + const std::vector off_6{0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0x38, 0xce, 0xce, 0x00}; + const std::vector on_6{0xc6, 0xce, 0xc6, 0xce, 0xce, 0xce, 0xce, 0xce, 0x38, 0xce, 0xfe}; // print out formatted hex string to log char buf[5]; diff --git a/components/hauslane/hauslane.h b/components/hauslane/hauslane.h index 9b10b2c..95b13d9 100644 --- a/components/hauslane/hauslane.h +++ b/components/hauslane/hauslane.h @@ -15,10 +15,11 @@ namespace esphome { namespace hauslane { -static const unsigned char MSG_START[] = {0x08, 0x08, 0x08, 0xfe, 0xc0}; -static const unsigned char MSG_END[] = {0xc0, 0xce, 0xce, 0xce}; -static const uint8_t START_LEN=5; -static const uint8_t END_LEN=4; +static const unsigned char MSG_START[] = {0x08, 0x08, 0x08, 0xfe, 0x00, 0xc0}; +static const unsigned char MSG_END[] = {0xc0, 0xce, 0xce, 0xce, 0xc6}; +static const uint8_t START_LEN=6; +static const uint8_t END_LEN=5; +static const size_t MAX_RX=30; static const int DELAY=250; // how long to press/release buttons in ms class Hauslane : public Component, public uart::UARTDevice, public api::CustomAPIDevice { diff --git a/uc-ps18.yaml b/uc-ps18.yaml index 17ab65b..64edae1 100644 --- a/uc-ps18.yaml +++ b/uc-ps18.yaml @@ -13,6 +13,8 @@ esphome: esp32: board: esp32-c3-devkitm-1 + platform: + type: esp-idf # Enable logging logger: