This integration allows you to monitor and control your Firewalla devices from Home Assistant. This has been tested on my Firewalla Purple (v1.981) so YMMV - strongly recommend that you test this integration on a dedicated VM or Docker image for that purpose.
- Monitor device status and connections
- Device tracker support
- Optional: view network flows and statistics
- Optional: get alerts for security events
- Make sure you have HACS installed
- Go to HACS > Integrations
- Click the three dots in the top right corner and select "Custom repositories"
- Add this repository URL:
https://github.com/DaneManes/hass-firewalla - Select "Integration" as the category
- Click "ADD"
- Search for "Firewalla" and install it
- Download the latest release from the releases page
- Extract the
firewallafolder from the zip file - Copy the
firewallafolder to your Home Assistant'scustom_componentsdirectory - Restart Home Assistant
- Go to Home Assistant > Settings > Devices & Services
- Click "Add Integration"
- Search for "Firewalla" and select it
- Enter your Firewalla subdomain
- This is the unique subdomain for your MSP account (the part before .firewalla.net)
- Enter your Firewalla API token
- To get your API token, go to your Firewalla MSP account > Account Settings > Create New Token
As of HA 2026.3 the custom integration branding finally works again. You will find appropriate icon files in the /brand directory where you can (manually, sorry) rename the icon of your choice to match your Firewalla model.
- The integration no longer creates separate entities for both alarms and rules. They are now blobbed and need a template to display.
- I've capped the number of alarms returned at 20 - need to put this as a parameter in the setup one day.
- You will need YAML templates to display the alarms and rules - see below.
type: markdown
content: >-
### 🔔 Firewalla Alarm Feed
{% set events = state_attr('sensor.firewalla_recent_alarms', 'recent_events')
%}
{% if events %}
{# Change the display of 10 below to however many alarms you need #}
{% for alarm in events[:10] %}
**{{ (alarm.time | as_datetime).strftime('%x %X') }} | {{ alarm.device }}**
{{ alarm.message }}
***
{% endfor %}
{% else %}
No recent alarms.
{% endif %}
type: markdown
content: >-
### 🛡️ Firewalla Rules
**Total:** {{ state_attr('sensor.firewalla_rules', 'total_rules') }} |
**Active:** {{ state_attr('sensor.firewalla_rules', 'active_rules') }}
{% set rules = state_attr('sensor.firewalla_rules', 'rules_list') %}
{% if rules %}
{% for rule in rules %}
**{{ '🚫' if rule.action == 'block' else '✅' }} {{ rule.name }}**
Target: `{{ rule.target }}` ({{ rule.target_type }}) | Scope: {{ rule.scope }}
***
{% endfor %}
{% else %}
No rules found in attributes.
{% endif %}
- Firewalla does not always return at nice group name for entities where the device has been setup as a "user" on Firewalla. Unfortunately users are not yet returned on the API and you will only get UUID values. There is probably a way to figure this out, but I can live with the limitation at this time.
To get real data from your Firewalla devices:
-
Contact Firewalla Support:
- Ask about the correct API endpoints for your MSP account
- Confirm that your API token has the necessary permissions
- Inquire about any specific API requirements for your account
-
Check API Documentation:
- Verify the correct endpoints in the Firewalla MSP API documentation
- Firewalla MSP API Docs
- Look for any required parameters or headers that might be missing
-
Enable Endpoint Discovery:
- The integration now attempts to discover the correct API endpoints
- Check the logs to see if any endpoints were successfully discovered
-
Enable Debug Logging: Add the following to your
configuration.yamlto get more detailed logs:logger: default: info logs: custom_components.firewalla: debug