def test_RunApMode(self): wlan_ap = WLAN() netcon = NetCon(self.DIR, self.ApCfg, NetCon.MODE_ACCESS_POINT, wlan_ap) netcon.SvcRun() self.assertTrue(wlan_ap.active()) netcon.StationSettingsReset()
def test_RunStationModeConnectOnFirstTry(self): wlan_ap = WLAN() netcon = NetCon(self.DIR, self.ApCfg, NetCon.MODE_STATION, wlan_ap) netcon.StationSettingsStore(self.ApCfg["ssid"], self.ApCfg["pwd"]) netcon.SvcRun() self.assertTrue(wlan_ap.active()) self.assertTrue(netcon.IsConnected()) netcon.StationSettingsReset()
def test_Constructor(self): wlan_ap = WLAN() netcon = NetCon(self.DIR, self.ApCfg, NetCon.MODE_ACCESS_POINT, wlan_ap) self.assertIsInstance(netcon, NetCon) self.assertIsInstance(netcon, Service) self.assertEqual(netcon.WlanMode, NetCon.MODE_ACCESS_POINT) self.assertEqual(netcon.SvcMode, NetConService.NET_CON_SERVICE_MODE) netcon.StationSettingsReset()
def test_RunStationModeConnectAfterRetries(self): wlan_ap = WLAN() netcon = NetCon(self.DIR, self.ApCfg, NetCon.MODE_STATION, wlan_ap) wlan_ap.retries_set(NetCon.CONN_RETRIES - 1) netcon.StationSettingsStore(self.ApCfg["ssid"], self.ApCfg["pwd"]) netcon.SvcRun() self.assertTrue(wlan_ap.active()) self.assertTrue(netcon.IsConnected()) netcon.StationSettingsReset()
def test_DeinitApMode(self): wlan_ap = WLAN() netcon = NetCon(self.DIR, self.ApCfg, NetCon.MODE_ACCESS_POINT, wlan_ap) netcon.SvcRun() netcon.SvcDeinit() self.assertFalse(wlan_ap.active()) self.assertFalse(wlan_ap.isconnected()) netcon.StationSettingsReset()
def test_RunStationModeNoSettings(self): wlan_ap = WLAN() netcon = NetCon(self.DIR, self.ApCfg, NetCon.MODE_STATION, wlan_ap) exc_occurred = False try: netcon.SvcRun() except NetConExceptionNoStationSettings: exc_occurred = True self.assertTrue(exc_occurred) netcon.StationSettingsReset()
def test_StationSettingsStoreLoad(self): wlan_ap = WLAN() netcon = NetCon(self.DIR, self.ApCfg, NetCon.MODE_ACCESS_POINT, wlan_ap) netcon.StationSettingsStore(self.ApCfg["ssid"], self.ApCfg["pwd"]) ssid, pwd = netcon.StationSettingsLoad() self.assertEqual(self.ApCfg["ssid"], ssid) self.assertEqual(self.ApCfg["pwd"], pwd) self.assertTrue( TestUtil.FileExists(netcon.RootDir + NetCon.PATH_NET_CON)) netcon.StationSettingsReset()
def test_RunStationModeAlreadyConnected(self): wlan_ap = WLAN() netcon = NetCon(self.DIR, self.ApCfg, NetCon.MODE_STATION, wlan_ap) netcon.StationSettingsStore(self.ApCfg["ssid"], self.ApCfg["pwd"]) netcon.SvcRun() exc_occurred = False try: netcon.SvcRun() except ServiceExceptionSuspend: exc_occurred = True self.assertTrue(exc_occurred) self.assertTrue(wlan_ap.active()) self.assertTrue(netcon.IsConnected()) netcon.StationSettingsReset()
def setUp(self): # Configure the URL fields. MessageSpecification.Config(self.UrlFields) # Create objects. filter_depth = len(self.TempSamples) / 2 dummy_temp_sensor = DummySensor.DummySensor(self.TempSamples) dummy_moist_sensor = DummySensor.DummySensor(self.MoistSamples) wlan_ap = WLAN() self.Time = SystemTime.InstanceGet() self.NetCon = NetCon(self.DIR, self.ApCfg, NetCon.MODE_STATION, wlan_ap) self.TempSensor = Sensor.Sensor(self.DIR, SensorReportTemp.NAME_TEMP, filter_depth, dummy_temp_sensor) self.MoistSensor = Sensor.Sensor(self.DIR, SensorReportMoist.NAME_MOIST, filter_depth, dummy_moist_sensor) self.MqttClient = MQTTClient(self.ID, self.BROKER, self.PORT) self.MsgEx = MessageExchange(self.DIR, self.MqttClient, self.ID, self.RETRIES) self.MsgEp = Endpoint() self.Scheduler = ServiceScheduler() # Set service dependencies. self.Time.SvcDependencies( {self.NetCon: Service.DEP_TYPE_RUN_ALWAYS_BEFORE_RUN}) self.MsgEx.SvcDependencies({ self.Time: Service.DEP_TYPE_RUN_ONCE_BEFORE_RUN, self.NetCon: Service.DEP_TYPE_RUN_ALWAYS_BEFORE_INIT }) self.TempSensor.SvcDependencies( {self.Time: Service.DEP_TYPE_RUN_ONCE_BEFORE_RUN}) self.MoistSensor.SvcDependencies( {self.Time: Service.DEP_TYPE_RUN_ONCE_BEFORE_RUN}) # Register all services to the scheduler. self.Scheduler.ServiceRegister(self.Time) self.Scheduler.ServiceRegister(self.NetCon) self.Scheduler.ServiceRegister(self.MsgEx) self.Scheduler.ServiceRegister(self.TempSensor) self.Scheduler.ServiceRegister(self.MoistSensor) # Create message specifications. self.TempMsgSpec = SensorReportTemp() self.MoistMsgSpec = SensorReportMoist() self.LogMsgSpec = LogMessage() # Create a Messaging Endpoint and MessageFormatAdapters. self.TempAdapt = MessageFormatAdapter( self.MsgEp, MessageFormatAdapter.SEND_ON_COMPLETE, self.TempMsgSpec) self.MoistAdapt = MessageFormatAdapter( self.MsgEp, MessageFormatAdapter.SEND_ON_COMPLETE, self.MoistMsgSpec) self.LogAdapt = MessageFormatAdapter( self.MsgEp, MessageFormatAdapter.SEND_ON_COMPLETE, self.LogMsgSpec) # Register message specs. self.MsgEx.RegisterMessageType(self.TempMsgSpec) self.MsgEx.RegisterMessageType(self.MoistMsgSpec) self.MsgEx.RegisterMessageType(self.LogMsgSpec) # Create observers for the sensor data. self.TempObserver = self.TempAdapt.CreateObserver( SensorReportTemp.DATA_KEY_SENSOR_REPORT_ARRAY, self.SamplesPerMessage) self.MoistObserver = self.MoistAdapt.CreateObserver( SensorReportMoist.DATA_KEY_SENSOR_REPORT_ARRAY, self.SamplesPerMessage) # Link the observers to the sensors. self.TempSensor.ObserverAttachNewSample(self.TempObserver) self.MoistSensor.ObserverAttachNewSample(self.MoistObserver) # Create a stream for the log messages. self.LogStream = self.LogAdapt.CreateStream( LogMessage.DATA_KEY_LOG_MSG, ExtLogging.WRITES_PER_LOG) # Configure the ExtLogging class. ExtLogging.ConfigGlobal(level=ExtLogging.INFO, stream=self.LogStream) # Configure the station settings to connect to a WLAN AP. self.NetCon.StationSettingsStore(self.ApCfg["ssid"], self.ApCfg["pwd"]) # Declare test variables. self.RecvMsgCount = 0 self.RecvTopic = None self.RecvMsg = None
from DemoApp.DemoApp import DemoApp from WebApp.WebApp import WebApp from upyiot.comm.NetCon.NetCon import NetCon # Other from micropython import const import machine import ubinascii import utime ID = str(ubinascii.hexlify(machine.unique_id()).decode('utf-8')) DIR = "./" ApCfg = {"ssid": "SmartSensor-" + ID, "pwd": "mato", "ip": "192.168.0.200"} if __name__ == '__main__': netcon = NetCon(DIR, ApCfg) app = None if netcon.StationSettingsAreSet(): print("[App] Found station settings.") print("[App] Booting Main App.") app = DemoApp(netcon) else: print("[App] No station settings.") print("[App] Booting Web App.") app = WebApp(netcon) app.Setup() app.Run()