Mapping a Corn Maze with a GPS watch

The entrance to the maïsdoolhof: La Vuelta themed

A few weeks ago I did a corn maze with a friend. In honor of La Vuelta that recently passed nearby, the maze was Vuelta/bike themed. I turned on my Garmin watch to see if I would be able to see the pattern in our path.

The goal of the maze was to find all the numbered posts and their associated letter. Once you found all (or enough) of the letters, you can rearrange them to discover the phrase. We were able to find all but two letters, couldn’t guess the phrase, and turned to the cheat sheet to find the last two.

The elevated platform didn’t offer much help for solving the maze

Disclaimer: this post is decidedly not in the software section. We just enjoyed wandering the maze and took no optimal routes!

Our path from the Garmin GPS on the actual maze

As you can see, it didn’t record the path very well. Unfortunately the resolution was not high enough to make out much of the maze. I had left the Garmin on its default of “Smart Recording.” However, “Every Second Recording” might have yielded higher resolution and better results.

Exporting Eufy Smart Scale’s raw data from android

From a default to a custom chart.

Eufy Smart Scale and App

I recently purchased a Eufy Smart Scale. Not only does it automatically record my weight and upload it to the Eufy app, it also provides a breakdown for details like muscle mass, body fat, and more. While I enjoy having the data conveniently recorded, the charts fail to answer questions I have. Like how does my data vary over periods of more than a week? Is there a correlation between time of day and my weight, or day of the week and weight? To answer these questions and more, I wanted to get Eufy Smart Scale’s raw data off my phone and onto my computer. While these steps are specific to Eufy’s app, they can work for other android apps, too.

Getting Eufy Smart Scale’s raw data

To get the data, some special software is required. Fortunately, you do not need to root your phone to make it work. While these steps are focused on Windows, they should also work for Mac or Linux with a few changes.

      1. First, create a folder for us to work in. We’ll say “smart_scale”.
      2. Now you need to download  adb (https://developer.android.com/studio/releases/platform-tools) to your PC, and extract the archive to the “smart_scale” folder. adb is a tool for debugging android apps, but for us it also allows us to download data from apps on a device.
      3. You also need Android Backup Extractor (https://sourceforge.net/projects/adbextractor). Download and extract the archive and copy “abe.jar” in “android-backup-tookit\android-backup-extractor\android-backup-extractor-20180521-bin” to the “smart_scale” folder. Note that “20180521” may change depending on your version. Android Backup Extractor will extract the data from adb.
      4. Enable debugging on your android device (https://developer.android.com/studio/command-line/adb#Enabling). This allows adb to connect to the device.
      5. Plug your android device into the PC with USB. If prompted on the android device, select “Allow USB debugging.”
      6. Open a command prompt and navigate to the “smart_scale” folder.
      7. Now we export the data from the device using adb. From the command prompt, run
        platform-tools/adb backup -noapk com.oceanwing.smarthome

        Enter (and remember) a password when prompted on the android device. The name ‘com.oceanwing.smarthome’ can be seen as the app name in the Google Play Store URL.

      8. You should now have a file titled “backup.ab” in your folder containing the app data.
      9. Extract the backup by running the following from the command line, and when prompted enter the password you just made.
        java -jar abe.jar unpack backup.ab backup.tar

        Note that you may need to change “20180521” depending on what version of abe you have.

      10. “backup.tar” is now created in your “smart_scale” folder. Unpack it using your favorite file archiver (like 7-zip). You’ll see the raw data as a SQLite database at “apps\com.oceanwing.smarthome\db\EufyLifeDB.db”.

Accessing the Data in SQLite

You can access the data with SQLite

      1. Download SQLite3 tools from https://www.sqlite.org/download.html, and extract the archive to your “smart_scale” folder
      2. Access the database from the command line with 
        .\sqlite-tools-win32-x86-3350300\sqlite3.exe .\apps\com.oceanwing.smarthome\db\EufyLifeDb.db

        Note that you may need to change versions or folders in that command depending on your setup.

      3. View a list of tables with the “.tables” command, help with “.help”, or see the full documentation at https://www.sqlite.org/cli.html.

Visualizing the Data with Tableau

You can use many ways to access and visualize SQLite data. I used Tableau, and connected to the data using the SQLite instructions found here: https://help.tableau.com/current/pro/desktop/en-us/odbc_customize.htm. Use the table name “bodyfathistorym” in the data source pane. One thing to note is that after connecting to the database, it’s helpful to create an extract. SQLite doesn’t support many common database operations, which means Tableau won’t be able to perform certain data operations. To see my own visualization, look below or see it on Tableau Public.

And to answer one of my initial questions: it seems that my weight increases throughout the week until the weekend, when it drops, possibly because I’m working less and outside more. If I wanted to lose a couple kilos, maybe one option is to exercise more during the week.

Notable columns in Eufy Smart Scale’s raw data

The table “bodyfathistorym” contains the interesting data, and within it, some of the notable columns are as follows.

Column Name Description
createtime Unix time when the weighing occurred
weight Total weight (kg)
impedance and encryptionimpedance Presumably used to calculate values like muscle and fat mass
bodyfat and bodyfatmass Body fat in % and kg respectively
muscle and musclemass Muscle mass in % and kg respectively
bone and bonemass Bone mass in % and kg respectively