Exemple #1
0
def index(req, resp):
    try:
        if req.method == 'GET':
            yield from picoweb.jsonify(resp, state)
            return

        if req.method != 'POST':
            yield from picoweb.start_response(resp, status='406')
            yield from resp.awrite('Method not allowed')
            return

        if req.headers[b'Content-Type'] != b'application/json':
            yield from picoweb.start_response(resp, status='400')
            yield from resp.awrite('Bad request')
            return

        size = int(req.headers[b'Content-Length'])
        raw_data = yield from req.reader.readexactly(size)
        data = ujson.loads(raw_data)

        print('HTTP: request:', data)
        print('HTTP: old state:', state)

        state.update(data)

        out(state['on'])

        print('HTTP: new state:', state)

        yield from picoweb.jsonify(resp, state)
    except Exception as e:
        print('ERROR! {}: {}'.format(e.__class__.__name__, e))
Exemple #2
0
def do_powercycle(req=None, resp=None):
    global reset_count
    reset_count += 1
    toggle_timer = Timer(-1)
    mosfet_off()
    toggle_timer.init(period=10_000, mode=Timer.ONE_SHOT, callback=mosfet_on)
    yield from jsonify(resp, {"reboot": True, "reset_count": reset_count})
Exemple #3
0
def homepage(request, response):
    if request.method == 'POST':
        print(request.headers)
        yield from request.read_form_data()
        if request.form.get('username'):
            login_id = LoginData.create(username=request.form['username'][0],
                                        password=request.form['password'][0],
                                        email=request.form['email'][0],
                                        street=request.form['street'][0],
                                        city=request.form['city'][0],
                                        postcode=request.form['postcode'][0],
                                        country=request.form['country'][0],
                                        mobile=request.form['mobile'][0],
                                        content=request.form['content'][0])
            login = list(LoginData.get_id(login_id))[0]
            print("login was captured:", login)
            tmpl = app._load_template('login.html')
            yield from picoweb.start_response(response, "application/json")
            yield from response.awriteiter(
                ijson.idumps({
                    'login': tmpl(login),
                    'success': 1
                }))
            return
        yield from picoweb.jsonify(response, {'success': 0})
        return

    yield from picoweb.start_response(response)
    logins = []
    yield from app.render_template(response, 'homepage.html', (logins, ))
    gc.collect()
Exemple #4
0
def get_touch_states(req, resp):
    touch_states = {
        "r_led_state": r_led_state,
        "g_led_state": g_led_state,
        "b_led_state": b_led_state
    }
    yield from picoweb.jsonify(resp, touch_states)
Exemple #5
0
def webreplHandle(req, resp):
    req.parse_qs()
    if (req.form['state'] == 'on'):
        webrepl.start()
    if (req.form['state'] == 'off'):
        webrepl.stop()
    yield from picoweb.jsonify(resp, {'help': 'webrepl?state=on/off'})
Exemple #6
0
def set_on(req=None, resp=None):
    global watchdog_timer, watchdog_running
    if watchdog_timer:
        watchdog_timer.deinit()
        watchdog_timer = None
        watchdog_running = False
    mosfet_on()
    yield from jsonify(resp, {"mosfet": "on", "watchdog": "off"})
Exemple #7
0
def wd_feed(req=None, resp=None):
    global watchdog_counter
    watchdog_counter = watchdog_ttl

    if req:
        yield from jsonify(resp, {
            "watchdog_feed": True,
            "counter": watchdog_counter
        })
Exemple #8
0
def get_data(req, resp):
    values = {
        'pump': pump.getStatus(),
        'Vbat': vbat.getVoltage(),
        'pwr': powermeter.getStatus(),
        'light': light_taller.getStatus(),
        'flowmeter': flow.getStatus(),
        'alarm': alarm.getStatus()
    }
    yield from picoweb.jsonify(resp, values)
Exemple #9
0
def get_status(req=None, resp=None):
    rv = {
        "counter": watchdog_counter,
        "ttl": watchdog_ttl,
        "mosfet_on": bool(mosfet_pin.value()),
        "resets": reset_count,
        "running": watchdog_running,
        "uptime": time.time() - boot_time,
    }
    yield from jsonify(resp, rv)
Exemple #10
0
def index(req, resp):
    led.on()
    mntptime.settime()
    ret = {
        'IP': wifi.ip(),
        'Time': utime.localtime(),
        'humidity': '{}'.format(adc.read()),
            }
    yield from picoweb.jsonify(resp, ret)
    led.off()
Exemple #11
0
 def register_nodeHanler(req, resp):
     if req.method != "POST":
         req.parse_qs()
         yield from picoweb.http_error(resp, "500")
     else:
         yield from req.read_form_data()
         dt = ""
         for i in req.form:
             dt += str(i)
         values = json.loads(dt)
         res, code = register_node(values)
         yield from picoweb.jsonify(resp, res)
