• Administrator
  •  
    Support Ukraine
    If you experience any problems with the forum (it is not visible, there is no way to post messages, or some functionality does not work), please let us know. If you have problems with registration or you did not receive confirmation letter, let us know and we will activate your account manually.
    If you get an "The submitted form was invalid. Try submitting again" error, delete cookies, then try again.
     

Watch face editor for Amazfit watch on ZeppOS

This forum is designed to discuss and develop tools creating watch faces.

Moderators: asoo, lvpokka, Internal error, Watchmens

Forum rules
All communication in this branch should only be in English.
To discuss tools that are not in this section, use the “Watchfaces tools (discussion)” forum.
User avatar
SashaCX75
Posts: 812
Joined: 26 Oct 2019, 15:18
Location: Ukraine
Has thanked: 13 times
Been thanked: 1006 times
Contact:

Watch face editor for Amazfit watch on ZeppOS

Post by SashaCX75 »

Alternative watch face editor for Amazfit watch on ZeppOS.
Supported watch models
- Amazfit Active
- Amazfit Active 2
- Amazfit Active 2 (Square)
- Amazfit Active Edge
- Amazfit Active Max
- Amazfit Band 7
- Amazfit Balance
- Amazfit Balance 2
- Amazfit Bip 5
- Amazfit Bip 5 Unity
- Amazfit Bip 6
- Amazfit Cheetah
- Amazfit Cheetah Pro
- Amazfit Cheetah (Square)
- Amazfit Cheetah 2 Pro
- Amazfit Falcon
- Amazfit GTR 3
- Amazfit GTR 3 Pro
- Amazfit GTR 4
- Amazfit GTR mini
- Amazfit GTS 3
- Amazfit GTS 4
- Amazfit GTS 4 mini
- Amazfit T-Rex 2
- Amazfit T-Rex 3
- Amazfit T-Rex 3 Pro
- Amazfit T-Rex Ultra
- Amazfit T-Rex Ultra 2
When unpacking the watch faces, it is advisable to immediately select the correct watch model, otherwise the colors may be distorted.

It is desirable to create a new project in a separate folder. Image names do not have to consist only of numbers, you can add short prefixes (for example, date_01, time_01).
Watch faces created in the editor and on Huami's website should unpack normally. Watch faces from Zepp and those created based on them will not be unpacked.
In a set of images for displaying one parameter (for example, images for displaying the day of the week), all images should preferably be the same size. If the size of the images is different, then the first image in the set should be the largest.

