diff --git a/config.py b/config.py
index f2c51c1..d714174 100644
--- a/config.py
+++ b/config.py
@@ -14,7 +14,7 @@ listening_ip = "0.0.0.0"
listening_port = 8081
### Cost Estimate
-kwh_rate = 0.1319 # Rate in currency_type to calculate cost to run job
+kwh_rate = 0.10 # Rate in currency_type to calculate cost to run job
currency_type = "$" # Currency Symbol to show when calculating cost to run job
########################################################################
@@ -27,20 +27,21 @@ currency_type = "$" # Currency Symbol to show when calculating cost to run j
# can use whichever GPIO you prefer/have available.
### Outputs
-gpio_heat = 23 # Switches zero-cross solid-state-relay
+gpio_contactor = 23 # Contactor and Fan Enable
+gpio_heat = 24 # Switches zero-cross solid-state-relay
### Thermocouple Adapter selection:
# max31855 - bitbang SPI interface
# max31856 - bitbang SPI interface. must specify thermocouple_type.
-max31855 = 1
-max31856 = 0
+max31855 = 0
+max31856 = 1
# see lib/max31856.py for other thermocouple_type, only applies to max31856
-thermocouple_type = MAX31856.MAX31856_S_TYPE
+thermocouple_type = MAX31856.MAX31856_K_TYPE
### Thermocouple Connection (using bitbang interfaces)
-gpio_sensor_cs = 27
-gpio_sensor_clock = 22
-gpio_sensor_data = 17
+gpio_sensor_cs = 5
+gpio_sensor_clock = 11
+gpio_sensor_data = 9
gpio_sensor_di = 10 # only used with max31856
########################################################################
@@ -50,7 +51,7 @@ gpio_sensor_di = 10 # only used with max31856
# Every N seconds a decision is made about switching the relay[s]
# on & off and for how long. The thermocouple is read
# temperature_average_samples times during and the average value is used.
-sensor_time_wait = 2
+sensor_time_wait = 5
########################################################################
@@ -80,7 +81,7 @@ stop_integral_windup = True
########################################################################
#
# Simulation parameters
-simulate = True
+simulate = False
sim_t_env = 60.0 # deg C
sim_c_heat = 100.0 # J/K heat capacity of heat element
sim_c_oven = 5000.0 # J/K heat capacity of oven
@@ -98,7 +99,7 @@ sim_R_ho_air = 0.05 # K/W " with internal air circulation
# If you change the temp_scale, all settings in this file are assumed to
# be in that scale.
-temp_scale = "f" # c = Celsius | f = Fahrenheit - Unit to display
+temp_scale = "c" # c = Celsius | f = Fahrenheit - Unit to display
time_scale_slope = "h" # s = Seconds | m = Minutes | h = Hours - Slope displayed in temp_scale per time_scale_slope
time_scale_profile = "m" # s = Seconds | m = Minutes | h = Hours - Enter and view target time in time_scale_profile
diff --git a/kiln-tuner.py b/kiln-tuner.py
index 8868295..38aa93f 100755
--- a/kiln-tuner.py
+++ b/kiln-tuner.py
@@ -1,3 +1,4 @@
+
#!/usr/bin/env python
import os
@@ -46,6 +47,7 @@ def recordprofile(csvfile, targettemp):
try:
stage = 'heating'
if not config.simulate:
+ oven.output.GPIO.output(config.gpio_contactor, oven.output.GPIO.LOW) #ON
oven.output.heat(1, tuning=True)
while True:
@@ -58,10 +60,13 @@ def recordprofile(csvfile, targettemp):
if stage == 'heating':
if temp >= targettemp:
if not config.simulate:
- oven.output.heat(0)
+ oven.output.GPIO.output(config.gpio_contactor, self.GPIO.HIGH) #OFF
+ oven.output.cool(0)
stage = 'cooling'
elif stage == 'cooling':
+ oven.output.GPIO.output(config.gpio_contactor, self.GPIO.HIGH) #OFF
+ oven.output.cool(0)
if temp < targettemp:
break
@@ -73,7 +78,8 @@ def recordprofile(csvfile, targettemp):
finally:
# ensure we always shut the oven down!
if not config.simulate:
- oven.output.heat(0)
+ oven.output.GPIO.output(config.gpio_contactor, oven.output.GPIO.HIGH) #OFF
+ oven.output.cool(0)
def line(a, b, x):
@@ -87,7 +93,7 @@ def invline(a, b, y):
def plot(xdata, ydata,
tangent_min, tangent_max, tangent_slope, tangent_offset,
lower_crossing_x, upper_crossing_x):
- from matplotlib import pyplot
+ from matplotlib.pyplot import pyplot
minx = min(xdata)
maxx = max(xdata)
diff --git a/kilnTest1.py b/kilnTest1.py
new file mode 100644
index 0000000..6ae151a
--- /dev/null
+++ b/kilnTest1.py
@@ -0,0 +1,42 @@
+
+import board
+import digitalio
+import adafruit_max31856
+import RPi.GPIO as GPIO
+import time
+
+# Create sensor object, communicating over the board's default SPI bus
+spi = board.SPI()
+
+# allocate a CS pin and set the direction
+cs = digitalio.DigitalInOut(board.D5)
+cs.direction = digitalio.Direction.OUTPUT
+
+# create a thermocouple object with the above
+thermocouple = adafruit_max31856.MAX31856(spi, cs)
+
+# print the temperature!
+print(thermocouple.temperature)
+
+relay1 = 23
+relay2 = 24
+trigger1 = 20
+trigger2 = 21
+
+GPIO.setmode(GPIO.BCM)
+GPIO.setup(relay1, GPIO.OUT)
+GPIO.setup(relay2, GPIO.OUT)
+GPIO.setup(trigger1, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
+GPIO.setup(trigger2, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
+
+while True:
+ print(thermocouple.temperature)
+# print("RELAY ON")
+# GPIO.output(relay1, 0) #ON
+ GPIO.output(relay1, 1) #OFF
+ GPIO.output(relay2, 1)
+ time.sleep(5)
+# print("RELAY OFF")
+# GPIO.output(relay1, 0)
+ GPIO.output(relay2, 0)
+ time.sleep(5)
diff --git a/lib/oven.py b/lib/oven.py
index 35b7288..302de91 100644
--- a/lib/oven.py
+++ b/lib/oven.py
@@ -20,6 +20,7 @@ class Output(object):
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(config.gpio_heat, GPIO.OUT)
+ GPIO.setup(config.gpio_contactor, GPIO.OUT)
self.active = True
self.GPIO = GPIO
except:
@@ -38,6 +39,12 @@ class Output(object):
self.GPIO.output(config.gpio_heat, self.GPIO.LOW)
time.sleep(sleepfor)
+ def contactor_on(self):
+ self.GPIO.output(config.gpio_contactor, self.GPIO.LOW) #ON
+
+ def contactor_off(self):
+ self.GPIO.output(config.gpio_contactor, self.GPIO.HIGH) #OFF
+
# FIX - Board class needs to be completely removed
class Board(object):
def __init__(self):
@@ -182,6 +189,7 @@ class Oven(threading.Thread):
self.target = 0
self.heat = 0
self.pid = PID(ki=config.pid_ki, kd=config.pid_kd, kp=config.pid_kp)
+ self.output.contactor_off()
def run_profile(self, profile, startat=0):
self.reset()
@@ -206,6 +214,7 @@ class Oven(threading.Thread):
self.start_time = datetime.datetime.now()
self.startat = startat * 60
log.info("Starting")
+ self.output.contactor_on()
def abort_run(self):
self.reset()
@@ -391,6 +400,7 @@ class RealOven(Oven):
def reset(self):
super().reset()
+# self.output.GPIO.output(config.gpio_contactor, self.GPIO.HIGH) #OFF
self.output.cool(0)
def heat_then_cool(self):
diff --git a/public/assets/css/picoreflow_save.css b/public/assets/css/picoreflow_save.css
new file mode 100644
index 0000000..8e77db7
--- /dev/null
+++ b/public/assets/css/picoreflow_save.css
@@ -0,0 +1,398 @@
+@font-face{
+ font-family: "Digi";
+ src: url('/picoreflow/assets/fonts/digital-7-webfont.eot');
+ src: local("Digital 7"),
+ url('/picoreflow/assets/fonts/digital-7-webfont.woff') format("woff"),
+ url('/picoreflow/assets/fonts/digital-7-webfont.ttf') format("truetype");
+}
+
+@font-face{
+ font-family: "Tables";
+ src: url('/picoreflow/assets/fonts/tables.eot');
+ src: local("Tables"),
+ url('/picoreflow/assets/fonts/tables.woff') format("woff"),
+ url('/picoreflow/assets/fonts/tables.ttf') format("truetype");
+}
+
+body {
+ background: #b9b6af;
+}
+
+#status {
+ margin-top: 15px;
+ color: #d8d3c5;
+ font-weight: normal;
+ -webkit-border-radius: 7px;
+ -moz-border-radius: 7px;
+ border-radius: 7px;
+ border: 1px solid #ddd;
+ height: 80px;
+ -moz-box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.55);
+ -webkit-box-shadow: 0 0 1.5em 0 rgba(0,0,0,0.55);
+ box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.55);
+}
+
+.display {
+ display: inline-block;
+ text-align: right;
+ padding-right: 5px;
+ font-size: 40px;
+ font-weight: normal;
+ height: 40px;
+ line-height: 40px;
+ vertical-align: middle;
+ color: #d8d3c5;
+ border-color: #000000;
+}
+
+.ds-panel {
+ background: #3F3E3A url('/picoreflow/assets/images/panel_bg.png') repeat;
+ -moz-box-shadow: inset 0 0 42px 0 #000;
+ -webkit-box-shadow: inset 0 0 42px 0 #000;
+ box-shadow: inset 0 0 42px 0 #000;
+}
+
+.ds-title-panel {
+ -webkit-border-top-left-radius: 6px;
+ -webkit-border-top-right-radius: 6px;
+ -moz-border-radius-topleft: 6px;
+ -moz-border-radius-topright: 6px;
+ border-top-left-radius: 6px;
+ border-top-right-radius: 6px;
+ background-image: -webkit-gradient(linear,left 0,left 100%,from(#f5f5f5),to(#e8e8e8));
+ background-image: -webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);
+ background-image: -moz-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);
+ background-image: linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0);
+ height: 18px;
+}
+
+.ds-title {
+ display: inline-block;
+ font-size: 10px;
+ height: 18px;
+ line-height: 18px;
+ width: 100px;
+ border-right: 1px solid #b9b6af;
+ vertical-align: top;
+ text-align: center;
+ color: #8B8989;
+ text-shadow: 1px 1px 0px rgba(255, 255, 255, 0.75);
+}
+
+.ds-num {
+ width: 100px;
+ font-family: "Digi";
+ border-right: 1px solid #b9b6af;
+ white-space: nowrap;
+ text-shadow: 0 0 25px rgba(0, 0, 0, 1);
+}
+
+.ds-input {
+ color: #d8d3c5;
+ font-family: "Digi";
+ font-size: 24px;
+ text-shadow: 0 0 12px rgba(0, 0, 0, 1);
+ background: #3F3E3A url('/picoreflow/assets/images/panel_bg.png') repeat;
+ -moz-box-shadow: inset 0 0 12px 0 #000;
+ -webkit-box-shadow: inset 0 0 12px 0 #000;
+ box-shadow: inset 0 0 12px 0 #000;
+ text-align: right;
+ padding: 0;
+ padding-right: 7px;
+
+}
+
+.ds-unit {
+ font-family: "Arial";
+ font-size: 22px;
+ vertical-align: top;
+ line-height: 32px;
+ margin-left: 4px;
+}
+
+.ds-led {
+ font-family: "Tables";
+ font-size: 38px;
+ text-align: center;
+ color: #1F1E1A;
+ text-shadow: 0 0 5px #000, 0 0 5px #000;
+ border-left: 1px solid #b9b6af;
+ height: 40px;
+ width: 42px;
+ display: inline-block;
+}
+
+
+.ds-led-hazard-active {
+ color: rgb(255, 204, 0);
+ background: -moz-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%, rgba(241,218,54,0.26) 100%); /* FF3.6+ */
+ background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(242,195,67,1)), color-stop(100%,rgba(241,218,54,0.26))); /* Chrome,Safari4+ */
+ background: -webkit-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* Opera 12+ */
+ background: -ms-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* IE10+ */
+ background: radial-gradient(ellipse at center, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* W3C */
+}
+
+.ds-led-door-open {
+ color: rgb(214, 42, 0);
+ background: -moz-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%, rgba(241,218,54,0.26) 100%); /* FF3.6+ */
+ background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(242,195,67,1)), color-stop(100%,rgba(241,218,54,0.26))); /* Chrome,Safari4+ */
+ background: -webkit-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* Opera 12+ */
+ background: -ms-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* IE10+ */
+ background: radial-gradient(ellipse at center, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* W3C */
+}
+
+.ds-led-cool-active {
+ color: rgb(74, 159, 255);
+ background: -moz-radial-gradient(center, ellipse cover, rgba(124,197,239,1) 0%, rgba(48,144,209,0.26) 100%); /* FF3.6+ */
+ background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(124,197,239,1)), color-stop(100%,rgba(48,144,209,0.26))); /* Chrome,Safari4+ */
+ background: -webkit-radial-gradient(center, ellipse cover, rgba(124,197,239,1) 0%,rgba(48,144,209,0.26) 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-radial-gradient(center, ellipse cover, rgba(124,197,239,1) 0%,rgba(48,144,209,0.26) 100%); /* Opera 12+ */
+ background: -ms-radial-gradient(center, ellipse cover, rgba(124,197,239,1) 0%,rgba(48,144,209,0.26) 100%); /* IE10+ */
+ background: radial-gradient(ellipse at center, rgba(124,197,239,1) 0%,rgba(48,144,209,0.26) 100%); /* W3C */
+}
+
+.ds-led-heat-active {
+ color: rgb(214, 42, 0);
+ background: -moz-radial-gradient(center, ellipse cover, rgba(214,25,25,1) 0%, rgba(214,42,0,0.26) 100%); /* FF3.6+ */
+ background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(214,25,25,1)), color-stop(100%,rgba(214,42,0,0.26))); /* Chrome,Safari4+ */
+ background: -webkit-radial-gradient(center, ellipse cover, rgba(214,25,25,1) 0%,rgba(214,42,0,0.26) 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-radial-gradient(center, ellipse cover, rgba(214,25,25,1) 0%,rgba(214,42,0,0.26) 100%); /* Opera 12+ */
+ background: -ms-radial-gradient(center, ellipse cover, rgba(214,25,25,1) 0%,rgba(214,42,0,0.26) 100%); /* IE10+ */
+ background: radial-gradient(ellipse at center, rgba(214,25,25,1) 0%,rgba(214,42,0,0.26) 100%); /* W3C */
+}
+
+.ds-led-air-active {
+ color: rgb(240, 240, 240);
+ background: -moz-radial-gradient(center, ellipse cover, rgba(221,221,221,1) 0%, rgba(221,221,221,0.26) 100%); /* FF3.6+ */
+ background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(221,221,221,1)), color-stop(100%,rgba(221,221,221,0.26))); /* Chrome,Safari4+ */
+ background: -webkit-radial-gradient(center, ellipse cover, rgba(221,221,221,1) 0%,rgba(221,221,221,0.26) 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-radial-gradient(center, ellipse cover, rgba(221,221,221,1) 0%,rgba(221,221,221,0.26) 100%); /* Opera 12+ */
+ background: -ms-radial-gradient(center, ellipse cover, rgba(221,221,221,1) 0%,rgba(221,221,221,0.26) 100%); /* IE10+ */
+ background: radial-gradient(ellipse at center, rgba(221,221,221,1) 0%,rgba(221,221,221,0.26) 100%); /* W3C */
+}
+
+.ds-trend {
+ top: 0;
+ text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.25), -1px -1px 0 rgba(0, 0, 0, 0.4);
+ color: rgb(233, 233, 233);
+ font-size: 20px;
+}
+
+.ds-target {
+ color: #75890c;
+}
+
+.ds-state {
+ border: none;
+ width: initial;
+ text-align: center;
+ width: 168px;
+ padding: 0;
+}
+
+.ds-state {
+ border: none;
+ width: initial;
+ text-align: center;
+ width: 210px;
+ padding: 0;
+}
+
+.ds-text {
+ border: none;
+ width: initial;
+ font-family: sans-serif;
+ font-size: 32px;
+}
+
+.progress {
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ background: #3f3e3a;
+ border-color: #000000;
+ border-top: 1px solid #b9b6af;
+ margin: 0;
+ -webkit-border-bottom-left-radius: 7px;
+ -webkit-border-bottom-right-radius: 7px;
+ -moz-border-radius-bottomleft: 7px;
+ -moz-border-radius-bottomright: 7px;
+}
+
+.progress-bar {
+ background-color: #75890c;
+ font-family: "Digi";
+ font-size: 16px;
+}
+
+
+.panel-default {
+ -webkit-border-radius: 7px;
+ -moz-border-radius: 7px;
+ border-radius: 7px;
+ -moz-box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.55);
+ -webkit-box-shadow: 0 0 1.5em 0 rgba(0,0,0,0.55);
+ box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.55);
+ margin-top: 15px;
+ background: #3F3E3A url('/picoreflow/assets/images/panel_bg.png') repeat;
+}
+
+.panel-heading {
+ background: #fafafa url('/picoreflow/assets/images/page_bg.png') repeat-x;
+ overflow: hidden;
+ padding: 10px;
+ -webkit-border-top-left-radius: 5px;
+ -webkit-border-top-right-radius: 5px;
+ -moz-border-radius-topleft: 5px;
+ -moz-border-radius-topright: 5px;
+ border-top-left-radius: 5px;
+ border-top-right-radius: 5px;
+}
+
+.panel-body {
+ -moz-box-shadow: inset 0 0 42px 0 #000;
+ -webkit-box-shadow: inset 0 0 42px 0 #000;
+ box-shadow: inset 0 0 42px 0 #000;
+ -webkit-border-bottom-left-radius: 7px;
+ -webkit-border-bottom-right-radius: 7px;
+ -moz-border-radius-bottomleft: 7px;
+ -moz-border-radius-bottomright: 7px;
+ background: rgba(0,0,0,0.2)
+}
+
+#profile_selector {
+ border: 1px solid rgb(194, 194, 194);
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ background: rgb(229,229,229);
+ background: -moz-linear-gradient(top, rgba(229,229,229,1) 0%, rgba(255,255,255,1) 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(229,229,229,1)), color-stop(100%,rgba(255,255,255,1)));
+ background: -webkit-linear-gradient(top, rgba(229,229,229,1) 0%,rgba(255,255,255,1) 100%);
+ background: -o-linear-gradient(top, rgba(229,229,229,1) 0%,rgba(255,255,255,1) 100%);
+ background: -ms-linear-gradient(top, rgba(229,229,229,1) 0%,rgba(255,255,255,1) 100%);
+ background: linear-gradient(to bottom, rgba(229,229,229,1) 0%,rgba(255,255,255,1) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e5e5e5', endColorstr='#ffffff',GradientType=0 );
+ padding: 5px;
+ padding-bottom: 3px;
+ padding-top: 3px;
+ -moz-box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.05),inset 0 0 9px 2px #000;
+ -webkit-box-shadow: 0 0 1.5em 0 rgba(0,0,0,0.05),inset 0 0 0 0 #000;
+ box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.05),inset 0 0 0 0 #000;
+}
+
+.select2-container {
+ position: relative;
+ top: -3px;
+ width: 190px;
+ height: 34px;
+}
+
+.select2-container .select2-choice {
+ line-height: 32px;
+}
+
+.graph {
+ width: 100%;
+ height: 300px;
+ font-size: 14px;
+ line-height: 1.2em;
+}
+
+.edit-points {
+ margin-bottom: 5px;
+}
+
+.edit-points h3 {
+ margin-top: 5px;
+ margin-bottom: 15px;
+}
+
+.edit-points .row{
+ margin-bottom: 5px;
+}
+
+.btn-success {
+ background: rgb(164,179,87);
+ background: -moz-linear-gradient(top, rgba(164,179,87,1) 0%, rgba(117,137,12,1) 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(164,179,87,1)), color-stop(100%,rgba(117,137,12,1)));
+ background: -webkit-linear-gradient(top, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%);
+ background: -o-linear-gradient(top, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%);
+ background: -ms-linear-gradient(top, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%);
+ background: linear-gradient(to bottom, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a4b357', endColorstr='#75890c',GradientType=0 );
+ background-color: #75890c;
+}
+
+.modal-content {
+ background-image: linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);
+}
+
+.modal-body {
+ background: #fafafa;
+}
+
+.modal-footer {
+ margin-top: 0;
+}
+
+.modal-body .table {
+ margin-bottom: 0;
+}
+
+.select2-container .select2-choice {
+ height: 34px;
+ margin-top: 1px;
+}
+
+.modal.fade.in {
+ top: 10%;
+}
+
+.alert {
+ background-image: -webkit-gradient(linear,left 0,left 100%,from(#f5f5f5),to(#e8e8e8));
+ background-image: -webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);
+ background-image: -moz-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);
+ background-image: linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0);
+ -moz-box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.75);
+ -webkit-box-shadow: 0 0 1.5em 0 rgba(0,0,0,0.75);
+ box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.75);
+}
+
+.alert-success {
+ background: rgb(164,179,87);
+ background: -moz-linear-gradient(top, rgba(164,179,87,1) 0%, rgba(117,137,12,1) 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(164,179,87,1)), color-stop(100%,rgba(117,137,12,1)));
+ background: -webkit-linear-gradient(top, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%);
+ background: -o-linear-gradient(top, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%);
+ background: -ms-linear-gradient(top, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%);
+ background: linear-gradient(to bottom, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a4b357', endColorstr='#75890c',GradientType=0 );
+ color: #fff;
+}
+
+.alert-error {
+ background: rgb(206,57,20);
+ background: -moz-linear-gradient(top, rgba(206,57,20,1) 0%, rgba(163,38,0,1) 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(206,57,20,1)), color-stop(100%,rgba(163,38,0,1)));
+ background: -webkit-linear-gradient(top, rgba(206,57,20,1) 0%,rgba(163,38,0,1) 100%);
+ background: -o-linear-gradient(top, rgba(206,57,20,1) 0%,rgba(163,38,0,1) 100%);
+ background: -ms-linear-gradient(top, rgba(206,57,20,1) 0%,rgba(163,38,0,1) 100%);
+ background: linear-gradient(to bottom, rgba(206,57,20,1) 0%,rgba(163,38,0,1) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ce3914', endColorstr='#a32600',GradientType=0 );
+ color: #fff;
+}
+
+.modal-body td {
+ width: 50%;
+}
+
+.table-responsive {
+ overflow-x: hidden;
+ overflow-y: hidden;
+}
diff --git a/public/assets/js/picoreflow.js b/public/assets/js/picoreflow.js
index 479b7b7..b9dcdb8 100644
--- a/public/assets/js/picoreflow.js
+++ b/public/assets/js/picoreflow.js
@@ -11,8 +11,8 @@ var time_scale_slope = "s";
var time_scale_profile = "s";
var time_scale_long = "Seconds";
var temp_scale_display = "C";
-var kwh_rate = 0.26;
-var currency_type = "EUR";
+var kwh_rate = 0.1;
+var currency_type = "$";
var protocol = 'ws:';
if (window.location.protocol == 'https:') {
@@ -560,10 +560,7 @@ $(document).ready(function()
$('#act_temp').html(parseInt(x.temperature));
- if (x.heat > 0.0) {
- setTimeout(function() { $('#heat').addClass("ds-led-heat-active") }, 0 )
- setTimeout(function() { $('#heat').removeClass("ds-led-heat-active") }, (x.heat*1000.0)-5)
- }
+ if (x.heat > 0.0) { $('#heat').addClass("ds-led-heat-active"); } else { $('#heat').removeClass("ds-led-heat-active"); }
if (x.cool > 0.5) { $('#cool').addClass("ds-led-cool-active"); } else { $('#cool').removeClass("ds-led-cool-active"); }
if (x.air > 0.5) { $('#air').addClass("ds-led-air-active"); } else { $('#air').removeClass("ds-led-air-active"); }
if (x.temperature > hazardTemp()) { $('#hazard').addClass("ds-led-hazard-active"); } else { $('#hazard').removeClass("ds-led-hazard-active"); }
diff --git a/public/assets/js/picoreflow_save.js b/public/assets/js/picoreflow_save.js
new file mode 100644
index 0000000..479b7b7
--- /dev/null
+++ b/public/assets/js/picoreflow_save.js
@@ -0,0 +1,710 @@
+var state = "IDLE";
+var state_last = "";
+var graph = [ 'profile', 'live'];
+var points = [];
+var profiles = [];
+var time_mode = 0;
+var selected_profile = 0;
+var selected_profile_name = 'cone-05-long-bisque.json';
+var temp_scale = "c";
+var time_scale_slope = "s";
+var time_scale_profile = "s";
+var time_scale_long = "Seconds";
+var temp_scale_display = "C";
+var kwh_rate = 0.26;
+var currency_type = "EUR";
+
+var protocol = 'ws:';
+if (window.location.protocol == 'https:') {
+ protocol = 'wss:';
+}
+var host = "" + protocol + "//" + window.location.hostname + ":" + window.location.port;
+var ws_status = new WebSocket(host+"/status");
+var ws_control = new WebSocket(host+"/control");
+var ws_config = new WebSocket(host+"/config");
+var ws_storage = new WebSocket(host+"/storage");
+
+
+if(window.webkitRequestAnimationFrame) window.requestAnimationFrame = window.webkitRequestAnimationFrame;
+
+graph.profile =
+{
+ label: "Profile",
+ data: [],
+ points: { show: false },
+ color: "#75890c",
+ draggable: false
+};
+
+graph.live =
+{
+ label: "Live",
+ data: [],
+ points: { show: false },
+ color: "#d8d3c5",
+ draggable: false
+};
+
+
+function updateProfile(id)
+{
+ selected_profile = id;
+ selected_profile_name = profiles[id].name;
+ var job_seconds = profiles[id].data.length === 0 ? 0 : parseInt(profiles[id].data[profiles[id].data.length-1][0]);
+ var kwh = (3850*job_seconds/3600/1000).toFixed(2);
+ var cost = (kwh*kwh_rate).toFixed(2);
+ var job_time = new Date(job_seconds * 1000).toISOString().substr(11, 8);
+ $('#sel_prof').html(profiles[id].name);
+ $('#sel_prof_eta').html(job_time);
+ $('#sel_prof_cost').html(kwh + ' kWh ('+ currency_type +': '+ cost +')');
+ graph.profile.data = profiles[id].data;
+ graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ] , getOptions());
+}
+
+function deleteProfile()
+{
+ var profile = { "type": "profile", "data": "", "name": selected_profile_name };
+ var delete_struct = { "cmd": "DELETE", "profile": profile };
+
+ var delete_cmd = JSON.stringify(delete_struct);
+ console.log("Delete profile:" + selected_profile_name);
+
+ ws_storage.send(delete_cmd);
+
+ ws_storage.send('GET');
+ selected_profile_name = profiles[0].name;
+
+ state="IDLE";
+ $('#edit').hide();
+ $('#profile_selector').show();
+ $('#btn_controls').show();
+ $('#status').slideDown();
+ $('#profile_table').slideUp();
+ $('#e2').select2('val', 0);
+ graph.profile.points.show = false;
+ graph.profile.draggable = false;
+ graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ], getOptions());
+}
+
+
+function updateProgress(percentage)
+{
+ if(state=="RUNNING")
+ {
+ if(percentage > 100) percentage = 100;
+ $('#progressBar').css('width', percentage+'%');
+ if(percentage>5) $('#progressBar').html(parseInt(percentage)+'%');
+ }
+ else
+ {
+ $('#progressBar').css('width', 0+'%');
+ $('#progressBar').html('');
+ }
+}
+
+function updateProfileTable()
+{
+ var dps = 0;
+ var slope = "";
+ var color = "";
+
+ var html = '
Schedule Points
';
+
+ $('#profile_table').html(html);
+
+ //Link table to graph
+ $(".form-control").change(function(e)
+ {
+ var id = $(this)[0].id; //e.currentTarget.attributes.id
+ var value = parseInt($(this)[0].value);
+ var fields = id.split("-");
+ var col = parseInt(fields[1]);
+ var row = parseInt(fields[2]);
+
+ if (graph.profile.data.length > 0) {
+ if (col == 0) {
+ graph.profile.data[row][col] = timeProfileFormatter(value,false);
+ }
+ else {
+ graph.profile.data[row][col] = value;
+ }
+
+ graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ], getOptions());
+ }
+ updateProfileTable();
+
+ });
+}
+
+function timeProfileFormatter(val, down) {
+ var rval = val
+ switch(time_scale_profile){
+ case "m":
+ if (down) {rval = val / 60;} else {rval = val * 60;}
+ break;
+ case "h":
+ if (down) {rval = val / 3600;} else {rval = val * 3600;}
+ break;
+ }
+ return Math.round(rval);
+}
+
+function formatDPS(val) {
+ var tval = val;
+ if (time_scale_slope == "m") {
+ tval = val * 60;
+ }
+ if (time_scale_slope == "h") {
+ tval = (val * 60) * 60;
+ }
+ return Math.round(tval);
+}
+
+function hazardTemp(){
+
+ if (temp_scale == "f") {
+ return (1500 * 9 / 5) + 32
+ }
+ else {
+ return 1500
+ }
+}
+
+function timeTickFormatter(val)
+{
+ if (val < 1800)
+ {
+ return val;
+ }
+ else
+ {
+ var hours = Math.floor(val / (3600));
+ var div_min = val % (3600);
+ var minutes = Math.floor(div_min / 60);
+
+ if (hours < 10) {hours = "0"+hours;}
+ if (minutes < 10) {minutes = "0"+minutes;}
+
+ return hours+":"+minutes;
+ }
+}
+
+function runTask()
+{
+ var cmd =
+ {
+ "cmd": "RUN",
+ "profile": profiles[selected_profile]
+ }
+
+ graph.live.data = [];
+ graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ] , getOptions());
+
+ ws_control.send(JSON.stringify(cmd));
+
+}
+
+function runTaskSimulation()
+{
+ var cmd =
+ {
+ "cmd": "SIMULATE",
+ "profile": profiles[selected_profile]
+ }
+
+ graph.live.data = [];
+ graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ] , getOptions());
+
+ ws_control.send(JSON.stringify(cmd));
+
+}
+
+
+function abortTask()
+{
+ var cmd = {"cmd": "STOP"};
+ ws_control.send(JSON.stringify(cmd));
+}
+
+function enterNewMode()
+{
+ state="EDIT"
+ $('#status').slideUp();
+ $('#edit').show();
+ $('#profile_selector').hide();
+ $('#btn_controls').hide();
+ $('#form_profile_name').attr('value', '');
+ $('#form_profile_name').attr('placeholder', 'Please enter a name');
+ graph.profile.points.show = true;
+ graph.profile.draggable = true;
+ graph.profile.data = [];
+ graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ], getOptions());
+ updateProfileTable();
+}
+
+function enterEditMode()
+{
+ state="EDIT"
+ $('#status').slideUp();
+ $('#edit').show();
+ $('#profile_selector').hide();
+ $('#btn_controls').hide();
+ console.log(profiles);
+ $('#form_profile_name').val(profiles[selected_profile].name);
+ graph.profile.points.show = true;
+ graph.profile.draggable = true;
+ graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ], getOptions());
+ updateProfileTable();
+}
+
+function leaveEditMode()
+{
+ selected_profile_name = $('#form_profile_name').val();
+ ws_storage.send('GET');
+ state="IDLE";
+ $('#edit').hide();
+ $('#profile_selector').show();
+ $('#btn_controls').show();
+ $('#status').slideDown();
+ $('#profile_table').slideUp();
+ graph.profile.points.show = false;
+ graph.profile.draggable = false;
+ graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ], getOptions());
+}
+
+function newPoint()
+{
+ if(graph.profile.data.length > 0)
+ {
+ var pointx = parseInt(graph.profile.data[graph.profile.data.length-1][0])+15;
+ }
+ else
+ {
+ var pointx = 0;
+ }
+ graph.profile.data.push([pointx, Math.floor((Math.random()*230)+25)]);
+ graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ], getOptions());
+ updateProfileTable();
+}
+
+function delPoint()
+{
+ graph.profile.data.splice(-1,1)
+ graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ], getOptions());
+ updateProfileTable();
+}
+
+function toggleTable()
+{
+ if($('#profile_table').css('display') == 'none')
+ {
+ $('#profile_table').slideDown();
+ }
+ else
+ {
+ $('#profile_table').slideUp();
+ }
+}
+
+function saveProfile()
+{
+ name = $('#form_profile_name').val();
+ var rawdata = graph.plot.getData()[0].data
+ var data = [];
+ var last = -1;
+
+ for(var i=0; i last)
+ {
+ data.push([rawdata[i][0], rawdata[i][1]]);
+ }
+ else
+ {
+ $.bootstrapGrowl(" ERROR 88:
An oven is not a time-machine", {
+ ele: 'body', // which element to append to
+ type: 'alert', // (null, 'info', 'error', 'success')
+ offset: {from: 'top', amount: 250}, // 'top', or 'bottom'
+ align: 'center', // ('left', 'right', or 'center')
+ width: 385, // (integer, or 'auto')
+ delay: 5000,
+ allow_dismiss: true,
+ stackup_spacing: 10 // spacing between consecutively stacked growls.
+ });
+
+ return false;
+ }
+
+ last = rawdata[i][0];
+ }
+
+ var profile = { "type": "profile", "data": data, "name": name }
+ var put = { "cmd": "PUT", "profile": profile }
+
+ var put_cmd = JSON.stringify(put);
+
+ ws_storage.send(put_cmd);
+
+ leaveEditMode();
+}
+
+function getOptions()
+{
+
+ var options =
+ {
+
+ series:
+ {
+ lines:
+ {
+ show: true
+ },
+
+ points:
+ {
+ show: true,
+ radius: 5,
+ symbol: "circle"
+ },
+
+ shadowSize: 3
+
+ },
+
+ xaxis:
+ {
+ min: 0,
+ tickColor: 'rgba(216, 211, 197, 0.2)',
+ tickFormatter: timeTickFormatter,
+ font:
+ {
+ size: 14,
+ lineHeight: 14, weight: "normal",
+ family: "Digi",
+ variant: "small-caps",
+ color: "rgba(216, 211, 197, 0.85)"
+ }
+ },
+
+ yaxis:
+ {
+ min: 0,
+ tickDecimals: 0,
+ draggable: false,
+ tickColor: 'rgba(216, 211, 197, 0.2)',
+ font:
+ {
+ size: 14,
+ lineHeight: 14,
+ weight: "normal",
+ family: "Digi",
+ variant: "small-caps",
+ color: "rgba(216, 211, 197, 0.85)"
+ }
+ },
+
+ grid:
+ {
+ color: 'rgba(216, 211, 197, 0.55)',
+ borderWidth: 1,
+ labelMargin: 10,
+ mouseActiveRadius: 50
+ },
+
+ legend:
+ {
+ show: false
+ }
+ }
+
+ return options;
+
+}
+
+
+
+$(document).ready(function()
+{
+
+ if(!("WebSocket" in window))
+ {
+ $('#chatLog, input, button, #examples').fadeOut("fast");
+ $('Oh no, you need a browser that supports WebSockets. How about Google Chrome?
').appendTo('#container');
+ }
+ else
+ {
+
+ // Status Socket ////////////////////////////////
+
+ ws_status.onopen = function()
+ {
+ console.log("Status Socket has been opened");
+
+ $.bootstrapGrowl("Getting data from server",
+ {
+ ele: 'body', // which element to append to
+ type: 'success', // (null, 'info', 'error', 'success')
+ offset: {from: 'top', amount: 250}, // 'top', or 'bottom'
+ align: 'center', // ('left', 'right', or 'center')
+ width: 385, // (integer, or 'auto')
+ delay: 2500,
+ allow_dismiss: true,
+ stackup_spacing: 10 // spacing between consecutively stacked growls.
+ });
+ };
+
+ ws_status.onclose = function()
+ {
+ $.bootstrapGrowl(" ERROR 1:
Status Websocket not available", {
+ ele: 'body', // which element to append to
+ type: 'error', // (null, 'info', 'error', 'success')
+ offset: {from: 'top', amount: 250}, // 'top', or 'bottom'
+ align: 'center', // ('left', 'right', or 'center')
+ width: 385, // (integer, or 'auto')
+ delay: 5000,
+ allow_dismiss: true,
+ stackup_spacing: 10 // spacing between consecutively stacked growls.
+ });
+ };
+
+ ws_status.onmessage = function(e)
+ {
+ console.log("received status data")
+ console.log(e.data);
+
+ x = JSON.parse(e.data);
+ if (x.type == "backlog")
+ {
+ if (x.profile)
+ {
+ selected_profile_name = x.profile.name;
+ $.each(profiles, function(i,v) {
+ if(v.name == x.profile.name) {
+ updateProfile(i);
+ $('#e2').select2('val', i);
+ }
+ });
+ }
+
+ $.each(x.log, function(i,v) {
+ graph.live.data.push([v.runtime, v.temperature]);
+ graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ] , getOptions());
+ });
+ }
+
+ if(state!="EDIT")
+ {
+ state = x.state;
+
+ if (state!=state_last)
+ {
+ if(state_last == "RUNNING")
+ {
+ $('#target_temp').html('---');
+ updateProgress(0);
+ $.bootstrapGrowl(" Run completed", {
+ ele: 'body', // which element to append to
+ type: 'success', // (null, 'info', 'error', 'success')
+ offset: {from: 'top', amount: 250}, // 'top', or 'bottom'
+ align: 'center', // ('left', 'right', or 'center')
+ width: 385, // (integer, or 'auto')
+ delay: 0,
+ allow_dismiss: true,
+ stackup_spacing: 10 // spacing between consecutively stacked growls.
+ });
+ }
+ }
+
+ if(state=="RUNNING")
+ {
+ $("#nav_start").hide();
+ $("#nav_stop").show();
+
+ graph.live.data.push([x.runtime, x.temperature]);
+ graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ] , getOptions());
+
+ left = parseInt(x.totaltime-x.runtime);
+ eta = new Date(left * 1000).toISOString().substr(11, 8);
+
+ updateProgress(parseFloat(x.runtime)/parseFloat(x.totaltime)*100);
+ $('#state').html('' + eta + '');
+ $('#target_temp').html(parseInt(x.target));
+
+
+ }
+ else
+ {
+ $("#nav_start").show();
+ $("#nav_stop").hide();
+ $('#state').html(''+state+'
');
+ }
+
+ $('#act_temp').html(parseInt(x.temperature));
+
+ if (x.heat > 0.0) {
+ setTimeout(function() { $('#heat').addClass("ds-led-heat-active") }, 0 )
+ setTimeout(function() { $('#heat').removeClass("ds-led-heat-active") }, (x.heat*1000.0)-5)
+ }
+ if (x.cool > 0.5) { $('#cool').addClass("ds-led-cool-active"); } else { $('#cool').removeClass("ds-led-cool-active"); }
+ if (x.air > 0.5) { $('#air').addClass("ds-led-air-active"); } else { $('#air').removeClass("ds-led-air-active"); }
+ if (x.temperature > hazardTemp()) { $('#hazard').addClass("ds-led-hazard-active"); } else { $('#hazard').removeClass("ds-led-hazard-active"); }
+ if ((x.door == "OPEN") || (x.door == "UNKNOWN")) { $('#door').addClass("ds-led-door-open"); } else { $('#door').removeClass("ds-led-door-open"); }
+
+ state_last = state;
+
+ }
+ };
+
+ // Config Socket /////////////////////////////////
+
+ ws_config.onopen = function()
+ {
+ ws_config.send('GET');
+ };
+
+ ws_config.onmessage = function(e)
+ {
+ console.log (e.data);
+ x = JSON.parse(e.data);
+ temp_scale = x.temp_scale;
+ time_scale_slope = x.time_scale_slope;
+ time_scale_profile = x.time_scale_profile;
+ kwh_rate = x.kwh_rate;
+ currency_type = x.currency_type;
+
+ if (temp_scale == "c") {temp_scale_display = "C";} else {temp_scale_display = "F";}
+
+
+ $('#act_temp_scale').html('º'+temp_scale_display);
+ $('#target_temp_scale').html('º'+temp_scale_display);
+
+ switch(time_scale_profile){
+ case "s":
+ time_scale_long = "Seconds";
+ break;
+ case "m":
+ time_scale_long = "Minutes";
+ break;
+ case "h":
+ time_scale_long = "Hours";
+ break;
+ }
+
+ }
+
+ // Control Socket ////////////////////////////////
+
+ ws_control.onopen = function()
+ {
+
+ };
+
+ ws_control.onmessage = function(e)
+ {
+ //Data from Simulation
+ console.log ("control socket has been opened")
+ console.log (e.data);
+ x = JSON.parse(e.data);
+ graph.live.data.push([x.runtime, x.temperature]);
+ graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ] , getOptions());
+
+ }
+
+ // Storage Socket ///////////////////////////////
+
+ ws_storage.onopen = function()
+ {
+ ws_storage.send('GET');
+ };
+
+
+ ws_storage.onmessage = function(e)
+ {
+ message = JSON.parse(e.data);
+
+ if(message.resp)
+ {
+ if(message.resp == "FAIL")
+ {
+ if (confirm('Overwrite?'))
+ {
+ message.force=true;
+ console.log("Sending: " + JSON.stringify(message));
+ ws_storage.send(JSON.stringify(message));
+ }
+ else
+ {
+ //do nothing
+ }
+ }
+
+ return;
+ }
+
+ //the message is an array of profiles
+ //FIXME: this should be better, maybe a {"profiles": ...} container?
+ profiles = message;
+ //delete old options in select
+ $('#e2').find('option').remove().end();
+ // check if current selected value is a valid profile name
+ // if not, update with first available profile name
+ var valid_profile_names = profiles.map(function(a) {return a.name;});
+ if (
+ valid_profile_names.length > 0 &&
+ $.inArray(selected_profile_name, valid_profile_names) === -1
+ ) {
+ selected_profile = 0;
+ selected_profile_name = valid_profile_names[0];
+ }
+
+ // fill select with new options from websocket
+ for (var i=0; i'+profile.name+'');
+
+ if (profile.name == selected_profile_name)
+ {
+ selected_profile = i;
+ $('#e2').select2('val', i);
+ updateProfile(i);
+ }
+ }
+ };
+
+
+ $("#e2").select2(
+ {
+ placeholder: "Select Profile",
+ allowClear: true,
+ minimumResultsForSearch: -1
+ });
+
+
+ $("#e2").on("change", function(e)
+ {
+ updateProfile(e.val);
+ });
+
+ }
+});
diff --git a/storage/profiles/B05 BQ1000 .json b/storage/profiles/B05 BQ1000 .json
new file mode 100644
index 0000000..c32a0b5
--- /dev/null
+++ b/storage/profiles/B05 BQ1000 .json
@@ -0,0 +1 @@
+{"type": "profile", "data": [[0, 30], [2520, 120], [6120, 120], [23400, 945], [26700, 1000], [27600, 1000]], "name": "B05 BQ1000 "}
\ No newline at end of file
diff --git a/storage/profiles/C6 drop and soak DF.json b/storage/profiles/C6 drop and soak DF.json
new file mode 100644
index 0000000..333c382
--- /dev/null
+++ b/storage/profiles/C6 drop and soak DF.json
@@ -0,0 +1 @@
+{"type": "profile", "data": [[0, 30], [7200, 121], [16800, 121], [36000, 1148], [39360, 1204], [39960, 1204], [40380, 1148], [42180, 1148]], "name": "C6 drop and soak DF"}
\ No newline at end of file
diff --git a/storage/profiles/lizzy .json b/storage/profiles/lizzy .json
new file mode 100644
index 0000000..5f61810
--- /dev/null
+++ b/storage/profiles/lizzy .json
@@ -0,0 +1 @@
+{"type": "profile", "data": [[0, 125], [240, 130], [360, 150], [2400, 600]], "name": "lizzy "}
\ No newline at end of file
diff --git a/storage/profiles/marcTestRun (Low).json b/storage/profiles/marcTestRun (Low).json
new file mode 100644
index 0000000..fee7c1e
--- /dev/null
+++ b/storage/profiles/marcTestRun (Low).json
@@ -0,0 +1 @@
+{"type": "profile", "data": [[0, 175], [300, 175], [600, 225], [900, 225], [1200, 250], [1500, 250]], "name": "marcTestRun (Low)"}
\ No newline at end of file
diff --git a/tempTest1.py b/tempTest1.py
new file mode 100644
index 0000000..3a55879
--- /dev/null
+++ b/tempTest1.py
@@ -0,0 +1,36 @@
+
+import board
+import digitalio
+import adafruit_max31856
+import RPi.GPIO as GPIO
+import time
+
+# Create sensor object, communicating over the board's default SPI bus
+spi = board.SPI()
+
+# allocate a CS pin and set the direction
+cs = digitalio.DigitalInOut(board.D5)
+cs.direction = digitalio.Direction.OUTPUT
+
+# create a thermocouple object with the above
+thermocouple = adafruit_max31856.MAX31856(spi, cs)
+
+# print the temperature!
+print(thermocouple.temperature)
+
+relay1 = 23
+relay2 = 24
+trigger1 = 20
+trigger2 = 21
+
+GPIO.setmode(GPIO.BCM)
+GPIO.setup(relay1, GPIO.OUT)
+GPIO.setup(relay2, GPIO.OUT)
+GPIO.setup(trigger1, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
+GPIO.setup(trigger2, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
+
+GPIO.output(relay1, 1) #OFF
+
+while True:
+ print(thermocouple.temperature)
+ time.sleep(5)
diff --git a/zn.csv b/zn.csv
new file mode 100644
index 0000000..3c7a429
--- /dev/null
+++ b/zn.csv
@@ -0,0 +1,1639 @@
+time,temperature
+1631991961.4819157,17.6875
+1631991962.4848793,17.65625
+1631991963.4878922,17.663541666666667
+1631991964.4912767,17.652853260869566
+1631991965.4940536,17.651822916666667
+1631991966.4974234,17.654810855263158
+1631991967.506486,17.6505859375
+1631991968.509278,17.651171875
+1631991969.5127475,17.6548828125
+1631991970.5161455,17.659375
+1631991971.519493,17.6671875
+1631991972.527164,17.6810546875
+1631991973.5305448,17.7015625
+1631991974.5339723,17.713671875
+1631991975.536756,17.744140625
+1631991976.5401807,17.7732421875
+1631991977.5512495,17.80234375
+1631991978.554439,17.84140625
+1631991979.5571961,17.8857421875
+1631991980.5605488,17.92890625
+1631991981.5640576,17.98671875
+1631991982.572401,18.0451171875
+1631991983.5752158,18.1162109375
+1631991984.5785875,18.1892578125
+1631991985.5851483,18.283203125
+1631991986.5879302,18.3666015625
+1631991987.596732,18.4634765625
+1631991988.6005838,18.5841796875
+1631991989.6040263,18.69609375
+1631991990.606839,18.824609375
+1631991991.6101997,18.9400390625
+1631991992.6184785,19.0623046875
+1631991993.6218944,19.211328125
+1631991994.625273,19.337109375
+1631991995.628676,19.497265625
+1631991996.6320536,19.6380859375
+1631991997.6461933,19.7908203125
+1631991998.6495907,19.9671875
+1631991999.6530485,20.118359375
+1631992000.6564806,20.3072265625
+1631992001.6592743,20.4841796875
+1631992002.6731508,20.666015625
+1631992003.6765356,20.8775390625
+1631992004.6793392,21.07109375
+1631992005.682915,21.3087890625
+1631992006.6862347,21.5154296875
+1631992007.6934533,21.7615234375
+1631992008.6968472,21.98203125
+1631992009.7002277,22.2251953125
+1631992010.7037528,22.501953125
+1631992011.7065494,22.7603515625
+1631992012.715075,23.0634765625
+1631992013.718541,23.344140625
+1631992014.7205255,23.65390625
+1631992015.7240174,23.9255859375
+1631992016.72744,24.2048828125
+1631992017.7357569,24.5326171875
+1631992018.7385464,24.81953125
+1631992019.7419333,25.15546875
+1631992020.745271,25.4638671875
+1631992021.7480838,25.76640625
+1631992022.7568815,26.1255859375
+1631992023.7602031,26.4419921875
+1631992024.763626,26.813671875
+1631992025.7663987,27.149609375
+1631992026.7689912,27.4927734375
+1631992027.782006,27.9015625
+1631992028.7847967,28.258203125
+1631992029.7882125,28.654296875
+1631992030.791599,29.01484375
+1631992031.793377,29.4208984375
+1631992032.8041136,29.765625
+1631992033.8074934,30.1162109375
+1631992034.809237,30.5091796875
+1631992035.8124309,30.8658203125
+1631992036.8158655,31.266796875
+1631992037.8241591,31.6162109375
+1631992038.826985,32.0349609375
+1631992039.8304007,32.4197265625
+1631992040.8340266,32.8025390625
+1631992041.8357863,33.2375
+1631992042.8448598,33.6296875
+1631992043.8515446,34.079296875
+1631992044.8543682,34.472265625
+1631992045.857765,34.86171875
+1631992046.8615925,35.320703125
+1631992047.8636024,35.7220703125
+1631992048.8669841,36.1921875
+1631992049.870427,36.5998046875
+1631992050.8765616,37.0748046875
+1631992051.8799672,37.4890625
+1631992052.883471,37.9060546875
+1631992053.8917787,38.3974609375
+1631992054.8946126,38.8240234375
+1631992055.900655,39.323828125
+1631992056.904239,39.765234375
+1631992057.9073815,40.2052734375
+1631992058.920707,40.7029296875
+1631992059.924182,41.138671875
+1631992060.9259517,41.647265625
+1631992061.9293263,42.0916015625
+1631992062.9328802,42.5970703125
+1631992063.9416668,43.051171875
+1631992064.9497664,43.514453125
+1631992065.953262,44.034765625
+1631992066.9565918,44.4865234375
+1631992067.9594197,45.0087890625
+1631992068.9672322,45.4681640625
+1631992069.9705422,45.9919921875
+1631992070.9733527,46.4416015625
+1631992071.9767497,46.9615234375
+1631992072.980154,47.434375
+1631992073.9885259,47.9033203125
+1631992074.9914098,48.4173828125
+1631992075.994738,48.87578125
+1631992076.998074,49.416015625
+1631992078.0008657,49.9
+1631992079.0092995,50.44453125
+1631992080.0128171,50.933203125
+1631992081.0161128,51.4263671875
+1631992082.0189335,51.984765625
+1631992083.0224295,52.4689453125
+1631992084.031087,53.0125
+1631992085.0338726,53.48671875
+1631992086.0372262,54.0400390625
+1631992087.0407176,54.535546875
+1631992088.048988,55.027734375
+1631992089.0577528,55.6037109375
+1631992090.0612462,56.1140625
+1631992091.0646067,56.6927734375
+1631992092.0674434,57.2125
+1631992093.0707989,57.80703125
+1631992094.0789552,58.3142578125
+1631992095.0820796,58.823828125
+1631992096.0855074,59.3990234375
+1631992097.0889328,59.8841796875
+1631992098.0919225,60.431640625
+1631992099.1012468,60.92109375
+1631992100.1046102,61.4076171875
+1631992101.1079807,61.974609375
+1631992102.1108131,62.476171875
+1631992103.1144228,63.05703125
+1631992104.1250741,63.5732421875
+1631992105.1284466,64.08828125
+1631992106.1312299,64.6904296875
+1631992107.1346345,65.2287109375
+1631992108.1380508,65.8447265625
+1631992109.1463952,66.3767578125
+1631992110.1551065,66.9087890625
+1631992111.158494,67.5123046875
+1631992112.1618545,68.0330078125
+1631992113.1649287,68.6259765625
+1631992114.173388,69.139453125
+1631992115.1767404,69.7380859375
+1631992116.1795638,70.261328125
+1631992117.183033,70.78515625
+1631992118.1863654,71.380078125
+1631992119.1881418,71.8986328125
+1631992120.1952083,72.48828125
+1631992121.1985667,73.0078125
+1631992122.2019029,73.53359375
+1631992123.2046833,74.1220703125
+1631992124.2080424,74.659375
+1631992125.216316,75.254296875
+1631992126.2190902,75.7810546875
+1631992127.2225795,76.3060546875
+1631992128.2259839,76.910546875
+1631992129.2277613,77.4337890625
+1631992130.2362163,78.0369140625
+1631992131.2396085,78.5625
+1631992132.2430286,79.079296875
+1631992133.2458942,79.665625
+1631992134.2492874,80.1779296875
+1631992135.2572846,80.7568359375
+1631992136.2606568,81.251171875
+1631992137.263907,81.8294921875
+1631992138.2673333,82.3537109375
+1631992139.2707655,82.875390625
+1631992140.2803257,83.4732421875
+1631992141.2838018,84.0169921875
+1631992142.307143,84.5611328125
+1631992143.310981,85.17421875
+1631992144.3144884,85.70234375
+1631992145.3228045,86.3078125
+1631992146.3261585,86.840234375
+1631992147.3279636,87.4501953125
+1631992148.331378,87.989453125
+1631992149.3340752,88.53203125
+1631992150.3473072,89.1484375
+1631992151.3504074,89.6849609375
+1631992152.3539734,90.2982421875
+1631992153.3574204,90.8359375
+1631992154.3594646,91.4494140625
+1631992155.368728,92.00078125
+1631992156.37212,92.5546875
+1631992157.3754191,93.176171875
+1631992158.378231,93.6998046875
+1631992159.3816354,94.3142578125
+1631992160.3902512,94.8416015625
+1631992161.3920314,95.4279296875
+1631992162.3954055,95.9396484375
+1631992163.3987486,96.4646484375
+1631992164.4021046,97.0693359375
+1631992165.4092326,97.5791015625
+1631992166.4128637,98.1736328125
+1631992167.4162197,98.7166015625
+1631992168.419014,99.25
+1631992169.422524,99.8419921875
+1631992170.4308228,100.3708984375
+1631992171.433703,100.98125
+1631992172.437108,101.50078125
+1631992173.4457738,102.023828125
+1631992174.4491308,102.6404296875
+1631992175.456208,103.1646484375
+1631992176.459601,103.7779296875
+1631992177.4631157,104.307421875
+1631992178.4649289,104.9154296875
+1631992179.4683368,105.4482421875
+1631992180.4768386,105.9982421875
+1631992181.4797707,106.6197265625
+1631992182.4822686,107.1583984375
+1631992183.4851465,107.7751953125
+1631992184.4880445,108.3005859375
+1631992185.4948773,108.888671875
+1631992186.4981613,109.40078125
+1631992187.5015533,109.9173828125
+1631992188.5048952,110.498828125
+1631992189.5077055,111.017578125
+1631992190.5159092,111.616796875
+1631992191.519392,112.1357421875
+1631992192.5228827,112.7212890625
+1631992193.525682,113.2431640625
+1631992194.5290468,113.7625
+1631992195.5373948,114.3376953125
+1631992196.5401814,114.852734375
+1631992197.5437174,115.4416015625
+1631992198.547135,115.9517578125
+1631992199.5504582,116.5337890625
+1631992200.558599,117.059375
+1631992201.5614157,117.5751953125
+1631992202.5648005,118.1666015625
+1631992203.5675824,118.6859375
+1631992204.5742853,119.2814453125
+1631992205.5827498,119.8064453125
+1631992206.5860999,120.337109375
+1631992207.5889308,120.9384765625
+1631992208.5923786,121.4623046875
+1631992209.5957584,122.0603515625
+1631992210.604329,122.57890625
+1631992211.6077058,123.17265625
+1631992212.6111226,123.6869140625
+1631992213.6144724,124.194140625
+1631992214.6162405,124.7623046875
+1631992215.627045,125.274609375
+1631992216.6304307,125.8580078125
+1631992217.6338584,126.368359375
+1631992218.6419303,126.8806640625
+1631992219.645347,127.47421875
+1631992220.6542308,127.9833984375
+1631992221.6576264,128.562890625
+1631992222.6612191,129.069921875
+1631992223.6646228,129.64140625
+1631992224.6681106,130.138671875
+1631992225.6701353,130.6416015625
+1631992226.6738312,131.2087890625
+1631992227.677224,131.7025390625
+1631992228.6805315,132.2748046875
+1631992229.683401,132.776953125
+1631992230.6921248,133.272265625
+1631992231.7015524,133.8427734375
+1631992232.704955,134.3376953125
+1631992233.7077878,134.907421875
+1631992234.7113335,135.40625
+1631992235.7146962,135.9783203125
+1631992236.7216678,136.473828125
+1631992237.7303524,136.9763671875
+1631992238.733838,137.54453125
+1631992239.7371898,138.035546875
+1631992240.7399864,138.609765625
+1631992241.7483819,139.1126953125
+1631992242.7518635,139.683984375
+1631992243.7552133,140.182421875
+1631992244.7579658,140.681640625
+1631992245.7613566,141.2392578125
+1631992246.7693102,141.7341796875
+1631992247.7711678,142.2841796875
+1631992248.7745864,142.7673828125
+1631992249.7775738,143.2482421875
+1631992250.7809396,143.8037109375
+1631992251.788429,144.28203125
+1631992252.7918105,144.8328125
+1631992253.7952123,145.3185546875
+1631992254.7970028,145.8875
+1631992255.8004813,146.3720703125
+1631992256.808823,146.86484375
+1631992257.8123994,147.4228515625
+1631992258.815213,147.911328125
+1631992259.8186066,148.4451171875
+1631992260.8213482,148.914453125
+1631992261.8233745,149.4544921875
+1631992262.8268352,149.9201171875
+1631992263.8314047,150.3904296875
+1631992264.8366072,150.9330078125
+1631992265.8400207,151.406640625
+1631992266.8435905,151.9392578125
+1631992267.851503,152.4083984375
+1631992268.853053,152.87421875
+1631992269.8570247,153.3951171875
+1631992270.8609533,153.84921875
+1631992271.8644917,154.37265625
+1631992272.8723083,154.8220703125
+1631992273.8756588,155.276953125
+1631992274.878999,155.7990234375
+1631992275.8812385,156.2576171875
+1631992276.884622,156.7857421875
+1631992277.8928525,157.2583984375
+1631992278.8956401,157.7900390625
+1631992279.8990035,158.248046875
+1631992280.902546,158.705078125
+1631992281.9059663,159.2193359375
+1631992282.9140399,159.662109375
+1631992283.9173832,160.1666015625
+1631992284.9207077,160.6146484375
+1631992285.9284348,161.1181640625
+1631992286.9318364,161.5634765625
+1631992287.9401348,162.0125
+1631992288.9437082,162.525
+1631992289.9468076,162.973046875
+1631992290.950234,163.42109375
+1631992291.9537864,163.936328125
+1631992292.9612877,164.3822265625
+1631992293.9646652,164.8978515625
+1631992294.9681334,165.347265625
+1631992295.970109,165.85234375
+1631992296.9735813,166.28984375
+1631992297.9817514,166.719140625
+1631992298.9850688,167.1990234375
+1631992299.9878542,167.62265625
+1631992300.9912937,168.0970703125
+1631992301.9947069,168.523828125
+1631992303.0048282,169.0220703125
+1631992304.0079443,169.462890625
+1631992305.011247,169.90078125
+1631992306.014641,170.3935546875
+1631992307.0164206,170.8318359375
+1631992308.0253718,171.3173828125
+1631992309.0295172,171.747265625
+1631992310.0329785,172.1763671875
+1631992311.0357869,172.6640625
+1631992312.0391722,173.0861328125
+1631992313.0479324,173.5708984375
+1631992314.0512645,173.997265625
+1631992315.0540729,174.48359375
+1631992316.0574813,174.9166015625
+1631992317.0608065,175.3486328125
+1631992318.0627387,175.83984375
+1631992319.066155,176.2626953125
+1631992320.0748103,176.68359375
+1631992321.0782294,177.1501953125
+1631992322.0812607,177.5666015625
+1631992323.0846899,178.033203125
+1631992324.0927522,178.4392578125
+1631992325.0959806,178.899609375
+1631992326.0993729,179.300390625
+1631992327.102825,179.7041015625
+1631992328.105703,180.1712890625
+1631992329.1141534,180.5896484375
+1631992330.1175315,181.075
+1631992331.1203108,181.495703125
+1631992332.129249,181.9080078125
+1631992333.1327212,182.375
+1631992334.1411092,182.778515625
+1631992335.1439254,183.2255859375
+1631992336.1472747,183.6244140625
+1631992337.1540449,184.0779296875
+1631992338.1568491,184.47578125
+1631992339.165203,184.86953125
+1631992340.1686504,185.307421875
+1631992341.1706464,185.6900390625
+1631992342.1742318,186.125
+1631992343.177598,186.5017578125
+1631992344.186039,186.892578125
+1631992345.188837,187.336328125
+1631992346.1923354,187.7271484375
+1631992347.1956663,188.1701171875
+1631992348.1984718,188.55625
+1631992349.2123928,188.93125
+1631992350.21571,189.3578125
+1631992351.219552,189.7375
+1631992352.2230802,190.169921875
+1631992353.2264652,190.54453125
+1631992354.2401702,190.972265625
+1631992355.2430942,191.349609375
+1631992356.2465165,191.715234375
+1631992357.2499235,192.147265625
+1631992358.2533596,192.525390625
+1631992359.2603726,192.96796875
+1631992360.2638538,193.3474609375
+1631992361.267279,193.7365234375
+1631992362.270644,194.179296875
+1631992363.2734933,194.555078125
+1631992364.2843661,194.97890625
+1631992365.2877712,195.345703125
+1631992366.2911851,195.7708984375
+1631992367.2941961,196.1130859375
+1631992368.2975843,196.4654296875
+1631992369.3058546,196.878125
+1631992370.3086865,197.2390625
+1631992371.3152964,197.6431640625
+1631992372.3186936,198.00390625
+1631992373.3219926,198.37265625
+1631992374.3292296,198.7908203125
+1631992375.3327446,199.1603515625
+1631992376.3353887,199.526953125
+1631992377.3371768,199.955078125
+1631992378.3406026,200.3259765625
+1631992379.3490596,200.756640625
+1631992380.3508208,201.1236328125
+1631992381.3549397,201.5294921875
+1631992382.3588178,201.895703125
+1631992383.362341,202.2662109375
+1631992384.3747947,202.677734375
+1631992385.3782136,203.030859375
+1631992386.3817186,203.446484375
+1631992387.3850777,203.8080078125
+1631992388.3884306,204.2216796875
+1631992389.3968146,204.5900390625
+1631992390.3997917,204.9541015625
+1631992391.4038455,205.36796875
+1631992392.4072485,205.7234375
+1631992393.4106064,206.1056640625
+1631992394.4186773,206.440625
+1631992395.4217691,206.8248046875
+1631992396.4251332,207.169921875
+1631992397.4285674,207.5150390625
+1631992398.4319053,207.9197265625
+1631992399.439207,208.2681640625
+1631992400.445293,208.6619140625
+1631992401.448705,209.0134765625
+1631992402.4506738,209.35859375
+1631992403.4542596,209.75078125
+1631992404.4631846,210.100390625
+1631992405.4666154,210.4974609375
+1631992406.4700985,210.840234375
+1631992407.4726763,211.180078125
+1631992408.4761314,211.573046875
+1631992409.483694,211.9201171875
+1631992410.48706,212.3169921875
+1631992411.490388,212.66484375
+1631992412.493245,213.0603515625
+1631992413.4966078,213.402734375
+1631992414.5050485,213.7412109375
+1631992415.5078883,214.1197265625
+1631992416.5112824,214.446484375
+1631992417.5146422,214.8216796875
+1631992418.5174131,215.141015625
+1631992419.52578,215.5171875
+1631992420.529132,215.8525390625
+1631992421.5366116,216.1921875
+1631992422.5399876,216.5763671875
+1631992423.5434384,216.91484375
+1631992424.5508912,217.2998046875
+1631992425.554566,217.6291015625
+1631992426.5569448,217.9447265625
+1631992427.5587137,218.29921875
+1631992428.5612845,218.6251953125
+1631992429.5697744,218.9703125
+1631992430.5717943,219.2638671875
+1631992431.575186,219.5947265625
+1631992432.5785797,219.87734375
+1631992433.5812588,220.1642578125
+1631992434.5885634,220.4865234375
+1631992435.5919762,220.7767578125
+1631992436.595445,221.077734375
+1631992437.5972118,221.4314453125
+1631992438.6011765,221.745703125
+1631992439.6100614,222.096484375
+1631992440.6135,222.42265625
+1631992441.617731,222.7822265625
+1631992442.6211386,223.096484375
+1631992443.6245387,223.395703125
+1631992444.6335173,223.733203125
+1631992445.6366792,224.0349609375
+1631992446.640081,224.3814453125
+1631992447.6435447,224.6765625
+1631992448.6468503,224.987890625
+1631992449.66006,225.34609375
+1631992450.6635437,225.656640625
+1631992451.6668715,226.009765625
+1631992452.6696894,226.3189453125
+1631992453.675009,226.658984375
+1631992454.6835418,226.9560546875
+1631992455.6868412,227.261328125
+1631992456.689582,227.591796875
+1631992457.693107,227.8884765625
+1631992458.6964715,228.236328125
+1631992459.7038364,228.54140625
+1631992460.707216,228.892578125
+1631992461.7106287,229.2017578125
+1631992462.7179985,229.5609375
+1631992463.7214622,229.8705078125
+1631992464.729914,230.1779296875
+1631992465.7334137,230.532421875
+1631992466.7366104,230.844140625
+1631992467.7435129,231.2060546875
+1631992468.7468915,231.525
+1631992469.7487955,231.84453125
+1631992470.752505,232.2162109375
+1631992471.7563787,232.5357421875
+1631992472.7632403,232.88125
+1631992473.766052,233.183984375
+1631992474.7694237,233.4720703125
+1631992475.7780483,233.79375
+1631992476.7813911,234.0767578125
+1631992477.7842185,234.407421875
+1631992478.7876062,234.695703125
+1631992479.790995,234.9716796875
+1631992480.7994428,235.3015625
+1631992481.8026972,235.58125
+1631992482.8061037,235.89375
+1631992483.8094788,236.1767578125
+1631992484.8126342,236.50390625
+1631992485.8209329,236.795703125
+1631992486.8244286,237.08359375
+1631992487.826214,237.42578125
+1631992488.8294818,237.7208984375
+1631992489.8330693,238.0712890625
+1631992490.8413079,238.3693359375
+1631992491.8494284,238.6767578125
+1631992492.853046,239.0251953125
+1631992493.8564878,239.326953125
+1631992494.8584573,239.6607421875
+1631992495.8674269,239.9583984375
+1631992496.8738286,240.2892578125
+1631992497.877316,240.5681640625
+1631992498.8793178,240.837109375
+1631992499.8828013,241.14375
+1631992500.8936148,241.410546875
+1631992501.9074132,241.7025390625
+1631992502.9102209,241.9666015625
+1631992503.9137316,242.226171875
+1631992504.917148,242.5255859375
+1631992505.9189126,242.7822265625
+1631992506.9228892,243.0771484375
+1631992507.9267988,243.3423828125
+1631992508.9285524,243.6544921875
+1631992509.93196,243.929296875
+1631992510.9353516,244.2044921875
+1631992511.943829,244.5275390625
+1631992512.9466505,244.8083984375
+1631992513.950061,245.127734375
+1631992514.9535747,245.4091796875
+1631992515.9603963,245.722265625
+1631992516.9678178,245.973046875
+1631992517.9712353,246.2337890625
+1631992518.9746656,246.5302734375
+1631992519.9780555,246.783984375
+1631992520.980863,247.0701171875
+1631992521.9892645,247.352734375
+1631992522.9928358,247.63671875
+1631992523.9956512,247.93359375
+1631992524.9990659,248.1939453125
+1631992526.0028434,248.4876953125
+1631992527.011165,248.7384765625
+1631992528.0139954,248.9765625
+1631992529.0174038,249.2615234375
+1631992530.0208604,249.5197265625
+1631992531.024381,249.8291015625
+1631992532.0316474,250.0998046875
+1631992533.0403528,250.376171875
+1631992534.0439303,250.700390625
+1631992535.0467308,250.9888671875
+1631992536.0500975,251.304296875
+1631992537.0584278,251.578125
+1631992538.0612452,251.89453125
+1631992539.0646167,252.159765625
+1631992540.0733132,252.4220703125
+1631992541.0767086,252.7134765625
+1631992542.0850549,252.963671875
+1631992543.0884736,253.2583984375
+1631992544.091855,253.517578125
+1631992545.0971253,253.8197265625
+1631992546.100109,254.0888671875
+1631992547.1080503,254.3509765625
+1631992548.110523,254.6494140625
+1631992549.1135173,254.9080078125
+1631992550.1169116,255.18203125
+1631992551.1202753,255.4275390625
+1631992552.1274846,255.683984375
+1631992553.130909,255.97578125
+1631992554.1343293,256.2365234375
+1631992555.136116,256.5263671875
+1631992556.1395044,256.7880859375
+1631992557.1480308,257.0328125
+1631992558.1514182,257.3169921875
+1631992559.1545877,257.5677734375
+1631992560.157962,257.8615234375
+1631992561.1613345,258.1271484375
+1631992562.163153,258.4255859375
+1631992563.1665492,258.689453125
+1631992564.1737268,258.9458984375
+1631992565.177686,259.2283203125
+1631992566.1810184,259.4642578125
+1631992567.1845767,259.7423828125
+1631992568.1930292,259.9857421875
+1631992569.1958277,260.25078125
+1631992570.199219,260.498828125
+1631992571.2026613,260.7525390625
+1631992572.2044208,261.028125
+1631992573.2129152,261.278515625
+1631992574.2191293,261.5677734375
+1631992575.2226887,261.8185546875
+1631992576.2257822,262.0671875
+1631992577.2291455,262.348828125
+1631992578.237501,262.5935546875
+1631992579.2408843,262.8736328125
+1631992580.2443366,263.11796875
+1631992581.247659,263.3642578125
+1631992582.2494526,263.6501953125
+1631992583.2575846,263.8888671875
+1631992584.2609673,264.1591796875
+1631992585.2644024,264.3884765625
+1631992586.2671468,264.614453125
+1631992587.2705493,264.85703125
+1631992588.2790754,265.0828125
+1631992589.2826097,265.344140625
+1631992590.2854033,265.57734375
+1631992591.2887375,265.8541015625
+1631992592.2912478,266.1078125
+1631992593.2930832,266.3556640625
+1631992594.2961395,266.6189453125
+1631992595.2995389,266.8576171875
+1631992596.3030603,267.1328125
+1631992597.3058896,267.3625
+1631992598.3146007,267.584375
+1631992599.3232782,267.8576171875
+1631992600.3266263,268.1125
+1631992601.3294437,268.3791015625
+1631992602.3329039,268.6146484375
+1631992603.3362992,268.8951171875
+1631992604.3447816,269.1416015625
+1631992605.3532667,269.3806640625
+1631992606.3566551,269.6484375
+1631992607.3600736,269.884375
+1631992608.3636158,270.1505859375
+1631992609.3710968,270.376171875
+1631992610.3744462,270.6298828125
+1631992611.3778944,270.8509765625
+1631992612.379866,271.0765625
+1631992613.383392,271.3328125
+1631992614.3941243,271.5525390625
+1631992615.3974495,271.8123046875
+1631992616.4002788,272.0396484375
+1631992617.409135,272.2626953125
+1631992618.4126365,272.5146484375
+1631992619.4209554,272.7435546875
+1631992620.4239168,273.0083984375
+1631992621.431536,273.21328125
+1631992622.4335513,273.4646484375
+1631992623.4368577,273.6806640625
+1631992624.4512765,273.8931640625
+1631992625.454656,274.1341796875
+1631992626.4579532,274.3662109375
+1631992627.4612925,274.6283203125
+1631992628.4640727,274.853125
+1631992629.4762628,275.11875
+1631992630.4793253,275.356640625
+1631992631.4821184,275.594140625
+1631992632.4855444,275.858203125
+1631992633.4889948,276.1005859375
+1631992634.496313,276.3427734375
+1631992635.4996772,276.616796875
+1631992636.5031655,276.8451171875
+1631992637.5065157,277.122265625
+1631992638.509446,277.3576171875
+1631992639.513024,277.62578125
+1631992640.5206444,277.8599609375
+1631992641.5235915,278.078515625
+1631992642.5269637,278.3314453125
+1631992643.534419,278.5361328125
+1631992644.538331,278.7716796875
+1631992645.5468202,278.9638671875
+1631992646.5502114,279.17734375
+1631992647.5537405,279.41953125
+1631992648.5555077,279.646484375
+1631992649.5594292,279.896875
+1631992650.5684092,280.130859375
+1631992651.5717595,280.359375
+1631992652.5745776,280.6044921875
+1631992653.5779586,280.8087890625
+1631992654.58138,281.0458984375
+1631992655.589854,281.2482421875
+1631992656.593316,281.4591796875
+1631992657.5971124,281.658984375
+1631992658.6009583,281.8615234375
+1631992659.6042757,282.0953125
+1631992660.6126838,282.3033203125
+1631992661.616054,282.5640625
+1631992662.6188812,282.7927734375
+1631992663.6243165,283.06484375
+1631992664.6276374,283.3009765625
+1631992665.6359737,283.515234375
+1631992666.6388037,283.7494140625
+1631992667.642315,283.9318359375
+1631992668.646773,284.131640625
+1631992669.6500442,284.3001953125
+1631992670.6570113,284.4724609375
+1631992671.6604123,284.687109375
+1631992672.6639066,284.8865234375
+1631992673.66728,285.1212890625
+1631992674.670602,285.3541015625
+1631992675.679457,285.5724609375
+1631992676.683036,285.8189453125
+1631992677.685851,286.0388671875
+1631992678.6892655,286.2791015625
+1631992679.6927204,286.475390625
+1631992680.6942728,286.666796875
+1631992681.6981926,286.8951171875
+1631992682.702093,287.09140625
+1631992683.705454,287.315234375
+1631992684.708538,287.5041015625
+1631992685.7166502,287.722265625
+1631992686.7251272,287.9255859375
+1631992687.7285264,288.137109375
+1631992688.7313323,288.3798828125
+1631992689.7347455,288.5759765625
+1631992690.7381008,288.7974609375
+1631992691.7459886,288.9859375
+1631992692.7486248,289.1634765625
+1631992693.7520459,289.3611328125
+1631992694.755446,289.5548828125
+1631992695.758816,289.790234375
+1631992696.7674222,290.0099609375
+1631992697.7708194,290.2169921875
+1631992698.7727373,290.4650390625
+1631992699.7761395,290.6748046875
+1631992700.7794926,290.90546875
+1631992701.7879086,291.1015625
+1631992702.7907066,291.3279296875
+1631992703.7941997,291.532421875
+1631992704.7975519,291.7404296875
+1631992705.799998,291.9822265625
+1631992706.8083217,292.19609375
+1631992707.812263,292.4361328125
+1631992708.815416,292.6353515625
+1631992709.8188221,292.8296875
+1631992710.822201,293.0353515625
+1631992711.8331132,293.201171875
+1631992712.8359373,293.4033203125
+1631992713.8393753,293.59296875
+1631992714.8476532,293.8052734375
+1631992715.8504293,293.99140625
+1631992716.8593304,294.178125
+1631992717.8628125,294.408984375
+1631992718.8656034,294.5990234375
+1631992719.8690224,294.828515625
+1631992720.8724654,295.0484375
+1631992721.8742585,295.2650390625
+1631992722.8777165,295.5130859375
+1631992723.8813086,295.72421875
+1631992724.8833196,295.9474609375
+1631992725.8867307,296.1287109375
+1631992726.8900797,296.2994140625
+1631992727.9043677,296.50390625
+1631992728.9061406,296.673828125
+1631992729.9095397,296.873828125
+1631992730.9130328,297.0525390625
+1631992731.9164488,297.240234375
+1631992732.9250789,297.4529296875
+1631992733.9284446,297.624609375
+1631992734.9312437,297.8322265625
+1631992735.9340277,298.01171875
+1631992736.9374287,298.2009765625
+1631992737.9458337,298.418359375
+1631992738.9486117,298.6154296875
+1631992739.9519777,298.848046875
+1631992740.9553308,299.059765625
+1631992741.9586816,299.259765625
+1631992742.9661076,299.483984375
+1631992743.9694827,299.6740234375
+1631992744.9729416,299.89765625
+1631992745.9757357,300.0849609375
+1631992746.9791348,300.26953125
+1631992747.9876485,300.4728515625
+1631992748.9910176,300.660546875
+1631992749.9938796,300.8705078125
+1631992750.9972465,301.055859375
+1631992752.0006294,301.24921875
+1631992753.0024807,301.4759765625
+1631992754.0059404,301.683203125
+1631992755.0093393,301.9205078125
+1631992756.0128226,302.1328125
+1631992757.0156205,302.378125
+1631992758.0190024,302.591015625
+1631992759.0273743,302.801953125
+1631992760.0291784,303.0287109375
+1631992761.0327153,303.2181640625
+1631992762.036137,303.410546875
+1631992763.0394862,303.571484375
+1631992764.0479622,303.761328125
+1631992765.051362,303.9236328125
+1631992766.0547469,304.0734375
+1631992767.0581288,304.246484375
+1631992768.060922,304.395703125
+1631992769.0697896,304.5810546875
+1631992770.0732996,304.7326171875
+1631992771.076099,304.9185546875
+1631992772.0794616,305.0935546875
+1631992773.0830107,305.2861328125
+1631992774.0911596,305.4849609375
+1631992775.0939605,305.64296875
+1631992776.0973363,305.8451171875
+1631992777.1007292,306.026953125
+1631992778.1042283,306.194140625
+1631992779.117253,306.3931640625
+1631992780.120626,306.57265625
+1631992781.1241827,306.785546875
+1631992782.1273508,306.9576171875
+1631992783.1360328,307.1408203125
+1631992784.1445875,307.349609375
+1631992785.1463485,307.5197265625
+1631992786.1497486,307.7181640625
+1631992787.1532502,307.8841796875
+1631992788.1550002,308.082421875
+1631992789.1636832,308.251953125
+1631992790.1667929,308.4265625
+1631992791.169978,308.6291015625
+1631992792.172906,308.817578125
+1631992793.176432,309.026171875
+1631992794.1848066,309.1970703125
+1631992795.1881976,309.40390625
+1631992796.1915615,309.5919921875
+1631992797.1949494,309.7853515625
+1631992798.1983612,309.995703125
+1631992799.2063448,310.1927734375
+1631992800.209759,310.41953125
+1631992801.213146,310.60234375
+1631992802.2159216,310.7958984375
+1631992803.2193258,311.019140625
+1631992804.2277365,311.2146484375
+1631992805.2311413,311.4287109375
+1631992806.233936,311.6265625
+1631992807.2372992,311.813671875
+1631992808.240638,312.0087890625
+1631992809.2484257,312.1701171875
+1631992810.2519057,312.345703125
+1631992811.2552514,312.4947265625
+1631992812.2580204,312.675390625
+1631992813.2613354,312.833203125
+1631992814.269484,313.0107421875
+1631992815.273037,313.2177734375
+1631992816.275839,313.406640625
+1631992817.2793157,313.6271484375
+1631992818.2829196,313.83828125
+1631992819.2849584,314.0333984375
+1631992820.2884123,314.2578125
+1631992821.2917902,314.4412109375
+1631992822.2950482,314.6216796875
+1631992823.296895,314.8171875
+1631992824.3002658,314.9732421875
+1631992825.3090096,315.174609375
+1631992826.3124764,315.348046875
+1631992827.3153162,315.5431640625
+1631992828.318712,315.7099609375
+1631992829.322093,315.8771484375
+1631992830.3353047,316.0703125
+1631992831.3381157,316.2189453125
+1631992832.3415234,316.4103515625
+1631992833.3449132,316.5955078125
+1631992834.3499362,316.79140625
+1631992835.3583498,316.959765625
+1631992836.3613226,317.1451171875
+1631992837.3646505,317.345703125
+1631992838.3674273,317.5158203125
+1631992839.3708284,317.72109375
+1631992840.379443,317.894921875
+1631992841.3829527,318.072265625
+1631992842.3860586,318.2798828125
+1631992843.3894296,318.45390625
+1631992844.3929403,318.646484375
+1631992845.400102,318.80546875
+1631992846.408891,318.969140625
+1631992847.4113886,319.1525390625
+1631992848.4147274,319.3189453125
+1631992849.4181583,319.5087890625
+1631992850.4266,319.684765625
+1631992851.4299097,319.896875
+1631992852.4331677,320.0705078125
+1631992853.4365594,320.2490234375
+1631992854.4399102,320.4578125
+1631992855.447192,320.640625
+1631992856.4506059,320.8564453125
+1631992857.4540784,321.0490234375
+1631992858.4558952,321.2517578125
+1631992859.4593163,321.4134765625
+1631992860.468191,321.5759765625
+1631992861.4715238,321.7400390625
+1631992862.4742887,321.8853515625
+1631992863.4777102,322.0515625
+1631992864.481164,322.209765625
+1631992865.4893537,322.3533203125
+1631992866.4911516,322.5205078125
+1631992867.4945066,322.6720703125
+1631992868.5031683,322.8162109375
+1631992869.506526,322.9951171875
+1631992870.5138905,323.1583984375
+1631992871.5172734,323.346875
+1631992872.5207243,323.508984375
+1631992873.524673,323.696484375
+1631992874.5281386,323.8439453125
+1631992875.5417395,323.987890625
+1631992876.5450943,324.16015625
+1631992877.547913,324.3232421875
+1631992878.5513198,324.5052734375
+1631992879.5547016,324.68125
+1631992880.5620263,324.9
+1631992881.5654058,325.0900390625
+1631992882.5687797,325.2650390625
+1631992883.5705783,325.4681640625
+1631992884.5740864,325.636328125
+1631992885.581279,325.8107421875
+1631992886.5841987,325.9591796875
+1631992887.5859885,326.1369140625
+1631992888.5889513,326.293359375
+1631992889.591934,326.455859375
+1631992890.5997937,326.6462890625
+1631992891.6025774,326.8033203125
+1631992892.6055284,326.9890625
+1631992893.60889,327.158984375
+1631992894.611693,327.3220703125
+1631992895.6249444,327.5095703125
+1631992896.628335,327.6666015625
+1631992897.631731,327.8638671875
+1631992898.6348615,328.0283203125
+1631992899.6378214,328.2048828125
+1631992900.651315,328.38515625
+1631992901.6541207,328.559765625
+1631992902.6575055,328.7501953125
+1631992903.660926,328.91796875
+1631992904.664384,329.0994140625
+1631992905.6720536,329.269140625
+1631992906.6754973,329.4404296875
+1631992907.678919,329.6435546875
+1631992908.6817129,329.815234375
+1631992909.6851125,330.021484375
+1631992910.697581,330.203515625
+1631992911.7014937,330.40625
+1631992912.7048833,330.5732421875
+1631992913.7082431,330.7328125
+1631992914.711614,330.9134765625
+1631992915.7200117,331.06484375
+1631992916.7235725,331.2330078125
+1631992917.726885,331.378515625
+1631992918.7296689,331.521484375
+1631992919.7332015,331.6736328125
+1631992920.7417612,331.80703125
+1631992921.7451558,331.9720703125
+1631992922.7479627,332.114453125
+1631992923.7512982,332.268359375
+1631992924.7544692,332.473046875
+1631992925.7562497,332.657421875
+1631992926.7601843,332.8560546875
+1631992927.7642443,333.0388671875
+1631992928.7660067,333.21484375
+1631992929.7694404,333.4017578125
+1631992930.7729373,333.559765625
+1631992931.7812648,333.749609375
+1631992932.7840555,333.9099609375
+1631992933.7874372,334.07578125
+1631992934.790771,334.280859375
+1631992935.7936685,334.4349609375
+1631992936.8317778,334.6150390625
+1631992937.8351927,334.778125
+1631992938.8369753,334.9609375
+1631992939.840466,335.111328125
+1631992940.8439548,335.2509765625
+1631992941.8528392,335.4166015625
+1631992942.854602,335.555859375
+1631992943.8580217,335.7205078125
+1631992944.8614173,335.8716796875
+1631992945.8642519,336.0482421875
+1631992946.8760304,336.2646484375
+1631992947.8794081,336.4587890625
+1631992948.882938,336.67421875
+1631992949.8857586,336.8560546875
+1631992950.8891482,337.055078125
+1631992951.8984058,337.2146484375
+1631992952.9002986,337.3615234375
+1631992953.9043632,337.5169921875
+1631992954.9082859,337.6533203125
+1631992955.9116564,337.8083984375
+1631992956.9184313,337.9482421875
+1631992957.921851,338.12890625
+1631992958.9252443,338.2857421875
+1631992959.9270341,338.4390625
+1631992960.9304547,338.6068359375
+1631992961.9388413,338.7451171875
+1631992962.9424052,338.9111328125
+1631992963.9452398,339.0478515625
+1631992964.9486485,339.1908203125
+1631992965.9520042,339.3625
+1631992966.9590926,339.5306640625
+1631992967.9625692,339.722265625
+1631992968.965947,339.884765625
+1631992969.9692867,340.0513671875
+1631992970.9710193,340.2443359375
+1631992971.979631,340.40546875
+1631992972.9830935,340.573828125
+1631992973.9864192,340.7275390625
+1631992974.9892228,340.885546875
+1631992975.9927633,341.0669921875
+1631992977.001204,341.2373046875
+1631992978.0045874,341.4435546875
+1631992979.0079541,341.61875
+1631992980.0112379,341.7994140625
+1631992981.0146277,341.9908203125
+1631992982.0219913,342.1478515625
+1631992983.0253837,342.3091796875
+1631992984.0287323,342.4349609375
+1631992985.031488,342.586328125
+1631992986.0341425,342.732421875
+1631992987.0425892,342.8751953125
+1631992988.045997,343.0439453125
+1631992989.0492916,343.2150390625
+1631992990.052086,343.398828125
+1631992991.0555089,343.543359375
+1631992992.0659742,343.71171875
+1631992993.068719,343.852734375
+1631992994.0712914,343.97890625
+1631992995.07469,344.128125
+1631992996.0764577,344.2607421875
+1631992997.0868592,344.405078125
+1631992998.0902689,344.5419921875
+1631992999.0988944,344.6837890625
+1631993000.1017091,344.844921875
+1631993001.1051016,344.983984375
+1631993002.113678,345.1513671875
+1631993003.1170287,345.309375
+1631993004.1211815,345.4927734375
+1631993005.1246657,345.644921875
+1631993006.1280293,345.808203125
+1631993007.135276,345.98515625
+1631993008.1386967,346.1365234375
+1631993009.1426322,346.312890625
+1631993010.145454,346.48046875
+1631993011.1488535,346.637109375
+1631993012.1571798,346.817578125
+1631993013.1601326,346.9771484375
+1631993014.1631222,347.15625
+1631993015.1665046,347.3
+1631993016.1750753,347.4439453125
+1631993017.1822739,347.6123046875
+1631993018.1857824,347.758203125
+1631993019.189151,347.91796875
+1631993020.1919436,348.0662109375
+1631993021.1953583,348.246484375
+1631993022.203714,348.415234375
+1631993023.2073734,348.6109375
+1631993024.210145,348.788671875
+1631993025.2136395,348.9642578125
+1631993026.217091,349.1642578125
+1631993027.2190928,349.33203125
+1631993028.2226322,349.511328125
+1631993029.226064,349.67890625
+1631993030.2294254,349.8294921875
+1631993031.2312288,349.99296875
+1631993032.2346165,350.123046875
+1631993033.242997,350.2791015625
+1631993034.2463357,350.3951171875
+1631993035.2491372,350.5404296875
+1631993036.2526948,350.6748046875
+1631993037.2561314,350.8072265625
+1631993038.264436,350.969921875
+1631993039.2672253,351.1177734375
+1631993040.270602,351.28125
+1631993041.2742267,351.4251953125
+1631993042.2760162,351.5642578125
+1631993043.2845917,351.7162109375
+1631993044.287929,351.8544921875
+1631993045.2913077,352.0216796875
+1631993046.2941494,352.1779296875
+1631993047.3028576,352.344140625
+1631993048.3134382,352.5455078125
+1631993049.316243,352.7150390625
+1631993050.3196595,352.8873046875
+1631993051.3231869,353.034375
+1631993052.3284914,353.203515625
+1631993053.335816,353.3462890625
+1631993054.3392534,353.4849609375
+1631993055.3427782,353.6662109375
+1631993056.3456087,353.828125
+1631993057.352966,354.0080078125
+1631993058.3611887,354.1654296875
+1631993059.364568,354.3298828125
+1631993060.3675308,354.5123046875
+1631993061.370896,354.659765625
+1631993062.374394,354.8236328125
+1631993063.381298,354.9630859375
+1631993064.384709,355.099609375
+1631993065.3880825,355.2572265625
+1631993066.390849,355.398828125
+1631993067.3942995,355.571484375
+1631993068.402696,355.7111328125
+1631993069.4097495,355.8556640625
+1631993070.413279,356.0216796875
+1631993071.4166594,356.163671875
+1631993072.419991,356.322265625
+1631993073.4273086,356.473828125
+1631993074.430635,356.625390625
+1631993075.4343264,356.78984375
+1631993076.4374552,356.9388671875
+1631993077.4408567,357.123828125
+1631993078.449115,357.2849609375
+1631993079.4511817,357.4736328125
+1631993080.4545732,357.628515625
+1631993081.4579058,357.7974609375
+1631993082.461435,357.9763671875
+1631993083.4634876,358.1263671875
+1631993084.4669182,358.3017578125
+1631993085.4703069,358.458203125
+1631993086.4737911,358.6154296875
+1631993087.4766307,358.7953125
+1631993088.4800024,358.948828125
+1631993089.4886177,359.1177734375
+1631993090.4914134,359.2671875
+1631993091.4948468,359.408984375
+1631993092.4982681,359.5611328125
+1631993093.5014927,359.6990234375
+1631993094.5087671,359.868359375
+1631993095.5113387,360.0021484375
+1631993096.5147512,360.1392578125
+1631993097.5165489,360.3013671875
+1631993098.5199313,360.4388671875
+1631993099.5282578,360.5921875
+1631993100.531197,360.7333984375
+1631993101.5393107,360.8716796875
+1631993102.5428112,361.0306640625
+1631993103.5461047,361.169140625
+1631993104.5535343,361.329296875
+1631993105.5569587,361.4615234375
+1631993106.560445,361.5978515625
+1631993107.5633497,361.76875
+1631993108.566651,361.9255859375
+1631993109.5767684,362.1021484375
+1631993110.58064,362.2705078125
+1631993111.5899656,362.4236328125
+1631993112.593509,362.604296875
+1631993113.5968583,362.7599609375
+1631993114.5986629,362.9345703125
+1631993115.6021185,363.071875
+1631993116.6054978,363.216015625
+1631993117.6072845,363.3828125
+1631993118.610592,363.5234375
+1631993119.6142843,363.6875
+1631993120.62281,363.84453125
+1631993121.6296842,364.0302734375
+1631993122.6332107,364.189453125
+1631993123.6366282,364.348046875
+1631993124.6383817,364.5205078125
+1631993125.6470582,364.656640625
+1631993126.6524847,364.805859375
+1631993127.66344,364.9314453125
+1631993128.6668425,365.066015625
+1631993129.670227,365.229296875
+1631993130.6784303,365.368359375
+1631993131.6812599,365.5400390625
+1631993132.6846554,365.678515625
+1631993133.6916456,365.831640625
+1631993134.6944282,365.9630859375
+1631993135.7029665,366.099609375
+1631993136.70643,366.2626953125
+1631993137.7084515,366.3998046875
+1631993138.711838,366.5591796875
+1631993139.7151916,366.6955078125
+1631993140.7282147,366.8470703125
+1631993141.731017,366.9734375
+1631993142.7344558,367.10625
+1631993143.7378395,367.2669921875
+1631993144.7412207,367.410546875
+1631993145.7515771,367.5705078125
+1631993146.7548857,367.712109375
+1631993147.758264,367.853125
+1631993148.7600493,368.0150390625
+1631993149.763558,368.1494140625
+1631993150.7712615,368.3091796875
+1631993151.7730548,368.44921875
+1631993152.7764132,368.6171875
+1631993153.7798398,368.75078125
+1631993154.781871,368.884375
+1631993155.7951636,369.035546875
+1631993156.79911,369.1576171875
+1631993157.8027284,369.2908203125
+1631993158.805606,369.4203125
+1631993159.8089933,369.5490234375
+1631993160.8223054,369.695703125
+1631993161.825113,369.836328125
+1631993162.8285306,370.015234375
+1631993163.831916,370.168359375
+1631993164.8352613,370.3458984375
+1631993165.8429878,370.5076171875
+1631993166.8463824,370.6666015625
+1631993167.8498058,370.848828125
+1631993168.8512764,370.9966796875
+1631993169.8551347,371.16484375
+1631993170.863841,371.30859375
+1631993171.8672044,371.47109375
+1631993172.8700309,371.60078125
+1631993173.8735442,371.7365234375
+1631993174.8769617,371.896875
+1631993175.8853152,372.02890625
+1631993176.8881247,372.1822265625
+1631993177.891526,372.32734375
+1631993178.8949625,372.4591796875
+1631993179.8969839,372.6060546875
+1631993180.9050074,372.7271484375
+1631993181.9084036,372.8611328125
+1631993182.9118662,372.988671875
+1631993183.9146974,373.11875
+1631993184.918098,373.27421875
+1631993185.9270632,373.4224609375
+1631993186.9304187,373.595703125
+1631993187.9340541,373.7513671875
+1631993188.9374776,373.9080078125
+1631993189.9408362,374.0783203125
+1631993190.9481013,374.2271484375
+1631993191.9514818,374.3953125
+1631993192.954812,374.5310546875
+1631993193.9576178,374.65546875
+1631993194.961194,374.790625
+1631993195.9695203,374.918359375
+1631993196.973055,375.0623046875
+1631993197.9758575,375.185546875
+1631993198.979277,375.30390625
+1631993199.9827802,375.4423828125
+1631993200.9899595,375.5626953125
+1631993201.9934678,375.70703125
+1631993202.9969182,375.845703125
+1631993203.9989228,376.0212890625
+1631993205.002435,376.1814453125
+1631993206.0108197,376.340625
+1631993207.014326,376.526171875
+1631993208.0171344,376.6666015625
+1631993209.0206747,376.8220703125
+1631993210.0242872,376.9380859375
+1631993211.0352466,377.0734375
+1631993212.038051,377.1828125
+1631993213.041479,377.2865234375
+1631993214.0448687,377.4037109375
+1631993215.04769,377.517578125
+1631993216.0560756,377.6646484375
+1631993217.0594928,377.8021484375
+1631993218.0629852,377.94140625
+1631993219.0657828,378.1234375
+1631993220.069185,378.2875
+1631993221.0773034,378.4609375
+1631993222.0800657,378.6033203125
+1631993223.0837224,378.74296875
+1631993224.0871317,378.8939453125
+1631993225.0904582,379.01484375
+1631993226.0977974,379.14296875
+1631993227.1011508,379.24921875
+1631993228.1045423,379.35390625
+1631993229.1063166,379.480078125
+1631993230.109735,379.596875
+1631993231.1179821,379.7359375
+1631993232.1212897,379.876171875
+1631993233.124031,380.0484375
+1631993234.1273885,380.190234375
+1631993235.1307328,380.33046875
+1631993236.138076,380.5013671875
+1631993237.1414785,380.650390625
+1631993238.1524858,380.793359375
+1631993239.158564,380.9171875
+1631993240.1619487,381.0474609375
+1631993241.1703749,381.1873046875
+1631993242.1738133,381.3125
+1631993243.1766276,381.4638671875
+1631993244.180047,381.603125
+1631993245.1888185,381.7478515625
+1631993246.1988356,381.906640625
+1631993247.2019691,382.04140625
+1631993248.2053435,382.2044921875
+1631993249.2087047,382.3544921875
+1631993250.2115333,382.51484375
+1631993251.2219996,382.6541015625
+1631993252.2306588,382.7869140625
+1631993253.2342954,382.9275390625
+1631993254.2374687,383.0384765625
+1631993255.241277,383.1646484375
+1631993256.2496552,383.272265625
+1631993257.2514107,383.41171875
+1631993258.254792,383.5392578125
+1631993259.2635374,383.681640625
+1631993260.2668436,383.84296875
+1631993261.27425,383.9896484375
+1631993262.2776434,384.1611328125
+1631993263.281103,384.3140625
+1631993264.284531,384.480078125
+1631993265.2878976,384.6240234375
+1631993266.2963548,384.761328125
+1631993267.299736,384.9185546875
+1631993268.3027306,385.04296875
+1631993269.306175,385.1828125
+1631993270.3094883,385.302734375
+1631993271.3219936,385.4287109375
+1631993272.3254058,385.57109375
+1631993273.3287432,385.6916015625
+1631993274.3315246,385.8404296875
+1631993275.334968,385.9673828125
+1631993276.3434892,386.11171875
+1631993277.3468196,386.2431640625
+1631993278.349689,386.37890625
+1631993279.3532684,386.5330078125
+1631993280.3566487,386.671875
+1631993281.358437,386.8359375
+1631993282.3618565,386.98203125
+1631993283.3653316,387.129296875
+1631993284.3687422,387.27734375
+1631993285.3712385,387.4109375
+1631993286.374688,387.5677734375
+1631993287.383193,387.698828125
+1631993288.3865914,387.8255859375
+1631993289.3893929,387.971875
+1631993290.3929262,388.1013671875
+1631993291.3987586,388.24296875
+1631993292.4059138,388.3724609375
+1631993293.409326,388.483984375
+1631993294.4127975,388.6263671875
+1631993295.416157,388.7619140625
+1631993296.4189374,388.919140625
+1631993297.4272835,389.051953125
+1631993298.430336,389.187890625
+1631993299.4338071,389.3470703125
+1631993300.4373314,389.4849609375
+1631993301.44067,389.6310546875
+1631993302.4490952,389.753125
+1631993303.4530046,389.88828125
+1631993304.4563649,389.9958984375
+1631993305.4598572,390.112109375
+1631993306.4632416,390.234765625
+1631993307.4705708,390.34609375
+1631993308.474096,390.4900390625
+1631993309.4774165,390.616015625
+1631993310.4802148,390.7498046875
+1631993311.4837143,390.9025390625
+1631993312.4930525,391.038671875
+1631993313.495878,391.1955078125
+1631993314.4993231,391.335546875
+1631993315.5027976,391.47734375
+1631993316.5061598,391.641015625
+1631993317.513283,391.78515625
+1631993318.5167062,391.94296875
+1631993319.520187,392.069140625
+1631993320.5221963,392.2140625
+1631993321.5255764,392.342578125
+1631993322.5381758,392.494140625
+1631993323.5415208,392.633203125
+1631993324.5443113,392.7802734375
+1631993325.5476897,392.944140625
+1631993326.551095,393.092578125
+1631993327.5546222,393.25546875
+1631993328.5580726,393.387890625
+1631993329.561379,393.5169921875
+1631993330.564732,393.662109375
+1631993331.5675247,393.7904296875
+1631993332.57089,393.934765625
+1631993333.5793362,394.06015625
+1631993334.5813236,394.194140625
+1631993335.5847769,394.3369140625
+1631993336.5882123,394.4630859375
+1631993337.5915813,394.6046875
+1631993338.599151,394.7322265625
+1631993339.60271,394.8541015625
+1631993340.6061203,394.998828125
+1631993341.6079037,395.12890625
+1631993342.6113253,395.2880859375
+1631993343.6194782,395.4291015625
+1631993344.6229455,395.5818359375
+1631993345.625764,395.71640625
+1631993346.6291623,395.845703125
+1631993347.6326425,395.989453125
+1631993348.6451278,396.108203125
+1631993349.648545,396.253125
+1631993350.6519513,396.3830078125
+1631993351.6553116,396.5166015625
+1631993352.6581602,396.66875
+1631993353.6664872,396.80625
+1631993354.6698456,396.968359375
+1631993355.673335,397.116015625
+1631993356.676201,397.28125
+1631993357.6795576,397.42578125
+1631993358.6876419,397.5669921875
+1631993359.6914012,397.72578125
+1631993360.6947424,397.8515625
+1631993361.6981647,397.9978515625
+1631993362.7014568,398.1232421875
+1631993363.7085705,398.265625
+1631993364.7112634,398.38359375
+1631993365.7147007,398.501953125
+1631993366.716624,398.6306640625
+1631993367.7200124,398.746484375
+1631993368.7284367,398.88125
+1631993369.7312613,399.003125
+1631993370.7330463,399.148828125
+1631993371.736451,399.28125
+1631993372.7398221,399.4197265625
+1631993373.7477572,399.578125
+1631993374.7516255,399.7119140625
+1631993375.755035,399.866015625
+1631993376.7584152,399.9916015625
+1631993377.7612634,400.113671875
+1631993378.7690706,400.2482421875
+1631993379.772604,400.369921875
+1631993380.7760103,400.5080078125
+1631993381.7788117,400.631640625
+1631993382.7823477,400.7654296875
+1631993383.790533,400.9177734375
+1631993384.7939973,401.0490234375
+1631993385.7968047,401.2044921875
+1631993386.8001852,401.340234375
+1631993387.8036582,401.4650390625
+1631993388.8119576,401.6078125
+1631993389.8153477,401.7298828125
+1631993390.818773,401.869140625
+1631993391.8221414,401.9943359375
+1631993392.8249588,402.137109375
+1631993393.833345,402.258984375
+1631993394.8366094,402.3876953125
+1631993395.8399596,402.537109375
+1631993396.842821,402.6712890625
+1631993397.846214,402.82734375
+1631993398.8570352,402.9611328125
+1631993399.8596525,403.0978515625
+1631993400.862521,403.252734375
+1631993401.865946,403.383984375
+1631993402.8693624,403.537890625
+1631993403.8775306,403.6779296875
+1631993404.8847969,403.834765625
+1631993405.8881712,403.9662109375
+1631993406.8915443,404.1037109375
+1631993407.8943737,404.2580078125
+1631993408.9028199,404.3849609375
+1631993409.9062424,404.5234375
+1631993410.9096146,404.6482421875
+1631993411.9178107,404.771484375
+1631993412.9212391,404.9123046875
+1631993413.9296222,405.03359375
+1631993414.9313555,405.17890625
+1631993415.9347527,405.304296875
+1631993416.938103,405.451171875
+1631993417.9414785,405.5771484375
+1631993418.9491456,405.7107421875
+1631993419.952679,405.8662109375
+1631993420.9560611,405.99609375
+1631993421.9588654,406.149609375
+1631993422.9622917,406.2814453125
+1631993423.970421,406.4048828125
+1631993424.9722772,406.5533203125
+1631993425.9761806,406.680078125
+1631993426.9800565,406.8291015625
+1631993427.983627,406.9619140625
+1631993428.9919412,407.1078125
+1631993429.9953015,407.233984375
+1631993430.9987628,407.3478515625
+1631993432.000777,407.48359375
+1631993433.0042021,407.5919921875
+1631993434.0121455,407.7275390625
+1631993435.0155046,407.8310546875
+1631993436.021821,407.966015625
+1631993437.0251362,408.0826171875
+1631993438.0284994,408.2033203125
+1631993439.0303218,408.3431640625
+1631993440.033839,408.4681640625
+1631993441.0425293,408.6021484375
+1631993442.0458336,408.75078125
+1631993443.0486498,408.8779296875
+1631993444.052056,409.024609375
+1631993445.0614052,409.1564453125
+1631993446.0642025,409.30546875
+1631993447.0675917,409.430078125
+1631993448.070987,409.5666015625
+1631993449.0745792,409.7146484375
+1631993450.0832145,409.8443359375
+1631993451.0866158,409.9861328125
+1631993452.0899148,410.1208984375
+1631993453.0927973,410.2529296875
+1631993454.0962286,410.3998046875
+1631993455.1046708,410.5349609375
+1631993456.106669,410.683984375
+1631993457.110064,410.8123046875
+1631993458.1128025,410.937890625
+1631993459.11622,411.0740234375
+1631993460.1246758,411.208203125
+1631993461.1281111,411.3517578125
+1631993462.1314864,411.4677734375
+1631993463.1332777,411.58515625
+1631993464.136682,411.72421875
+1631993465.1451423,411.840625
+1631993466.1485095,411.9646484375
+1631993467.151342,412.0873046875
+1631993468.1547022,412.2189453125
+1631993469.1585174,412.331640625
+1631993470.1716864,412.4482421875
+1631993471.1744838,412.573828125
+1631993472.1778598,412.6845703125
+1631993473.181237,412.8189453125
+1631993474.1840384,412.94375
+1631993475.1936824,413.093359375
+1631993476.1970398,413.2150390625
+1631993477.200395,413.35703125
+1631993478.2044363,413.5138671875
+1631993479.2078345,413.6490234375
+1631993480.2161236,413.8064453125
+1631993481.2189188,413.9392578125
+1631993482.2223742,414.0740234375
+1631993483.2258036,414.2228515625
+1631993484.2277365,414.345703125
+1631993485.236786,414.4873046875
+1631993486.240011,414.6103515625
+1631993487.2435293,414.734375
+1631993488.2463286,414.8759765625
+1631993489.249843,415.000390625
+1631993490.258444,415.15
+1631993491.2603133,415.2791015625
+1631993492.2691143,415.4115234375
+1631993493.2727058,415.566015625
+1631993494.276069,415.691015625
+1631993495.283434,415.8431640625
+1631993496.2868571,415.9720703125
+1631993497.2946086,416.107421875
+1631993498.2980077,416.2244140625
+1631993499.3012679,416.3466796875
+1631993500.309667,416.483984375
+1631993501.3132074,416.612890625
+1631993502.3152008,416.7619140625
+1631993503.3186178,416.8873046875
+1631993504.326539,417.0208984375
+1631993505.334758,417.17578125
+1631993506.3367586,417.305859375
+1631993507.340133,417.44375
+1631993508.3436182,417.5783203125
+1631993509.352261,417.7083984375
+1631993510.3600705,417.848828125
+1631993511.3635385,417.9736328125
+1631993512.3669047,418.1244140625
+1631993513.370253,418.256640625
+1631993514.3735332,418.4009765625
+1631993515.3817744,418.5244140625
+1631993516.3851068,418.64453125
+1631993517.3878949,418.765625
+1631993518.3912861,418.8771484375
+1631993519.3946955,419.0123046875
+1631993520.4032104,419.1267578125
+1631993521.4063487,419.2734375
+1631993522.4096909,419.39765625
+1631993523.4131722,419.52421875
+1631993524.4149225,419.6748046875
+1631993525.4234576,419.7966796875
+1631993526.4268887,419.9357421875
+1631993527.430232,420.065234375
+1631993528.4333992,420.194140625
+1631993529.4368155,420.3369140625
+1631993530.4454167,420.465625
+1631993531.448839,420.6150390625
+1631993532.452323,420.73828125
+1631993533.4585314,420.8798828125
+1631993534.4618726,421.00234375
+1631993535.4690397,421.127734375
+1631993536.472741,421.2751953125
+1631993537.476097,421.4048828125
+1631993538.4802914,421.55234375
+1631993539.4831746,421.68359375
+1631993540.4912057,421.8146484375
+1631993541.494598,421.9587890625
+1631993542.4979742,422.0810546875
+1631993543.5011864,422.215234375
+1631993544.5045526,422.337109375
+1631993545.5426602,422.4763671875
+1631993546.5454836,422.5974609375
+1631993547.5542188,422.725
+1631993548.5577369,422.8693359375
+1631993549.5612683,423.0052734375
+1631993550.5694633,423.1552734375
+1631993551.5729237,423.280078125
+1631993552.5773337,423.42109375
+1631993553.580689,423.5517578125
+1631993554.5838761,423.680859375
+1631993555.5969312,423.82734375
+1631993556.6003075,423.9478515625
+1631993557.6020818,424.09296875
+1631993558.605476,424.2244140625
+1631993559.6089802,424.355859375
+1631993560.6107664,424.498828125
+1631993561.6142478,424.6203125
+1631993562.6176548,424.7546875
+1631993563.6209872,424.8697265625
+1631993564.6291313,424.9845703125
+1631993565.6326873,425.1197265625
+1631993566.6411457,425.241015625
+1631993567.6429086,425.38046875
+1631993568.646304,425.5072265625
+1631993569.6521583,425.6419921875
+1631993570.6554873,425.76328125
+1631993571.6686363,425.8861328125
+1631993572.6720235,426.027734375
+1631993573.6753988,426.1443359375
+1631993574.677173,426.282421875
+1631993575.6805573,426.4095703125
+1631993576.6939726,426.5287109375
+1631993577.6972895,426.6595703125
+1631993578.7004158,426.7724609375
+1631993579.704028,426.905859375
+1631993580.7073722,427.0224609375
+1631993581.7148724,427.1470703125
+1631993582.7182374,427.2669921875
+1631993583.7213678,427.3955078125
+1631993584.724205,427.534375
+1631993585.727579,427.6640625
+1631993586.7359324,427.8083984375
+1631993587.7392914,427.936328125
+1631993588.7420635,428.07265625
+1631993589.74546,428.19765625
+1631993590.748861,428.31015625
+1631993591.7506802,428.4357421875
+1631993592.7544057,428.537890625
+1631993593.7578337,428.6548828125
+1631993594.759817,428.762890625
+1631993595.7686012,428.874609375
+1631993596.7719963,429.0005859375
+1631993597.7803774,429.118359375
+1631993598.7821846,429.26171875
+1631993599.7855446,429.384375
+1631993600.788924,429.523046875
+1631993601.792467,429.6458984375
+1631993602.7945285,429.7720703125
+1631993603.7979887,429.9099609375
+1631993604.80136,430.030078125
+1631993605.8047209,430.166796875