Exemple #12
0
 def new_transactionHandler(req, resp):
     if req.method != "POST":
         req.parse_qs()
         yield from picoweb.http_error(resp, "500")
     else:
         yield from req.read_form_data()
         dt = ""
         for i in req.form:
             dt += str(i)
         values = json.loads(dt)
         res, code = new_transaction(values)
         yield from picoweb.jsonify(resp, res)
Exemple #13
0
def index(req, resp):
    try:
        if req.method == 'GET':
            yield from picoweb.jsonify(resp, state)
            return

        if req.method != 'POST':
            yield from picoweb.start_response(resp, status='406')
            yield from resp.awrite('Method not allowed')
            return

        if req.headers[b'Content-Type'] != b'application/json':
            yield from picoweb.start_response(resp, status='400')
            yield from resp.awrite('Bad request')
            return

        size = int(req.headers[b'Content-Length'])
        raw_data = yield from req.reader.readexactly(size)
        data = ujson.loads(raw_data)

        print('HTTP: request:', data)
        print('HTTP: old state:', state)

        state.update(data)

        if 'on' not in data:
            state['on'] = bool(data.get('brightness', 0))
        elif data['on'] and not state['brightness']:
            state['brightness'] = 100

        duty = percent_to_duty(state['brightness']) if state['on'] else 0

        led_pwm.duty(duty)

        print('HTTP: new state:', state)

        yield from picoweb.jsonify(resp, state)
    except Exception as e:
        print('ERROR! {}: {}'.format(e.__class__.__name__, e))
Exemple #14
0
def get_values(req, resp):
    global timerFinish, values
    values["temperature"] = controller.temperature
    values["regulator"] = controller.pidParams.output
    values[
        "error"] = controller.pidParams.setpoint - controller.pidParams.input
    values["inAuto"] = controller.pid.inAuto
    values["timer"] = timerFinish - utime.ticks_ms()
    #values["ready"] = controller.ready
    values["on"] = controller.on
    values["lowerPower"] = controller.lowerResistor
    values["upperPower"] = controller.upperResistor
    yield from picoweb.jsonify(resp, values)
Exemple #15
0
def set_ttl(req=None, resp=None):
    global watchdog_ttl, watchdog_counter
    op = "get"
    try:
        req.parse_qs()
        ttl = int(req.form["ttl"])
        if ttl > 0:
            watchdog_ttl = ttl
            if watchdog_counter > ttl:
                watchdog_counter = ttl
            op = "set"
    except Exception:
        pass

    if req:
        yield from jsonify(resp, {"op": op, "ttl": watchdog_ttl})
Exemple #16
0
def goofy(request, response):
    print("wheee")
    if request.method == 'POST':
        print(request.headers)
        yield from request.read_form_data()
        if request.form.get('test'):
            print("hello")
            content=request.form['test'][0]
            rfm9x.send(str(content))
            print("Sending:",content)
            yield from picoweb.start_response(response, "application/json")
            yield from response.awriteiter(ijson.idumps({'note': 'huzzah', 'success': 1}))
            return

        yield from picoweb.jsonify(response, {'success': 0})
        return
Exemple #17
0
def get_data_json(req, resp):
    global actual, plan, ct, run, running_sec
    t = rtc.datetime()
    #add zero in front of number < 10
    t4 = checktime(str(t[4]))
    t5 = checktime(str(t[5]))
    t6 = checktime(str(t[6]))
    #print(t4 , t5 , t6)
    now = t4 + ":" + t5 + ":" + t6
    yield from picoweb.jsonify(
        resp, {
            'actual': actual,
            'plan': plan,
            'ct': ct,
            'now': now,
            'run': run,
            'running_sec': running_sec
        })
Exemple #18
0
def resources(request, response):
    if not is_authenticate(request, settings.WEB_BASIC_AUTH):
        yield from picoweb.start_response(
            response,
            content_type="text/html",
            headers='WWW-Authenticate: Basic realm="private"',
            status="401")
        return

    if request.method == "POST":
        yield from request.read_form_data()
        resource = request.form.get("resource")
        if resource:
            status = "Error"
            if resource[0] == "food":
                status = "Ok"
                food_pin.value(1)
                time.sleep(settings.FOOD_TIME)
                food_pin.value(0)
            elif resource[0] == "water":
                status = "Ok"
                water_pin.value(1)
                time.sleep(settings.WATER_TIME)
                water_pin.value(0)
            elif resource[0] == "light":
                if not light.on:
                    light.on = True
                    light_on(True)
                    status = "On"
                else:
                    light.on = False
                    light_on(False)
                    status = "Off"

            yield from picoweb.jsonify(response, {
                "resource": resource[0],
                "status": status
            })
            return

    yield from picoweb.start_response(response,
                                      content_type="application/json",
                                      status="400")
    yield from response.awrite(ujson.dumps({"error": "400 Bad Request"}))
