{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BINARY FILE DETECTED\n",
      "Struct Decoding String: diiiiiiiiiiiiiiffffifffffii, 112 bytes.\n",
      "Data Fields: ['time', 'ModtronixLog.ready', 'ModtronixLog.comms', 'ModtronixLog.camera_power', 'ModtronixLog.light_level', 'ModtronixLog.light_power_1', 'ModtronixLog.light_power_2', 'ModtronixLog.light_power_3', 'ModtronixLog.light_power_4', 'ModtronixLog.pwm_mode', 'ModtronixLog.pwm_freq', 'ModtronixLog.pwm_value', 'ModtronixLog.recorder_power', 'ModtronixLog.recorder_ready', 'ModtronixLog.ctd_power', 'ModtronixLog.h2o_humidity', 'ModtronixLog.temp', 'ModtronixLog.h2o_fwd', 'ModtronixLog.h2o_aft', 'ModtronixLog.h2o_alarm', 'ModtronixLog.sw0', 'ModtronixLog.sw1', 'ModtronixLog.sw2', 'ModtronixLog.video_mean', 'ModtronixLog.video_max', 'ModtronixLog.motor_position', 'ModtronixLog.motor_action']\n",
      "6025 records unpacked\n"
     ]
    }
   ],
   "source": [
    "import struct\n",
    "import pandas as pd\n",
    "with open(\"ModtronixLog.log\", 'rb') as f:\n",
    "    begin = False\n",
    "    keys = ['type','short_name','format','long_name','units','size']\n",
    "    data_defs = []\n",
    "    i=0\n",
    "    \n",
    "    # GET HEADER\n",
    "    while begin is False:\n",
    "        fl = f.readline()\n",
    "        \n",
    "        tokens = fl.split()\n",
    "        \n",
    "        for idx, token in enumerate(tokens):\n",
    "            tokens[idx] = token.decode('utf-8')\n",
    "            \n",
    "        if tokens[1] == 'binary':\n",
    "            print (\"BINARY FILE DETECTED\")\n",
    "        elif tokens[1] == 'begin':\n",
    "            begin = True\n",
    "        else:\n",
    "            data_def = dict.fromkeys(keys)\n",
    "            data_def['type'] = tokens[1]\n",
    "            data_def['short_name'] = tokens[2]\n",
    "            data_def['format'] = tokens[3]\n",
    "            data_def['long_name'] = tokens[4].strip(',')\n",
    "            data_def['units'] = tokens[5].strip(',')\n",
    "            \n",
    "            data_defs.append(data_def)\n",
    "    \n",
    "    # GENERATE STRUCT\n",
    "    struct_str = str()\n",
    "    struct_len = 0\n",
    "    for dt in data_defs:\n",
    "        if dt['type'] == 'float':\n",
    "            struct_str += 'f'\n",
    "            struct_len += 4\n",
    "        elif dt['type'] == 'integer':\n",
    "            struct_str += 'i'\n",
    "            struct_len += 4\n",
    "        elif dt['type'] == 'short':\n",
    "            struct_str += 'h'\n",
    "            struct_len += 2\n",
    "        else: # double\n",
    "            struct_str += 'd'\n",
    "            struct_len += 8\n",
    "    \n",
    "    print(f'Struct Decoding String: {struct_str}, {struct_len} bytes.')\n",
    "    \n",
    "    # Create the data storage\n",
    "    data_keys = []\n",
    "    for dt in data_defs:\n",
    "        data_keys.append(dt['short_name'])\n",
    "    \n",
    "    print(f'Data Fields: {data_keys}')\n",
    "    data_file = dict.fromkeys(data_keys)\n",
    "    for idx, field in enumerate(data_file):\n",
    "        data_file[field] = []\n",
    "    \n",
    "    ct = 0\n",
    "    try: \n",
    "        while True:\n",
    "            data_packet = struct.unpack(struct_str, f.read(struct_len))\n",
    "            ct +=1\n",
    "            for idx, field in enumerate(data_file):\n",
    "                data_file[field].append(data_packet[idx])\n",
    "    except:\n",
    "        pass\n",
    "    print(f'{ct} records unpacked') \n",
    "    \n",
    "    #convert to dataframe\n",
    "    df = pd.DataFrame.from_dict(data_file)       \n",
    "    \n",
    "    \n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ModtronixLog.camera_power</th>\n",
       "      <th>ModtronixLog.comms</th>\n",
       "      <th>ModtronixLog.ctd_power</th>\n",
       "      <th>ModtronixLog.h2o_aft</th>\n",
       "      <th>ModtronixLog.h2o_alarm</th>\n",
       "      <th>ModtronixLog.h2o_fwd</th>\n",
       "      <th>ModtronixLog.h2o_humidity</th>\n",
       "      <th>ModtronixLog.light_level</th>\n",
       "      <th>ModtronixLog.light_power_1</th>\n",
       "      <th>ModtronixLog.light_power_2</th>\n",
       "      <th>...</th>\n",
       "      <th>ModtronixLog.ready</th>\n",
       "      <th>ModtronixLog.recorder_power</th>\n",
       "      <th>ModtronixLog.recorder_ready</th>\n",
       "      <th>ModtronixLog.sw0</th>\n",
       "      <th>ModtronixLog.sw1</th>\n",
       "      <th>ModtronixLog.sw2</th>\n",
       "      <th>ModtronixLog.temp</th>\n",
       "      <th>ModtronixLog.video_max</th>\n",
       "      <th>ModtronixLog.video_mean</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.556909e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20.654297</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4.88</td>\n",
       "      <td>5.0</td>\n",
       "      <td>27.854687</td>\n",
       "      <td>46.0</td>\n",
       "      <td>43.0</td>\n",
       "      <td>1.556909e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20.654297</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4.88</td>\n",
       "      <td>5.0</td>\n",
       "      <td>27.854687</td>\n",
       "      <td>46.0</td>\n",
       "      <td>43.0</td>\n",
       "      <td>1.556909e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20.654297</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4.88</td>\n",
       "      <td>5.0</td>\n",
       "      <td>27.854687</td>\n",
       "      <td>46.0</td>\n",
       "      <td>43.0</td>\n",
       "      <td>1.556909e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20.654297</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4.88</td>\n",
       "      <td>5.0</td>\n",
       "      <td>27.854687</td>\n",
       "      <td>46.0</td>\n",
       "      <td>43.0</td>\n",
       "      <td>1.556909e+09</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 27 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   ModtronixLog.camera_power  ModtronixLog.comms  ModtronixLog.ctd_power  \\\n",
       "0                          0                   0                       0   \n",
       "1                          1                   0                       1   \n",
       "2                          1                   0                       1   \n",
       "3                          1                   0                       1   \n",
       "4                          1                   0                       1   \n",
       "\n",
       "   ModtronixLog.h2o_aft  ModtronixLog.h2o_alarm  ModtronixLog.h2o_fwd  \\\n",
       "0                   0.0                       0                   0.0   \n",
       "1                   0.0                       0                   0.0   \n",
       "2                   0.0                       0                   0.0   \n",
       "3                   0.0                       0                   0.0   \n",
       "4                   0.0                       0                   0.0   \n",
       "\n",
       "   ModtronixLog.h2o_humidity  ModtronixLog.light_level  \\\n",
       "0                   0.000000                         0   \n",
       "1                  20.654297                         0   \n",
       "2                  20.654297                         0   \n",
       "3                  20.654297                         0   \n",
       "4                  20.654297                         0   \n",
       "\n",
       "   ModtronixLog.light_power_1  ModtronixLog.light_power_2      ...       \\\n",
       "0                           0                           0      ...        \n",
       "1                           1                           1      ...        \n",
       "2                           1                           1      ...        \n",
       "3                           1                           1      ...        \n",
       "4                           1                           1      ...        \n",
       "\n",
       "   ModtronixLog.ready  ModtronixLog.recorder_power  \\\n",
       "0                   0                            0   \n",
       "1                   0                            1   \n",
       "2                   0                            1   \n",
       "3                   0                            1   \n",
       "4                   0                            1   \n",
       "\n",
       "   ModtronixLog.recorder_ready  ModtronixLog.sw0  ModtronixLog.sw1  \\\n",
       "0                            0               0.0              0.00   \n",
       "1                            1               5.0              4.88   \n",
       "2                            1               5.0              4.88   \n",
       "3                            1               5.0              4.88   \n",
       "4                            1               5.0              4.88   \n",
       "\n",
       "   ModtronixLog.sw2  ModtronixLog.temp  ModtronixLog.video_max  \\\n",
       "0               0.0           0.000000                     0.0   \n",
       "1               5.0          27.854687                    46.0   \n",
       "2               5.0          27.854687                    46.0   \n",
       "3               5.0          27.854687                    46.0   \n",
       "4               5.0          27.854687                    46.0   \n",
       "\n",
       "   ModtronixLog.video_mean          time  \n",
       "0                      0.0  1.556909e+09  \n",
       "1                     43.0  1.556909e+09  \n",
       "2                     43.0  1.556909e+09  \n",
       "3                     43.0  1.556909e+09  \n",
       "4                     43.0  1.556909e+09  \n",
       "\n",
       "[5 rows x 27 columns]"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x119786668>"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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5cILL+TYY49lwoQJnHjiifTo0YO7776bu+++mw8++ID/+q//4k9/+hO33347W7duZeTIkdxxxx3U1NTQpUsXvvvd7/Lcc88xadIkjjjiiBb67LhjYaaWUopNmzaV1UXrvwSyRHuKaHj0S+2dxWwYjZDQE/q7m4XrECsiYopo3sIlfP2b3+Khhx5i8+bNzJs3j5EjRzYeu+PmXzL8wAOZN28ev/jFL/jOd74DwDXXXMMRRxzB/PnzOWb88axYVtjh9frrr2fPPfdkzpw5XPeL6wGY8+ab3Hbbbbz33nvMnj2be+65h9dff53XXnuNu+66i7fnzQHg/fff58ILL2T+/Pl0796dP//5z0307NatG7/+9a8588wzeeihh1i7dm2oAQC46qqrODBE9yOPPJL58+dz8skn8/HHH2vX1dtz3uDxJx5n7ty5PP300y3cP3V1dcyYMYNbb72Va665hvbt23Pttddy6qmnMmfOnJIGoIF58+bxwgsvMH36dK699lpWrFjB448/zpw5c5g7dy7PPfccP/nJT/jkk08YNWoUL730EgDLly9nwYIFALz00kuMHj2ahQsX8vDDD/PKK68wZ84campquP/++wHYuHEjI0eOZO7cuSUNQANnnXUWffv25Z133uHiiy/WriPb5O5LIF+vv8cVrjp+vyZ/L11Ty8atdXypxNz5Yhas+IxuO7Slf49OTdLX1m5l6ZparWvvM2R/lixZwoMPPsj48eObHHtz5mtcc8XjABx55JGsXr2azz77jBdffJHHHy+kjz16HN269wiVP+KQQxrnkr/88suceOKJdO7cGYCTTjqJGdNf5YivHcvuu+/O8OHDATj44INZsmRJC1lHH300jz76KBdeeCFz586NLNfLL7/caEiKdX/55Zd54oknABg3bhw9eoTr3pw5s15nwvET6NixIx07duT4449vcvykk06K1D+KE044gR122IEddtiBsWPHMmPGDF5++WUmTpxITU0Nffr04atf/SozZ85k1KhR3HrrrSxYsIAhQ4awdu1aPvnkE6ZPn87tt9/Ovffey+zZsznkkEMA2LRpEzvvvDMANTU1fOtb34rV55577mH79u1cfPHFPPzww5x11lmJymOL3BmBBrL6erI/RbR1iifZnzhUBnqhDlKfImrhK8VUxaw7ExMmTODSSy9l2rRprF5tZ7+lhjJ0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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df.plot('time','ModtronixLog.light_power_3')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.to_csv('test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
