diff --git a/components/hauslane/hauslane.cpp b/components/hauslane/hauslane.cpp index 7f38839..42bde12 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; } @@ -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: