Created
March 3, 2023 09:53
-
-
Save dale3h/b1c4e571947438728164dbe2ead728ec to your computer and use it in GitHub Desktop.
[Home Assistant] Verizon MiFi Jetpack 8800L
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ============================================================================== | |
# 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 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!!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Recommend adding an 'initial' line to the input_text on line 18 for clarity.
input_text:
jetpack_8800l_host:
name: Jetpack 8800L Host
icon: mdi:server
initial: 10.0.0.1 [replace with your device IP]
I also run 2 seperate Jetpack devices and was able to quickly deploy this for both by creating 2 copies of the file, doing a find and replace for 8800L in each, and making the resultant sensors unique (e.g. sensor.jetpack_2_status and sensor.jetpack_2_status, in my case). Modified config entry below for context.
homeassistant:
packages:
jetpack_1: !include jetpack_1.yaml
jetpack_2: !include jetpack_2.yaml