In some cases you just want to display your data on a LaMetric Time and do it in a very simple way. This app allows you to do that in three steps:

  1. Expose your data to some URL available from the Internet or in in the same local network with the device in predefined JSON format (more about that below).
  2. Install My Data DIY app to your LaMetric Time
  3. Configure the app using the URL from step 1 and choose an update interval.


Data Format

Data the app understands must be in JSON format with the following structure:

{
     "frames": [ frame, frame, ...]
}


  • "frames" is an array of "frame" objects. 
  • Each frame occupies a whole screen of LaMetric Time device at a single time.
  • There are three "frame" types
    • simple frame
    • goal frame
    • spike-chart frame
  • Frames get displayed one by one.  The time a frame is displayed can be adjusted using "duration" attribute (works only with frames with non scrollable content) 
  • Number of frames can vary from 1 to 20


Frame Types


Frame has the following structure

{
    "icon": "<icon id or base64 encoded data>",
    "text": "UTF8 encoded text",
    "duration": <integer, time in miliseconds>,
    "goalData" : {
         "start" : <integer, start value>,
         "current" : <integer, current value>,
         "end" : <integer, goal value>
     },
     "chartData" : [ <array of integers> ]
}


Property
Description
icon

(optional).

  • can be an ID of an icon (go to https://developer.lametric.com/icons to browse for icons and know their IDs)
  • can be a base64 encoded binary data of an 8x8 icon in the following format:
    "data:image/png;base64,<base64 encoded png binary>" for PNG image or
    "data:image/gif;base64,<base64 encoded  binary>" for animated GIF image.
textText that will be displayed. If it is too long – it will scroll
duration(optional) Specifies how long a "frame" will be displayed on the screen before proceeding to the next one. There is a limit of 10 seconds for frame.
Works only with frames that do not scroll.
goalData
(optional) Describes frame with the progress indicator. Useful to visualize some kind of goals.
chartData(optional) Describes spike chart. Useful to visualize how data changes over time. Chart will be scaled automatically.


Simple Frame, No Icon


{
  "frames" : [
    { 
      "text" : "hello!"
    }
  ]
}


Simple Frame


{
  "frames" : [ 
    {
      "icon": "794",
      "text": "Hello!"
    }
  ]
}


Goal Frame, No Icon


{
  "frames" : [
    {
      "goalData": {
        "start": 0,
        "current": 6000,
        "end": 10000,
        "unit": "MI"
    }
  ]
}


Goal Frame


{
  "frames" : [
    {
      "icon": "22835",
      "goalData": {
        "start": 0,
        "current": 6000,
        "end": 10000,
        "unit": "MI"
      }
    }
  ]
}


Spike-chart Frame


{
  "frames" : [
    {
      "chartData": [1, 10, 15, 20, 6, 9, 11, 16, 22, 24]
    }
  ]
}


Example

Let's pretend we are developing an app that displays saving for a vacation on a LaMetric Time device. In this case URL must respond with status code 200 and JSON in the following format:


{
    "frames": [
        {
            "text": "SAVINGS",
            "icon": "61"
        },
        {
            "goalData": {
                "start": 0,
                "current": 1500,
                "end": 2000,
                "unit": ""
            },
            "icon": "34"
        },
        {
            "index": 2,
            "chartData": [
                10,
                20,
                5,
                40,
                20,
                15,
                20
            ]
        }
    ]
}


And this is what we get

If you still have any questions – let us know!

Enjoy!