mirror of
https://github.com/esphome/esphome.git
synced 2024-11-23 23:48:11 +01:00
Tuya integration no longer waits for wifi
This commit is contained in:
parent
d0ab2a16a6
commit
da3abf07c3
2 changed files with 12 additions and 37 deletions
|
@ -1,18 +1,9 @@
|
||||||
#include "tuya.h"
|
#include "tuya.h"
|
||||||
#include "esphome/components/network/util.h"
|
|
||||||
#include "esphome/core/gpio.h"
|
#include "esphome/core/gpio.h"
|
||||||
#include "esphome/core/helpers.h"
|
#include "esphome/core/helpers.h"
|
||||||
#include "esphome/core/log.h"
|
#include "esphome/core/log.h"
|
||||||
#include "esphome/core/util.h"
|
#include "esphome/core/util.h"
|
||||||
|
|
||||||
#ifdef USE_WIFI
|
|
||||||
#include "esphome/components/wifi/wifi_component.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_CAPTIVE_PORTAL
|
|
||||||
#include "esphome/components/captive_portal/captive_portal.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace esphome {
|
namespace esphome {
|
||||||
namespace tuya {
|
namespace tuya {
|
||||||
|
|
||||||
|
@ -21,6 +12,10 @@ static const int COMMAND_DELAY = 10;
|
||||||
static const int RECEIVE_TIMEOUT = 300;
|
static const int RECEIVE_TIMEOUT = 300;
|
||||||
static const int MAX_RETRIES = 5;
|
static const int MAX_RETRIES = 5;
|
||||||
|
|
||||||
|
static const uint8_t NET_STATUS_WIFI_CONNECTED = 0x03;
|
||||||
|
static const uint8_t NET_STATUS_CLOUD_CONNECTED = 0x04;
|
||||||
|
static const uint8_t FAKE_WIFI_RSSI = 100;
|
||||||
|
|
||||||
void Tuya::setup() {
|
void Tuya::setup() {
|
||||||
this->set_interval("heartbeat", 15000, [this] { this->send_empty_command_(TuyaCommandType::HEARTBEAT); });
|
this->set_interval("heartbeat", 15000, [this] { this->send_empty_command_(TuyaCommandType::HEARTBEAT); });
|
||||||
if (this->status_pin_ != nullptr) {
|
if (this->status_pin_ != nullptr) {
|
||||||
|
@ -244,7 +239,7 @@ void Tuya::handle_command_(uint8_t command, uint8_t version, const uint8_t *buff
|
||||||
break;
|
break;
|
||||||
case TuyaCommandType::WIFI_RSSI:
|
case TuyaCommandType::WIFI_RSSI:
|
||||||
this->send_command_(
|
this->send_command_(
|
||||||
TuyaCommand{.cmd = TuyaCommandType::WIFI_RSSI, .payload = std::vector<uint8_t>{get_wifi_rssi_()}});
|
TuyaCommand{.cmd = TuyaCommandType::WIFI_RSSI, .payload = std::vector<uint8_t>{FAKE_WIFI_RSSI}});
|
||||||
break;
|
break;
|
||||||
case TuyaCommandType::LOCAL_TIME_QUERY:
|
case TuyaCommandType::LOCAL_TIME_QUERY:
|
||||||
#ifdef USE_TIME
|
#ifdef USE_TIME
|
||||||
|
@ -494,37 +489,18 @@ void Tuya::set_status_pin_() {
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t Tuya::get_wifi_status_code_() {
|
uint8_t Tuya::get_wifi_status_code_() {
|
||||||
uint8_t status = 0x02;
|
uint8_t status = NET_STATUS_WIFI_CONNECTED;
|
||||||
|
|
||||||
if (network::is_connected()) {
|
|
||||||
status = 0x03;
|
|
||||||
|
|
||||||
// Protocol version 3 also supports specifying when connected to "the cloud"
|
// Protocol version 3 also supports specifying when connected to "the cloud"
|
||||||
if (this->protocol_version_ >= 0x03 && remote_is_connected()) {
|
if (this->protocol_version_ >= 0x03 && remote_is_connected()) {
|
||||||
status = 0x04;
|
status = NET_STATUS_CLOUD_CONNECTED;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
#ifdef USE_CAPTIVE_PORTAL
|
|
||||||
if (captive_portal::global_captive_portal != nullptr && captive_portal::global_captive_portal->is_active()) {
|
|
||||||
status = 0x01;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t Tuya::get_wifi_rssi_() {
|
|
||||||
#ifdef USE_WIFI
|
|
||||||
if (wifi::global_wifi_component != nullptr)
|
|
||||||
return wifi::global_wifi_component->wifi_rssi();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Tuya::send_wifi_status_() {
|
void Tuya::send_wifi_status_() {
|
||||||
uint8_t status = this->get_wifi_status_code_();
|
const uint8_t status = get_wifi_status_code_();
|
||||||
|
|
||||||
if (status == this->wifi_status_) {
|
if (status == this->wifi_status_) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -87,7 +87,7 @@ struct TuyaCommand {
|
||||||
|
|
||||||
class Tuya : public Component, public uart::UARTDevice {
|
class Tuya : public Component, public uart::UARTDevice {
|
||||||
public:
|
public:
|
||||||
float get_setup_priority() const override { return setup_priority::LATE; }
|
float get_setup_priority() const override { return setup_priority::DATA; }
|
||||||
void setup() override;
|
void setup() override;
|
||||||
void loop() override;
|
void loop() override;
|
||||||
void dump_config() override;
|
void dump_config() override;
|
||||||
|
@ -135,7 +135,6 @@ class Tuya : public Component, public uart::UARTDevice {
|
||||||
void set_status_pin_();
|
void set_status_pin_();
|
||||||
void send_wifi_status_();
|
void send_wifi_status_();
|
||||||
uint8_t get_wifi_status_code_();
|
uint8_t get_wifi_status_code_();
|
||||||
uint8_t get_wifi_rssi_();
|
|
||||||
|
|
||||||
#ifdef USE_TIME
|
#ifdef USE_TIME
|
||||||
void send_local_time_();
|
void send_local_time_();
|
||||||
|
|
Loading…
Reference in a new issue