Example #1
0
def locationChart(location, date):
  if date is None:
    date = datetime.datetime.today().replace(hour=0,minute=0,second=0,microsecond=0)
  else:
    date = datetime.datetime.strptime(date, "%Y-%m-%d")

  prevDate = (date - datetime.timedelta(days=1)).strftime("%Y-%m-%d")
  nextDate = (date + datetime.timedelta(days=1)).strftime("%Y-%m-%d")

  minimum = epoch(date) * 1000
  maximum = epoch(date + datetime.timedelta(days=1)) * 1000

  data = {"temperature": [], "RH": []}
  q = (Measurement
    .select()
    .join(Quantity)
    .switch(Measurement)
    .join(Location)
    .where(
      ((Quantity.name == "temperature") | (Quantity.name == "RH"))
      & (Location.name == location)
      & (Measurement.time >= date)
      & (Measurement.time < date + datetime.timedelta(days=1))
    )
    .order_by(Measurement.time))
  for m in q:
    data[m.quantity.name].append([epoch(m.time) * 1000, m.value])
  
  data = {key: json.dumps(value) for key, value in data.iteritems()}
  return render_template("location_chart.htm", data=data, location=location, prevDate=prevDate, nextDate=nextDate, minimum=minimum, maximum=maximum)
Example #2
0
def boilerChart(date):
  if date is None:
    date = datetime.datetime.today().replace(hour=0,minute=0,second=0,microsecond=0)
  else:
    date = datetime.datetime.strptime(date, "%Y-%m-%d")

  prevDate = (date - datetime.timedelta(days=1)).strftime("%Y-%m-%d")
  nextDate = (date + datetime.timedelta(days=1)).strftime("%Y-%m-%d")

  minimum = epoch(date) * 1000
  maximum = epoch(date + datetime.timedelta(days=1)) * 1000

  data = {"temperature": [], "setpoint": [], "state": []}
  q = (BoilerLog
    .select()
    .where(
      (BoilerLog.time >= date)
      & (BoilerLog.time < date + datetime.timedelta(days=1))
    )
    .order_by(BoilerLog.time))
  for h in q:
    time = epoch(h.time) * 1000
    data["temperature"].append([time, h.temperature])
    data["setpoint"].append([time, h.setpoint if h.setpoint != 0 else None])
    data["state"].append([time, int(h.boiler)])
  
  data = {key: json.dumps(value) for key, value in data.iteritems()}
  return render_template("boiler_chart.htm", data=data, prevDate=prevDate, nextDate=nextDate, minimum=minimum, maximum=maximum)
Example #3
0
    def __call__(self, state):
        now = epoch()

        pomodoros_list = [v for k, v in state.iteritems()]
        not_aborted = [
            x for x in pomodoros_list if x.get("minutes_elapsed", 0) > 5
        ]
        ended = [x for x in not_aborted if x.get("ended")]
        last_24h = [
            x for x in ended if x["started_at"] > (now - 24 * ONE_HOUR)
        ]

        print "Attempted: {}".format(len(pomodoros_list))
        print "Not quickly aborted (5min): {}".format(len(not_aborted))
        print "Pomodoros: {}".format(len(ended))
        print "Last 24 hours: {}".format(len(last_24h))

        for p in sorted(last_24h, key=lambda x: x["started_at"]):
            print "  - {:%H:%M}: {}".format(
                datetime.fromtimestamp(p.get("started_at")),
                p.get("goal", "???"))
Example #4
0
def chartData(location, quantity):
  output = []
  for m in Measurement.select().join(Quantity).switch(Measurement).join(Location).where((Quantity.name == quantity) & (Location.name == location)).order_by(Measurement.time):
    output.append([epoch(m.time) * 1000, m.value])
  return json.dumps(output)
Example #5
0
 def start(self, goal):
     self._logger(self._entity, "status", "started")
     self._logger(self._entity, "started_at", epoch())
     self._logger(self._entity, "goal", goal)
Example #6
0
 def gen_entity(self, prefix):
     return "{}-{}".format(prefix, epoch())
Example #7
0
 def __call__(self, e, a, v, t=None):
     t = t or epoch()
     with open(os.environ["HOME"] + "/" + self._config.get("log_file"),
               "a") as f:
         f.write(json.dumps({"e": e, "a": a, "v": v, "t": t}))