Zigbee switches offline after a certain period of time (Zigbee2Mqtt, Aqara and Tradfri)

I have a doorbell setup with a Tradfri switch (also tried with Aqara switch), Zigbee2MQTT, automation and scripts triggering notifications. It all works fine when I am testing and finetuning. However, I noticed that after a certain period of time (don’t know exactly but at least 1 hour) the switch device is offline and not publishing to Zigbee2MQTT when pressed. What I noticed from the logs is that in such case the device is announcing itself and after a few seconds when I press the button again, it triggers the automation correctly.

zigbee2mqtt:info  2020-05-01 09:30:42: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"device_announced","message":"announce","meta":{"friendly_name":"tradfri_switch_1"}}'
zigbee2mqtt:info  2020-05-01 09:31:26: MQTT publish: topic 'zigbee2mqtt/tradfri_switch_1', payload '{"linkquality":21,"update_available":true,"battery":74,"click":"on"}'
zigbee2mqtt:info  2020-05-01 09:31:26: MQTT publish: topic 'zigbee2mqtt/tradfri_switch_1', payload '{"linkquality":21,"update_available":true,"battery":74,"click":""}'
zigbee2mqtt:info  2020-05-01 09:31:26: MQTT publish: topic 'homeassistant/device_automation/0x14b457fffe64f74c/click_on/config', payload '{"automation_type":"trigger","type":"click","subtype":"on","payload":"on","topic":"zigbee2mqtt/tradfri_switch_1/click","device":{"identifiers":["zigbee2mqtt_0x14b457fffe64f74c"],"name":"tradfri_switch_1","sw_version":"Zigbee2mqtt 1.13.0","model":"TRADFRI ON/OFF switch (E1743)","manufacturer":"IKEA"}}'
zigbee2mqtt:info  2020-05-01 09:31:26: MQTT publish: topic 'zigbee2mqtt/tradfri_switch_1/click', payload 'on'

Does someone know how I can make sure that the automation is always triggered? The doorbell is useless when going offline after some time.

In my limited experience, battery powered devices will drop if range is challenging.
Solution is to install routers or other mains powered devices.

At the moment I have the Aqara switch installed as door bell and the range should not be the issue with 1 meter from the zigbee hub and only 1 wall in between. From the logs I see that every 40-50 minutes the device publishes its state and the link quality is between 28-55%.

zigbee2mqtt:info  2020-04-30 23:46:06: MQTT publish: topic 'zigbee2mqtt/aqara_wireless_switch_1', payload '{"linkquality":49,"battery":100,"voltage":3035}'
zigbee2mqtt:info  2020-05-01 00:36:17: MQTT publish: topic 'zigbee2mqtt/aqara_wireless_switch_1', payload '{"linkquality":49,"battery":100,"voltage":3035}'
zigbee2mqtt:info  2020-05-01 01:26:23: MQTT publish: topic 'zigbee2mqtt/aqara_wireless_switch_1', payload '{"linkquality":47,"battery":100,"voltage":3035}'
zigbee2mqtt:info  2020-05-01 02:16:29: MQTT publish: topic 'zigbee2mqtt/aqara_wireless_switch_1', payload '{"linkquality":47,"battery":100,"voltage":3035}'
zigbee2mqtt:info  2020-05-01 03:06:35: MQTT publish: topic 'zigbee2mqtt/aqara_wireless_switch_1', payload '{"linkquality":47,"battery":100,"voltage":3035}'
zigbee2mqtt:info  2020-05-01 03:56:41: MQTT publish: topic 'zigbee2mqtt/aqara_wireless_switch_1', payload '{"linkquality":47,"battery":100,"voltage":3035}'
zigbee2mqtt:info  2020-05-01 04:46:48: MQTT publish: topic 'zigbee2mqtt/aqara_wireless_switch_1', payload '{"linkquality":47,"battery":100,"voltage":3035}'
zigbee2mqtt:info  2020-05-01 05:36:58: MQTT publish: topic 'zigbee2mqtt/aqara_wireless_switch_1', payload '{"linkquality":47,"battery":100,"voltage":3035}'
zigbee2mqtt:info  2020-05-01 06:27:05: MQTT publish: topic 'zigbee2mqtt/aqara_wireless_switch_1', payload '{"linkquality":47,"battery":100,"voltage":3035}'
zigbee2mqtt:info  2020-05-01 07:17:11: MQTT publish: topic 'zigbee2mqtt/aqara_wireless_switch_1', payload '{"linkquality":47,"battery":100,"voltage":3035}'
zigbee2mqtt:info  2020-05-01 08:07:18: MQTT publish: topic 'zigbee2mqtt/aqara_wireless_switch_1', payload '{"linkquality":55,"battery":100,"voltage":3035}'
zigbee2mqtt:info  2020-05-01 08:57:26: MQTT publish: topic 'zigbee2mqtt/aqara_wireless_switch_1', payload '{"linkquality":28,"battery":100,"voltage":3035}'
zigbee2mqtt:info  2020-05-01 09:47:33: MQTT publish: topic 'zigbee2mqtt/aqara_wireless_switch_1', payload '{"linkquality":28,"battery":100,"voltage":3045}'
zigbee2mqtt:info  2020-05-01 10:37:39: MQTT publish: topic 'zigbee2mqtt/aqara_wireless_switch_1', payload '{"linkquality":28,"battery":100,"voltage":3035}'