Here is a walk through:
To setup Apple Watch complications, open the Home Assistant iOS companion app and go to “App Configuration” under the menu and then select “Apple Watch”.
Add the complication to Home Assistant:
To add a new complication select “Add”
Pick the type of complication that you want to add. The type of complication will determine which watch faces it will work with.
This page from Apple shows you what the different complication types look like:
https://developer.apple.com/design/human-interface-guidelines/watchos/overview/complications/
Lets walk through an example using “Circular Small” because that is usable in several different watch faces.
And lets assume that you have a sensor in Home Assistant that provides the temperature for your bedroom called “sensor.bedroom_temperature”.
Ok, so at this point you should have picked “Add” and then picked “Circular Small”.
Set the name of your complication:
First set the “Display Name” so that you can recognize it on your Apple Watch. For this, lets change the Display Name to “Bedroom temp”. (You don’t need to put a name here, it’s just makes it easier for you to know which complications are which).
Fill out what you want the complication to display:
Ok for the “Template” we want to show a temperature (number) with a ring around it. So select “Template” and change it to “Ring Text”
Now, in the “Inside Ring” text box enter the template that will return the value of your temperature sensor. For this example it will be:
{{ states("sensor.bedroom_temperature") }}
Now press “Preview Output” and it should show you the current value of your bedroom temperature sensor. If it doesn’t, then you didn’t do something correct in the template.
You should be able to use the same templates here that you would use other places in Home Assistant.
Ok, now click “Color” and then pick the color you want the text to be.
Now we want to set how much of the outside sensor is filled.
In the text box below “Ring” you need to enter a template that will return a value between 0 and 1 which will control how much of the ring is filled.
Assuming your temperature is in Fahrenheit, lets use the value that we get from dividing the temperature by 100. So to do that use the following template:
{{ states("sensor.bedroom_temperature")|float / 100.0 }}
That gets the sensor value, turns it into a floating point number and then divides it by 100.
Again, select “Preview Output” and you should see a number between 0.0 and 1.0 that corresponds to your temperature.
Now select the color for the ring.
And now Save your complication by hitting “Save” in the top right corner.
Sync the complication to your watch:
Your complication is now (almost) ready to use on your Apple Watch. Before it can be used, the Apple Watch iOS app needs to sync with the Apple Watch.
One way you can force it sync is as follows:
1. In the Home Assistant Companion app, navigate to App Configuration -> Apple Watch and stay on that screen (you should already be here after saving)
2. Now launch the "Home Assistant" Apple Watch app on your watch.
3. Press the Back button inside Home Assistant Companion mobile app, bringing you back to the main settings screen.
4. Press "Done" in the top right to sync and update the complications on your Apple Watch.
Now the complication should be ready to use in your Apple Watch.
Add the complication to a watch face:
Pick a watch face that supports the Circular Small complication like “Color”
Edit the complications and for “Top Left”, scroll down to Home Assistant and select “Bedroom temp”
Boom! You have the temperature from Home Assistant on your watch. Yay!