Exemple #19
0
def homepage(request, response):
    if request.method == 'POST':
        print(request.headers)
        yield from request.read_form_data()
        if request.form.get('content'):
            note_id = Note.create(content=request.form['content'][0])
            note = list(Note.get_id(note_id))[0]
            print("note after create:", note)
            tmpl = app._load_template('note.html')
            yield from picoweb.start_response(response, "application/json")
            yield from response.awriteiter(ijson.idumps({'note': tmpl(note), 'success': 1}))
            return

        yield from picoweb.jsonify(response, {'success': 0})
        return

    yield from picoweb.start_response(response)
#    notes = Note.public().paginate(get_page(), 50)
    notes = Note.public()
    yield from app.render_template(response, 'homepage.html', (notes,))
Exemple #20
0
def goofy(request, response):
    print("wheee")
    global filename
    global counter
    if request.method == 'POST':
        print(request.headers)
        yield from request.read_form_data()
        if request.form.get('test'):
            print("hello")
            content=request.form['test'][0]
            filename=content
            #rfm9x.send(str(content))
            print("Changing filename to:",content)
            #await push_event("- %s" % str(content))
            counter=0
            yield from picoweb.start_response(response, "application/json")
            yield from response.awriteiter(ijson.idumps({'note': 'huzzah', 'success': 1}))
            return

        yield from picoweb.jsonify(response, {'success': 0})
        return
Exemple #21
0
def homepage(request, response):
    if request.method == 'POST':
        print(request.headers)
        yield from request.read_form_data()
        if request.form.get('content'):
            note_id = Note.create(content=request.form['content'][0])
            note = list(Note.get_id(note_id))[0]
            print("note after create:", note)
            tmpl = app._load_template('note.html')
            yield from picoweb.start_response(response, "application/json")
            yield from response.awriteiter(
                ijson.idumps({
                    'note': tmpl(note),
                    'success': 1
                }))
            return

        yield from picoweb.jsonify(response, {'success': 0})
        return

    yield from picoweb.start_response(response)
    #    notes = Note.public().paginate(get_page(), 50)
    notes = Note.public()
    yield from app.render_template(response, 'homepage.html', (notes, ))
Exemple #22
0
def get_rand_number(req, resp):
    global n
    n = n + 1
    yield from picoweb.jsonify(resp, {'rand_number': n})
Exemple #23
0
def set_timer(req, resp):
    global timerFinish
    req.parse_qs()
    timerFinish = utime.ticks_ms() + 60000 * int(req.form['minutes'])
    yield from picoweb.jsonify(resp, {'help': 'set_timer?minutes=20'})
Exemple #24
0
def turnOFF(req, resp):
    global timerFinish
    controller.turnOFF()
    timerFinish = 0
    display.updateTimer(0)
    yield from picoweb.jsonify(resp, {'help': 'turn_off'})
Exemple #25
0
def set_manual(req, resp):
    req.parse_qs()
    controller.setManual(int(req.form['upper']), int(req.form['lower']))
    yield from picoweb.jsonify(resp, {'help': 'set_manual?lower=50&upper=50'})
Exemple #26
0
def set_auto(req, resp):
    req.parse_qs()
    controller.setAuto(float(req.form['temp']))
    yield from picoweb.jsonify(resp, {'help': 'set_auto?temp=100'})
Exemple #27
0
def archive_note(request, response):
    pkey = picoweb.utils.unquote_plus(request.url_match.group(1))
    print("archive_note", pkey)
    Note.update({"timestamp": pkey}, archived=1)
    yield from picoweb.jsonify(response, {'success': True})
Exemple #28
0
def ok(res, data={}):
    yield from picoweb.jsonify(res, data)
Exemple #29
0
def set_alarm(req, resp):
    req.parse_qs()
    password = req.form['pass']
    state = req.form['state']
    yield from picoweb.jsonify(resp, alarm.changeMode(state, password))
Exemple #30
0
def ack_error(req, resp):
    pump.ackError()
    yield from picoweb.jsonify(resp, {'result': 'Successfully acknowledged!'})
Exemple #31
0
def clear_events(req, resp):
    yield from picoweb.jsonify(resp, alarm.clearEvents())
Exemple #32
0
def get_events(req, resp):
    yield from picoweb.jsonify(resp, alarm.getEvents())
Exemple #33
0
def ok(res, data={}):
  yield from picoweb.jsonify(res, data)