All new features in this and next release will be tested on the GTR4 and may not work on other models.
List of changes
v17.1
Fixed the bugs that were found.
Added support for Cheetah 2 Pro.
v17.0
Added the ability to create a ZAB file for publication in the store (button in settings)
Added wind speed in km/h
Added atmospheric pressure in mm Hg
Added support for T-Rex Ultra 2.
v16.1
The ability to invert time circles has been added.
Active Max support has been added.
Image file name verification has been added.
The behavior of application shortcuts in editable elements has been fixed.
v16.0
Added sleep widget.
Added text widgets.
v15.1
Added support for new watch models.
Added BioCharge widget.
Added buttons to launch new applications.
v15.0
Time circles added.
Added world time (time, city, time zone, time offset).
Added text display around the circle.
Added the ability to create watch faces in developer mode (for experienced users, allows logs to be displayed in watch faces).
v14.0
Added support for widgets: ALARM_CLOCK, TRAINING_LOAD, VO2MAX, AQI, BODY_TEMP, FLOOR, READINESS, HRV.
Added support for Balance 2.
Changed the structure of the Preview.States file.
When creating an animated preview, frames with a switchable background have been added.
Added the ability to display the city name in uppercase letters in the weather forecast.
Added links to lessons.
v13.2
Added support for Bip 6.
Fixed the progress display using the image set for most widgets. It should now be more similar to how it is displayed on the watch.
Reworked the code for displaying heart rate with a circular scale. It now uses the standard widget in place of the sensor.
Fixed PAI progress display. Note that the maximum value for the PAI pointer is 525, not 100. This is a feature of the watch, not the editor.
Added warning if files in watch face are in *.bin format.
v13.1
Added ability to make a shortcut to any application in editable items.
Added support for Active 2.
Fixed display of buttons and shortcuts when creating a GIF file.
v13.0
Added autosave (enabled in settings).
Added ability to switch background image by tap.
Added ability to switch background colour by tap.
v12.1
Added transparency for some widgets. Does not work on all models.
Added support for Amazfit T-Rex 3.
v11.2
Fixing the smooth second hand on the GTR4.
v11.1
Updated the digital time widget.
Updated shortcuts widget.
Added new application launch commands for buttons.
v11.0
Completely redesigned the weather widget.
Added weather widget for several days (forecast).
Added support for Bip 5 Unity.
v10.4
Added ability to display month names in a font.
Added Compass widget (works on ZeppOS 2 or later).
Added ability to create *.zpk file (enabled in settings).
v10.3
Added display of hours:minutes:seconds in a single line font.
Added display of date/month/year in one line font (order depends on the watch setting).
Added display of the day of the week in font.
Added new presets for button functions.
v10.2
Added ability to copy widget properties (context menu on the properties field).
v10.1
Added display of time and date in font.
Added widget for adding scripts to watch face.
Fixed bugs in sunrise/sunset operation on circle and at an angle.
Fixed bugs in digital time alignment.
v10.0
]Added support of fonts for data display (after installing such watch faces it is better to restart the watch).
Added possibility to display altitude (in barometer).
Completely redesigned the moon widget.
The arrow pointer for sun and moon should now not be displayed after sunset.
All images are now copied to the watch face, even if they are in folders.
v9.1
Fixed working with Amazfit Balance.
Added support for Amazfit Active.
Added support for Amazfit Active Edge.
Fixed display of distance on a circle.
Fixed displaying sunrise and sunset at an angle.
Added ability to convert images to ARGB format in settings.
Fixed continuous vibration in notifications.
v9.0
Added ability to create shortcuts for a set of images (IMG_LEVEL).
Added support for buttons and presets to launch inbuilt apps.
Added support for Amazfit Balance (not tested).
v8.2
Added ability to display angled or circumferential data for sunrise/sunset, maximum and minimum temperatures (for weather, separate units of Celsius and Fahrenheit only work on newer models).
Added support for Cheetah / Cheetah Pro.
Added support for Bip 5.
Theoretically it is now possible to add support for new models by editing the file in the model_config folder.
v8.1
Added ability to display data at an angle or in a circle for date and time.
Fixed found errors when unpacking dials.
Fixed found errors when working with UHD monitors.
v8.0
Added support for T-Rex Ultra
Added support for GTR Mini
Added the ability to display data at an angle or in a circle (battery, steps, distance, calories, heart rate, PAI, SpO2, stand)
v7.3
Fixed problems with icons in editable items.
Fixed problems with circular progress in editable items.
Added ability to set data rotation angle for some models (ZeppOS 2).
Improved algorithm for unpacking dials that contain additional features. Increased probability of partial dial recognition.
v7.2
Added the ability to change the type of line ending for linear and circular progress.
Added the ability to create shortcuts without using an image.
v7.1
Added independent element with image and top image.
For editable items on the clock, an additional selection in the form of a list is included.
Changed the function of creating an editable element for fat burning.
Fixed motion animation and rotation animation for GTR4 and GTS4.
Added wind direction.
Updated watch face file format.
v7.0
Added smooth second hand (several types)
Added alert every hour
Added the ability to change the direction of rotation of the hour hands
Added the ability to set the sector in which the hour hands work
v6.4
Improved the stability of the bluetooth connection loss notification function
Updated German and Spanish translation
v6.3
Added the possibility of notifications when the connection is broken and restored
Fixed work progress for fat burning
Fixed work progress for the pulse
Fixed bugs in temperature display
Fixed display of shortcuts in AOD mode
v6.1
Added Falcon support.
Changed the algorithm of shortcuts to eliminate conflicts with editable elements.
The configuration of created watch faces has been updated to version 2.
v6.0
Added support for editable background.
Added support for editable arrows.
Added support for editable elements.
Added German translation.
v5.0
Added support for GTR 4
Added support for GTS 4 Mini
Added support for Amazfit Band 7 (not to be confused with Mi Band 7)
v4.1
Fixed bugs when creating and unpacking GTR 3 Pro watch faces
v4.0
Added animation support.
Added Ukrainian language.
Added a tab with some tips on working with the editor.
Added the ability to display the distance in miles.
v 3.0
Added sunrise / sunset
Added barometer
Added stress
Wind added
Added fat burning
Added moon phases
v 2.0
Added weather.
Added workout (stand).
Added oxygen (SpO2).
Added humidity.
Added UV index.
Added the ability to highlight shortcuts when saving gif files (enabled in the settings).
Updated the display of shortcuts in connection with the firmware update on the watch.
Added Italian language.
Added Spanish language.
v 1.1
Fixed loss of error symbol for pulse.
Fixed errors when unpacking dials.
Fixed bug with incorrect model definition for GTS 3.
Version 17.1
Fixed the bugs that were found.
Added support for Cheetah 2 Pro.
Old versions
PS. The interface was translated using an online translator. If someone wants to improve the translation, then write to the PM.

PS2. Many people ask how to install watch faces. For starters, I advise you to read this topic. Personally, I prefer to use this program to install the created watch faces on the GTR 3 (for the GTS 3)

Сollection of code examples for use in watch faces.

Donate to the author - PayPal: [email protected].
Buy me a coffee
Last edited by SashaCX75 on 10 May 2026, 15:38, edited 52 times in total.
Zritwo
Posts: 2
Joined: 30 Jan 2024, 14:51
Location: china
Contact:

Post by Zritwo »

I found that Amazfit balance sunrise and sunset can't change image ,Did I make a mistake?
toolsrme
Posts: 19
Joined: 04 Aug 2023, 18:36
Location: Missouri
Has thanked: 9 times
Contact:

Post by toolsrme »

@SashaCX75

Is there a way to stop the 'am' or 'pm' from being added to the display when using the "TT Hours : minutes" element of the "12 Digital time" widget? I can pick from 'am', 'Am', 'AM' it seams, but would like to remove it altogether and handle it on its own.
1mylord
Posts: 15
Joined: 18 Jan 2022, 02:52
Location: 충청북도 영동군
Has thanked: 1 time
Contact:

Post by 1mylord »

Thank you always.
Is there a way to make the desired image appear for a certain amount of time (about 10 seconds) by touching an area or button?
Please let me know if I need to add a script.
User avatar
SashaCX75
Posts: 812
Joined: 26 Oct 2019, 15:18
Location: Ukraine
Has thanked: 13 times
Been thanked: 1006 times
Contact:

Post by SashaCX75 »

@1mylord
You can try to use the button to start a timer and change the visibility of the image at the required intervals. To do this, you need to modify the watch face code.

You can try to use frame-by-frame animation in the editor.
1mylord
Posts: 15
Joined: 18 Jan 2022, 02:52
Location: 충청북도 영동군
Has thanked: 1 time
Contact:

Post by 1mylord »

SashaCX75, Thank you very much for your quick response.
Last edited by 1mylord on 18 Feb 2024, 14:34, edited 1 time in total.
Powerade001
Posts: 11
Joined: 05 Mar 2021, 01:47
Location: Nicolet
Has thanked: 12 times
Been thanked: 1 time
Contact:

Post by Powerade001 »

Hey SashaCX75,

Thank you for your Zepp app 'bluetooth notify'. I don't need to edit every watchface I download anymore to have the bluetooth disconnect notification.

Have a nice day!

Allan
User avatar
bjk8kds
WF maker
Posts: 9
Joined: 27 Apr 2019, 16:45
Location: Indonesia
Has thanked: 12 times
Contact:

Post by bjk8kds »

Thank you very much..
slimak131
Posts: 6
Joined: 24 Sep 2022, 04:21
Location: Warszawa
Contact:

Post by slimak131 »

Gtr4/Balance

After using any program, the double shortcuts on the watch face (short tap, long tap) stop working. This happens until you use any other operation on the watch.
Is there any solution?

edit
this error only occurs when exiting the application using a physical button. Exiting the application by touching the screen does not cause an error.
wanders
Posts: 19
Joined: 02 Jul 2020, 00:06
Location: Austin TX USA
Been thanked: 1 time
Contact:

Post by wanders »

@SashaCX75 , thanks for another great watchface tool.

I'm probably doing something wrong, but when I select "Random preview" or generate an animated .gif, I get random values that are clearly unconstrained, e.g.:
Spoiler
Image
Since I want to use the .gif as a promotion on AmazfitWatchfaces, and since I'm generating this watchface in 11 languages, including Ukrainian, I'd like to have more-or-less valid random samples. What do I need to do to constrain the random values to valid timestamps? BTW, this is a 12-hour watchface, but I'll be doing 24-hour versions for the non-English versions.
User avatar
asoo
Posts: 2103
Joined: 03 Jan 2019, 01:48
Location: ͼͽ Thailand ͼͽ
Has thanked: 404 times
Been thanked: 2018 times

Post by asoo »

wanders wrote: 28 Feb 2024, 00:13
Spoiler
@SashaCX75 , thanks for another great watchface tool.

I'm probably doing something wrong, but when I select "Random preview" or generate an animated .gif, I get random values that are clearly unconstrained, e.g.:
Spoiler
Image
Since I want to use the .gif as a promotion on AmazfitWatchfaces, and since I'm generating this watchface in 11 languages, including Ukrainian, I'd like to have more-or-less valid random samples. What do I need to do to constrain the random values to valid timestamps? BTW, this is a 12-hour watchface, but I'll be doing 24-hour versions for the non-English versions.
Since there is no watch face to check, I would like to suggest and guess as follows.
You could try checking the file sorting of numbers that is used to display images of the viewing time. It looks like there might be an incorrect sorting error.

And in naming the file, I recommend the following:
if you use a name that consists of 1 digit. It is recommended to start at 0, such as Time0-Time9 or Time_0 - Time_9.

If you use 2 digits and start at 1, it is recommended that the number that follows has 2 digits, such as Time_01 - Time_10.

As far as I've ever created the preview.gif by random, I haven't encountered any of the above problems.

But if you check If everything is set correctly, you can try customizing the settings to create a Preview.gif by:
Edit ---> Data for preview --> Set your desired values in "Values1 - 12"
Then Save Preview Values to keep for future use.
Next time, if you want to make a preview as set, "load Value" before creating the preview.gif.

Hope it will be useful to you.
ͼͽ To request please use the interrelated forum in action ͼͽ
Please do not PM to me for requests ported watchface.
wanders
Posts: 19
Joined: 02 Jul 2020, 00:06
Location: Austin TX USA
Been thanked: 1 time
Contact:

Post by wanders »

@asoo , thanks, that looks like the ticket!

Duh, I had the hours digits aligned left, not right. That was my REAL problem.

Thanks, again @SashaCX75 and @asoo
User avatar
SashaCX75
Posts: 812
Joined: 26 Oct 2019, 15:18
Location: Ukraine
Has thanked: 13 times
Been thanked: 1006 times
Contact:

Post by SashaCX75 »

Random preview data has the same limitations as normal previews. These errors usually occur if there are problems with image sorting.

Random preview data is best used to check that individual elements are displayed correctly. I would not recommend using them for creating gif files.

When opening a project, the data is generated randomly if there are no saved preview settings. But in this mode the gif file will contain all days of the week and all months. This helps to notice possible errors. Otherwise, data generation by the button and when opening a project does not differ.
Franckiam
WF maker
Posts: 1
Joined: 01 Mar 2024, 18:38
Location: Le Diamant
Has thanked: 1 time
Contact:

Post by Franckiam »

Hello, I have an Amazfit Active for a short time, "Watch Face Editor" V10.3 allows you to make WatchFaces for this model, but after I found no way to be able to install it on my watch. Anyone have a solution?

edit: android 12 - zepp 8.5.3
User avatar
asoo
Posts: 2103
Joined: 03 Jan 2019, 01:48
Location: ͼͽ Thailand ͼͽ
Has thanked: 404 times
Been thanked: 2018 times

Post by asoo »

Franckiam wrote: 02 Mar 2024, 13:29
Hello, I have an Amazfit Active for a short time, "Watch Face Editor" V10.3 allows you to make WatchFaces for this model, but after I found no way to be able to install it on my watch. Anyone have a solution?

edit: android 12 - zepp 8.5.3
Try reading this thread.
It involves installing watchface on Balance using QR Code, but this method can be used with Active and devices that use Zeppos as well.
viewtopic.php?p=17161#p17161

It has been confirmed that this method can be used with Active.
viewtopic.php?p=17456#p17456
ͼͽ To request please use the interrelated forum in action ͼͽ
Please do not PM to me for requests ported watchface.
dohanin
WF maker
Posts: 6
Joined: 10 Feb 2019, 00:07
Has thanked: 1 time
Contact:

Post by dohanin »

[deleted]
Last edited by dohanin on 08 Mar 2024, 15:39, edited 1 time in total.
wanders
Posts: 19
Joined: 02 Jul 2020, 00:06
Location: Austin TX USA
Been thanked: 1 time
Contact:

Post by wanders »

I'm struggling to get the behavior I want out of hmUI.widget.IMG_LEVEL for PAI, and I'm trying to understand how the IMG_LEVEL widget works. I hope this subject is appropriate for @SashaCX75 's thread. If not, please let me know where to post.

The desired behavior: a PAI icon is displayed on the watchface. When a weekly PAI level is above 100 (the target or goal), another image is displayed (this is the IMG_LEVEL image).

What I don't understand is how many images need to be in the array (it seems like only one should be necessary) and how the code understands at what level to display the image in the array.

The relevant code from index.js (generated by the SashaCS75's tool) is:
Spoiler

Code: Select all

            normal_pai_icon_img = hmUI.createWidget(hmUI.widget.IMG, {
              x: 310,
              y: 220,
              src: 'pai_icon.png',
              show_level: hmUI.show_level.ONLY_NORMAL,
            });

            normal_pai_image_progress_img_level = hmUI.createWidget(hmUI.widget.IMG_LEVEL, {
              x: 310,
              y: 220,
              image_array: ["pai_000.png","pai_001.png"],
              image_length: 2,
              type: hmUI.data_type.PAI_WEEKLY,
              show_level: hmUI.show_level.ONLY_NORMAL,
            });


So, there is no level indicated here. I assume that the level sampled is totalpai, and that this is implicitly set by type: hmUI.data_type.PAI_WEEKLY. Even if this is the case, how is the index for the image array computed? I cannot find the documentation for this in the online documents for Zepp OS.

Eventually, once I get this working, I'll do similar IMG_LEVEL things with a PAI_DAILY widget.

Thanks in advance for any help.
User avatar
SashaCX75
Posts: 812
Joined: 26 Oct 2019, 15:18
Location: Ukraine
Has thanked: 13 times
Been thanked: 1006 times
Contact:

Post by SashaCX75 »

@wanders
The image display algorithm for the IMG_LEVEL widget has changed in different firmware. Previously it worked the way you do it. I don't know what the algorithm is now. I can advise you to try to use only 1 image.
wanders
Posts: 19
Joined: 02 Jul 2020, 00:06
Location: Austin TX USA
Been thanked: 1 time
Contact:

Post by wanders »

“If you want a thing done well, do it yourself.” - Napolean Bonaparte

I'm trying to follow Napolean's advice; I'm trying to get precise control of an IMG_LEVEL widget associated with steps. In the code below (inserted before widgets are constructed), I create a step sensor, an IMG_LEVEL widget with two images, set the level to 1, and I set up a callback routine when the step count changes. In the callback, if the step count is greater than the target, I set the level to 2.
Spoiler

Code: Select all

         // start user_script_start.js

        let normal_step_image_progress_img_level = ''

	const step = hmSensor.createSensor(hmSensor.id.STEP);
		
	normal_step_image_progress_img_level = hmUI.createWidget(hmUI.widget.IMG_LEVEL, {
		x: 14,
		y: 221,
		image_array: ["shoe_000.png","shoe_001.png"],
		image_length: 2,
		show_level: hmUI.show_level.ONLY_NORMAL,
		level: 1,
        });

	step.addEventListener(hmSensor.event.CHANGE, function () {
		if ( step.current >= step.target ) {
			normal_step_image_progress_img_level.level = 2;
		};
	});
	
        // end user_script_start.js
However, nothing is happening. I can think of several possibilities:

a) The widget is out of scope in the callback (I'm not a JS expert, not even a novice)
b) I'm using IMG_LEVEL wrong (I'm used to zero-indexed arrays)
c) I'm setting up the sensor and/or callback incorrectly.
d) My code is located in the wrong place in the script.

I'm entirely new to JS, and I'll only use it for ZeppOS watchfaces. Any help / advice would be warmly welcomed.
Last edited by wanders on 09 Mar 2024, 23:06, edited 1 time in total.
User avatar
SashaCX75
Posts: 812
Joined: 26 Oct 2019, 15:18
Location: Ukraine
Has thanked: 13 times
Been thanked: 1006 times
Contact:

Post by SashaCX75 »

You are trying to change the widget properties incorrectly. You can read about how to change widget properties here
https://docs.zepp.com/docs/watchface/ap ... tProperty/

In your case it is better to use hmUI.widget.IMG widget. Depending on the conditions, change the image using the command

Code: Select all

widget_name.setProperty(hmUI.prop.SRC, 'img.png');
or hide the widget

Code: Select all

widget_name.setProperty(hmUI.prop.VISIBLE, false);
wanders
Posts: 19
Joined: 02 Jul 2020, 00:06
Location: Austin TX USA
Been thanked: 1 time
Contact:

Post by wanders »

Thanks, @SashaCX75, that did the trick. I'm wondering if the sensor callbacks have an impact on performance, as the step counter (numerals) seem to have indeterminate lags, but then they've always been a bit laggy.

By the way, do you know if the PAI sensor also has a callback / "event listener" capability with a CHANGE event trigger? All the other sensors seem to have this capability, but it doesn't seem to be documented in the ZeppOS pages, if it does exist.
dohanin
WF maker
Posts: 6
Joined: 10 Feb 2019, 00:07
Has thanked: 1 time
Contact:

Post by dohanin »

Hello, I'm using GTS 4 Mini. I found that not all data on the AOD screen is updated immediately. Some are only updated after going back to normal mode. Is there a way to force these data update while staying in AOD? I guess probably it has something to do with sensors and event listeners. But I'm not a programmer, so would be glad if someone could give me a hint! Thanks.
dohanin
WF maker
Posts: 6
Joined: 10 Feb 2019, 00:07
Has thanked: 1 time
Contact:

Post by dohanin »

Hello, is there a way to put music control directly as buttons on the watchface, say, the "Prev"/"Play"/"Next" buttons?
I can see from the Zepp OS documentation (https://docs.zepp.com/docs/1.0/watchfac ... rId/MUSIC/) that there are functions for these buttons, e.g. music.audPlay() , but I don't know how to put these in to the code session of the watch face editor.
User avatar
SashaCX75
Posts: 812
Joined: 26 Oct 2019, 15:18
Location: Ukraine
Has thanked: 13 times
Been thanked: 1006 times
Contact:

Post by SashaCX75 »

@dohanin
You can read about using the buttons here https://docs.zepp.com/docs/1.0/referenc ... et/BUTTON/
In the past you could only control music playback on the watch, not on the phone. I don't think that's changed.
User avatar
SashaCX75
Posts: 812
Joined: 26 Oct 2019, 15:18
Location: Ukraine
Has thanked: 13 times
Been thanked: 1006 times
Contact:

Post by SashaCX75 »

Version 10.4
Mirror
Added ability to display month names in a font.
Added Compass widget (works on ZeppOS 2 or later).
Added ability to create *.zpk file (enabled in settings).
Last edited by SashaCX75 on 25 Mar 2024, 20:37, edited 1 time in total.
dohanin
WF maker
Posts: 6
Joined: 10 Feb 2019, 00:07
Has thanked: 1 time
Contact:

Post by dohanin »

SashaCX75 wrote: 24 Mar 2024, 17:35
@dohanin
You can read about using the buttons here https://docs.zepp.com/docs/1.0/referenc ... et/BUTTON/
In the past you could only control music playback on the watch, not on the phone. I don't think that's changed.
Thanks for your reply. As I'm using Gadgetbridge and Tasker on my phone, I am able to catch logcat entries for actions of pressing buttons on the watch's music app, but am still not able figure out how to send data directly by pressing a button on the watchface. I can see the watch would send data to the phone for activities such as changing the step target, removing a to-do list item, etc., but these are triggered by the other watch apps. If I can, for example, set the step target by pressing a button on the watchface, then it may be possible to catch such action on the phone, but I don't know how. If you have any idea how this can be done, please give me some hints, thanks!
Post Reply

Return to “Watchfaces tools”

Who is online

Users browsing this forum: No registered users and 2 guests