From d387cdaf295d117fc72235d2d92a3c352aafe5cd Mon Sep 17 00:00:00 2001 From: Andreas Motl Date: Wed, 22 Mar 2023 15:59:49 +0100 Subject: [PATCH 1/2] Chore: Add .gitignore file --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e46be64 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.idea +/.venv* From 6dd9f55a8ffd28121a18afd053911d788036b6c3 Mon Sep 17 00:00:00 2001 From: Andreas Motl Date: Wed, 22 Mar 2023 16:15:21 +0100 Subject: [PATCH 2/2] Improve start procedure for captive portal web server This patch will stop running corresponding code on the module-level of `webserver.py`, which should be avoided. Instead, it will invoke the code at runtime, after activating the WiFi in AP mode. --- main.py | 26 +++++++++++++++++++++----- webserver.py | 5 ----- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/main.py b/main.py index 1927660..af93095 100644 --- a/main.py +++ b/main.py @@ -11,7 +11,6 @@ import uos # own code imports -import webserver from config import Config from sensors import hx711, bme280, ssd1306, ds1820 from wlanmanager import WLanManager @@ -53,6 +52,7 @@ def rgb_led(rgb): _config.get_value('sensors', 'ds1820', 'positions').items()} _wm = WLanManager(_config) _wlan = network.WLAN(id=0) +_mws = None measurement_interval = _config.get_value('general', 'general', 'measurement_interval') @@ -290,9 +290,23 @@ def ap_already_enabled(pin=None): if button_ap() == 0: print("Already trying to enable AP.") + +def start_captive_portal(): + global _mws + print("Starting captive portal") + from webserver import MicroWebSrv, MicroDNSSrv + if _mws is not None: + _mws = MicroWebSrv() + _mws.SetNotFoundPageUrl("http://hiverize.wifi") + MicroDNSSrv.Create({'*': '192.168.4.1'}) + if not _mws.IsStarted(): + _mws.Start(threaded=True) + print("Captive portal started") + + # enable ap def enable_ap(pin=None): - global _wm, loop_run, _wlan, wdt, button_ap + global _wm, loop_run, _wlan, _mws, wdt, button_ap # if in button mode, make sure we don't enter this function again if _config.get_value('general', 'general', 'button_ap_enabled'): button_ap.callback(Pin.IRQ_FALLING, handler=ap_already_enabled) @@ -301,9 +315,11 @@ def enable_ap(pin=None): if not _wlan.mode() == network.WLAN.AP: loop_run = False _wm.enable_ap() - if not webserver.mws.IsStarted(): - webserver.mws.Start(threaded=True) - print("Webserver started!") + try: + start_captive_portal() + except Exception as ex: + print("ERROR: Unable to start captive portal. Reason:", ex) + ###### run this ####### diff --git a/webserver.py b/webserver.py index 23c2fea..b14fe01 100644 --- a/webserver.py +++ b/webserver.py @@ -135,8 +135,3 @@ def get_logfile(httpClient, httpResponse): return httpResponse.WriteResponseJSONOk( obj=data, headers=_headers) - -print("in webserver.py") -mws = MicroWebSrv() -mws.SetNotFoundPageUrl("http://hiverize.wifi") -MicroDNSSrv.Create({ '*' : '192.168.4.1' })