mirror of
https://github.com/esphome/esphome.git
synced 2024-12-24 14:34:54 +01:00
get modem voltage and ber and cmux
This commit is contained in:
parent
77c314f930
commit
ead5995f13
2 changed files with 44 additions and 22 deletions
|
@ -69,8 +69,6 @@ void ModemComponent::setup() {
|
|||
ESP_LOGD(TAG, "Initializing esp_modem");
|
||||
this->modem_netif_init_();
|
||||
this->dte_init_();
|
||||
|
||||
this->started_ = true;
|
||||
}
|
||||
|
||||
void ModemComponent::loop() {
|
||||
|
@ -154,11 +152,12 @@ void ModemComponent::loop() {
|
|||
|
||||
// The state of waiting for the modem to register in the network
|
||||
case ModemComponentState::REGISTRATION_IN_NETWORK:
|
||||
if (get_rssi_()) {
|
||||
if (get_rssi()) {
|
||||
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->set_state_(ModemComponentState::CONNECTING);
|
||||
this->dce_->set_data();
|
||||
// this->dce_->set_data();
|
||||
this->dce_->set_mode(esp_modem::modem_mode::CMUX_MODE);
|
||||
} else {
|
||||
ESP_LOGD(TAG, "Wait RSSI");
|
||||
}
|
||||
|
@ -172,11 +171,7 @@ void ModemComponent::loop() {
|
|||
|
||||
// The state of network connection established
|
||||
case ModemComponentState::CONNECTED:
|
||||
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");
|
||||
}
|
||||
ESP_LOGD(TAG, "The modem works!");
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -234,6 +229,7 @@ void ModemComponent::set_state_(ModemComponentState state) {
|
|||
switch (state) {
|
||||
case ModemComponentState::SYNC:
|
||||
this->dce_init_();
|
||||
this->started = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -302,14 +298,40 @@ void ModemComponent::dump_connect_params() {
|
|||
ESP_LOGCONFIG(TAG, " DNS2: %s", network::IPAddress(&dns_info.ip.u_addr.ip4).str().c_str());
|
||||
}
|
||||
|
||||
int ModemComponent::get_rssi_() {
|
||||
int rssi = 0, ber = 0;
|
||||
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);
|
||||
if (errr != esp_modem::command_result::OK) {
|
||||
ESP_LOGE(TAG, "esp_modem_get_signal_quality failed with");
|
||||
int ModemComponent::get_rssi() {
|
||||
if (this->started) {
|
||||
int rssi = 0, ber = 0;
|
||||
esp_modem::command_result errr = this->dce_->get_signal_quality(rssi, ber);
|
||||
if (errr != esp_modem::command_result::OK) {
|
||||
ESP_LOGE(TAG, "esp_modem_get_signal_quality failed with");
|
||||
}
|
||||
return rssi;
|
||||
}
|
||||
return rssi;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ModemComponent::get_ber() {
|
||||
if (this->started) {
|
||||
int rssi = 0, ber = 0;
|
||||
esp_modem::command_result errr = this->dce_->get_signal_quality(rssi, ber);
|
||||
if (errr != esp_modem::command_result::OK) {
|
||||
ESP_LOGE(TAG, "esp_modem_get_signal_quality failed with");
|
||||
}
|
||||
return ber;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ModemComponent::get_modem_voltage() {
|
||||
if (this->started) {
|
||||
int milli_volt = 0, bcs = 0, bcl = 0;
|
||||
esp_modem::command_result errr = this->dce_->get_battery_status(milli_volt, bcs, bcl);
|
||||
if (errr != esp_modem::command_result::OK) {
|
||||
ESP_LOGE(TAG, "esp_modem_get_modem_voltage failed with");
|
||||
}
|
||||
return milli_volt;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
float ModemComponent::get_setup_priority() const { return setup_priority::MODEM; }
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#include "esphome/components/network/ip_address.h"
|
||||
|
||||
#include <map>
|
||||
using esphome::esp_log_printf_;
|
||||
using esphome::esp_log_printf_; // NOLINT
|
||||
|
||||
#include "esp_netif.h"
|
||||
#include "cxx_include/esp_modem_api.hpp"
|
||||
|
@ -55,6 +55,7 @@ class ModemComponent : public Component {
|
|||
float get_setup_priority() const override;
|
||||
bool can_proceed() override;
|
||||
bool is_connected();
|
||||
bool started{false};
|
||||
void set_power_pin(InternalGPIOPin *power_pin);
|
||||
void set_pwrkey_pin(InternalGPIOPin *pwrkey_pin);
|
||||
void set_type(ModemType type);
|
||||
|
@ -67,6 +68,9 @@ class ModemComponent : public Component {
|
|||
void set_uart_event_queue_size(int uart_event_queue_size);
|
||||
void set_uart_tx_buffer_size(int uart_tx_buffer_size);
|
||||
void set_uart_rx_buffer_size(int uart_rx_buffer_size);
|
||||
int get_rssi();
|
||||
int get_ber();
|
||||
int get_modem_voltage();
|
||||
|
||||
network::IPAddress get_ip_address();
|
||||
std::string get_use_address() const;
|
||||
|
@ -93,8 +97,6 @@ class ModemComponent : public Component {
|
|||
void dce_init_();
|
||||
|
||||
bool check_modem_component_state_timings_();
|
||||
int get_rssi_();
|
||||
int get_modem_voltage_();
|
||||
const char *get_state_();
|
||||
void set_state_(ModemComponentState state);
|
||||
const char *state_to_string_(ModemComponentState state);
|
||||
|
@ -118,8 +120,6 @@ class ModemComponent : public Component {
|
|||
uint pull_time_{0};
|
||||
uint change_state_{0};
|
||||
|
||||
bool started_{false};
|
||||
|
||||
ModemComponentState state_{ModemComponentState::TURNING_ON_POWER};
|
||||
int connect_begin_;
|
||||
esp_netif_t *modem_netif_{nullptr};
|
||||
|
|
Loading…
Reference in a new issue