I formulate the rule so: "The time phrase in clause employing the present perfect cannot exclude the present".
"Yesterday" doesn't work with present perfect. "Last week" doesn't work either. Both of those phrases exclude the present.
"This morning" only works if it is still in the AM. When it is afternoon, "this morning" excludes the present, so use past with "this morning" when the time of the speaking is PM.
I have seen him this morning. (only if it is still AM)
I saw him this morning. (when it is PM)
"3PM" only works with the present perfect at precisely 3PM. On the stroke of 3PM it would be grammatical to say:
There! I've taken my medicine at 3PM just as I was supposed to do.
Once it is no longer 3PM (e.g. 3:01PM), use the past:
I took my medicine at 3PM just as I was supposed to do.
You could say (if you still live in London):
I have woken up at 5AM every day since I moved to London.
The relevant time phrase is since I moved to London.
This would be ungrammatical:
I have woken up at 5AM every day when I lived in London. ungrammatical