Sync your Microsoft 365 / Teams presence and Outlook calendar into Homey automations.
What does this app do?
This app connects your Microsoft 365 account to Homey and creates a virtual “Presence Device” that reflects your current Teams availability and calendar status in real time.
Use it to automate your smart home based on your work schedule — no manual switching needed.
Features
- Tracks your Teams presence: Available, Busy, Do Not Disturb, Away, In a Call, In a Meeting, Presenting, Focusing, and more
- Monitors your Outlook calendar and detects active meetings
- Updates automatically via Microsoft Graph webhooks, with polling fallback
- Supports multiple Microsoft accounts on the same Homey
Capabilities
- Presence state — current Teams availability (11 states)
- In meeting — true when a calendar meeting is active
- Call active — true when a Teams call is in progress
- Do Not Disturb — true when presence is DoNotDisturb, Presenting or Focusing
- Calendar busy — true when Outlook shows Busy or Out of Office right now
- Next meeting — start time of your next upcoming meeting
Flow cards
Triggers (WHEN)
- Presence changed
- A meeting started / ended
- A call started / ended
- Do Not Disturb turned on / off
- Focus time started / ended
Conditions (AND)
- Presence is / is not [state]
- Is / is not in a meeting
- A call is / is not active
- Do Not Disturb is / is not on
- Calendar shows busy / free
Actions (THEN)
Example automations
- When a meeting starts → turn on a “busy” light
- When Do Not Disturb turns on → mute the doorbell
- When presence becomes Available → turn off the status light and resume the robot vacuum
- When focus time starts → close the smart blinds and set the thermostat to focus temperature
Setup
- Install the app and add a new Presence Device
- Sign in with your Microsoft 365 account (work, school, or personal)
- Grant the requested permissions (Presence.Read, Calendars.Read, User.Read)
- Start building Flows!
Download & Test
You can find the live version here:
https://homey.app/a/nl.monkeysoft.microsoft365/
You can find the test version here:
Microsoft 365 | Homey
I’d love your feedback, ideas, or feature requests!
Changelog
- 1.0.0 21 march 2026
First version!
Example Flow
Screenshots
Notes
- Presence data requires a Microsoft 365 work or school account with a Teams license. Personal Outlook.com accounts support calendar sync only.
- The app uses Microsoft Graph webhooks for near-instant presence updates. If webhooks are unavailable, it falls back to 30-second polling automatically.
placeholder for second message
Well done!! Was on my wish list…
Got this message from my employer:
Same here…
This admin consent could be a showstopper in companies where IT departments don’t see the benefits and mainly security risks.
Is there any way to achieve the same without admin consent?
(Probably not, but hey; nothing ventured…
)
No, not at this time because of security and companies policies. Sorry!
Thought so. Thx for the reply.
But technically possible?
I have changed some settings, can you try the new test version?
Tried, but still admin access needed in 1.03… Thank for your efforts
Can confirm this as well. Admin consent needed… ;(
Sorry then your system administrator disabled this kind of integrations.
Is there any way to include the title, location and start date of appointments?
I would love to be able to make my morning routine start based on what event starts, where and when. And I could also make the integrations with my car depending of it.
So for example: if I have a meeting at my client, which is 1:20 hours drive I could make sure my coffee starts in time, my car gets pre heated and the navigation is set.
That’s a great use case! The “An event started” Flow card already provides the appointment’s title, location and start date/time. I’ve now added the location to “An event is about to start” as well, so these details can be used ahead of the appointment. This change hasn’t been published yet.
For your example, you could trigger the routine 90 minutes before the meeting: 80 minutes for driving plus 10 minutes to prepare. Use the Subject or Location tag in a Logic condition to select the relevant appointments, then start your coffee machine, preheat your car and pass the location to a compatible navigation integration.
Set both the Calendar device’s reminder setting and the Flow card to 90 minutes. Currently, there’s one reminder time per calendar device.
Travel time isn’t calculated automatically, and car/navigation actions depend on the Homey integrations you use. The location tag contains the location entered in Outlook, so use a full address if your navigation integration requires one.
I wasn’t aware I was able to retrieve the title of the appointment. How can I do that in a flow?
It will make the advanced flow somewhat more extensive, but it should be fine. I know for example that the meeting “Daily standup” is always at the client. So I could hard code the navigation for my client’s address.
For starting the morning routine it is very useful to add my wife’s calendar. She has different shifts all the time. This way I don’t have to pick up the phone and start the “Out of bed” routine
Found the way how to use the title. It’s (advanced) flows 1:1 
Adding the location would be helpful. This is going to change a lot of the flows that I currently trigger time based.