Home Assistant integration for DroneMobile connected vehicles (Firstech/Compustar remote start systems).
This integration uses an unofficial API from DroneMobile that is subject to change without notice. The authors claim no responsibility for any damages to your vehicle resulting from the use of this integration.
- 🛣️ Odometer - Current mileage
- 🔋 Battery - Voltage and percentage
- 🌡️ Temperature - Interior and exterior temperatures
- 📍 GPS - Current location coordinates
- 📶 Cellular Signal - Device signal strength (diagnostic)
- 🔋 Backup Battery - Backup battery voltage (diagnostic)
- 📡 Carrier - Cellular carrier name (diagnostic)
- 🔧 Firmware Version - Device firmware version (diagnostic)
- 🖥️ Controller Model - Vehicle controller model (diagnostic)
- 🕐 Last Refresh - Timestamp of last update
- 🚗 Engine - Running/Off
- 🔑 Ignition - On/Off
- 🔒 Lock - Locked/Unlocked
- 🚪 Doors - Open/Closed
- 🎒 Trunk - Open/Closed
- 🚗 Hood - Open/Closed
- 🔋 Low Battery - Low battery alert (uses API flag or ≤ 11.8 V threshold)
- 🚨 Panic - Panic alarm active/inactive
- 🚛 Towing - Towing detected
- Diagnostic read-only flags: Valet Mode, Turbo Timer, Drive Lock, Passive Arming, Auto Lock/Arm
- 🔒 Door Lock - Lock/Unlock doors
- 🎒 Trunk - Open trunk
- 🏁 Remote Start - Start/Stop engine
- 🚨 Panic Alarm - Activate/Deactivate panic
- 🔧 Auxiliary 1 & 2 - Trigger auxiliary functions
- 📍 Locate - Request a fresh GPS fix from the vehicle
- 🔊 Siren - Enable/Disable siren
- ⚡ Shock Sensor - Enable/Disable shock sensor
- 📍 GPS Tracker - Real-time location tracking
- Home Assistant 2023.1 or newer
- DroneMobile subscription and compatible vehicle system
- Account credentials for DroneMobile
- Open HACS in Home Assistant
- Go to "Integrations"
- Click the three dots in the top right corner
- Select "Custom repositories"
- Add this repository URL:
https://github.com/bjhiltbrand/drone_mobile_home_assistant - Select category: "Integration"
- Click "Add"
- Find "DroneMobile" in the list and click "Install"
- Restart Home Assistant
- Download the latest release from GitHub
- Copy the
custom_components/drone_mobilefolder to your Home Assistantcustom_componentsdirectory - Restart Home Assistant
- Go to Settings → Devices & Services
- Click Add Integration
- Search for DroneMobile
- Enter your credentials:
- Username - Your DroneMobile email address
- Password - Your DroneMobile password
- Units - Imperial (miles/°F) or Metric (km/°C)
- Update Interval - How often to poll for updates (2-60 minutes)
- Override Lock State Check - Send lock commands regardless of current state
- If your DroneMobile account has two-factor authentication (MFA) enabled, you will be prompted to enter a one-time verification code. Depending on your account settings, this will be delivered via SMS or your authenticator app (TOTP).
- Select your vehicle from the list
- Click Submit
To add multiple vehicles:
- Complete the setup process for your first vehicle
- Repeat the setup process
- Select a different vehicle from the list
Each vehicle will be added as a separate integration instance with its own entities.
All entities follow the pattern: {domain}.{vehicle_name}_{entity_name}
Example for a vehicle named "My Car":
sensor.my_car_odometerlock.my_car_door_lockswitch.my_car_remote_startbinary_sensor.my_car_enginedevice_tracker.my_car_location
Manually poll the vehicle for the latest status. Use sparingly as it consumes cellular data and vehicle battery.
service: drone_mobile.refresh_device_status_{vehicle_name}Replace {vehicle_name} with your vehicle name (spaces replaced with underscores, lowercase).
Example:
service: drone_mobile.refresh_device_status_my_carautomation:
- alias: "Start car when cold in the morning"
trigger:
- platform: time
at: "07:00:00"
condition:
- condition: numeric_state
entity_id: sensor.my_car_temperature
below: 40
- condition: state
entity_id: switch.my_car_remote_start
state: 'off'
action:
- service: switch.turn_on
target:
entity_id: switch.my_car_remote_start
- service: notify.mobile_app
data:
message: "Car started automatically - it's {{ states('sensor.my_car_temperature') }}°F outside"automation:
- alias: "Notify if car left unlocked at night"
trigger:
- platform: time
at: "22:00:00"
condition:
- condition: state
entity_id: binary_sensor.my_car_lock
state: 'on'
action:
- service: notify.mobile_app
data:
message: "⚠️ Your car is unlocked!"
data:
actions:
- action: "LOCK_CAR"
title: "Lock Now"
- wait_for_trigger:
- platform: event
event_type: mobile_app_notification_action
event_data:
action: "LOCK_CAR"
timeout: "00:05:00"
- service: lock.lock
target:
entity_id: lock.my_car_door_lockautomation:
- alias: "Alert on low car battery"
trigger:
- platform: state
entity_id: binary_sensor.my_car_low_battery
to: 'on'
action:
- service: notify.mobile_app
data:
message: "⚠️ Car battery is low: {{ states('sensor.my_car_battery') }}V"automation:
- alias: "Start car when arriving at work"
trigger:
- platform: zone
entity_id: device_tracker.my_phone
zone: zone.work
event: enter
condition:
- condition: numeric_state
entity_id: sensor.my_car_temperature
below: 50
- condition: state
entity_id: binary_sensor.my_car_engine
state: 'off'
action:
- service: switch.turn_on
target:
entity_id: switch.my_car_remote_starttype: entities
title: My Car
entities:
- entity: binary_sensor.my_car_engine
name: Engine
- entity: binary_sensor.my_car_ignition
name: Ignition
- entity: lock.my_car_door_lock
name: Doors
- entity: sensor.my_car_battery
name: Battery
- entity: sensor.my_car_temperature
name: Temperature
- entity: sensor.my_car_odometer
name: Odometertype: glance
title: Car Controls
entities:
- entity: switch.my_car_remote_start
name: Start/Stop
- entity: lock.my_car_door_lock
name: Lock/Unlock
- entity: lock.my_car_trunk
name: Trunk
- entity: switch.my_car_panic
name: Panic
- entity: button.my_car_locate
name: Locatetype: map
entities:
- device_tracker.my_car_location
default_zoom: 15- Imperial - Miles, MPH, °F (default)
- Metric - Kilometers, KPH, °C
- Range: 2-60 minutes
- Default: 5 minutes
- Note: More frequent updates consume more cellular data and vehicle battery
- Disabled (default) - Only send lock/unlock commands if state differs
- Enabled - Always send commands regardless of current state
Add to your configuration.yaml:
logger:
default: info
logs:
custom_components.drone_mobile: debug
drone_mobile: debug- Verify your DroneMobile credentials
- Check that your DroneMobile subscription is active
- Ensure you can log in to the DroneMobile app
- Codes are time-sensitive; make sure your device clock is accurate
- Re-enter your credentials to trigger a fresh code to be sent
- Ensure you are reading from the correct SMS thread or authenticator app entry
- Check Home Assistant logs for errors
- Try removing and re-adding the integration
- Verify your internet connection
- Ensure your vehicle hardware supports GPS
- GPS entities only appear if your system reports location data
- Some commands may not be supported by your vehicle hardware
- Check that your vehicle is within cellular range
- Wait a few moments and try again
- Check the GitHub Issues
- Enable debug logging (see above)
- Review Home Assistant logs: Settings → System → Logs
- Use Download diagnostics (Settings → Devices & Services → DroneMobile → three-dot menu) to capture a redacted snapshot for bug reports
- Open a new issue with:
- Your Home Assistant version
- Integration version
- Relevant log entries
- Description of the problem
- Your DroneMobile credentials are stored securely in Home Assistant's encrypted configuration
- Authentication tokens are cached in
/config/drone_mobile/so they persist across Home Assistant Core updates and are included in HA backups — you will not be asked to re-authenticate after every upgrade - No data is sent to third parties
- All communication is with DroneMobile's official API
- The Download diagnostics feature automatically redacts all sensitive fields (credentials, VIN, location, tokens, IMEI, etc.) before the file is saved
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
- Original integration: @bjhiltbrand
- Python package: drone_mobile
This project is licensed under the MIT License - see the LICENSE file for details.
This integration is not affiliated with, endorsed by, or connected to DroneMobile, Firstech, or Compustar in any way. Use at your own risk.