You can create a heartbeat using the interval component, add to the esp
interval:
- interval: 30s
then:
- homeassistant.event:
event: esphome.heartbeat.nodename
Then use an events all with a trigger node after.
[{"id":"021d4406c6878f58","type":"server-events","z":"8e6ef4f6cbb13d83","name":"","server":"6b1110b5.183a4","version":3,"exposeAsEntityConfig":"","eventType":"esphome.heartbeat.nodename","eventData":"","waitForRunning":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"$outputData(\"eventData\").event_type","valueType":"jsonata"}],"x":700,"y":420,"wires":[["fe39495f3aab7683","f63e21cd69a9cfa7"]]},{"id":"f63e21cd69a9cfa7","type":"trigger","z":"8e6ef4f6cbb13d83","name":"","op1":"","op2":"off","op1type":"nul","op2type":"str","duration":"45","extend":true,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":950,"y":420,"wires":[["fe39495f3aab7683"]]},{"id":"6b1110b5.183a4","type":"server","name":"Home Assistant","version":6,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":["y","yes","true","on","home","open"],"connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"id","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true},{"id":"ccb5dd758fcd65c7","type":"global-config","env":[],"modules":{"node-red-contrib-home-assistant-websocket":"0.80.3"}}]