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))
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})
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()
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)
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'})
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"})
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 })
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)
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)
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()
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)
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)
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))
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)
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})
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
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 })
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"}))
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,))
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
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, ))
def get_rand_number(req, resp): global n n = n + 1 yield from picoweb.jsonify(resp, {'rand_number': n})
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'})
def turnOFF(req, resp): global timerFinish controller.turnOFF() timerFinish = 0 display.updateTimer(0) yield from picoweb.jsonify(resp, {'help': 'turn_off'})
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'})
def set_auto(req, resp): req.parse_qs() controller.setAuto(float(req.form['temp'])) yield from picoweb.jsonify(resp, {'help': 'set_auto?temp=100'})
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})
def ok(res, data={}): yield from picoweb.jsonify(res, data)
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))
def ack_error(req, resp): pump.ackError() yield from picoweb.jsonify(resp, {'result': 'Successfully acknowledged!'})
def clear_events(req, resp): yield from picoweb.jsonify(resp, alarm.clearEvents())
def get_events(req, resp): yield from picoweb.jsonify(resp, alarm.getEvents())