Exemple #1
0
def conc(cc=0.0):
    conclusions = jump_to_conclusions()

    if cc and cc != conclusions:
        handle_variation(cc, conclusions)

    if conclusions > 9000.0:
        flash('over 9000!!!')

    return render_template(
        'conc.html',
        title='status',
        conclusions=conclusions
    )
Exemple #2
0
 def get(self, cc=0.0):
     conclusions = jump_to_conclusions()
     if cc and cc != conclusions:
         handle_variation(cc, conclusions)
     return conclusions
Exemple #3
0
def spaceapi():
    def _set_field(field_path, value):
        if _space_skel:
            scope = _space_skel
            for field in field_path:
                if field in scope.keys():
                    if field == field_path[-1]:
                        scope[field] = value
                    scope = scope[field]

    def _sensor_elem(apisens, sensor):
        last = sensor.get_data().first()
        if last:
            val = last.num()
            res = {
                'description': sensor.description,
                'location': sensor.description,
                'name': sensor.name,
                'value': val
            }
            if apisens == 'power_consumption':
                res.update({'unit': 'W'})
            if apisens == 'door_locked':
                res.update({'value': not val})
            return res

    conclusions = jump_to_conclusions()
    shouts = get_shouts()

    space_is_open = True if conclusions >= 100 else False
    logo_url = url_for('static', filename=app.config['SPACE_LOGO'], _external=True)
    open_url = url_for('static', filename=app.config['SPACE_OPEN'], _external=True)
    closed_url = url_for('static', filename=app.config['SPACE_CLOSED'], _external=True)

    for apisens, sensors in app.config['SPACE_SENSORS'].items():
        _set_field(['sensors', apisens], [
            _sensor_elem(apisens, sensor) for sensor in [
                Sensor.query.filter(Sensor.name == s).first() for s in sensors
            ] if sensor is not None and sensor.get_data().first()
        ])

    latest_data = Data.query.order_by(Data.time.desc()).first()
    if latest_data:
        _set_field(['state', 'lastchange'], latest_data.ms())

    last_shout = shouts.get_data().first()
    _set_field(['state', 'message'], '{}% chance someone is there! last message: \'{}\''.format(
        conclusions,
        last_shout.value if last_shout else 'no shouts, sorry')
    )

    _set_field(['contact', 'twitter'], choice(['@cccmz', '@cccmzwi']))
    _set_field(['icon', 'closed'], closed_url)
    _set_field(['icon', 'open'], open_url)
    _set_field(['logo'], logo_url)
    _set_field(['open'], space_is_open)
    _set_field(['state', 'icon', 'closed'], closed_url)
    _set_field(['state', 'icon', 'open'], open_url)
    _set_field(['state', 'open'], space_is_open)

    return _space_skel