mirror of
https://github.com/esphome/esphome.git
synced 2025-09-28 08:02:23 +01:00
removed unnecessary parts of the code and moved DTE to the component
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
#include "esp_modem_c_api_types.h"
|
#include "esp_modem_c_api_types.h"
|
||||||
#include "esp_netif_ppp.h"
|
#include "esp_netif_ppp.h"
|
||||||
#include "cxx_include/esp_modem_api.hpp"
|
#include "cxx_include/esp_modem_api.hpp"
|
||||||
#include "cxx_include/esp_modem_dce.hpp"
|
|
||||||
|
|
||||||
#include "modem_component.h"
|
#include "modem_component.h"
|
||||||
#include "esphome/core/log.h"
|
#include "esphome/core/log.h"
|
||||||
@@ -15,8 +14,6 @@
|
|||||||
#include <lwip/dns.h>
|
#include <lwip/dns.h>
|
||||||
#include "esp_event.h"
|
#include "esp_event.h"
|
||||||
|
|
||||||
std::unique_ptr<esp_modem::DCE> dce{nullptr};
|
|
||||||
|
|
||||||
uint32_t time_info_print = 0;
|
uint32_t time_info_print = 0;
|
||||||
uint32_t time_hard_reset_modem = 0;
|
uint32_t time_hard_reset_modem = 0;
|
||||||
uint32_t time_check_rssi = 0;
|
uint32_t time_check_rssi = 0;
|
||||||
@@ -86,48 +83,25 @@ void ModemComponent::setup() {
|
|||||||
|
|
||||||
ESP_LOGD(TAG, "Initializing esp_modem");
|
ESP_LOGD(TAG, "Initializing esp_modem");
|
||||||
this->dte = esp_modem::create_uart_dte(&dte_config);
|
this->dte = esp_modem::create_uart_dte(&dte_config);
|
||||||
dce = esp_modem::create_SIM800_dce(&dce_config, dte, this->modem_netif_);
|
this->dce = esp_modem::create_SIM800_dce(&dce_config, dte, this->modem_netif_);
|
||||||
|
|
||||||
esp_netif_flags_t flags = esp_netif_get_flags(this->modem_netif_);
|
esp_netif_flags_t flags = esp_netif_get_flags(this->modem_netif_);
|
||||||
|
|
||||||
|
this->started_ = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModemComponent::loop() {
|
void ModemComponent::loop() {
|
||||||
const uint32_t now = millis();
|
const uint32_t now = millis();
|
||||||
if (time_info_print < now) {
|
|
||||||
// ESP_LOGI(TAG, "voltage %dV.", get_modem_voltage()/1000);
|
|
||||||
ESP_LOGD(TAG, "esp_netif_is_netif_UP");
|
|
||||||
if (esp_netif_is_netif_up(this->modem_netif_)) {
|
|
||||||
ESP_LOGD(TAG, "esp_netif_is_netif_UP");
|
|
||||||
} else {
|
|
||||||
ESP_LOGD(TAG, "esp_netif_is_netif_DOWN");
|
|
||||||
}
|
|
||||||
time_info_print = now + 5000;
|
|
||||||
switch (this->state_) {
|
|
||||||
case ModemComponentState::STOPPED:
|
|
||||||
ESP_LOGD(TAG, "modem STOPPED");
|
|
||||||
break;
|
|
||||||
case ModemComponentState::CONNECTING:
|
|
||||||
ESP_LOGD(TAG, "modem CONNECTING");
|
|
||||||
break;
|
|
||||||
case ModemComponentState::CONNECTED:
|
|
||||||
dce->set_data();
|
|
||||||
ESP_LOGD(TAG, "modem CONNECTED");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this->started_ = true;
|
|
||||||
switch (this->state_) {
|
switch (this->state_) {
|
||||||
case ModemComponentState::STOPPED:
|
case ModemComponentState::STOPPED:
|
||||||
if (time_check_rssi + TIME_TO_START_MODEM < now) {
|
if (time_check_rssi + TIME_TO_START_MODEM < now) {
|
||||||
time_check_rssi = now;
|
time_check_rssi = now;
|
||||||
// dce->set_command_mode();
|
// this->dce->set_command_mode();
|
||||||
if (get_rssi()) {
|
if (get_rssi()) {
|
||||||
ESP_LOGD(TAG, "Starting modem connection");
|
ESP_LOGD(TAG, "Starting modem connection");
|
||||||
ESP_LOGD(TAG, "SIgnal quality: rssi=%d", get_rssi());
|
ESP_LOGD(TAG, "SIgnal quality: rssi=%d", get_rssi());
|
||||||
this->state_ = ModemComponentState::CONNECTING;
|
this->state_ = ModemComponentState::CONNECTING;
|
||||||
dce->set_data();
|
this->dce->set_data();
|
||||||
// this->start_connect_();
|
// this->start_connect_();
|
||||||
}
|
}
|
||||||
if (time_hard_reset_modem + TIME_TO_NEXT_HARD_RESET < now) {
|
if (time_hard_reset_modem + TIME_TO_NEXT_HARD_RESET < now) {
|
||||||
@@ -139,12 +113,21 @@ void ModemComponent::loop() {
|
|||||||
case ModemComponentState::CONNECTING:
|
case ModemComponentState::CONNECTING:
|
||||||
break;
|
break;
|
||||||
case ModemComponentState::CONNECTED:
|
case ModemComponentState::CONNECTED:
|
||||||
|
if (time_info_print < now) {
|
||||||
|
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 {
|
||||||
|
ESP_LOGD(TAG, "esp_netif_is_netif_DOWN");
|
||||||
|
}
|
||||||
|
time_info_print = now + 5000;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModemComponent::dump_config() {
|
void ModemComponent::dump_config() {
|
||||||
this->dump_config_();
|
this->dump_connect_params();
|
||||||
ESP_LOGCONFIG(TAG, "Modem:");
|
ESP_LOGCONFIG(TAG, "Modem:");
|
||||||
ESP_LOGCONFIG(TAG, " Power Pin: %d", this->power_pin_);
|
ESP_LOGCONFIG(TAG, " Power Pin: %d", this->power_pin_);
|
||||||
ESP_LOGCONFIG(TAG, " Type: %d", this->type_);
|
ESP_LOGCONFIG(TAG, " Type: %d", this->type_);
|
||||||
@@ -159,7 +142,7 @@ void ModemComponent::dump_config() {
|
|||||||
ESP_LOGCONFIG(TAG, " UART RX Buffer Size: %d", this->uart_rx_buffer_size_);
|
ESP_LOGCONFIG(TAG, " UART RX Buffer Size: %d", this->uart_rx_buffer_size_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModemComponent::dump_connect_params_() {
|
void ModemComponent::dump_connect_params() {
|
||||||
esp_netif_ip_info_t ip;
|
esp_netif_ip_info_t ip;
|
||||||
esp_netif_get_ip_info(this->modem_netif_, &ip);
|
esp_netif_get_ip_info(this->modem_netif_, &ip);
|
||||||
ESP_LOGCONFIG(TAG, " IP Address: %s", network::IPAddress(&ip.ip).str().c_str());
|
ESP_LOGCONFIG(TAG, " IP Address: %s", network::IPAddress(&ip.ip).str().c_str());
|
||||||
@@ -185,7 +168,7 @@ void ModemComponent::esp_modem_hard_reset() {
|
|||||||
|
|
||||||
int ModemComponent::get_rssi() {
|
int ModemComponent::get_rssi() {
|
||||||
int rssi = 0, ber = 0;
|
int rssi = 0, ber = 0;
|
||||||
esp_modem::command_result errr = dce->get_signal_quality(rssi, ber);
|
esp_modem::command_result errr = this->dce->get_signal_quality(rssi, ber);
|
||||||
// esp_err_t err = esp_modem::esp_modem_get_signal_quality(dce, &rssi, &ber);
|
// esp_err_t err = esp_modem::esp_modem_get_signal_quality(dce, &rssi, &ber);
|
||||||
if (errr != esp_modem::command_result::OK) {
|
if (errr != esp_modem::command_result::OK) {
|
||||||
ESP_LOGE(TAG, "esp_modem_get_signal_quality failed with");
|
ESP_LOGE(TAG, "esp_modem_get_signal_quality failed with");
|
||||||
@@ -195,8 +178,7 @@ int ModemComponent::get_rssi() {
|
|||||||
|
|
||||||
int ModemComponent::get_modem_voltage() {
|
int ModemComponent::get_modem_voltage() {
|
||||||
int voltage = 0, bcs = 0, bcl = 0;
|
int voltage = 0, bcs = 0, bcl = 0;
|
||||||
dce->set_cmux();
|
esp_modem::command_result errr = this->dce->get_battery_status(voltage, bcs, bcl);
|
||||||
esp_modem::command_result errr = dce->get_battery_status(voltage, bcs, bcl);
|
|
||||||
if (errr != esp_modem::command_result::OK) {
|
if (errr != esp_modem::command_result::OK) {
|
||||||
ESP_LOGE(TAG, "get_battery_status failed with");
|
ESP_LOGE(TAG, "get_battery_status failed with");
|
||||||
}
|
}
|
||||||
@@ -254,16 +236,16 @@ void ModemComponent::start_connect_() {
|
|||||||
// esp_netif_dhcp_status_t status = ESP_NETIF_DHCP_INIT;
|
// esp_netif_dhcp_status_t status = ESP_NETIF_DHCP_INIT;
|
||||||
|
|
||||||
// restart ppp connection
|
// restart ppp connection
|
||||||
dce->exit_data();
|
this->dce->exit_data();
|
||||||
int rssi, ber;
|
int rssi, ber;
|
||||||
esp_modem::command_result errr = dce->get_signal_quality(rssi, ber);
|
esp_modem::command_result errr = this->dce->get_signal_quality(rssi, ber);
|
||||||
// esp_err_t err = esp_modem::esp_modem_get_signal_quality(dce, &rssi, &ber);
|
// esp_err_t err = esp_modem::esp_modem_get_signal_quality(dce, &rssi, &ber);
|
||||||
if (errr != esp_modem::command_result::OK) {
|
if (errr != esp_modem::command_result::OK) {
|
||||||
ESP_LOGE(TAG, "esp_modem_get_signal_quality failed with");
|
ESP_LOGE(TAG, "esp_modem_get_signal_quality failed with");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ESP_LOGD(TAG, "Signal quality: rssi=%d, ber=%d", rssi, ber);
|
ESP_LOGD(TAG, "Signal quality: rssi=%d, ber=%d", rssi, ber);
|
||||||
dce->set_data();
|
this->dce->set_data();
|
||||||
|
|
||||||
// this->status_set_warning();
|
// this->status_set_warning();
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "cxx_include/esp_modem_dte.hpp"
|
#include "cxx_include/esp_modem_dte.hpp"
|
||||||
|
#include "cxx_include/esp_modem_dce.hpp"
|
||||||
|
|
||||||
#include "esphome/core/component.h"
|
#include "esphome/core/component.h"
|
||||||
#include "esphome/core/defines.h"
|
#include "esphome/core/defines.h"
|
||||||
@@ -34,7 +35,7 @@ class ModemComponent : public Component {
|
|||||||
void setup() override;
|
void setup() override;
|
||||||
void loop() override;
|
void loop() override;
|
||||||
void dump_config() override;
|
void dump_config() override;
|
||||||
void dump_connect_params_();
|
void dump_connect_params();
|
||||||
float get_setup_priority() const override;
|
float get_setup_priority() const override;
|
||||||
bool can_proceed() override;
|
bool can_proceed() override;
|
||||||
bool is_connected();
|
bool is_connected();
|
||||||
@@ -65,6 +66,7 @@ class ModemComponent : public Component {
|
|||||||
int get_modem_voltage();
|
int get_modem_voltage();
|
||||||
|
|
||||||
std::shared_ptr<esp_modem::DTE> dte{nullptr};
|
std::shared_ptr<esp_modem::DTE> dte{nullptr};
|
||||||
|
std::unique_ptr<esp_modem::DCE> dce{nullptr};
|
||||||
ModemType type_{MODEM_TYPE_UNKNOWN};
|
ModemType type_{MODEM_TYPE_UNKNOWN};
|
||||||
int power_pin_{-1};
|
int power_pin_{-1};
|
||||||
int reset_pin_{-1};
|
int reset_pin_{-1};
|
||||||
|
Reference in New Issue
Block a user