Page 1 of 1

Complete Json Syntax Guide for GTR

Posted: 31 Jan 2020, 09:59
by hikashi
This guide is meant for the py amazfit tool developed by dpeddi and co. Download the py_amazfit_tool fix array branch here:https://github.com/amazfitbip/py_amazfi ... /fix_array

Thanks dpeddi, loly and gthalpo for the continuous development on the py amazfit tool. You guys are amazing!

The syntax will be updated time to time due to the changes and update in the commit.

Some syntax has not been tested and may not work.

BACKGROUND

Code: Select all

  "Background": {
    "Image": {	#Image
      "X": 0,
      "Y": 0,
      "ImageIndex": 0
    },
    "Preview": {
      "X": 0,
      "Y": 0,
      "ImageIndex": 1
    }
    "FrontImage": {    #not much of a use. You can delete this. 
    	"X": 0,
      	"Y": 0,
      "ImageIndex": 2
  },
DIGITAL TIME

Code: Select all

"Time": {
	"Hours": {
		"Tens": {				#ImageSet
			"X": 1,			#coordinateX
			"Y": 2,			#coordinateY
			"ImageIndex": 3,	#Starting Index number from the image number "0"
			"ImagesCount" : 10	#0 to 9
			},
		"Ones": {				#ImageSet
			"X": 1,			#coordinateX
			"Y": 2,			#coordinateY
			"ImageIndex": 3,	#Starting Index number from the image number "0"
			"ImagesCount" : 10	#0 to 9
			},
			},
			
	"Minutes": {
		"Tens": {				#ImageSet
			"X": 1,			#coordinateX
			"Y": 2,			#coordinateY
			"ImageIndex": 3,	#Starting Index number from the image number "0"
			"ImagesCount" : 10	#0 to 9
			},
		"Ones": {				#ImageSet
			"X": 1,			#coordinateX
			"Y": 2,			#coordinateY
			"ImageIndex": 3,	#Starting Index number from the image number "0"
			"ImagesCount" : 10	#0 to 9
			},
			},
			
	"Seconds": {
		"Tens": {				#ImageSet
			"X": 1,			#coordinateX
			"Y": 2,			#coordinateY
			"ImageIndex": 3,	#Starting Index number from the image number "0"
			"ImagesCount" : 10	#0 to 9
			},
		"Ones": {				#ImageSet
			"X": 1,			#coordinateX
			"Y": 2,			#coordinateY
			"ImageIndex": 3,	#Starting Index number from the image number "0"
			"ImagesCount" : 10	#0 to 9
			},
			},
			
	"AmPm": {
		"X": 1,	#coordinateX
		"Y": 2, 	#coordinateY
		"ImageIndexAMCN": 1,	#Image index number for AMPM chinese? You can delete CN and replace with EN
		"ImageIndexPMCN": 2,
		"ImageIndexAMEN": 1,
		"ImageIndexPMEN": 2 
		},
		
	"Delimiter: {	#Image for ':'
     		 "X": 0,
      		"Y": 0,
      		"ImageIndex": 0
      		},
      		},
		
ACTIVITY(Its a long list. Separated into pulse, calories, steps and distance

Code: Select all

"Activity": {
Pulse

Code: Select all

	"Pulse": {		#Number
		"TopLeftX": 0,
		"TopLeftY": 0,
		"BottomRightX": 0,
		"BottomRightY": 0,
		"Alignment": ,		#TopLeft, TopCenter, TopRight, Left, Center, Right, BottomLeft, BottomCenter, BottomRight
		"Spacing":	1,		#Number of pixel space in between number
		"ImageIndex": 1,
		"ImagesCount": 10
		},
		
	"PulseMeter": {	#CircleScale
		"CenterX": 0,
		"CenterY": 0,
		"RadiusX": 5, 
		"RadiusY": 5,
		"StartAngle": 0,		#Circle scale will always rotate clockwise. Zero angle starts from north.
		"EndAngle": 360,	#If starting angle from 3rd and 4th quadrant, use negative angle ie -90
		"Width": 2,		#Pixel width of the circle line
		"Flatness": 0,		#End tip of the scale,  0 for round tip, 180 for flat tip
		"ImageIndex":		#Used for image clipping. Not working for the moment.
		}, 
		
	"ColouredSquares": {		#IconSet, 
		"ImageIndex": 1, 	#Starting image index
		"Coordinates": [		#6 images is recommended for heart rate. 
			{			#Image 1 "Relaxed"
			"X": 0,
			"Y": 0
			},
			{			#Image 2 "Light work"
			"X": 1,
			"Y": 1
			},
			{			#Image 3 "Intense work"
			"X": 2,
			"Y": 2
			},			
			{			#Image 4 "Aerobic region"
			"X": 3,
			"Y": 3
			},
			{			#Image 5 "Anaerobic region"
			"X": 4,
			"Y": 4
			},
			{			#Image 6 "VO2max"
			"X": 5,
			"Y": 5
			}
			]
			},
		
	"PulseGraph":	{		
		"ClockHand":	{	#Clockhand Analog dial for heart rate
			"OnlyBorder": false,
			"Color":	"0x00000000",
			"CenterOffset":	{
				"X": 0,
				"Y": 0
				},
			"Shape":	{
				"X": 0,
				"Y": 0
				},
			"Sector":	{	#Starts from 50bpm and end at 200 bpm. 
				"StartAngle": 0,	#Analog dial requires addition of 2 more digits for decimal points. 
				"EndAngle": 36000	#example 360.00 written as 36000
				},
			"Image":	{	#Image for the analog dial
				"X": 0,
				"Y": 0,
				"ImageIndex": 1
				}
				}
				},	
Calories

Code: Select all

	"Calories": {		#Number
		"TopLeftX": 0,
		"TopLeftY": 0,
		"BottomRightX": 0,
		"BottomRightY": 0,
		"Alignment": ,		#TopLeft, TopCenter, TopRight, Left, Center, Right, BottomLeft, BottomCenter, BottomRight
		"Spacing":	1,		#Number of pixel space in between number
		"ImageIndex": 1,
		"ImagesCount": 10
		},
		
	"CaloriesGraph":	{
		"Circle":	{	#CircleScale
			"CenterX": 0,
			"CenterY": 0,
			"RadiusX": 5, 
			"RadiusY": 5,
			"StartAngle": 0,		#Circle scale will always rotate clockwise. Zero angle starts from north.
			"EndAngle": 360,	#If starting angle from 3rd and 4th quadrant, use negative angle ie -90
			"Width": 2,		#Pixel width of the circle line
			"Flatness": 0,		#End tip of the scale,  0 for round tip, 180 for flat tip
			"ImageIndex":		#Used for image clipping. Not working for the moment.
			}, 
			
		"Clockhand":	{	#Clockhand
			"OnlyBorder": false,
			"Color":	"0x00000000",
			"CenterOffset":	{
				"X": 0,
				"Y": 0
					},
			"Shape":	{
				"X": 0,
				"Y": 0
					},
			"Sector":	{	
				"StartAngle": 0,	#Analog dial requires addition of 2 more digits for decimal points. 
				"EndAngle": 36000	#example 360.00 written as 36000
					},
			"Image":	{	#Image for the analog dial
				"X": 0,
				"Y": 0,
				"ImageIndex": 1
					}
				}
			},	
Steps

Code: Select all

	"Steps":	{	#FormattedNumber
		"Step":	{	#Number
			"TopLeftX": 0,
			"TopLeftY": 0,
			"BottomRightX": 0,
			"BottomRightY": 0,
			"Alignment": ,		#TopLeft, TopCenter, TopRight, Left, Center, Right, BottomLeft, BottomCenter, BottomRight
			"Spacing":	1,		#Number of pixel space in between number
			"ImageIndex": 1,
			"ImagesCount": 10
				},
			},
			
	"StepsGoal":	{	#Number
			"TopLeftX": 0,
			"TopLeftY": 0,
			"BottomRightX": 0,
			"BottomRightY": 0,
			"Alignment": ,		#TopLeft, TopCenter, TopRight, Left, Center, Right, BottomLeft, BottomCenter, BottomRight
			"Spacing":	1,		#Number of pixel space in between number
			"ImageIndex": 1,
			"ImagesCount": 10
				},
				
	"StarImage":	{	#Image that appears when step goal reached
		"X": 0,
 		"Y": 0,
 		"ImageIndex": 0
    		},
Distance

Code: Select all

	"Distance":	{
		"Number":	{	#Number
			"TopLeftX": 0,
			"TopLeftY": 0,
			"BottomRightX": 0,
			"BottomRightY": 0,
			"Alignment": ,		#TopLeft, TopCenter, TopRight, Left, Center, Right, BottomLeft, BottomCenter, BottomRight
			"Spacing":	1,		#Number of pixel space in between number
			"ImageIndex": 1,
			"ImagesCount": 10
				},
		"SuffixImageIndex": 0,	#image for "km"
		"DecimalPointImageIndex": 0
		}
DATE

Code: Select all

"Date":	{
	"MonthAndDay":	{
		"Seperate":	{
			"Month":	{	#Number
				"TopLeftX": 0,
				"TopLeftY": 0,
				"BottomRightX": 0,
				"BottomRightY": 0,
				"Alignment": ,		#TopLeft, TopCenter, TopRight, Left, Center, Right, BottomLeft, BottomCenter, BottomRight
				"Spacing":	1,		#Number of pixel space in between number
				"ImageIndex": 1,
				"ImagesCount": 10
					},
				
			"MonthName":	{		#ImageSet
				"X": 1,			#coordinateX
				"Y": 2,			#coordinateY
				"ImageIndex": 3,	#Starting Index number from the image number "Jan"
				"ImagesCount" : 12	#Jan to Dec
				},
			
			"Day":	{	#Number
				"TopLeftX": 0,
				"TopLeftY": 0,
				"BottomRightX": 0,
				"BottomRightY": 0,
				"Alignment": ,		#TopLeft, TopCenter, TopRight, Left, Center, Right, BottomLeft, BottomCenter, BottomRight
				"Spacing":	1,		#Number of pixel space in between number
				"ImageIndex": 1,
				"ImagesCount": 10
					},
				},
		"OneLine":	{
			"Number":	{	#Number
				"TopLeftX": 0,
				"TopLeftY": 0,
				"BottomRightX": 0,
				"BottomRightY": 0,
				"Alignment": ,		#TopLeft, TopCenter, TopRight, Left, Center, Right, BottomLeft, BottomCenter, BottomRight
				"Spacing":	1,		#Number of pixel space in between number
				"ImageIndex": 1,
				"ImagesCount": 10
				},
			"DelimiterImageIndex":	0	#Image index for seperator "/" or "."
			}
		"TwoDigitsMonth":	,	#True or False
		"TwoDigitsDay":		#True or False
		},
	
	"WeekDay":	{	#ImageSet
		"X": 1,			#coordinateX
		"Y": 2,			#coordinateY
		"ImageIndex": 3,	#Starting Index number from the image number "Monday"
		"ImagesCount" : 7	#Mon to Sun
		},

	"Year":	{
		"OneLine":		{
			"Number":	{	#Number
				"TopLeftX": 0,
				"TopLeftY": 0,
				"BottomRightX": 0,
				"BottomRightY": 0,
				"Alignment": ,		#TopLeft, TopCenter, TopRight, Left, Center, Right, BottomLeft, BottomCenter, BottomRight
				"Spacing":	1,		#Number of pixel space in between number
				"ImageIndex": 1,
				"ImagesCount": 10
				},
			"DelimiterImageIndex":	0	#Image index for seperator "/" or "."
			}
		},
		
	"WeekDayProgress":	{	#IconSet, 
			"ImageIndex": 1, 	#Starting image index
			"Coordinates": [		#7 images is recommended for weekday. 
				{			#Image 1 "Mon"
				"X": 0,
				"Y": 0
				},
				{			#Image 2 "Tue"
				"X": 1,
				"Y": 1
				},
				{			#Image 3 "Wed"
				"X": 2,
				"Y": 2
				},			
				{			#Image 4 "Thu"
				"X": 3,
				"Y": 3
				},
				{			#Image 5 "Fri"
				"X": 4,
				"Y": 4
				},
				{			#Image 6 "Sat"
				"X": 5,
				"Y": 5
				},
				{			#Image 7 "Sun"
				"X": 6,
				"Y": 6
				}
				]
			}
	},			
WEATHER

Code: Select all

"Weather": {
	"Icon":	{
		"Images":	{	#ImageSet
			"X": 1,			#coordinateX
			"Y": 2,			#coordinateY
			"ImageIndex": 3,	#Starting Index number from the image number "Partly Cloudy"
			"ImagesCount" : 25	#PartlyCloudy, CloudyRain, CloudySnow, Sunny, Cloudy, LightRain, LightSnow, Rain, Snow, HeavySnow, HeavyRain, SandStorm, SnowyRain, Fog, Haze, Storm, VeryHeavySnow, FloatingDust, DownPour, Hail, HailStorm, HeavyDownPour, BlowingDust, Tornado, VeryHeavyDownPour
				},
		"NoWeatherImageIndex": 0
			},
			
	"Temperature":	{
		 "Current":	{	#Number
					"TopLeftX": 0,
					"TopLeftY": 0,
					"BottomRightX": 0,
					"BottomRightY": 0,
					"Alignment": ,		#TopLeft, TopCenter, TopRight, Left, Center, Right, BottomLeft, BottomCenter, BottomRight
					"Spacing":	1,		#Number of pixel space in between number
					"ImageIndex": 1,
					"ImagesCount": 10 
		 			},
		 "Today":	{
		 	"Seperate":	{
		 		"Day":		{	#Number
					"TopLeftX": 0,
					"TopLeftY": 0,
					"BottomRightX": 0,
					"BottomRightY": 0,
					"Alignment": ,		#TopLeft, TopCenter, TopRight, Left, Center, Right, BottomLeft, BottomCenter, BottomRight
					"Spacing":	1,		#Number of pixel space in between number
					"ImageIndex": 1,
					"ImagesCount": 10 
		 					},
		 		"Night":		{	#Number
					"TopLeftX": 0,
					"TopLeftY": 0,
					"BottomRightX": 0,
					"BottomRightY": 0,
					"Alignment": ,		#TopLeft, TopCenter, TopRight, Left, Center, Right, BottomLeft, BottomCenter, BottomRight
					"Spacing":	1,		#Number of pixel space in between number
					"ImageIndex": 1,
					"ImagesCount": 10 
		 					}
		 				},
		 	"AppendDegreesForBoth" :		#True or False
		 		},
		 "Symbols":	{
		 	"MinusImageIndex": 0,
		 	"DegreesImageIndex":0,
		 	"NoDataImageIndex":	0
		 			},
		 "TemperatureMeter":	{	#CircleScale
		 	"CenterX": 0,
			"CenterY": 0,
			"RadiusX": 5, 
			"RadiusY": 5,
			"StartAngle": 0,		#Circle scale will always rotate clockwise. Zero angle starts from north.
			"EndAngle": 360,	#If starting angle from 3rd and 4th quadrant, use negative angle ie -90
			"Width": 2,		#Pixel width of the circle line
			"Flatness": 0,		#End tip of the scale,  0 for round tip, 180 for flat tip
			"ImageIndex":		#Used for image clipping. Not working for the moment.
		 					}
		 				}
		 			}
STEPS PROGRESS

Code: Select all

"StepsProgress":	{
	"Sliced"			{	#IconSet, 
			"ImageIndex": 1, 	#Starting image index
			"Coordinates": [		#11 images is recommended for step progress. 
				{			#Image 1 "0%"
				"X": 0,
				"Y": 0
				},
				{			#Image 2 "10%"
				"X": 1,
				"Y": 1
				},
				{			#Image 3 "20%"
				"X": 2,
				"Y": 2
				},			
				{			#Image 4 "30%"
				"X": 3,
				"Y": 3
				},
				{			#Image 5 "40%"
				"X": 4,
				"Y": 4
				},
				{			#Image 6 "50%"
				"X": 5,
				"Y": 5
				},
				{			#Image 7 "60%"
				"X": 6,
				"Y": 6
				},
				{			#Image 8"70%"
				"X": 7,
				"Y": 7
				},
				{			#Image 9"80%"
				"X": 8,
				"Y": 8
				},
				{			#Image 10"80%"
				"X": 9,
				"Y": 9
				},				
				{			#Image 11 "100%"
				"X": 10,
				"Y": 10
				}
				]
					},
					
	"Circle"			{	#CircleScale
		 	"CenterX": 0,
			"CenterY": 0,
			"RadiusX": 5, 
			"RadiusY": 5,
			"StartAngle": 0,		#Circle scale will always rotate clockwise. Zero angle starts from north.
			"EndAngle": 360,	#If starting angle from 3rd and 4th quadrant, use negative angle ie -90
			"Width": 2,		#Pixel width of the circle line
			"Flatness": 0,		#End tip of the scale,  0 for round tip, 180 for flat tip
			"ImageIndex":		#Used for image clipping. Not working for the moment.	
					},
	"ClockHand"		{	#Analog dial for step progress
			"OnlyBorder": false,
			"Color":	"0x00000000",
			"CenterOffset":	{
				"X": 0,
				"Y": 0
					},
			"Shape":	{
				"X": 0,
				"Y": 0
					},
			"Sector":	{	
				"StartAngle": 0,	#Analog dial requires addition of 2 more digits for decimal points. 
				"EndAngle": 36000	#example 360.00 written as 36000
					},
			"Image":	{	#Image for the analog dial
				"X": 0,
				"Y": 0,
				"ImageIndex": 1
					}	
					}	
				}
STATUS

Code: Select all

"Status":	{
	"Bluetooth":	{
		"Coordinates":	{
			"X": 0,
			"Y": 0
					},
		"ImageIndexOn": 0	,
		"ImageIndexOff: 1	
				},
	"Alarm":	{
		"Coordinates":	{
			"X": 0,
			"Y": 0
					},
		"ImageIndexOn": 0	,
		"ImageIndexOff: 1	
				},
	"Lock":	{
		"Coordinates":	{
			"X": 0,
			"Y": 0
					},
		"ImageIndexOn": 0	,
		"ImageIndexOff: 1	
				},
	"DoNotDisturb":	{
		"Coordinates":	{
			"X": 0,
			"Y": 0
					},
		"ImageIndexOn": 0	,
		"ImageIndexOff: 1	
				},				
		}	
BATTERY

Code: Select all

"Battery":	{
	"Text":	{	#Number
		"TopLeftX": 0,
		"TopLeftY": 0,
		"BottomRightX": 0,
		"BottomRightY": 0,
		"Alignment": ,		#TopLeft, TopCenter, TopRight, Left, Center, Right, BottomLeft, BottomCenter, BottomRight
		"Spacing":	1,		#Number of pixel space in between number
		"ImageIndex": 1,
		"ImagesCount": 10 
			},
	"Images":	{	#ImageSet
			"X": 1,			#coordinateX
			"Y": 2,			#coordinateY
			"ImageIndex": 3,	#Starting Index number from the image number "0%"
			"ImagesCount" : 11 	#From 0% to 100%
			},
	"Icons":	{	#IconSet
			"ImageIndex": 1, 	#Starting image index
			"Coordinates": [		#11 images is recommended for Battery. 
				{			#Image 1 "0%"
				"X": 0,
				"Y": 0
				},
				{			#Image 2 "10%"
				"X": 1,
				"Y": 1
				},
				{			#Image 3 "20%"
				"X": 2,
				"Y": 2
				},			
				{			#Image 4 "30%"
				"X": 3,
				"Y": 3
				},
				{			#Image 5 "40%"
				"X": 4,
				"Y": 4
				},
				{			#Image 6 "50%"
				"X": 5,
				"Y": 5
				},
				{			#Image 7 "60%"
				"X": 6,
				"Y": 6
				},
				{			#Image 8"70%"
				"X": 7,
				"Y": 7
				},
				{			#Image 9"80%"
				"X": 8,
				"Y": 8
				},
				{			#Image 10"80%"
				"X": 9,
				"Y": 9
				},				
				{			#Image 11 "100%"
				"X": 10,
				"Y": 10
				}
				]
			},
	"Unknown4":	{	#Analog dial for battery life indicator
			"OnlyBorder": false,
			"Color":	"0x00000000",
			"CenterOffset":	{
				"X": 0,
				"Y": 0
					},
			"Shape":	{
				"X": 0,
				"Y": 0
					},
			"Sector":	{	
				"StartAngle": 0,	#Analog dial requires addition of 2 more digits for decimal points. 
				"EndAngle": 36000	#example 360.00 written as 36000
					},
			"Image":	{	#Image for the analog dial
				"X": 0,
				"Y": 0,
				"ImageIndex": 1
					}	
				},
	"Percent":		{
		"X": 0,
		"Y": 1,
		"ImageIndex": 2
				},
	"Scale":		{	#CircleScale
		"CenterX": 0,
		"CenterY": 0,
		"RadiusX": 5, 
		"RadiusY": 5,
		"StartAngle": 0,		#Circle scale will always rotate clockwise. Zero angle starts from north.
		"EndAngle": 360,	#If starting angle from 3rd and 4th quadrant, use negative angle ie -90
		"Width": 2,		#Pixel width of the circle line
		"Flatness": 0,		#End tip of the scale,  0 for round tip, 180 for flat tip
		"ImageIndex":		#Used for image clipping. Not working for the moment.	
				}
		}
ANALOG DIALS FOR TIME

Code: Select all

"AnalogDialFace":	{
	"Hours":			{
			"OnlyBorder": false,
			"Color":	"0x00000000",
			"CenterOffset":	{
				"X": 0,
				"Y": 0
					},
			"Shape":	{
				"X": 0,
				"Y": 0
					},
			"Image":	{	#Image for the analog dial
				"X": 0,
				"Y": 0,
				"ImageIndex": 1
					}	
					},
	"Minutes":			{
			"OnlyBorder": false,
			"Color":	"0x00000000",
			"CenterOffset":	{
				"X": 0,
				"Y": 0
					},
			"Shape":	{
				"X": 0,
				"Y": 0
					},
			"Image":	{	#Image for the analog dial
				"X": 0,
				"Y": 0,
				"ImageIndex": 1
					}	
					},
	Seconds":			{
			"OnlyBorder": false,
			"Color":	"0x00000000",
			"CenterOffset":	{
				"X": 0,
				"Y": 0
					},
			"Shape":	{
				"X": 0,
				"Y": 0
					},
			"Image":	{	#Image for the analog dial
				"X": 0,
				"Y": 0,
				"ImageIndex": 1
					}	
					}
				}
ANIMATION

Code: Select all

"Unknown11":	{
	"Unknown11_1":	[	#motion path animation
		{	#Object 1. You can add more objects
		"Unknown11d1p1":	0,	#unknown
		"Unknown11d1p2":	{	#Coordinate of initial position
			"X": 0,
			"Y": 0
						},
		"Unknown11d1p2":	{	#Coordinate of final position
			"X": 1,
			"Y": 1
						},
		"ImageIndex": 2,	#Image object
		"Unknown11d1p5":	2000,	#movement speed of object
		"Unknown11d1p6":0,		#unknown
		"Unknown11d1p7": 0,	#unknown
		"Unknown11d1p8": 1,	#unknown
		"Unknown11d1p9": 0,	#unknown
		"Unknown11d1p10": 0	#bounce?
		},
		{	#Object 2. You can add more objects
		"Unknown11d1p1":	0,	#unknown
		"Unknown11d1p2":	{	#Coordinate of initial position
			"X": 0,
			"Y": 0
						},
		"Unknown11d1p2":	{	#Coordinate of final position
			"X": 1,
			"Y": 1
						},
		"ImageIndex": 2,	#Image object
		"Unknown11d1p5":	2000,	#movement speed of object
		"Unknown11d1p6":0,		#unknown
		"Unknown11d1p7": 0,	#unknown
		"Unknown11d1p8": 1,	#unknown
		"Unknown11d1p9": 0,	#unknown
		"Unknown11d1p10": 0	#bounce?
		}
					],
					
	"Unknown11_2":	{	#Frame by frame animation
		"Unknown11d2p1":	{	#ImageSet
			"X": 1,			#coordinateX
			"Y": 2,			#coordinateY
			"ImageIndex": 3,	#Starting Index number
			"ImagesCount" : 10	#Depending on number of animation frames set
						},
		"Unknown11d2p2": 100,		#Animation speed
		"Unknown11d2p3": 0	,		#unknown
		"Unknown11d2p4": 17000	,	#Animation time
		"Unknown11d2p5": 100	,	#Pause time
					}
			}

ANALOG DIALS FOR DATE, DAY AND MONTH

Code: Select all

"DaysProgress":	{
	"AnalogMonth":	{
			"OnlyBorder": false,
			"Color":	"0x00000000",
			"CenterOffset":	{
				"X": 0,
				"Y": 0
					},
			"Shape":	{
				"X": 0,
				"Y": 0
					},
			"Sector":	{	
				"StartAngle": 0,	#Analog dial requires addition of 2 more digits for decimal points. 
				"EndAngle": 36000	#example 360.00 written as 36000
					},
			"Image":	{	#Image for the analog dial
				"X": 0,
				"Y": 0,
				"ImageIndex": 1
					}	
				},
	"UnknownField2":	{	#This is for analog date
			"OnlyBorder": false,
			"Color":	"0x00000000",
			"CenterOffset":	{
				"X": 0,
				"Y": 0
					},
			"Shape":	{
				"X": 0,
				"Y": 0
					},
			"Sector":	{	
				"StartAngle": 0,	#Analog dial requires addition of 2 more digits for decimal points. 
				"EndAngle": 36000	#example 360.00 written as 36000
					},
			"Image":	{	#Image for the analog dial
				"X": 0,
				"Y": 0,
				"ImageIndex": 1
					}	
					},
	"AnalogDOW":	{		#Day of the week
			"OnlyBorder": false,
			"Color":	"0x00000000",
			"CenterOffset":	{
				"X": 0,
				"Y": 0
					},
			"Shape":	{
				"X": 0,
				"Y": 0
					},
			"Sector":	{	
				"StartAngle": 0,	#Analog dial requires addition of 2 more digits for decimal points. 
				"EndAngle": 36000	#example 360.00 written as 36000
					},
			"Image":	{	#Image for the analog dial
				"X": 0,
				"Y": 0,
				"ImageIndex": 1
					}	
				}		
			}
SHORTCUTS

Code: Select all

"ShortCuts" :	{
	"State" :		{	#Steps?
		"Element":	{
			"TopLeftX": 0,
			"TopLeftY": 0,
			"Width": 10,
			"Height": 10
					}
				},
	"Pulse" :		{
		"Element":	{
			"TopLeftX": 0,
			"TopLeftY": 0,
			"Width": 10,
			"Height": 10
					}
				},
	"Weather" :	{
		"Element":	{
			"TopLeftX": 0,
			"TopLeftY": 0,
			"Width": 10,
			"Height": 10
					}
				},
	"Unknown4" :	{	#PowerSaver?
		"Element":	{
			"TopLeftX": 0,
			"TopLeftY": 0,
			"Width": 10,
			"Height": 10
					}
				},
			}

Re: Complete Json Syntax Guide for GTR

Posted: 02 Feb 2020, 00:47
by hikashi
Reference work in progress.

Re: Complete Json Syntax Guide for GTR

Posted: 28 Feb 2020, 22:54
by shirumitsu
can you explain better how to put an animation?

Re: Complete Json Syntax Guide for GTR

Posted: 23 Mar 2020, 19:18
by Maikeldevil
I see in the PY code (Our tool to create our GTR watchfaces) there is worked on child parent base, i also see that the function dayprogress hasnt got its own element yet. I have a problem that i try to get this function dayprogress behind other elements, ideal would be behind the background.

Also in the background there we have a option to set the X and Y for this element but it doesnt work. When image is smaller then 454 x 454 on the gtr its shown in the left upper corner, if we could fix this i can fix my date problem. (rotating date behind clock).

Please help!

Re: Complete Json Syntax Guide for GTR

Posted: 25 Mar 2020, 21:32
by goma
is it possible to put the time in a different time zone? i.e add a few hours to the displayed time?
If I want to display dual time, has to be with an analog display?

Re: Complete Json Syntax Guide for GTR

Posted: 11 Apr 2020, 10:44
by Melmers
I see moon phase icons on a few watchfaces but the display is never active.
Is there any hope for moon phase data?

Current Phase, Moonrise, moonset, sunrise, sunset?
Maybe in the weather data?
Most weather sources have that information too.

Sure would help make some watchfaces a lot nicer :-)

Re: Complete Json Syntax Guide for GTR

Posted: 14 Apr 2020, 13:53
by taw_bip
Regarding JSON syntax, I have a Verge Lite and was looking to layer images in a certain order, similar to the Bip watchface below where the day/date appears above the time. Is there any way to define the order elements display on a watchface?
https://amazfitwatchfaces.com/bip/view/23458

Re: Complete Json Syntax Guide for GTR

Posted: 14 Apr 2020, 14:15
by SashaCX75
[mention]taw_bip[/mention]
At the moment, the order of drawing elements cannot be changed.

Re: Complete Json Syntax Guide for GTR

Posted: 27 Apr 2020, 23:39
by kyle
之前没回复,这次要给大佬点个赞

Re: Complete Json Syntax Guide for GTR

Posted: 12 May 2020, 17:39
by Sandro28
Hello. I have Xiaomi Amazfit bip. can you explain how to add image ? "Background": {
"Image": { #Image
"X": 0,
"Y": 0,
"ImageIndex": 0
},
"Preview": {
"X": 0,
"Y": 0,
"ImageIndex": 1
}
"FrontImage": { #not much of a use. You can delete this.
"X": 0,
"Y": 0,
"ImageIndex": 2
},

I know that this cod must be ... but when I upload watchface in my amazfit I can not see the image (background). how can I fix it ? Or this cod is not for amazfit ?

Re: Complete Json Syntax Guide for GTR

Posted: 14 May 2020, 14:23
by SashaCX75
[mention]Sandro28[/mention]
"Image" - watchface background
"Preview" - Preview on the clock
In amazfit, the preview image does not change.
This code is suitable for GTR. For Bip, the code may differ, depending on which program to package the bin file.

Re: Complete Json Syntax Guide for GTR

Posted: 25 Oct 2020, 11:00
by viper89
Hi, there is any way to set layers? For example i want to put big seconds under hours and minutes thx

Re: Complete Json Syntax Guide for GTR

Posted: 25 Oct 2020, 15:39
by SashaCX75
If you move the second hand from the center, it will be displayed below the minute and hour hands. The rendering order of other elements cannot be changed.

Re: Complete Json Syntax Guide for GTR

Posted: 25 Aug 2021, 13:30
by wanders
I recently got a GTS and I wonder if there is watchface extract / encode / JSON support for three features which I know the watch supports, namely:

* sunrise time
* sunset time
* PAI value (maybe even a shortcut to PAI?)

I know that GTS / GTR are now older models, but I have to believe that the code is not that different from GTS 2. I also noticed that my GTS has an SpO2 sensor on it - what's up with that?

Thanks for any info...

Re: Complete Json Syntax Guide for GTR

Posted: 02 Feb 2022, 16:48
by Floooooo24
Hello Everyone,

is there a way, to display a graph of the Puls, like the preinstalled from amazfit bip s (one of the two customizable?

And ist there a way to display a Calender reminder, also like the preinstalled from amazfit bip s?
Spoiler
Calender reminder
Calender reminder
IMG_20220202_174325.png (780.5 KiB) Viewed 20527 times
Pulse Graph
Pulse Graph
IMG_20220202_174315_v2.png (759.36 KiB) Viewed 20527 times
Thank you for any infos
Flo