Since the original Egardia integration is outdated/problematic, I built a working Home Assistant integration using Egardia’s cloud portal API.
Tested with:
- Egardia GATE-04
- Home Assistant OS 2026.5.x
- HA on Proxmox
This uses the official Egardia cloud portal (my.egardia.com) via authenticated HTTP requests.
Currently working:
Alarm status (disarmed / armed_home / armed_away)
Arm Away
Arm Home
Disarm
1. Create shell scripts
Create:
/config/scripts/
egardia_login.sh
#!/bin/shcurl -s -c /config/egardia.cookies \ -X POST \ 'https://my.egardia.com/de/home?p_p_id=com_liferay_login_web_portlet_LoginPortlet&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&_com_liferay_login_web_portlet_LoginPortlet_javax.portlet.action=%2Flogin%2Flogin&_com_liferay_login_web_portlet_LoginPortlet_mvcRenderCommandName=%2Flogin%2Flogin' \ -H 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode '_com_liferay_login_web_portlet_LoginPortlet_formDate=1778995960013' \ --data-urlencode '_com_liferay_login_web_portlet_LoginPortlet_saveLastPath=false' \ --data-urlencode '_com_liferay_login_web_portlet_LoginPortlet_doActionAfterLogin=false' \ --data-urlencode '_com_liferay_login_web_portlet_LoginPortlet_login=YOUR_USERNAME' \ --data-urlencode '_com_liferay_login_web_portlet_LoginPortlet_password=YOUR_PASSWORD'
egardia_status.sh
#!/bin/shcurl -s -b /config/egardia.cookies \'https://my.egardia.com/de/group/egardia/summary?p_p_id=portletalarmstatusegardia_WAR_portletliferayalarmsystemegardiawebapp_INSTANCE_HNn7&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&_portletalarmstatusegardia_WAR_portletliferayalarmsystemegardiawebapp_INSTANCE_HNn7_action=getAlarmStatus'
egardia_arm_away.sh
#!/bin/shcurl -s -b /config/egardia.cookies \ -X POST \ 'https://my.egardia.com/de/group/egardia/summary?p_p_id=portletalarmstatusegardia_WAR_portletliferayalarmsystemegardiawebapp_INSTANCE_HNn7&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&_portletalarmstatusegardia_WAR_portletliferayalarmsystemegardiawebapp_INSTANCE_HNn7_action=setAlarmStatus' \ -H 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'json={"atHome":false,"on":true}'
egardia_arm_home.sh
#!/bin/shcurl -s -b /config/egardia.cookies \ -X POST \ 'https://my.egardia.com/de/group/egardia/summary?p_p_id=portletalarmstatusegardia_WAR_portletliferayalarmsystemegardiawebapp_INSTANCE_HNn7&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&_portletalarmstatusegardia_WAR_portletliferayalarmsystemegardiawebapp_INSTANCE_HNn7_action=setAlarmStatus' \ -H 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'json={"atHome":true,"on":true}'
egardia_disarm.sh
#!/bin/shcurl -s -b /config/egardia.cookies \ -X POST \ 'https://my.egardia.com/de/group/egardia/summary?p_p_id=portletalarmstatusegardia_WAR_portletliferayalarmsystemegardiawebapp_INSTANCE_HNn7&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&_portletalarmstatusegardia_WAR_portletliferayalarmsystemegardiawebapp_INSTANCE_HNn7_action=setAlarmStatus' \ -H 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'json={"atHome":false,"on":false}'
Make executable:
chmod +x /config/scripts/*.sh
2. Home Assistant configuration.yaml
shell_command: egardia_login: /config/scripts/egardia_login.sh egardia_arm_away: /config/scripts/egardia_arm_away.sh egardia_arm_home: /config/scripts/egardia_arm_home.sh egardia_disarm: /config/scripts/egardia_disarm.shcommand_line: - sensor: name: Egardia Alarm unique_id: egardia_alarm_status command: /config/scripts/egardia_status.sh scan_interval: 60 value_template: > {% if not value_json.on %} disarmed {% elif value_json.atHome %} armed_home {% else %} armed_away {% endif %}template: - alarm_control_panel: - name: Egardia Alarm Panel unique_id: egardia_alarm_panel code_arm_required: false code_format: no_code state: "{{ states('sensor.egardia_alarm') }}" arm_away: service: shell_command.egardia_arm_away arm_home: service: shell_command.egardia_arm_home disarm: service: shell_command.egardia_disarm
3. IMPORTANT
Before first use:
Run:
/config/scripts/egardia_login.sh
This creates:
/config/egardia.cookies
without this the API calls won't work.
Dashboard
Use:
type: alarm-panelentity: alarm_control_panel.egardia_alarm_panelname: Egardia Alarm
Known limitations
- Uses cloud API (not local LAN API)
- Cookie/session expiry not yet auto-refreshed
formDatemay be static now but could change in future- unofficial / reverse engineered
Future improvements
- auto re-login
- secrets.yaml support
- proper HACS integration
- sensor entities for residents / siren / alarm state
Maybe this helps other Egardia users ![]()