├── .gitignore ├── Design ├── EnableDisable.png ├── meadow-projectlab-samples.jpg ├── meadow_samples_banner.jpg ├── project-lab-specs.jpg ├── projectlab-pinout-v1.jpg ├── projectlab-pinout-v2.jpg ├── projectlab-pinout-v3.jpg ├── template_empty.png ├── wildernesslabs-projectlab-ambient-room-monitor.png ├── wildernesslabs-projectlab-azure-iot-hub-web.png ├── wildernesslabs-projectlab-azure-iot-hub.png ├── wildernesslabs-projectlab-azure-servo.png ├── wildernesslabs-projectlab-bluetooth.png ├── wildernesslabs-projectlab-galleryviewer.png ├── wildernesslabs-projectlab-getting-started.png ├── wildernesslabs-projectlab-grove-moisture-meter.png ├── wildernesslabs-projectlab-magic-eight-meadow.png ├── wildernesslabs-projectlab-maple.png ├── wildernesslabs-projectlab-meadow-cloud-client.png ├── wildernesslabs-projectlab-meadow-cloud-logging.jpg ├── wildernesslabs-projectlab-meadow-cloud-relay-command.png ├── wildernesslabs-projectlab-micrographics.png ├── wildernesslabs-projectlab-microlayout-menu.png ├── wildernesslabs-projectlab-morse-code-trainer.png ├── wildernesslabs-projectlab-simon.png └── wildernesslabs-projectlab-wifiweather.png ├── LICENSE ├── README.md └── Source ├── AmbientRoomMonitor ├── .vscode │ └── launch.config ├── AmbientRoomMonitor.csproj ├── Controllers │ └── DisplayController.cs ├── Hardware │ ├── AmbientRoomMonitorHardware.cs │ └── IAmbientRoomMonitorHardware.cs ├── MainController.cs ├── MeadowApp.cs ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml ├── AnalogClockFace ├── .vscode │ └── launch.config ├── AnalogClockFace.csproj ├── MeadowApp.cs ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml ├── Connectivity ├── .vscode │ └── launch.config ├── Connectivity.Common │ ├── Bluetooth │ │ └── BluetoothConstants.cs │ ├── CommonContracts.projitems │ ├── Connectivity.Common.shproj │ └── Models │ │ ├── ClimateModel.cs │ │ ├── IlluminanceModel.cs │ │ └── MotionModel.cs ├── MeadowConnectedSample │ ├── Connectivity │ │ ├── BluetoothServer.cs │ │ └── MapleRequestHandler.cs │ ├── Controllers │ │ ├── DisplayController.cs │ │ ├── LedController.cs │ │ └── MainController.cs │ ├── MeadowApp.cs │ ├── MeadowConnectedSample.csproj │ ├── Resources │ │ ├── img_ble_paired.bmp │ │ ├── img_ble_pairing.bmp │ │ ├── img_meadow.bmp │ │ ├── img_wifi_connected.bmp │ │ └── img_wifi_connecting.bmp │ ├── Secrets.cs │ ├── app.config.yaml │ ├── meadow.config.yaml │ └── wifi.config.yaml └── MobileProjectLab │ ├── App.xaml │ ├── App.xaml.cs │ ├── AppShell.xaml │ ├── AppShell.xaml.cs │ ├── Converter │ └── InverseBoolConverter.cs │ ├── MauiProgram.cs │ ├── MobileProjectLab.csproj │ ├── Platforms │ └── Android │ │ ├── AndroidManifest.xml │ │ ├── MainActivity.cs │ │ ├── MainApplication.cs │ │ └── Resources │ │ ├── values │ │ └── colors.xml │ │ └── xml │ │ └── network_security_config.xml │ ├── Properties │ └── launchSettings.json │ ├── Resources │ ├── AppIcon │ │ ├── appicon.svg │ │ └── appiconfg.svg │ ├── Fonts │ │ ├── OpenSans-Regular.ttf │ │ └── OpenSans-Semibold.ttf │ ├── Images │ │ ├── img_ble_pair.svg │ │ ├── img_ble_paired.svg │ │ ├── img_project_lab.png │ │ └── img_search.svg │ ├── Raw │ │ └── AboutAssets.txt │ ├── Splash │ │ └── splash.svg │ └── Styles │ │ ├── Colors.xaml │ │ └── Styles.xaml │ ├── Utils │ └── BleConstants.cs │ ├── View │ ├── BluetoothPage.xaml │ ├── BluetoothPage.xaml.cs │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ ├── MaplePage.xaml │ └── MaplePage.xaml.cs │ └── ViewModel │ ├── BaseViewModel.cs │ ├── BluetoothViewModel.cs │ └── MapleViewModel.cs ├── GalleryViewer ├── .vscode │ └── launch.config ├── Controllers │ └── DisplayController.cs ├── GalleryViewer.csproj ├── Hardware │ ├── GalleryViewerHardware.cs │ └── IGalleryViewerHardware.cs ├── MainController.cs ├── MeadowApp.cs ├── Resources │ ├── image1.jpg │ ├── image2.jpg │ └── image3.jpg ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml ├── GridEYE ├── GridEYE.csproj ├── MeadowApp.cs ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml ├── MagicEightMeadow ├── Controllers │ └── DisplayController.cs ├── Hardware │ ├── IMagicEightMeadowHardware.cs │ └── MagicEightMeadowHardware.cs ├── MagicEightMeadow.csproj ├── MainController.cs ├── MeadowApp.cs ├── Resources │ ├── m8b_01.bmp │ ├── m8b_02.bmp │ ├── m8b_03.bmp │ ├── m8b_04.bmp │ ├── m8b_05.bmp │ ├── m8b_06.bmp │ ├── m8b_07.bmp │ ├── m8b_08.bmp │ ├── m8b_09.bmp │ ├── m8b_10.bmp │ ├── m8b_11.bmp │ ├── m8b_12.bmp │ ├── m8b_13.bmp │ ├── m8b_14.bmp │ ├── m8b_15.bmp │ ├── m8b_16.bmp │ ├── m8b_17.bmp │ ├── m8b_18.bmp │ ├── m8b_19.bmp │ ├── m8b_20.bmp │ └── m8b_question.bmp ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml ├── MathLineCharts ├── MathLineCharts.csproj ├── MeadowApp.cs ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml ├── Meadow.Cloud_Update ├── .vscode │ └── launch.json ├── DisplayController.cs ├── Meadow.Cloud_Update.csproj ├── MeadowApp.cs ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml ├── Meadow.ProjectLab.Samples.sln ├── MeadowAzureFunction ├── .gitignore ├── Function1.cs ├── MeadowAzureFunction.csproj ├── Properties │ ├── serviceDependencies.json │ └── serviceDependencies.local.json ├── app.config.yaml ├── host.json ├── meadow.config.yaml └── wifi.config.yaml ├── MeadowAzureIoTHub ├── MeadowAzureIoTHub │ ├── Controllers │ │ ├── DisplayController.cs │ │ ├── IIoTHubController.cs │ │ ├── IoTHubAmqpController.cs │ │ └── IoTHubMqttController.cs │ ├── Hardware │ │ ├── IMeadowAzureIoTHubHardware.cs │ │ └── MeadowAzureIoTHubHardware.cs │ ├── MainController.cs │ ├── MeadowApp.cs │ ├── MeadowAzureIoTHub.csproj │ ├── Resources │ │ ├── img_meadow.bmp │ │ ├── img_refreshed.bmp │ │ ├── img_refreshing.bmp │ │ ├── img_wifi_connected.bmp │ │ └── img_wifi_connecting.bmp │ ├── Secrets.cs │ ├── app.config.yaml │ ├── meadow.config.yaml │ └── wifi.config.yaml └── WebAzureIoTHub │ ├── .vscode │ └── launch.json │ ├── LICENSE │ ├── README.md │ ├── package-lock.json │ ├── package.json │ ├── public │ ├── css │ │ └── style.css │ ├── index.html │ └── js │ │ └── chart-device-data.js │ ├── scripts │ ├── event-hub-reader.js │ └── iot-hub-connection-string.js │ └── server.js ├── MeadowAzureServo ├── Azure │ └── IoTHubManager.cs ├── MeadowApp.cs ├── MeadowAzureServo.csproj ├── Models │ └── RotateToEventArgs.cs ├── Secrets.cs ├── Views │ └── ServoController.cs ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml ├── MicroLayoutMenu ├── MeadowApp.cs ├── Menu.cs ├── MicroLayoutMenu.csproj ├── app.config.yaml ├── img_meadow.bmp ├── meadow.config.yaml └── wifi.config.yaml ├── ModbusServer ├── DesktopModbusClient │ ├── DesktopModbusClient.csproj │ └── Program.cs └── MeadowModbusServer │ ├── MeadowApp.cs │ ├── MeadowModbusServer.csproj │ ├── RegisterBank.cs │ ├── app.config.yaml │ ├── meadow.config.yaml │ └── wifi.config.yaml ├── MoistureMeter ├── .vscode │ └── launch.config ├── Controllers │ └── DisplayController.cs ├── MeadowApp.cs ├── MoistureMeter.csproj ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml ├── MorseCodeTrainer ├── .vscode │ └── launch.config ├── Controllers │ └── DisplayController.cs ├── MeadowApp.cs ├── MorseCodeTrainer.csproj ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml ├── PlantMonitor ├── .vscode │ └── launch.config ├── Controllers │ └── DisplayController.cs ├── MeadowApp.cs ├── PlantMonitor.csproj ├── level_0.jpg ├── level_1.jpg ├── level_2.jpg ├── level_3.jpg └── meadow.config.yaml ├── RotatingCube ├── Cube3d.cs ├── MeadowApp.cs ├── RotatingCube.csproj ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml ├── Simon ├── .vscode │ └── launch.config ├── MeadowApp.cs ├── Simon.csproj ├── SimonGame.cs ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml ├── ThermalCamera ├── MeadowApp.cs ├── ThermalCamera.csproj ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml ├── WakeOnInterrupt ├── MeadowApp.cs ├── WakeOnInterrupt.csproj ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml ├── WaterStorageMonitor ├── .vscode │ └── launch.config ├── MaxBotix_to_Grove.png ├── Source │ ├── Controllers │ │ └── DisplayController.cs │ ├── Hardware │ │ ├── BenchProtoWaterMonitorHardware.cs │ │ ├── HardwareConfigTypes.cs │ │ ├── IWaterMonitorHardware.cs │ │ ├── LabProtoWaterMonitorHardware.cs │ │ └── WaterMonitorHardwareBase.cs │ ├── MeadowApp.cs │ ├── StorageContainer.cs │ ├── StorageContainerConfig.cs │ ├── WaterStorageMonitor.csproj │ └── meadow.config.yaml ├── WaterStorageMonitor.jpg ├── Water_Barrel.jpg ├── app.config.yaml ├── meadow.config.yaml ├── readme.md └── wifi.config.yaml └── WifiWeather ├── .vscode └── launch.config ├── Controllers ├── DisplayController.cs └── RestClientController.cs ├── DTOs └── WeatherReadingDTO.cs ├── Hardware ├── IWifiWeatherHardware.cs └── WifiWeatherHardware.cs ├── MainController.cs ├── MeadowApp.cs ├── Resources ├── img_meadow.bmp ├── img_refreshed.bmp ├── img_refreshing.bmp ├── img_wifi_connected.bmp ├── img_wifi_connecting.bmp ├── w_clear_moon.bmp ├── w_clear_sun.bmp ├── w_clouds.bmp ├── w_clouds_moon.bmp ├── w_clouds_sun.bmp ├── w_drizzle.bmp ├── w_drizzle_heavy.bmp ├── w_drizzle_light_moon.bmp ├── w_drizzle_light_sun.bmp ├── w_misc.bmp ├── w_mist.bmp ├── w_rain.bmp ├── w_rain_heavy.bmp ├── w_rain_light_moon.bmp ├── w_rain_light_sun.bmp ├── w_snow.bmp ├── w_snow_light_moon.bmp ├── w_snow_light_sun.bmp ├── w_snow_rain.bmp ├── w_storm.bmp ├── w_storm_heavy.bmp ├── w_storm_light_moon.bmp └── w_storm_light_sun.bmp ├── Secrets.cs ├── Utils └── WeatherCodeConstants.cs ├── WifiWeather.csproj ├── app.config.yaml ├── meadow.config.yaml └── wifi.config.yaml /Design/EnableDisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/EnableDisable.png -------------------------------------------------------------------------------- /Design/meadow-projectlab-samples.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/meadow-projectlab-samples.jpg -------------------------------------------------------------------------------- /Design/meadow_samples_banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/meadow_samples_banner.jpg -------------------------------------------------------------------------------- /Design/project-lab-specs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/project-lab-specs.jpg -------------------------------------------------------------------------------- /Design/projectlab-pinout-v1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/projectlab-pinout-v1.jpg -------------------------------------------------------------------------------- /Design/projectlab-pinout-v2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/projectlab-pinout-v2.jpg -------------------------------------------------------------------------------- /Design/projectlab-pinout-v3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/projectlab-pinout-v3.jpg -------------------------------------------------------------------------------- /Design/template_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/template_empty.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-ambient-room-monitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-ambient-room-monitor.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-azure-iot-hub-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-azure-iot-hub-web.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-azure-iot-hub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-azure-iot-hub.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-azure-servo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-azure-servo.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-bluetooth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-bluetooth.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-galleryviewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-galleryviewer.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-getting-started.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-getting-started.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-grove-moisture-meter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-grove-moisture-meter.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-magic-eight-meadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-magic-eight-meadow.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-maple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-maple.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-meadow-cloud-client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-meadow-cloud-client.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-meadow-cloud-logging.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-meadow-cloud-logging.jpg -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-meadow-cloud-relay-command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-meadow-cloud-relay-command.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-micrographics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-micrographics.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-microlayout-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-microlayout-menu.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-morse-code-trainer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-morse-code-trainer.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-simon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-simon.png -------------------------------------------------------------------------------- /Design/wildernesslabs-projectlab-wifiweather.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Design/wildernesslabs-projectlab-wifiweather.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Meadow.Samples](Design/meadow_samples_banner.jpg)](https://github.com/WildernessLabs/Meadow.Samples) -------------------------------------------------------------------------------- /Source/AmbientRoomMonitor/.vscode/launch.config: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Deploy", 9 | "type": "meadow", 10 | "request": "launch", 11 | "preLaunchTask": "meadow: Build" 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /Source/AmbientRoomMonitor/AmbientRoomMonitor.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | netstandard2.1 4 | true 5 | Library 6 | App 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | PreserveNewest 15 | 16 | 17 | PreserveNewest 18 | 19 | 20 | PreserveNewest 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Source/AmbientRoomMonitor/Hardware/AmbientRoomMonitorHardware.cs: -------------------------------------------------------------------------------- 1 | using Meadow.Devices; 2 | using Meadow.Foundation.Sensors.Atmospheric; 3 | using Meadow.Peripherals.Displays; 4 | using Meadow.Peripherals.Leds; 5 | using Meadow.Peripherals.Sensors.Light; 6 | 7 | namespace AmbientRoomMonitor.Hardware 8 | { 9 | internal class AmbientRoomMonitorHardware : IAmbientRoomMonitorHardware 10 | { 11 | protected IProjectLabHardware ProjLab { get; private set; } 12 | 13 | public IPixelDisplay Display { get; set; } 14 | 15 | public IRgbPwmLed RgbPwmLed { get; set; } 16 | 17 | public ILightSensor LightSensor { get; set; } 18 | 19 | public Bme68x EnvironmentalSensor { get; set; } 20 | 21 | public void Initialize() 22 | { 23 | ProjLab = ProjectLab.Create(); 24 | 25 | Display = ProjLab.Display; 26 | 27 | RgbPwmLed = ProjLab.RgbLed; 28 | 29 | LightSensor = ProjLab.LightSensor; 30 | 31 | EnvironmentalSensor = (ProjLab as ProjectLabHardwareBase).AtmosphericSensor; 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /Source/AmbientRoomMonitor/Hardware/IAmbientRoomMonitorHardware.cs: -------------------------------------------------------------------------------- 1 | using Meadow.Foundation.Sensors.Atmospheric; 2 | using Meadow.Peripherals.Displays; 3 | using Meadow.Peripherals.Leds; 4 | using Meadow.Peripherals.Sensors.Light; 5 | 6 | namespace AmbientRoomMonitor.Hardware 7 | { 8 | internal interface IAmbientRoomMonitorHardware 9 | { 10 | public IPixelDisplay Display { get; } 11 | 12 | public ILightSensor LightSensor { get; } 13 | 14 | public Bme68x EnvironmentalSensor { get; } 15 | 16 | public IRgbPwmLed RgbPwmLed { get; } 17 | 18 | public void Initialize(); 19 | } 20 | } -------------------------------------------------------------------------------- /Source/AmbientRoomMonitor/MainController.cs: -------------------------------------------------------------------------------- 1 | using AmbientRoomMonitor.Hardware; 2 | using AmbientRoomMonitor.Services; 3 | using Meadow; 4 | using System; 5 | 6 | namespace AmbientRoomMonitor 7 | { 8 | internal class MainController 9 | { 10 | IAmbientRoomMonitorHardware hardware; 11 | 12 | DisplayController displayService; 13 | 14 | public MainController(IAmbientRoomMonitorHardware hardware) 15 | { 16 | this.hardware = hardware; 17 | } 18 | 19 | public void Initialize() 20 | { 21 | hardware.Initialize(); 22 | 23 | displayService = new DisplayController(hardware.Display); 24 | 25 | hardware.EnvironmentalSensor.Updated += EnvironmentalSensorUpdated; 26 | } 27 | 28 | private void EnvironmentalSensorUpdated(object sender, Meadow.IChangeResult<(Meadow.Units.Temperature? Temperature, Meadow.Units.RelativeHumidity? Humidity, Meadow.Units.Pressure? Pressure, Meadow.Units.Resistance? GasResistance)> e) 29 | { 30 | hardware.RgbPwmLed.StartBlink(Color.Orange); 31 | 32 | displayService.UpdateAtmosphericConditions( 33 | light: $"{hardware.LightSensor.Illuminance.Value.Lux:N0}", 34 | pressure: $"{e.New.Pressure.Value.Millibar:N0}", 35 | humidity: $"{e.New.Humidity.Value.Percent:N0}", 36 | temperature: $"{e.New.Temperature.Value.Celsius:N0}"); 37 | 38 | hardware.RgbPwmLed.StartBlink(Color.Green); 39 | } 40 | 41 | public void Run() 42 | { 43 | hardware.LightSensor.StartUpdating(TimeSpan.FromSeconds(5)); 44 | hardware.EnvironmentalSensor.StartUpdating(TimeSpan.FromSeconds(5)); 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /Source/AmbientRoomMonitor/MeadowApp.cs: -------------------------------------------------------------------------------- 1 | using AmbientRoomMonitor.Hardware; 2 | using Meadow; 3 | using Meadow.Devices; 4 | using System.Threading.Tasks; 5 | 6 | namespace AmbientRoomMonitor 7 | { 8 | // Change F7CoreComputeV2 to F7FeatherV2 for ProjectLab v2 9 | public class MeadowApp : App 10 | { 11 | MainController mainController; 12 | 13 | public override Task Initialize() 14 | { 15 | Resolver.Log.Info("Initialize..."); 16 | 17 | var hardware = new AmbientRoomMonitorHardware(); 18 | 19 | mainController = new MainController(hardware); 20 | mainController.Initialize(); 21 | 22 | return Task.CompletedTask; 23 | } 24 | 25 | public override Task Run() 26 | { 27 | Resolver.Log.Info("Run..."); 28 | 29 | mainController.Run(); 30 | 31 | return Task.CompletedTask; 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /Source/AmbientRoomMonitor/app.config.yaml: -------------------------------------------------------------------------------- 1 | # Uncomment additional options as needed. 2 | # To learn more about these config options, including custom application configuration settings, check out the Application Settings Configuration documentation. 3 | # http://developer.wildernesslabs.co/Meadow/Meadow.OS/Configuration/Application_Settings_Configuration/ 4 | 5 | Lifecycle: 6 | # Control whether Meadow will restart when an unhandled app exception occurs. Combine with Lifecycle > AppFailureRestartDelaySeconds to control restart timing. 7 | RestartOnAppFailure: false 8 | # # When app set to restart automatically on app failure, 9 | #AppFailureRestartDelaySeconds: 15 10 | 11 | # # Adjust the level of logging detail. 12 | #Logging: 13 | # LogLevel: 14 | # Default: Trace -------------------------------------------------------------------------------- /Source/AmbientRoomMonitor/meadow.config.yaml: -------------------------------------------------------------------------------- 1 | # Uncommented these options as needed. 2 | # To learn more about these config options, check out the OS & Device Configuration documentation. 3 | # http://developer.wildernesslabs.co/Meadow/Meadow.OS/Configuration/OS_Device_Configuration/ 4 | 5 | #Device: 6 | # Name of the device on the network. 7 | # Name: MeadowF7V2_ConfigSample 8 | 9 | # Uncomment if SD card hardware present on this hardware (e.g., Core-Compute module with SD add-on)? Optional; default value is `false`. 10 | # SdStorageSupported: true 11 | 12 | # Control how the ESP coprocessor will start and operate. 13 | #Coprocessor: 14 | # Should the ESP32 automatically attempt to connect to an access point at startup? 15 | # If set to true, wifi.config.yaml credentials must be stored in the device. 16 | # AutomaticallyStartNetwork: true 17 | 18 | # Should the ESP32 automatically reconnect to the configured access point? 19 | # AutomaticallyReconnect: true 20 | 21 | # Maximum number of retry attempts for connections etc. before an error code is returned. 22 | # MaximumRetryCount: 7 23 | 24 | # Network configuration. 25 | #Network: 26 | # Interfaces: 27 | # - Name: Ethernet 28 | # UseDHCP: false 29 | # IPAddress: 192.168.1.60 30 | # NetMask: 255.255.255.0 31 | # Gateway: 192.168.1.254 32 | # - Name: WiFi 33 | # UseDHCP: true 34 | # IPAddress: 35 | # NetMask: 36 | # Gateway: 37 | 38 | # Which interface should be used? 39 | # DefaultInterface: WiFi 40 | 41 | # Automatically attempt to get the time at startup? 42 | # GetNetworkTimeAtStartup: true 43 | 44 | # Time synchronization period in seconds. 45 | # NtpRefreshPeriodSeconds: 600 46 | 47 | # Name of the NTP servers. 48 | # NtpServers: 49 | # - 0.pool.ntp.org 50 | # - 1.pool.ntp.org 51 | # - 2.pool.ntp.org 52 | # - 3.pool.ntp.org 53 | 54 | # IP addresses of the DNS servers. 55 | # DnsServers: 56 | # - 1.1.1.1 57 | # - 8.8.8.8 -------------------------------------------------------------------------------- /Source/AmbientRoomMonitor/wifi.config.yaml: -------------------------------------------------------------------------------- 1 | # Uncomment to set the default Wi-Fi credentials. (This file will be processed into secure storage on the ESP32 and then deleted from the device.) 2 | # To learn more about these config options, including custom application configuration settings, check out the Application Settings Configuration documentation. 3 | # http://developer.wildernesslabs.co/Meadow/Meadow.OS/Configuration/WiFi_Configuration/ 4 | 5 | # # To enable automatically connecting to a default network, make sure to enable the Coprocessor > AutomaticallyStartNetwork value in meadow.config.yaml. 6 | #Credentials: 7 | # Ssid: YourSSID 8 | # Password: SSIDPassword 9 | -------------------------------------------------------------------------------- /Source/AnalogClockFace/.vscode/launch.config: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Deploy", 9 | "type": "meadow", 10 | "request": "launch", 11 | "preLaunchTask": "meadow: Build" 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /Source/AnalogClockFace/AnalogClockFace.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | netstandard2.1 4 | true 5 | Library 6 | App 7 | 8 | 9 | 10 | 11 | 12 | 13 | PreserveNewest 14 | 15 | 16 | PreserveNewest 17 | 18 | 19 | PreserveNewest 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Source/AnalogClockFace/app.config.yaml: -------------------------------------------------------------------------------- 1 | # Uncomment additional options as needed. 2 | # To learn more about these config options, including custom application configuration settings, check out the Application Settings Configuration documentation. 3 | # http://developer.wildernesslabs.co/Meadow/Meadow.OS/Configuration/Application_Settings_Configuration/ 4 | 5 | Lifecycle: 6 | # Control whether Meadow will restart when an unhandled app exception occurs. Combine with Lifecycle > AppFailureRestartDelaySeconds to control restart timing. 7 | RestartOnAppFailure: false 8 | # # When app set to restart automatically on app failure, 9 | #AppFailureRestartDelaySeconds: 15 10 | 11 | # # Adjust the level of logging detail. 12 | Logging: 13 | LogLevel: 14 | Default: Trace -------------------------------------------------------------------------------- /Source/AnalogClockFace/meadow.config.yaml: -------------------------------------------------------------------------------- 1 | # Uncommented these options as needed. 2 | # To learn more about these config options, check out the OS & Device Configuration documentation. 3 | # http://developer.wildernesslabs.co/Meadow/Meadow.OS/Configuration/OS_Device_Configuration/ 4 | 5 | Device: 6 | 7 | # Name of the device on the network. 8 | Name: MeadowF7V2_ConfigSample 9 | 10 | # Uncomment if SD card hardware present on this hardware (e.g., Core-Compute module with SD add-on)? Optional; default value is `false`. 11 | # SdStorageSupported: true 12 | 13 | # Control how the ESP coprocessor will start and operate. 14 | Coprocessor: 15 | 16 | # Should the ESP32 automatically attempt to connect to an access point at startup? 17 | # If set to true, wifi.config.yaml credentials must be stored in the device. 18 | AutomaticallyStartNetwork: true 19 | 20 | # Should the ESP32 automatically reconnect to the configured access point? 21 | AutomaticallyReconnect: true 22 | 23 | # Maximum number of retry attempts for connections etc. before an error code is returned. 24 | MaximumRetryCount: 7 25 | 26 | # Network configuration. 27 | Network: 28 | 29 | # Interfaces: 30 | # - Name: Ethernet 31 | # UseDHCP: false 32 | # IPAddress: 192.168.1.60 33 | # NetMask: 255.255.255.0 34 | # Gateway: 192.168.1.254 35 | # - Name: WiFi 36 | # UseDHCP: true 37 | # IPAddress: 38 | # NetMask: 39 | # Gateway: 40 | 41 | # Which interface should be used? 42 | DefaultInterface: WiFi 43 | 44 | # Automatically attempt to get the time at startup? 45 | GetNetworkTimeAtStartup: true 46 | 47 | # Time synchronization period in seconds. 48 | NtpRefreshPeriodSeconds: 600 49 | 50 | # Name of the NTP servers. 51 | NtpServers: 52 | - 0.pool.ntp.org 53 | - 1.pool.ntp.org 54 | - 2.pool.ntp.org 55 | - 3.pool.ntp.org 56 | 57 | # IP addresses of the DNS servers. 58 | DnsServers: 59 | - 1.1.1.1 60 | - 8.8.8.8 -------------------------------------------------------------------------------- /Source/AnalogClockFace/wifi.config.yaml: -------------------------------------------------------------------------------- 1 | # Uncomment to set the default Wi-Fi credentials. (This file will be processed into secure storage on the ESP32 and then deleted from the device.) 2 | # To learn more about these config options, including custom application configuration settings, check out the Application Settings Configuration documentation. 3 | # http://developer.wildernesslabs.co/Meadow/Meadow.OS/Configuration/WiFi_Configuration/ 4 | 5 | # # To enable automatically connecting to a default network, make sure to enable the Coprocessor > AutomaticallyStartNetwork value in meadow.config.yaml. 6 | Credentials: 7 | Ssid: Ssid 8 | Password: Password 9 | -------------------------------------------------------------------------------- /Source/Connectivity/.vscode/launch.config: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Deploy", 9 | "type": "meadow", 10 | "request": "launch", 11 | "preLaunchTask": "meadow: Build" 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /Source/Connectivity/Connectivity.Common/Bluetooth/BluetoothConstants.cs: -------------------------------------------------------------------------------- 1 | namespace CommonContracts.Bluetooth 2 | { 3 | public static class CharacteristicsConstants 4 | { 5 | public const string PAIRING = "19933423-6f14-41c0-bb03-637b2e6ef6b0"; 6 | public const string LED_TOGGLE = "2eb9edce-d7c4-4079-b3d3-5becfcf0c49d"; 7 | public const string LED_BLINK = "7cb9817d-6754-46e7-be72-d5790eaf678b"; 8 | public const string LED_PULSE = "23d3bd90-5966-4eff-9ac7-b6cafe9c182a"; 9 | public const string ENVIRONMENTAL_DATA = "8787e846-51e5-4d9b-87aa-eaf4a8f0056f"; 10 | public const string LIGHT_DATA = "7f36402d-3612-4127-9a33-b94de96b1ef8"; 11 | public const string MOTION_ACCELERATION = "29171115-4bbe-4ac1-a0b0-257b54bcc464"; 12 | public const string MOTION_ANGULAR_VELOCITY = "8468a412-99ae-457c-b2fd-2085ab9aac37"; 13 | public const string MOTION_TEMPERATURE = "810169ba-a0be-4cf5-a67d-ee68c20d4d18"; 14 | } 15 | } -------------------------------------------------------------------------------- /Source/Connectivity/Connectivity.Common/CommonContracts.projitems: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath) 5 | true 6 | 5e32a8f6-1ec5-46ba-ae3d-e3e376fd82d0 7 | 8 | 9 | CommonContracts 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Source/Connectivity/Connectivity.Common/Connectivity.Common.shproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5e32a8f6-1ec5-46ba-ae3d-e3e376fd82d0 5 | 14.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Source/Connectivity/Connectivity.Common/Models/ClimateModel.cs: -------------------------------------------------------------------------------- 1 | namespace CommonContracts.Models 2 | { 3 | public class ClimateModel 4 | { 5 | public string? Temperature { get; set; } 6 | 7 | public string? Pressure { get; set; } 8 | 9 | public string? Humidity { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /Source/Connectivity/Connectivity.Common/Models/IlluminanceModel.cs: -------------------------------------------------------------------------------- 1 | namespace CommonContracts.Models 2 | { 3 | public class IlluminanceModel 4 | { 5 | public string? Illuminance { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /Source/Connectivity/Connectivity.Common/Models/MotionModel.cs: -------------------------------------------------------------------------------- 1 | namespace Connectivity.Common.Models 2 | { 3 | public class MotionModel 4 | { 5 | public string Acceleration3dX { get; set; } 6 | public string Acceleration3dY { get; set; } 7 | public string Acceleration3dZ { get; set; } 8 | 9 | public string AngularVelocity3dX { get; set; } 10 | public string AngularVelocity3dY { get; set; } 11 | public string AngularVelocity3dZ { get; set; } 12 | 13 | public string Temperature { get; set; } 14 | } 15 | } -------------------------------------------------------------------------------- /Source/Connectivity/MeadowConnectedSample/Controllers/LedController.cs: -------------------------------------------------------------------------------- 1 | using Meadow; 2 | using Meadow.Peripherals.Leds; 3 | using System; 4 | using System.Threading.Tasks; 5 | 6 | namespace MeadowConnectedSample.Controllers 7 | { 8 | public class LedController 9 | { 10 | private static readonly Lazy instance = 11 | new Lazy(() => new LedController()); 12 | public static LedController Instance => instance.Value; 13 | 14 | IRgbPwmLed rgbPwmLed; 15 | bool isAnimating; 16 | 17 | private LedController() { } 18 | 19 | public void Initialize(IRgbPwmLed rgbPwmLed) 20 | { 21 | this.rgbPwmLed = rgbPwmLed; 22 | } 23 | 24 | public void SetColor(Color color) 25 | { 26 | rgbPwmLed.SetColor(color); 27 | } 28 | 29 | public async Task Toggle() 30 | { 31 | if (rgbPwmLed.IsOn || isAnimating) 32 | { 33 | await rgbPwmLed.StopAnimation(); 34 | rgbPwmLed.IsOn = false; 35 | isAnimating = false; 36 | } 37 | else 38 | { 39 | await rgbPwmLed.StopAnimation(); 40 | rgbPwmLed.SetColor(GetRandomColor()); 41 | rgbPwmLed.IsOn = true; 42 | } 43 | } 44 | 45 | public async Task StartBlink() 46 | { 47 | await rgbPwmLed.StopAnimation(); 48 | await rgbPwmLed.StartBlink(GetRandomColor()); 49 | isAnimating = true; 50 | } 51 | 52 | public async Task StartPulse() 53 | { 54 | await rgbPwmLed.StopAnimation(); 55 | await rgbPwmLed.StartPulse(GetRandomColor()); 56 | isAnimating = true; 57 | } 58 | 59 | protected Color GetRandomColor() 60 | { 61 | var random = new Random(); 62 | return new Color(random.Next(256), random.Next(256), random.Next(256)); 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /Source/Connectivity/MeadowConnectedSample/MeadowConnectedSample.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | netstandard2.1 4 | true 5 | Library 6 | App 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | PreserveNewest 32 | 33 | 34 | PreserveNewest 35 | 36 | 37 | PreserveNewest 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Source/Connectivity/MeadowConnectedSample/Resources/img_ble_paired.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Source/Connectivity/MeadowConnectedSample/Resources/img_ble_paired.bmp -------------------------------------------------------------------------------- /Source/Connectivity/MeadowConnectedSample/Resources/img_ble_pairing.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Source/Connectivity/MeadowConnectedSample/Resources/img_ble_pairing.bmp -------------------------------------------------------------------------------- /Source/Connectivity/MeadowConnectedSample/Resources/img_meadow.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Source/Connectivity/MeadowConnectedSample/Resources/img_meadow.bmp -------------------------------------------------------------------------------- /Source/Connectivity/MeadowConnectedSample/Resources/img_wifi_connected.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Source/Connectivity/MeadowConnectedSample/Resources/img_wifi_connected.bmp -------------------------------------------------------------------------------- /Source/Connectivity/MeadowConnectedSample/Resources/img_wifi_connecting.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Source/Connectivity/MeadowConnectedSample/Resources/img_wifi_connecting.bmp -------------------------------------------------------------------------------- /Source/Connectivity/MeadowConnectedSample/Secrets.cs: -------------------------------------------------------------------------------- 1 | namespace MeadowConnectedSample 2 | { 3 | public class Secrets 4 | { 5 | /// 6 | /// Name of the WiFi network to use. 7 | /// 8 | public const string WIFI_NAME = "WIFI_NAME"; 9 | 10 | /// 11 | /// Password for the WiFi network names in WIFI_NAME. 12 | /// 13 | public const string WIFI_PASSWORD = "WIFI_PASSWORD"; 14 | } 15 | } -------------------------------------------------------------------------------- /Source/Connectivity/MeadowConnectedSample/app.config.yaml: -------------------------------------------------------------------------------- 1 | # Uncomment additional options as needed. 2 | # To learn more about these config options, including custom application configuration settings, check out the Application Settings Configuration documentation. 3 | # http://developer.wildernesslabs.co/Meadow/Meadow.OS/Configuration/Application_Settings_Configuration/ 4 | 5 | Lifecycle: 6 | # Control whether Meadow will restart when an unhandled app exception occurs. Combine with Lifecycle > AppFailureRestartDelaySeconds to control restart timing. 7 | RestartOnAppFailure: false 8 | # # When app set to restart automatically on app failure, 9 | #AppFailureRestartDelaySeconds: 15 10 | 11 | # # Adjust the level of logging detail. 12 | #Logging: 13 | # LogLevel: 14 | # Default: Trace -------------------------------------------------------------------------------- /Source/Connectivity/MeadowConnectedSample/meadow.config.yaml: -------------------------------------------------------------------------------- 1 | # Uncommented these options as needed. 2 | # To learn more about these config options, check out the OS & Device Configuration documentation. 3 | # http://developer.wildernesslabs.co/Meadow/Meadow.OS/Configuration/OS_Device_Configuration/ 4 | 5 | #Device: 6 | # Name of the device on the network. 7 | # Name: MeadowF7V2_ConfigSample 8 | 9 | # Uncomment if SD card hardware present on this hardware (e.g., Core-Compute module with SD add-on)? Optional; default value is `false`. 10 | # SdStorageSupported: true 11 | 12 | # Control how the ESP coprocessor will start and operate. 13 | #Coprocessor: 14 | # Should the ESP32 automatically attempt to connect to an access point at startup? 15 | # If set to true, wifi.config.yaml credentials must be stored in the device. 16 | # AutomaticallyStartNetwork: true 17 | 18 | # Should the ESP32 automatically reconnect to the configured access point? 19 | # AutomaticallyReconnect: true 20 | 21 | # Maximum number of retry attempts for connections etc. before an error code is returned. 22 | # MaximumRetryCount: 7 23 | 24 | # Network configuration. 25 | #Network: 26 | # Interfaces: 27 | # - Name: Ethernet 28 | # UseDHCP: false 29 | # IPAddress: 192.168.1.60 30 | # NetMask: 255.255.255.0 31 | # Gateway: 192.168.1.254 32 | # - Name: WiFi 33 | # UseDHCP: true 34 | # IPAddress: 35 | # NetMask: 36 | # Gateway: 37 | 38 | # Which interface should be used? 39 | # DefaultInterface: WiFi 40 | 41 | # Automatically attempt to get the time at startup? 42 | # GetNetworkTimeAtStartup: true 43 | 44 | # Time synchronization period in seconds. 45 | # NtpRefreshPeriodSeconds: 600 46 | 47 | # Name of the NTP servers. 48 | # NtpServers: 49 | # - 0.pool.ntp.org 50 | # - 1.pool.ntp.org 51 | # - 2.pool.ntp.org 52 | # - 3.pool.ntp.org 53 | 54 | # IP addresses of the DNS servers. 55 | # DnsServers: 56 | # - 1.1.1.1 57 | # - 8.8.8.8 -------------------------------------------------------------------------------- /Source/Connectivity/MeadowConnectedSample/wifi.config.yaml: -------------------------------------------------------------------------------- 1 | # Uncomment to set the default Wi-Fi credentials. (This file will be processed into secure storage on the ESP32 and then deleted from the device.) 2 | # To learn more about these config options, including custom application configuration settings, check out the Application Settings Configuration documentation. 3 | # http://developer.wildernesslabs.co/Meadow/Meadow.OS/Configuration/WiFi_Configuration/ 4 | 5 | # # To enable automatically connecting to a default network, make sure to enable the Coprocessor > AutomaticallyStartNetwork value in meadow.config.yaml. 6 | #Credentials: 7 | # Ssid: YourSSID 8 | # Password: SSIDPassword 9 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/App.xaml: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/App.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace MobileProjectLab 2 | { 3 | public partial class App : Application 4 | { 5 | public App() 6 | { 7 | InitializeComponent(); 8 | 9 | MainPage = new AppShell(); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/AppShell.xaml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/AppShell.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace MobileProjectLab; 2 | 3 | public partial class AppShell : Shell 4 | { 5 | public AppShell() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Converter/InverseBoolConverter.cs: -------------------------------------------------------------------------------- 1 | using System.Globalization; 2 | 3 | namespace MobileProjectLab.Converter 4 | { 5 | public class InverseBoolConverter 6 | { 7 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 8 | { 9 | return !(bool)value; 10 | } 11 | 12 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 13 | { 14 | return !(bool)value; 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/MauiProgram.cs: -------------------------------------------------------------------------------- 1 | namespace MobileProjectLab; 2 | 3 | public static class MauiProgram 4 | { 5 | public static MauiApp CreateMauiApp() 6 | { 7 | var builder = MauiApp.CreateBuilder(); 8 | builder 9 | .UseMauiApp() 10 | .ConfigureFonts(fonts => 11 | { 12 | fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); 13 | fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); 14 | }); 15 | 16 | return builder.Build(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Platforms/Android/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Platforms/Android/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Content.PM; 3 | 4 | namespace MobileProjectLab 5 | { 6 | [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, 7 | ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | 8 | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | 9 | ConfigChanges.Density)] 10 | public class MainActivity : MauiAppCompatActivity 11 | { 12 | 13 | } 14 | } -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Platforms/Android/MainApplication.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Runtime; 3 | 4 | namespace MobileProjectLab; 5 | 6 | [Application] 7 | public class MainApplication : MauiApplication 8 | { 9 | public MainApplication(IntPtr handle, JniHandleOwnership ownership) 10 | : base(handle, ownership) 11 | { 12 | } 13 | 14 | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); 15 | } 16 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Platforms/Android/Resources/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #512BD4 4 | #14607F 5 | #2B0B98 6 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Platforms/Android/Resources/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "Windows Machine": { 4 | "commandName": "MsixPackage", 5 | "nativeDebugging": false 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Resources/AppIcon/appicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Resources/AppIcon/appiconfg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Resources/Fonts/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Source/Connectivity/MobileProjectLab/Resources/Fonts/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Resources/Fonts/OpenSans-Semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Source/Connectivity/MobileProjectLab/Resources/Fonts/OpenSans-Semibold.ttf -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Resources/Images/img_ble_pair.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Resources/Images/img_ble_paired.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Resources/Images/img_project_lab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WildernessLabs/Meadow.ProjectLab.Samples/35075266e16bd153dc09f54945b39c48e0548cb7/Source/Connectivity/MobileProjectLab/Resources/Images/img_project_lab.png -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Resources/Images/img_search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Resources/Raw/AboutAssets.txt: -------------------------------------------------------------------------------- 1 | Any raw assets you want to be deployed with your application can be placed in 2 | this directory (and child directories). Deployment of the asset to your application 3 | is automatically handled by the following `MauiAsset` Build Action within your `.csproj`. 4 | 5 | 6 | 7 | These files will be deployed with you package and will be accessible using Essentials: 8 | 9 | async Task LoadMauiAsset() 10 | { 11 | using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt"); 12 | using var reader = new StreamReader(stream); 13 | 14 | var contents = reader.ReadToEnd(); 15 | } 16 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Resources/Splash/splash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/Utils/BleConstants.cs: -------------------------------------------------------------------------------- 1 | namespace MobileProjectLab.Utils 2 | { 3 | public static class CharacteristicsConstants 4 | { 5 | public const string ON = "73cfbc6f-61fa-4d80-a92f-eec2a90f8a3e"; 6 | public const string OFF = "6315119d-d619-49bb-a21d-ef9e99941948"; 7 | public const string PULSING = "d7551801-31fc-435d-a994-1e7f15e17baf"; 8 | public const string BLINKING = "3a6cc4f2-a6ab-4709-a9bf-c9611c6bf892"; 9 | public const string RUNNING_COLORS = "30df1258-f42b-4788-af2e-a8ed9d0b932f"; 10 | 11 | public const string IS_CYCLING = "24517ccc-888e-4ffc-9da5-21884353b08d"; 12 | public const string ANGLE = "5a0bb016-69ab-4a49-a2f2-de5b292458f3"; 13 | } 14 | } -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/View/BluetoothPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using MobileProjectLab.ViewModel; 2 | 3 | namespace MobileProjectLab.View 4 | { 5 | public partial class BluetoothPage : ContentPage 6 | { 7 | BluetoothViewModel vm; 8 | 9 | public BluetoothPage() 10 | { 11 | InitializeComponent(); 12 | BindingContext = vm = new BluetoothViewModel(); 13 | } 14 | 15 | protected override void OnAppearing() 16 | { 17 | base.OnAppearing(); 18 | vm.CmdSearchForDevices.Execute(null); 19 | } 20 | 21 | protected override void OnDisappearing() 22 | { 23 | base.OnDisappearing(); 24 | 25 | if (vm.IsConnected) 26 | { 27 | vm.CmdToggleConnection.Execute(null); 28 | } 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /Source/Connectivity/MobileProjectLab/View/MainPage.xaml: -------------------------------------------------------------------------------- 1 |  2 | 8 | 9 | 10 | 11 | #555 12 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |