- 
      
 - 
        
Save dale3h/b1c4e571947438728164dbe2ead728ec to your computer and use it in GitHub Desktop.  
| # IMPORTANT: Enable the package in `configuration.yaml` | |
| # @see https://www.home-assistant.io/docs/configuration/packages/ | |
| # Option 1: Include all files inside `config/packages` as package files: | |
| homeassistant: | |
| packages: !include_dir_named packages | |
| # Option 2: Use `packages/jetpack_8800l.yaml` file directly from `config/packages` folder: | |
| homeassistant: | |
| packages: | |
| jetpack_8800l: !include packages/jetpack_8800l.yaml | |
| # Option 3: Create `jetpack_8800l.yaml` file in the same directory as `configuration.yaml`: | |
| homeassistant: | |
| packages: | |
| jetpack_8800l: !include jetpack_8800l.yaml | 
| # ============================================================================== | |
| # Packages / Jetpack 8800L | |
| # @file packages/jetpack_8800l.yaml | |
| # | |
| # IMPORTANT: Enable packages in `configuration.yaml` | |
| # @see https://www.home-assistant.io/docs/configuration/packages/ | |
| # | |
| # @notes Set `input_text.jetpack_8800l_host` to the IP address of your Verizon | |
| # Jetpack hotspot. | |
| # @notes Set `input_number.jetpack_8800l_data_cap` to the amount of data that | |
| # you are allotted. This is usually either 100GB or 150GB in the US. | |
| # ============================================================================== | |
| # ============================================== | |
| # Input Text | |
| # ============================================== | |
| input_text: | |
| jetpack_8800l_host: | |
| name: Jetpack 8800L Host | |
| icon: mdi:server | |
| # ============================================== | |
| # Input Number | |
| # ============================================== | |
| input_number: | |
| jetpack_8800l_data_cap: | |
| name: Jetpack 8800L Data Cap | |
| icon: mdi:swap-horizontal | |
| initial: 150 | |
| min: 0 | |
| max: 1000 | |
| step: 1 | |
| mode: box | |
| unit_of_measurement: GB | |
| # ============================================== | |
| # Sensor | |
| # ============================================== | |
| sensor: | |
| # ============================== | |
| # Usage Info | |
| # ============================== | |
| - platform: rest | |
| name: Jetpack 8800L Usage | |
| unique_id: jetpack_8800l_usage | |
| resource_template: "http://{{ states('input_text.jetpack_8800l_host') }}/apps_home/usageinfo/" | |
| value_template: "OK" | |
| json_attributes: | |
| - allowance | |
| - barLevelLineUsage | |
| - barLevelTotalShrUsage | |
| - barPercentageLineUsage | |
| - barPercentageTotalShrUsage | |
| - cycleEndDt | |
| - daysLeft | |
| - gBaseAssetsPath | |
| - gHelpURL | |
| - gHtmlLang | |
| - gIsLoggedIn | |
| - gLangDirection | |
| - gLocale | |
| - gPageId | |
| - gProductName | |
| - gProductNumber | |
| - gSecureToken | |
| - isHidden | |
| - lineUsage | |
| - planType | |
| - remainingUsage | |
| - totalShrUsage | |
| - unit | |
| - usageInformationState | |
| - usageTimestamp | |
| # ============================== | |
| # Status Info | |
| # ============================== | |
| - platform: rest | |
| name: Jetpack 8800L Status | |
| unique_id: jetpack_8800l_status | |
| resource_template: "http://{{ states('input_text.jetpack_8800l_host') }}/srv/status" | |
| value_template: "OK" | |
| json_attributes_path: "$.statusData" | |
| json_attributes: | |
| - statusBarAirplaneMode | |
| - statusBarBatteryChargingSource | |
| - statusBarBatteryChargingState | |
| - statusBarBatteryDetection | |
| - statusBarBatteryPercent | |
| - statusBarBytesReceived | |
| - statusBarBytesTotal | |
| - statusBarBytesTransmitted | |
| - statusBarClientListSize | |
| - statusBarConnectionDuration | |
| - statusBarConnectionState | |
| - statusBarFemtoCellStatus | |
| - statusBarGpsStatus | |
| - statusBarGuestClientListSize | |
| - statusBarGuestWifiEnabled | |
| - statusBarMaxWiFiClientListSize | |
| - statusBarMnsAvailable | |
| - statusBarMnsInUse | |
| - statusBarMnsScan | |
| - statusBarMobileDataEnabled | |
| - statusBarNetwork | |
| - statusBarNetworkID | |
| - statusBarNotificationFlag | |
| - statusBarPrimaryClientListSize | |
| - statusBarRoaming | |
| - statusBarSdCardFreeSpace | |
| - statusBarSdCardInUse | |
| - statusBarSdCardStatus | |
| - statusBarSdCardUsedSpace | |
| - statusBarSignalBars | |
| - statusBarSimStatus | |
| - statusBarSmsUnreadCount | |
| - statusBarTechnology | |
| - statusBarTechnologyText | |
| - statusBarTrafficStatus | |
| - statusBarWiFiClientListSize | |
| - statusBarWiFiEnabled | |
| # ============================================== | |
| # Template | |
| # ============================================== | |
| template: | |
| # ============================== | |
| # Calculated Sensors | |
| # ============================== | |
| - sensor: | |
| - name: Jetpack 8800L Cycle Days | |
| unique_id: jetpack_8800l_usage_cycleDays | |
| icon: mdi:calendar-month | |
| unit_of_measurement: days | |
| # device_class: duration | |
| state: >- | |
| {% set dt = strptime(states('sensor.jetpack_8800l_cycle_end_date'), '%Y-%m-%d', as_datetime(0)) %} | |
| {{ (dt.replace(day=1) - timedelta(days=1)).day }} | |
| - name: Jetpack 8800L Days Used | |
| unique_id: jetpack_8800l_usage_daysUsed | |
| icon: mdi:calendar-clock | |
| unit_of_measurement: days | |
| # device_class: duration | |
| state: >- | |
| {{ states('sensor.jetpack_8800l_cycle_days') | int(0) - states('sensor.jetpack_8800l_days_left') | int(0) }} | |
| - name: Jetpack 8800L Daily Threshold | |
| unique_id: jetpack_8800l_usage_dailyThreshold | |
| icon: mdi:calendar-month | |
| unit_of_measurement: GB | |
| state: >- | |
| {{ (states('input_number.jetpack_8800l_data_cap') | float(0) / states('sensor.jetpack_8800l_cycle_days') | int(0) | default(-99, true)) | round(2) }} | |
| - name: Jetpack 8800L Data Remaining | |
| unique_id: jetpack_8800l_usage_dataRemaining | |
| icon: mdi:database-clock | |
| unit_of_measurement: GB | |
| state: >- | |
| {{ (states('input_number.jetpack_8800l_data_cap') | float(0) - states('sensor.jetpack_8800l_data_usage') | float(0)) | round(2) }} | |
| - name: Jetpack 8800L Daily Allowance | |
| unique_id: jetpack_8800l_usage_dailyAllowance | |
| icon: mdi:calendar-month | |
| unit_of_measurement: GB | |
| state: >- | |
| {{ (states('sensor.jetpack_8800l_data_remaining') | float(0) / states('sensor.jetpack_8800l_days_left') | int(0) | default(-99, true)) | round(2) }} | |
| - name: Jetpack 8800L Average Daily Usage | |
| unique_id: jetpack_8800l_usage_avgDailyUsage | |
| icon: mdi:gauge | |
| unit_of_measurement: GB | |
| state: >- | |
| {{ (states('sensor.jetpack_8800l_data_usage') | float(0) / (states('sensor.jetpack_8800l_days_used') | int(0) | default(-99, true))) | round(2) }} | |
| # ============================== | |
| # Usage Info Sensors | |
| # ============================== | |
| - sensor: | |
| - name: Jetpack 8800L Allowance | |
| unique_id: jetpack_8800l_usage_allowance | |
| icon: mdi:wan | |
| state: >- | |
| {% if is_state_attr('sensor.jetpack_8800l_usage', 'usageInformationState', 'available') %} | |
| {{ state_attr('sensor.jetpack_8800l_usage', 'allowance') }} | |
| {% else %} | |
| {{ states('sensor.jetpack_8800l_allowance') }} | |
| {% endif %} | |
| - name: Jetpack 8800L Cycle End Date | |
| unique_id: jetpack_8800l_usage_cycleEndDt | |
| icon: mdi:calendar-refresh | |
| device_class: date | |
| state: >- | |
| {% if is_state_attr('sensor.jetpack_8800l_usage', 'usageInformationState', 'available') %} | |
| {{ strptime(state_attr('sensor.jetpack_8800l_usage', 'cycleEndDt'), '%m/%d/%Y', '2001-01-01' | as_datetime).strftime('%Y-%m-%d') }} | |
| {% else %} | |
| {% if states('sensor.jetpack_8800l_cycle_end_date') in ['unknown', 'unavailable'] %} | |
| 2001-01-01 | |
| {% else %} | |
| {{ states('sensor.jetpack_8800l_cycle_end_date') }} | |
| {% endif %} | |
| {% endif %} | |
| - name: Jetpack 8800L Days Left | |
| unique_id: jetpack_8800l_usage_daysLeft | |
| icon: mdi:calendar-clock | |
| unit_of_measurement: days | |
| state: >- | |
| {% if is_state_attr('sensor.jetpack_8800l_usage', 'usageInformationState', 'available') %} | |
| {{ state_attr('sensor.jetpack_8800l_usage', 'daysLeft') }} | |
| {% else %} | |
| {{ states('sensor.jetpack_8800l_days_left') }} | |
| {% endif %} | |
| - name: Jetpack 8800L Data Usage | |
| unique_id: jetpack_8800l_usage_totalShrUsage | |
| icon: mdi:wan | |
| unit_of_measurement: GB | |
| state_class: total_increasing | |
| state: >- | |
| {% if is_state_attr('sensor.jetpack_8800l_usage', 'usageInformationState', 'available') %} | |
| {{ state_attr('sensor.jetpack_8800l_usage', 'totalShrUsage') | round(2) }} | |
| {% else %} | |
| {{ states('sensor.jetpack_8800l_data_usage') }} | |
| {% endif %} | |
| - name: Jetpack 8800L Usage Unit | |
| unique_id: jetpack_8800l_usage_unit | |
| icon: mdi:wan | |
| state: >- | |
| {% if is_state_attr('sensor.jetpack_8800l_usage', 'usageInformationState', 'available') %} | |
| {{ state_attr('sensor.jetpack_8800l_usage', 'unit') }} | |
| {% else %} | |
| {{ states('sensor.jetpack_8800l_usage_unit') }} | |
| {% endif %} | |
| - name: Jetpack 8800L Usage Timestamp | |
| unique_id: jetpack_8800l_usage_usageTimestamp | |
| icon: mdi:wan | |
| device_class: date | |
| state: >- | |
| {% if is_state_attr('sensor.jetpack_8800l_usage', 'usageInformationState', 'available') %} | |
| {{ strptime(state_attr('sensor.jetpack_8800l_usage', 'usageTimestamp'), '%m/%d/%Y', '2001-01-01' | as_datetime).strftime('%Y-%m-%d') }} | |
| {% else %} | |
| {% if states('sensor.jetpack_8800l_usage_timestamp') in ['unknown', 'unavailable'] %} | |
| 2001-01-01 | |
| {% else %} | |
| {{ states('sensor.jetpack_8800l_usage_timestamp') }} | |
| {% endif %} | |
| {% endif %} | |
| # ============================== | |
| # Status Info Sensors | |
| # ============================== | |
| - sensor: | |
| # ============== | |
| # Battery | |
| # ============== | |
| - name: Jetpack 8800L Battery Charging Source | |
| unique_id: jetpack_8800l_status_BatteryChargingSource | |
| icon: >- | |
| {% set icon_key = state_attr('sensor.jetpack_8800l_status', 'statusBarBatteryChargingSource') | lower %} | |
| {% set icons = { | |
| 'chargingsourceac': 'mdi:power-plug', | |
| 'chargingsourceusb': 'mdi:usb-port', | |
| 'chargingsourcenone': 'mdi:power-plug-off' | |
| } %} | |
| {{ icons[icon_key] | default('mdi:power-plug-off') }} | |
| state: >- | |
| {% if is_state_attr('sensor.jetpack_8800l_status', 'statusBarBatteryChargingSource', 'ChargingSourceAC') %} | |
| AC | |
| {% elif is_state_attr('sensor.jetpack_8800l_status', 'statusBarBatteryChargingSource', 'ChargingSourceUSB') %} | |
| USB | |
| {% elif is_state_attr('sensor.jetpack_8800l_status', 'statusBarBatteryChargingSource', 'ChargingSourceNone') %} | |
| None | |
| {% else %} | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarBatteryChargingSource') }} | |
| {% endif %} | |
| - name: Jetpack 8800L Battery Level | |
| unique_id: jetpack_8800l_status_BatteryPercent | |
| unit_of_measurement: "%" | |
| device_class: battery | |
| state_class: measurement | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarBatteryPercent') }} | |
| # ============== | |
| # Connection | |
| # ============== | |
| - name: Jetpack 8800L Connection Duration | |
| unique_id: jetpack_8800l_status_ConnectionDuration | |
| icon: mdi:web-clock | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarConnectionDuration') }} | |
| unit_of_measurement: seconds | |
| - name: Jetpack 8800L Connection State | |
| unique_id: jetpack_8800l_status_ConnectionState | |
| icon: >- | |
| {% set icon_key = state_attr('sensor.jetpack_8800l_status', 'statusBarConnectionState') | lower %} | |
| {% set icons = { | |
| 'initializing': 'mdi:web-sync', | |
| 'searching': 'mdi:web-sync', | |
| 'ready': 'mdi:web-check', | |
| 'connecting': 'mdi:web-sync', | |
| 'connected': 'mdi:web-check', | |
| 'dormant': 'mdi:web-clock', | |
| 'disconnecting': 'mdi:web-minus', | |
| 'activation in progress': 'mdi:web-sync', | |
| 'no service': 'mdi:web-off', | |
| 'unactivated': 'mdi:web-off', | |
| 'account restricted (pco 2)': 'mdi:web-cancel', | |
| 'account restricted (pco 2) disconnected': 'mdi:web-cancel', | |
| 'account out of credit (pco 3)': 'mdi:web-cancel', | |
| 'account not active (pco 5)': 'mdi:web-cancel', | |
| } %} | |
| {{ icons[icon_key] | default('mdi:web-remove') }} | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarConnectionState') }} | |
| - name: Jetpack 8800L Traffic Status | |
| unique_id: jetpack_8800l_status_TrafficStatus | |
| icon: >- | |
| {% set icon_key = state_attr('sensor.jetpack_8800l_status', 'statusBarTrafficStatus') | lower %} | |
| {% set icons = { | |
| 'none': 'mdi:wifi-remove', | |
| 'uplink': 'mdi:wifi-arrow-up', | |
| 'downlink': 'mdi:wifi-arrow-down', | |
| 'uplinkdownlink': 'mdi:wifi-arrow-up-down', | |
| } %} | |
| {{ icons[icon_key] | default('mdi:wifi-arrow-up-down') }} | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarTrafficStatus') }} | |
| # ============== | |
| # WiFi / Devices / Clients | |
| # ============== | |
| - name: Jetpack 8800L Clients | |
| unique_id: jetpack_8800l_status_ClientListSize | |
| icon: mdi:devices | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarClientListSize') }} | |
| state_class: measurement | |
| - name: Jetpack 8800L Primary Clients | |
| unique_id: jetpack_8800l_status_PrimaryClientListSize | |
| icon: mdi:devices | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarPrimaryClientListSize') }} | |
| state_class: measurement | |
| - name: Jetpack 8800L Guest Clients | |
| unique_id: jetpack_8800l_status_GuestClientListSize | |
| icon: mdi:devices | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarGuestClientListSize') }} | |
| state_class: measurement | |
| - name: Jetpack 8800L WiFi Clients | |
| unique_id: jetpack_8800l_status_WiFiClientListSize | |
| icon: mdi:devices | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarWiFiClientListSize') }} | |
| state_class: measurement | |
| - name: Jetpack 8800L Max WiFi Clients | |
| unique_id: jetpack_8800l_status_MaxWiFiClientListSize | |
| icon: mdi:devices | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarMaxWiFiClientListSize') }} | |
| state_class: measurement | |
| # ============== | |
| # GPS | |
| # ============== | |
| - name: Jetpack 8800L GPS Status | |
| unique_id: jetpack_8800l_status_GpsStatus | |
| icon: mdi:crosshairs-gps | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarGpsStatus') | replace('GpsOff', 'Off') }} | |
| # ============== | |
| # Network | |
| # ============== | |
| - name: Jetpack 8800L Network | |
| unique_id: jetpack_8800l_status_Network | |
| icon: mdi:signal | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarNetwork') }} | |
| - name: Jetpack 8800L Network ID | |
| unique_id: jetpack_8800l_status_NetworkID | |
| icon: mdi:signal | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarNetworkID') }} | |
| - name: Jetpack 8800L Signal | |
| unique_id: jetpack_8800l_status_SignalBars | |
| icon: >- | |
| {% set signal = state_attr('sensor.jetpack_8800l_status', 'statusBarSignalBars') | int(0) %} | |
| {% if signal >= 3 %} | |
| mdi:signal-cellular-3 | |
| {% elif signal >= 2 %} | |
| mdi:signal-cellular-2 | |
| {% elif signal >= 1 %} | |
| mdi:signal-cellular-1 | |
| {% else %} | |
| mdi:signal-cellular-outline | |
| {% endif %} | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarSignalBars') }} | |
| unit_of_measurement: bars | |
| # device_class: signal_strength | |
| state_class: measurement | |
| - name: Jetpack 8800L Technology | |
| unique_id: jetpack_8800l_status_Technology | |
| icon: mdi:signal | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarTechnology') }} | |
| - name: Jetpack 8800L Technology Text | |
| unique_id: jetpack_8800l_status_TechnologyText | |
| icon: mdi:signal-cellular-3 | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarTechnologyText') }} | |
| # ============== | |
| # SIM | |
| # ============== | |
| - name: Jetpack 8800L SIM Status | |
| unique_id: jetpack_8800l_status_SimStatus | |
| icon: mdi:sim | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarSimStatus') }} | |
| # ============== | |
| # Notifications | |
| # ============== | |
| - name: Jetpack 8800L SMS Unread Count | |
| unique_id: jetpack_8800l_status_SmsUnreadCount | |
| icon: >- | |
| {% if state_attr('sensor.jetpack_8800l_status', 'statusBarSmsUnreadCount') | int(0) %} | |
| mdi:message-alert | |
| {% else %} | |
| mdi:message | |
| {% endif %} | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarSmsUnreadCount') }} | |
| # ============================================== | |
| # Usage Info Binary Sensors | |
| # ============================================== | |
| - binary_sensor: | |
| - name: Jetpack 8800L Usage Information State | |
| unique_id: jetpack_8800l_usage_usageInformationState | |
| icon: >- | |
| {% set icon_key = state_attr('sensor.jetpack_8800l_usage', 'usageInformationState') | lower %} | |
| {% set icons = { | |
| 'unavailable': 'mdi:close-network', | |
| 'available': 'mdi:check-network', | |
| } %} | |
| {{ icons[icon_key] | default('mdi:help-network') }} | |
| state: >- | |
| {{ is_state_attr('sensor.jetpack_8800l_usage', 'usageInformationState', 'available') }} | |
| # ============================================== | |
| # Status Info Binary Sensors | |
| # ============================================== | |
| - binary_sensor: | |
| # ============== | |
| # Network | |
| # ============== | |
| - name: Jetpack 8800L Airplane Mode | |
| unique_id: jetpack_8800l_status_AirplaneMode | |
| icon: >- | |
| {% set icon_key = state_attr('sensor.jetpack_8800l_status', 'statusBarAirplaneMode') | lower %} | |
| {% set icons = { | |
| 'airplanemodeon': 'mdi:airplane', | |
| 'airplanemodeoff': 'mdi:airplane-off', | |
| 'lowbatteryoff': 'mdi:airplane-alert' | |
| } %} | |
| {{ icons[icon_key] | default('mdi:airplane') }} | |
| state: >- | |
| {{ not is_state_attr('sensor.jetpack_8800l_status', 'statusBarAirplaneMode', 'AirplaneModeOff') }} | |
| - name: Jetpack 8800L Mobile Data Enabled | |
| unique_id: jetpack_8800l_status_MobileDataEnabled | |
| icon: >- | |
| {% if state_attr('sensor.jetpack_8800l_status', 'statusBarMobileDataEnabled') | int(0) %} | |
| mdi:access-point-network | |
| {% else %} | |
| mdi:access-point-network-off | |
| {% endif %} | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarMobileDataEnabled') }} | |
| # ============== | |
| # Battery | |
| # ============== | |
| - name: Jetpack 8800L Battery Charging State | |
| unique_id: jetpack_8800l_status_BatteryChargingState | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarBatteryChargingState') }} | |
| device_class: battery_charging | |
| - name: Jetpack 8800L Battery Detection | |
| unique_id: jetpack_8800l_status_BatteryDetection | |
| icon: >- | |
| {% set icon_key = state_attr('sensor.jetpack_8800l_status', 'statusBarBatteryDetection') | lower %} | |
| {% set icons = { | |
| 'present': 'mdi:battery-check', | |
| 'notpresent': 'mdi:battery-remove', | |
| 'invalid': 'mdi:battery-alert-variant' | |
| } %} | |
| {{ icons[icon_key] | default('mdi:battery-alert-variant') }} | |
| state: >- | |
| {{ is_state_attr('sensor.jetpack_8800l_status', 'statusBarBatteryDetection', 'Present') }} | |
| device_class: power | |
| # ============== | |
| # WiFi | |
| # ============== | |
| - name: Jetpack 8800L WiFi Enabled | |
| unique_id: jetpack_8800l_status_WiFiEnabled | |
| icon: >- | |
| {% if state_attr('sensor.jetpack_8800l_status', 'statusBarWiFiEnabled') | int(0) %} | |
| mdi:wifi | |
| {% else %} | |
| mdi:wifi-off | |
| {% endif %} | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarWiFiEnabled') }} | |
| - name: Jetpack 8800L Guest WiFi Enabled | |
| unique_id: jetpack_8800l_status_GuestWifiEnabled | |
| icon: >- | |
| {% if state_attr('sensor.jetpack_8800l_status', 'statusBarGuestWifiEnabled') | int(0) %} | |
| mdi:wifi | |
| {% else %} | |
| mdi:wifi-off | |
| {% endif %} | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarGuestWifiEnabled') }} | |
| # ============== | |
| # Notifications | |
| # ============== | |
| - name: Jetpack 8800L Notification Flag | |
| unique_id: jetpack_8800l_status_NotificationFlag | |
| icon: >- | |
| {% if state_attr('sensor.jetpack_8800l_status', 'statusBarNotificationFlag') | int(0) %} | |
| mdi:message-alert | |
| {% else %} | |
| mdi:message | |
| {% endif %} | |
| state: >- | |
| {{ state_attr('sensor.jetpack_8800l_status', 'statusBarNotificationFlag') }} | 
Awesome! I have an Inseego M3000 hotspot and been having a real issue with the battery getting over charged and going into battery preservation mode. Then I sometimes lose the internet connection. My hotspot is in my RV and I have a home assistant server monitoring critical information.
I'm in (almost) exactly the same situation, and this is also working well for me. Thank you very much @dale3h! The only difference is that I'm powering the Inseego M3000 off of a 12VDC to USB-C converter, so rather than an AC smart switch, I'm using a custom ESPHome node with a relay to cut the power to the DC-DC converter. The Inseego is powered through the normally closed contacts of the relay to give a failsafe mode: if the relay module processor goes down, the hotspot will still default to getting power and go into battery preservation mode.
And I thought I was the only one crazy enough to be running a full network in my RV, complete with Home Assistant managing things. I'm going to have to tell the wife that I'm not the only one...
@Gliebig: what battery charge thresholds are you using to turn on and off the supply?
Awesome! I have an Inseego M3000 hotspot and been having a real issue with the battery getting over charged and going into battery preservation mode. Then I sometimes lose the internet connection. My hotspot is in my RV and I have a home assistant server monitoring critical information. I ran across this trying to solve my issue and it works fantastic. I just did a search and replace to update the name and I'm able to get the battery levels and installed a HTC switch on the charger. With a simple automation I now can turn the charger on and off based on this percentage. It just works. Thank you for posting!!