import tinyweb from machine import Pin from machine import reset from time import sleep import json settings=json.loads(''.join(open('settings.json').readlines())) # Create web server application app = tinyweb.webserver() # Hardware Setup, e.g. Garage Door Remote Button={} for name in settings["buttons"].keys(): Button[name]=Pin(settings["buttons"][name]["pin"],Pin.OUT) Button[name].off() # Index page @app.route('/') async def index(request, response): # Start HTTP response with content-type text/html await response.start_html() # Send actual HTML page, in this example with three buttons await response.send('''

Garage Door Remote

\n''') @app.route('/reset') async def index(request, response): await response.start_html() await response.send('''

RESETTING...

\n''') reset() @app.route('/button/') async def button(request, response,nr): # Start HTTP response with content-type text/html # Machine control Button[nr].on() sleep(settings['buttons'][nr]['delay']) Button[str(nr)].off() # Debug string print ('button %s (Pin %s) pressed for %s seconds'%(nr,Button[nr],settings['buttons'][nr]['delay'])) #Send response await response.start_html() await response.send('

Hi George!

Button number %s pushed for %s seconds. Go back.\n'%(nr,settings['buttons'][str(nr)]['delay'])) def Write_Settings(): File=open('settings.json','w') File.write(json.dumps(settings)) File.close() #@app.route('/config',save_headers=[]) class config(): def get(self,data): SanitizedSettings=settings.copy() if 'password' in SanitizedSettings: SanitizedSettings['password']='*not displayed*' if 'AP-password' in SanitizedSettings: SanitizedSettings['AP-password']='*not displayed*' return SanitizedSettings def post(self, data): print (data) for Setting in data.keys(): settings[Setting]=data[Setting] print("Setting %s to %s"%(Setting,data[Setting])) Write_Settings() return data def delete(self,data): for Setting in data.keys(): settings.pop(Setting) Write_Settings() return data def run(): print ("running app") app.add_resource(config,"/config") app.run(host='0.0.0.0', port=80)