mirror of
https://github.com/esphome/esphome.git
synced 2024-11-24 07:58:09 +01:00
renamed from 'gsm' to 'modem'
This commit is contained in:
parent
a3ed854b51
commit
4f7bd585e9
4 changed files with 71 additions and 71 deletions
|
@ -24,14 +24,14 @@ CONF_STATUS_PIN = "status_pin"
|
|||
CONF_DTR_PIN = "dtr_pin"
|
||||
|
||||
|
||||
gsm_ns = cg.esphome_ns.namespace("gsm")
|
||||
GSMComponent = gsm_ns.class_("GSMComponent", cg.Component)
|
||||
modem_ns = cg.esphome_ns.namespace("modem")
|
||||
ModemComponent = modem_ns.class_("ModemComponent", cg.Component)
|
||||
|
||||
|
||||
CONFIG_SCHEMA = cv.All(
|
||||
cv.Schema(
|
||||
{
|
||||
cv.GenerateID(): cv.declare_id(GSMComponent),
|
||||
cv.GenerateID(): cv.declare_id(ModemComponent),
|
||||
cv.Required(CONF_TX_PIN): cv.positive_int,
|
||||
cv.Required(CONF_RX_PIN): cv.positive_int,
|
||||
cv.Required(CONF_MODEL): cv.string,
|
||||
|
@ -75,7 +75,7 @@ async def to_code(config):
|
|||
add_idf_sdkconfig_option("CONFIG_LWIP_PPP_VJ_HEADER_COMPRESSION", True)
|
||||
add_idf_sdkconfig_option("CONFIG_LWIP_PPP_NOTIFY_PHASE_SUPPORT", True)
|
||||
|
||||
cg.add_define("USE_GSM")
|
||||
cg.add_define("USE_MODEM")
|
||||
|
||||
var = cg.new_Pvariable(config[CONF_ID])
|
||||
if use_address := config.get(CONF_USE_ADDRESS, None):
|
|
@ -1,5 +1,5 @@
|
|||
#ifdef USE_ESP_IDF
|
||||
#include "gsm_component.h"
|
||||
#include "modem_component.h"
|
||||
#include "esphome/core/log.h"
|
||||
#include "esphome/core/application.h"
|
||||
#include "esphome/core/defines.h"
|
||||
|
@ -22,9 +22,9 @@ static const size_t CONFIG_MODEM_UART_EVENT_TASK_STACK_SIZE = 2048;
|
|||
static const uint8_t CONFIG_MODEM_UART_EVENT_TASK_PRIORITY = 5;
|
||||
|
||||
namespace esphome {
|
||||
namespace gsm {
|
||||
namespace modem {
|
||||
|
||||
GSMComponent *global_gsm_component; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
||||
ModemComponent *global_modem_component; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
||||
|
||||
#define ESPHL_ERROR_CHECK(err, message) \
|
||||
if ((err) != ESP_OK) { \
|
||||
|
@ -35,15 +35,15 @@ GSMComponent *global_gsm_component; // NOLINT(cppcoreguidelines-avoid-non-const
|
|||
|
||||
using namespace esp_modem;
|
||||
|
||||
GSMComponent::GSMComponent() { global_gsm_component = this; }
|
||||
ModemComponent::ModemComponent() { global_modem_component = this; }
|
||||
|
||||
void GSMComponent::dump_config() { ESP_LOGCONFIG(TAG, "Config GSM:"); }
|
||||
void ModemComponent::dump_config() { ESP_LOGCONFIG(TAG, "Config Modem:"); }
|
||||
|
||||
float GSMComponent::get_setup_priority() const { return setup_priority::WIFI; }
|
||||
float ModemComponent::get_setup_priority() const { return setup_priority::WIFI; }
|
||||
|
||||
bool GSMComponent::can_proceed() { return this->is_connected(); }
|
||||
bool ModemComponent::can_proceed() { return this->is_connected(); }
|
||||
|
||||
network::IPAddresses GSMComponent::get_ip_addresses() {
|
||||
network::IPAddresses ModemComponent::get_ip_addresses() {
|
||||
network::IPAddresses addresses;
|
||||
esp_netif_ip_info_t ip;
|
||||
ESP_LOGV(TAG, "get_ip_addresses");
|
||||
|
@ -58,19 +58,19 @@ network::IPAddresses GSMComponent::get_ip_addresses() {
|
|||
return addresses;
|
||||
}
|
||||
|
||||
std::string GSMComponent::get_use_address() const {
|
||||
std::string ModemComponent::get_use_address() const {
|
||||
if (this->use_address_.empty()) {
|
||||
return App.get_name() + ".local";
|
||||
}
|
||||
return this->use_address_;
|
||||
}
|
||||
|
||||
void GSMComponent::set_use_address(const std::string &use_address) { this->use_address_ = use_address; }
|
||||
void ModemComponent::set_use_address(const std::string &use_address) { this->use_address_ = use_address; }
|
||||
|
||||
bool GSMComponent::is_connected() { return this->state_ == GSMComponentState::CONNECTED; }
|
||||
bool ModemComponent::is_connected() { return this->state_ == ModemComponentState::CONNECTED; }
|
||||
|
||||
void GSMComponent::setup() {
|
||||
ESP_LOGI(TAG, "Setting up GSM...");
|
||||
void ModemComponent::setup() {
|
||||
ESP_LOGI(TAG, "Setting up Modem...");
|
||||
|
||||
this->config_gpio_();
|
||||
|
||||
|
@ -124,22 +124,22 @@ void GSMComponent::setup() {
|
|||
// ESPHL_ERROR_CHECK(esp_netif_set_dns_info(this->ppp_netif_, ESP_NETIF_DNS_MAIN, &dns_main), "dns_main");
|
||||
|
||||
// Register user defined event handers
|
||||
err = esp_event_handler_register(IP_EVENT, IP_EVENT_PPP_GOT_IP, &GSMComponent::got_ip_event_handler, nullptr);
|
||||
err = esp_event_handler_register(IP_EVENT, IP_EVENT_PPP_GOT_IP, &ModemComponent::got_ip_event_handler, nullptr);
|
||||
ESPHL_ERROR_CHECK(err, "GOT IP event handler register error");
|
||||
|
||||
ESP_LOGV(TAG, "DCE setup");
|
||||
|
||||
switch (this->model_) {
|
||||
case GSMModel::BG96:
|
||||
case ModemModel::BG96:
|
||||
this->dce_ = create_BG96_dce(&dce_config, this->dte_, this->ppp_netif_);
|
||||
break;
|
||||
case GSMModel::SIM800:
|
||||
case ModemModel::SIM800:
|
||||
this->dce_ = create_SIM800_dce(&dce_config, this->dte_, this->ppp_netif_);
|
||||
break;
|
||||
case GSMModel::SIM7000:
|
||||
case ModemModel::SIM7000:
|
||||
this->dce_ = create_SIM7000_dce(&dce_config, this->dte_, this->ppp_netif_);
|
||||
break;
|
||||
case GSMModel::SIM7600:
|
||||
case ModemModel::SIM7600:
|
||||
this->dce_ = create_SIM7600_dce(&dce_config, this->dte_, this->ppp_netif_);
|
||||
break;
|
||||
default:
|
||||
|
@ -155,7 +155,7 @@ void GSMComponent::setup() {
|
|||
ESP_LOGV(TAG, "Setup finished");
|
||||
}
|
||||
|
||||
void GSMComponent::start_connect_() {
|
||||
void ModemComponent::start_connect_() {
|
||||
this->connect_begin_ = millis();
|
||||
this->status_set_warning("Starting connection");
|
||||
|
||||
|
@ -169,7 +169,7 @@ void GSMComponent::start_connect_() {
|
|||
// ESP_LOGW(TAG, "esp_netif_set_hostname failed: %s", esp_err_to_name(err));
|
||||
// }
|
||||
|
||||
global_gsm_component->got_ipv4_address_ = false; // why not this ?
|
||||
global_modem_component->got_ipv4_address_ = false; // why not this ?
|
||||
|
||||
this->dce_->set_mode(esp_modem::modem_mode::CMUX_MANUAL_COMMAND);
|
||||
vTaskDelay(pdMS_TO_TICKS(2000));
|
||||
|
@ -232,56 +232,56 @@ void GSMComponent::start_connect_() {
|
|||
vTaskDelay(pdMS_TO_TICKS(2000));
|
||||
}
|
||||
|
||||
void GSMComponent::got_ip_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data) {
|
||||
void ModemComponent::got_ip_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data) {
|
||||
ip_event_got_ip_t *event = (ip_event_got_ip_t *) event_data;
|
||||
const esp_netif_ip_info_t *ip_info = &event->ip_info;
|
||||
ESP_LOGW(TAG, "[IP event] Got IP " IPSTR, IP2STR(&ip_info->ip));
|
||||
vTaskDelay(pdMS_TO_TICKS(1000)); // FIXME tmp
|
||||
global_gsm_component->got_ipv4_address_ = true;
|
||||
global_gsm_component->connected_ = true;
|
||||
global_modem_component->got_ipv4_address_ = true;
|
||||
global_modem_component->connected_ = true;
|
||||
}
|
||||
|
||||
void GSMComponent::loop() {
|
||||
void ModemComponent::loop() {
|
||||
const uint32_t now = millis();
|
||||
|
||||
switch (this->state_) {
|
||||
case GSMComponentState::STOPPED:
|
||||
case ModemComponentState::STOPPED:
|
||||
if (this->started_) {
|
||||
ESP_LOGI(TAG, "Starting gsm connection");
|
||||
this->state_ = GSMComponentState::CONNECTING;
|
||||
ESP_LOGI(TAG, "Starting modem connection");
|
||||
this->state_ = ModemComponentState::CONNECTING;
|
||||
this->start_connect_();
|
||||
}
|
||||
break;
|
||||
case GSMComponentState::CONNECTING:
|
||||
case ModemComponentState::CONNECTING:
|
||||
if (!this->started_) {
|
||||
ESP_LOGI(TAG, "Stopped ethernet connection");
|
||||
this->state_ = GSMComponentState::STOPPED;
|
||||
this->state_ = ModemComponentState::STOPPED;
|
||||
} else if (this->connected_) {
|
||||
// connection established
|
||||
ESP_LOGI(TAG, "Connected via GSM");
|
||||
this->state_ = GSMComponentState::CONNECTED;
|
||||
ESP_LOGI(TAG, "Connected via Modem");
|
||||
this->state_ = ModemComponentState::CONNECTED;
|
||||
|
||||
this->dump_connect_params_();
|
||||
this->status_clear_warning();
|
||||
} else if (now - this->connect_begin_ > 45000) {
|
||||
ESP_LOGW(TAG, "Connecting via GSM failed! Re-connecting...");
|
||||
ESP_LOGW(TAG, "Connecting via Modem failed! Re-connecting...");
|
||||
this->start_connect_();
|
||||
}
|
||||
break;
|
||||
case GSMComponentState::CONNECTED:
|
||||
case ModemComponentState::CONNECTED:
|
||||
if (!this->started_) {
|
||||
ESP_LOGI(TAG, "Stopped GSM connection");
|
||||
this->state_ = GSMComponentState::STOPPED;
|
||||
ESP_LOGI(TAG, "Stopped Modem connection");
|
||||
this->state_ = ModemComponentState::STOPPED;
|
||||
} else if (!this->connected_) {
|
||||
ESP_LOGW(TAG, "Connection via GSM lost! Re-connecting...");
|
||||
this->state_ = GSMComponentState::CONNECTING;
|
||||
ESP_LOGW(TAG, "Connection via Modem lost! Re-connecting...");
|
||||
this->state_ = ModemComponentState::CONNECTING;
|
||||
this->start_connect_();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void GSMComponent::dump_connect_params_() {
|
||||
void ModemComponent::dump_connect_params_() {
|
||||
esp_netif_ip_info_t ip;
|
||||
esp_netif_get_ip_info(this->ppp_netif_, &ip);
|
||||
ESP_LOGCONFIG(TAG, " IP Address: %s", network::IPAddress(&ip.ip).str().c_str());
|
||||
|
@ -298,7 +298,7 @@ void GSMComponent::dump_connect_params_() {
|
|||
ESP_LOGCONFIG(TAG, " DNS fallback: %s", network::IPAddress(dns_fallback_ip).str().c_str());
|
||||
}
|
||||
|
||||
void GSMComponent::config_gpio_() {
|
||||
void ModemComponent::config_gpio_() {
|
||||
ESP_LOGV(TAG, "Configuring GPIOs...");
|
||||
gpio_config_t io_conf = {};
|
||||
io_conf.intr_type = GPIO_INTR_DISABLE;
|
||||
|
@ -328,7 +328,7 @@ void GSMComponent::config_gpio_() {
|
|||
gpio_config(&io_conf);
|
||||
}
|
||||
|
||||
void GSMComponent::poweron() {
|
||||
void ModemComponent::poweron() {
|
||||
ESP_LOGI(TAG, "Power on modem");
|
||||
|
||||
if (this->get_status()) {
|
||||
|
@ -372,7 +372,7 @@ void GSMComponent::poweron() {
|
|||
App.feed_wdt();
|
||||
}
|
||||
|
||||
void GSMComponent::powerdown() {
|
||||
void ModemComponent::powerdown() {
|
||||
ESP_LOGI(TAG, "Power down modem");
|
||||
if (this->get_status()) {
|
||||
// https://github.com/Xinyuan-LilyGO/T-SIM7600X/blob/master/examples/PowefOffModem/PowefOffModem.ino#L69-L71
|
||||
|
@ -393,7 +393,7 @@ void GSMComponent::powerdown() {
|
|||
}
|
||||
}
|
||||
|
||||
} // namespace gsm
|
||||
} // namespace modem
|
||||
} // namespace esphome
|
||||
|
||||
#endif
|
|
@ -16,21 +16,21 @@ using esphome::esp_log_printf_; // esp_modem will use esphome logger (needed if
|
|||
#include <utility>
|
||||
|
||||
namespace esphome {
|
||||
namespace gsm {
|
||||
namespace modem {
|
||||
|
||||
static const char *const TAG = "gsm";
|
||||
static const char *const TAG = "modem";
|
||||
|
||||
enum class GSMComponentState {
|
||||
enum class ModemComponentState {
|
||||
STOPPED,
|
||||
CONNECTING,
|
||||
CONNECTED,
|
||||
};
|
||||
|
||||
enum class GSMModel { BG96, SIM800, SIM7000, SIM7070, SIM7070_GNSS, SIM7600, UNKNOWN };
|
||||
enum class ModemModel { BG96, SIM800, SIM7000, SIM7070, SIM7070_GNSS, SIM7600, UNKNOWN };
|
||||
|
||||
class GSMComponent : public Component {
|
||||
class ModemComponent : public Component {
|
||||
public:
|
||||
GSMComponent();
|
||||
ModemComponent();
|
||||
void dump_config() override;
|
||||
void setup() override;
|
||||
void loop() override;
|
||||
|
@ -54,7 +54,7 @@ class GSMComponent : public Component {
|
|||
void set_status_pin(gpio_num_t status_pin) { this->status_pin_ = status_pin; }
|
||||
void set_dtr_pin(gpio_num_t dtr_pin) { this->dtr_pin_ = dtr_pin; }
|
||||
void set_model(const std::string &model) {
|
||||
this->model_ = this->gsm_model_map_.count(model) ? gsm_model_map_[model] : GSMModel::UNKNOWN;
|
||||
this->model_ = this->modem_model_map_.count(model) ? modem_model_map_[model] : ModemModel::UNKNOWN;
|
||||
}
|
||||
bool get_status() { return gpio_get_level(this->status_pin_); }
|
||||
|
||||
|
@ -70,18 +70,18 @@ class GSMComponent : public Component {
|
|||
std::string username_;
|
||||
std::string password_;
|
||||
std::string apn_;
|
||||
GSMModel model_;
|
||||
std::unordered_map<std::string, GSMModel> gsm_model_map_ = {{"BG96", GSMModel::BG96},
|
||||
{"SIM800", GSMModel::SIM800},
|
||||
{"SIM7000", GSMModel::SIM7000},
|
||||
{"SIM7070", GSMModel::SIM7070},
|
||||
{"SIM7070_GNSS", GSMModel::SIM7070_GNSS},
|
||||
{"SIM7600", GSMModel::SIM7600}};
|
||||
ModemModel model_;
|
||||
std::unordered_map<std::string, ModemModel> modem_model_map_ = {{"BG96", ModemModel::BG96},
|
||||
{"SIM800", ModemModel::SIM800},
|
||||
{"SIM7000", ModemModel::SIM7000},
|
||||
{"SIM7070", ModemModel::SIM7070},
|
||||
{"SIM7070_GNSS", ModemModel::SIM7070_GNSS},
|
||||
{"SIM7600", ModemModel::SIM7600}};
|
||||
std::shared_ptr<esp_modem::DTE> dte_;
|
||||
std::unique_ptr<esp_modem::DCE> dce_; // public ?
|
||||
esp_modem::esp_netif_t *ppp_netif_{nullptr};
|
||||
esp_modem_dte_config_t dte_config_;
|
||||
GSMComponentState state_{GSMComponentState::STOPPED};
|
||||
ModemComponentState state_{ModemComponentState::STOPPED};
|
||||
void start_connect_();
|
||||
bool started_{false};
|
||||
bool connected_{false};
|
||||
|
@ -94,9 +94,9 @@ class GSMComponent : public Component {
|
|||
};
|
||||
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
|
||||
extern GSMComponent *global_gsm_component;
|
||||
extern ModemComponent *global_modem_component;
|
||||
|
||||
} // namespace gsm
|
||||
} // namespace modem
|
||||
} // namespace esphome
|
||||
|
||||
#endif
|
|
@ -9,8 +9,8 @@
|
|||
#include "esphome/components/ethernet/ethernet_component.h"
|
||||
#endif
|
||||
|
||||
#ifdef USE_GSM
|
||||
#include "esphome/components/gsm/gsm_component.h"
|
||||
#ifdef USE_MODEM
|
||||
#include "esphome/components/modem/modem_component.h"
|
||||
#endif
|
||||
|
||||
namespace esphome {
|
||||
|
@ -27,9 +27,9 @@ bool is_connected() {
|
|||
return wifi::global_wifi_component->is_connected();
|
||||
#endif
|
||||
|
||||
#ifdef USE_GSM
|
||||
if (gsm::global_gsm_component != nullptr)
|
||||
return gsm::global_gsm_component->is_connected();
|
||||
#ifdef USE_MODEM
|
||||
if (modem::global_modem_component != nullptr)
|
||||
return modem::global_modem_component->is_connected();
|
||||
#endif
|
||||
|
||||
#ifdef USE_HOST
|
||||
|
@ -68,9 +68,9 @@ std::string get_use_address() {
|
|||
if (wifi::global_wifi_component != nullptr)
|
||||
return wifi::global_wifi_component->get_use_address();
|
||||
#endif
|
||||
#ifdef USE_GSM
|
||||
if (gsm::global_gsm_component != nullptr)
|
||||
return gsm::global_gsm_component->get_use_address();
|
||||
#ifdef USE_MODEM
|
||||
if (modem::global_modem_component != nullptr)
|
||||
return modem::global_modem_component->get_use_address();
|
||||
#endif
|
||||
return "";
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue