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
Código: Seleccionar todo
"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
},Código: Seleccionar todo
"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
},
},
Código: Seleccionar todo
"Activity": {
Código: Seleccionar todo
"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
}
}
},
Código: Seleccionar todo
"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
}
}
},
Código: Seleccionar todo
"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
},
Código: Seleccionar todo
"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
}
Código: Seleccionar todo
"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
}
]
}
},
Código: Seleccionar todo
"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.
}
}
}
Código: Seleccionar todo
"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
}
}
}
Código: Seleccionar todo
"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
},
}
Código: Seleccionar todo
"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.
}
}
Código: Seleccionar todo
"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
}
}
}
Código: Seleccionar todo
"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
}
}
Código: Seleccionar todo
"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
}
}
}
Código: Seleccionar todo
"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
}
},
}