mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	renamed from 'gsm' to 'modem'
This commit is contained in:
		| @@ -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 ""; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user