mirror of
https://github.com/esphome/esphome.git
synced 2024-12-18 03:24:54 +01:00
added use pwrkey, turn off, turn on functions
This commit is contained in:
parent
35e9f8c4d4
commit
b833b263cc
2 changed files with 59 additions and 40 deletions
|
@ -48,22 +48,16 @@ void ModemComponent::setup() {
|
|||
|
||||
ESP_LOGCONFIG(TAG, "Setting up modem...");
|
||||
|
||||
this->reset_pin_->setup();
|
||||
|
||||
if (this->power_pin_) {
|
||||
ESP_LOGD(TAG, "power_pin_ ON");
|
||||
this->power_pin_->setup();
|
||||
this->power_pin_->digital_write(true);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(2000)); // NOLINT
|
||||
}
|
||||
if (this->pwrkey_pin_) {
|
||||
ESP_LOGD(TAG, "pwrkey pin used");
|
||||
this->pwrkey_pin_->setup();
|
||||
this->pwrkey_pin_->digital_write(false);
|
||||
vTaskDelay(pdMS_TO_TICKS(2000)); // NOLINT
|
||||
this->pwrkey_pin_->digital_write(true);
|
||||
}
|
||||
this->reset_pin_->setup();
|
||||
|
||||
this->turn_on_modem();
|
||||
this->use_pwrkey();
|
||||
//esp_modem_hard_reset();
|
||||
|
||||
|
||||
|
@ -125,7 +119,7 @@ void ModemComponent::loop() {
|
|||
}
|
||||
if (time_hard_reset_modem + TIME_TO_NEXT_HARD_RESET < now) {
|
||||
time_hard_reset_modem = now;
|
||||
esp_modem_hard_reset();
|
||||
reset_modem();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -133,7 +127,7 @@ void ModemComponent::loop() {
|
|||
break;
|
||||
case ModemComponentState::CONNECTED:
|
||||
if (time_info_print < now) {
|
||||
ESP_LOGI(TAG, "voltage %dV.", get_modem_voltage() / 1000);
|
||||
//ESP_LOGI(TAG, "voltage %dV.", get_modem_voltage() / 1000);
|
||||
if (esp_netif_is_netif_up(this->modem_netif_)) {
|
||||
ESP_LOGD(TAG, "esp_netif_is_netif_UP");
|
||||
} else {
|
||||
|
@ -145,16 +139,54 @@ void ModemComponent::loop() {
|
|||
}
|
||||
}
|
||||
|
||||
bool power_on(){
|
||||
bool ModemComponent::turn_on_modem(){
|
||||
if (this->power_pin_) {
|
||||
this->power_pin_->digital_write(true);
|
||||
vTaskDelay(pdMS_TO_TICKS(1900)); // NOLINT
|
||||
ESP_LOGD(TAG, "modem is on");
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
ESP_LOGD(TAG, "failed to turn on modem because power_pin_ is not initialized");
|
||||
return false;
|
||||
}
|
||||
// wait no more than 1.9 sec for signs of life to appear
|
||||
}
|
||||
|
||||
bool ModemComponent::turn_off_modem(){
|
||||
if (this->power_pin_) {
|
||||
this->power_pin_->digital_write(true);
|
||||
vTaskDelay(pdMS_TO_TICKS(1900)); // NOLINT
|
||||
ESP_LOGD(TAG, "modem is off");
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
ESP_LOGD(TAG, "failed to turn off modem because power_pin_ is not initialized");
|
||||
return false;
|
||||
}
|
||||
// wait no more than 1.9 sec for signs of life to appear
|
||||
}
|
||||
|
||||
bool ModemComponent::use_pwrkey(){
|
||||
if (this->pwrkey_pin_) {
|
||||
ESP_LOGD(TAG, "pwrkey used");
|
||||
this->pwrkey_pin_->digital_write(false);
|
||||
vTaskDelay(pdMS_TO_TICKS(1050)); // NOLINT
|
||||
this->pwrkey_pin_->digital_write(true);
|
||||
}
|
||||
else {
|
||||
ESP_LOGD(TAG, "failed to press button because pwrkey_pin_ is not initialized");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool power_off(){
|
||||
return true;
|
||||
}
|
||||
|
||||
bool use_pwrkey(){
|
||||
return true;
|
||||
void ModemComponent::reset_modem() {
|
||||
ESP_LOGD(TAG, "reset modem");
|
||||
this->reset_pin_->digital_write(false);
|
||||
vTaskDelay(pdMS_TO_TICKS(105)); // NOLINT
|
||||
this->reset_pin_->digital_write(true);
|
||||
time_hard_reset_modem = millis();
|
||||
// you need to wait another 2,7 sec to get the status
|
||||
}
|
||||
void ModemComponent::dump_config() {
|
||||
this->dump_connect_params();
|
||||
|
@ -185,19 +217,6 @@ void ModemComponent::dump_connect_params() {
|
|||
ESP_LOGCONFIG(TAG, " DNS2: %s", network::IPAddress(&dns_info.ip.u_addr.ip4).str().c_str());
|
||||
}
|
||||
|
||||
void ModemComponent::esp_modem_hard_reset() {
|
||||
//gpio_set_direction(gpio_num_t(this->reset_pin_->get_pin()), GPIO_MODE_OUTPUT);
|
||||
//gpio_set_level(gpio_num_t(this->reset_pin_->get_pin()), 0);
|
||||
// this->reset_pin_->digital_write(false);
|
||||
// ESP_LOGD(TAG, "reset_pin_ 0");
|
||||
// vTaskDelay(pdMS_TO_TICKS(110)); // NOLINT
|
||||
|
||||
// //gpio_set_level(gpio_num_t(this->reset_pin_->get_pin()), 1);
|
||||
// this->reset_pin_->digital_write(true);
|
||||
// ESP_LOGD(TAG, "reset_pin_ 1");
|
||||
// time_hard_reset_modem = millis();
|
||||
}
|
||||
|
||||
int ModemComponent::get_rssi() {
|
||||
int rssi = 0, ber = 0;
|
||||
esp_modem::command_result errr = this->dce->get_signal_quality(rssi, ber);
|
||||
|
@ -258,7 +277,7 @@ void ModemComponent::got_ip_event_handler(void *arg, esp_event_base_t event_base
|
|||
void ModemComponent::start_connect_() {
|
||||
this->connect_begin_ = millis();
|
||||
this->status_set_warning();
|
||||
esp_modem_hard_reset();
|
||||
reset_modem();
|
||||
esp_err_t err;
|
||||
err = esp_netif_set_hostname(this->modem_netif_, App.get_name().c_str());
|
||||
if (err != ERR_OK) {
|
||||
|
|
|
@ -61,11 +61,11 @@ class ModemComponent : public Component {
|
|||
protected:
|
||||
static void got_ip_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data);
|
||||
|
||||
bool power_on();
|
||||
bool power_off();
|
||||
bool turn_on_modem();
|
||||
bool turn_off_modem();
|
||||
bool use_pwrkey();
|
||||
void start_connect_();
|
||||
void esp_modem_hard_reset();
|
||||
void reset_modem();
|
||||
int get_rssi();
|
||||
int get_modem_voltage();
|
||||
|
||||
|
|
Loading…
Reference in a new issue