# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-08-25 08:26
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='PSensorSetting',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('uuid', models.CharField(max_length=255)),
                ('old_offset', models.IntegerField()),
                ('old_near_threshold', models.IntegerField()),
                ('old_far_threshold', models.IntegerField()),
                ('new_offset', models.IntegerField()),
                ('new_near_threshold', models.IntegerField()),
                ('new_far_threshold', models.IntegerField()),
                ('timestamp', models.DateTimeField()),
            ],
        ),
    ]
