public static bool GetSettings(RequestReceivedEventArgs e, JsonArray h)
        {
            try
            {
                Settings settings = new Settings();
                settings.loadSettings();

                JsonObject settingsValues = new JsonObject();
                settingsValues.Add("timeZoneOffset", settings.TimeZoneOffset.ToString());
                float value = settings.MinutesBetweenReadings / 60000;
                settingsValues.Add("minutesBetweenReadings", value.ToString("f2"));
                settingsValues.Add("temperatureOffset", settings.TemperatureOffset.ToString("f2"));
                settingsValues.Add("temperatureHeaterOffset", settings.TemperatureHeaterOffset.ToString("f2"));
                settingsValues.Add("historyFilename", settings.HistoryFilename);
                settingsValues.Add("ntpServerName", settings.NTPServerName);
                int tempValue = settings.MinutesBetweenNTPUpdate / 60000;
                settingsValues.Add("minutesBetweenNTPUpdate", tempValue.ToString());
                settingsValues.Add("netbiosName", settings.NetBiosName);
                settingsValues.Add("enableDHCP", settings.EnableDHCP.ToString());
                settingsValues.Add("staticIPAddress", settings.StaticIPAddress);
                settingsValues.Add("subnetMask", settings.SubnetMask);
                settingsValues.Add("defaultGateway", settings.DefaultGateway);
                settingsValues.Add("primaryDNSAddress", settings.PrimaryDNSAddress);
                settingsValues.Add("secondaryDNSAddress", settings.SecondaryDNSAddress);
                settingsValues.Add("voltageReference", settings.VoltageReference);
                settingsValues.Add("padResistance", settings.PadResistance);
                settingsValues.Add("resistanceRT", settings.ResistanceRT);
                settingsValues.Add("coefficientA", settings.CoefficientA);
                settingsValues.Add("coefficientB", settings.CoefficientB);
                settingsValues.Add("coefficientC", settings.CoefficientC);
                settingsValues.Add("coefficientD", settings.CoefficientD);
                settingsValues.Add("kpValue", settings.PIDKp);
                settingsValues.Add("kiValue", settings.PIDKi);
                settingsValues.Add("kdValue", settings.PIDKd);

                h.Add(settingsValues);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }

            return true;
        }
Ejemplo n.º 2
0
        public static void Main()
        {
            mainThread = Thread.CurrentThread;

            // create the LCD interface
            var lcd = new SPI_VFDisplay(SPI.SPI_module.SPI1, SecretLabs.NETMF.Hardware.NetduinoPlus.Pins.GPIO_PIN_D10, SPI_VFDisplay.Brightness.VFD_BRIGHTNESS25);

            // set up the LCD's number of columns and rows:
            lcd.begin(20, 2, SPI_VFDisplay.Brightness.VFD_BRIGHTNESS25);
            // set up the LCD's number of columns and rows:
            lcd.clear();
            // create the output helper and attach tot he LCD Display
            _displayHelper = new OutputHelper();
            _displayHelper.DisplayController = lcd;

            // Print a message to the LCD.
            _displayHelper.DisplayText("The DIY Brewery|Brew Controller");

            Thread.Sleep(5000);

            _displayHelper.DisplayText("Loading|Settings");

            Settings settings = new Settings();
            settings.loadSettings();

            _displayHelper.HistoryFileName = settings.HistoryFilename;

            UpdateSettingsMethod.UpdateNetworkConfiguration(settings);

            _displayHelper.DisplayText("Network|Started");

            _displayHelper.DisplayText(UpdateSettingsMethod.GetNetworkIP(settings));

            Thread.Sleep(5000);

            Server WebServer = new Server(80);
            WebServer.AddResponse(new JSONResponse("temperature", new JSONResponseCheck(GetTemperatureMethod.GetTemperature)));
            WebServer.AddResponse(new JSONResponse("settings", new JSONResponseCheck(GetSettingsMethod.GetSettings)));
            WebServer.AddResponse(new JSONResponse("updateSettings", new JSONResponseCheck(UpdateSettingsMethod.UpdateSettings)));
            WebServer.AddResponse(new JSONResponse("updateMashProfile", new JSONResponseCheck(UpdateMashProfileMethod.UpdateMashProfile)));

            _displayHelper.DisplayText("Web Server|Started");

            Thread.Sleep(5000);

            NTPTimeService timeService = new NTPTimeService();
            timeService.SystemSettings = settings;
            timeService.Start();

            _displayHelper.DisplayText("Internet Time|Service Started");

            Thread.Sleep(5000);

            MashProfileControlService mashProfileService = new MashProfileControlService(_displayHelper);
            mashProfileService.SystemSettings = settings;
            mashProfileService.Start();

            _displayHelper.DisplayText("Mash Profile|Service Started");

            Thread.Sleep(5000);

            _thermistor = new Thermistor(SecretLabs.NETMF.Hardware.NetduinoPlus.Pins.GPIO_PIN_A0);
            _thermistor.ResistanceReference = settings.PadResistance;
            _thermistor.VoltageReference = settings.VoltageReference;

            TemperatureControlService tempLogger = new TemperatureControlService(_displayHelper, _thermistor, settings);
            tempLogger.Start();

            _displayHelper.DisplayText("Temp Monitor|Started");

            Thread.Sleep(5000);

            PinManagement.engageHeaterButton.OnInterrupt += new NativeEventHandler(EngageHeaterButton_OnInterrupt);
            PinManagement.setTemperatureUpButton.OnInterrupt += new NativeEventHandler(TemperatureSetUp_OnInterrupt);
            PinManagement.setTemperatureUpDown.OnInterrupt += new NativeEventHandler(TemperatureSetDown_OnInterrupt);
            PinManagement.allStopButton.OnInterrupt += new NativeEventHandler(AllStop_OnInterrupt);

            _displayHelper.DisplayText("Inputs|Active");

            mainThread.Suspend();
        }
        public static bool UpdateSettings(RequestReceivedEventArgs e, JsonArray h)
        {
            try
            {
                Settings settings = new Settings();
                settings.loadSettings();
                float tempValue = 0.0F;

                if (e.Request.GetArguments.Contains("minutesBetweenReadings"))
                {
                    Settings.TryParseFloat(e.Request.GetArguments["minutesBetweenReadings"].ToString(), out tempValue);
                    settings.MinutesBetweenReadings = tempValue;
                }
                if (e.Request.GetArguments.Contains("historyFilename"))
                {
                    settings.HistoryFilename = e.Request.GetArguments["historyFilename"].ToString();
                }
                if (e.Request.GetArguments.Contains("ntpServerName"))
                {
                    settings.NTPServerName = e.Request.GetArguments["ntpServerName"].ToString();
                }
                if (e.Request.GetArguments.Contains("minutesBetweenNTPUpdate"))
                {
                    settings.MinutesBetweenNTPUpdate = Convert.ToInt32(e.Request.GetArguments["minutesBetweenNTPUpdate"].ToString());
                }
                if (e.Request.GetArguments.Contains("timeZoneOffset"))
                {
                    settings.TimeZoneOffset = Convert.ToInt32(e.Request.GetArguments["timeZoneOffset"].ToString());
                }
                if (e.Request.GetArguments.Contains("netbiosName"))
                {
                    settings.NetBiosName = e.Request.GetArguments["netbiosName"].ToString();
                }
                if (e.Request.GetArguments.Contains("temperatureOffset"))
                {
                    Settings.TryParseFloat(e.Request.GetArguments["temperatureOffset"].ToString(), out tempValue);
                    settings.TemperatureOffset = tempValue;
                }
                if (e.Request.GetArguments.Contains("temperatureHeaterOffset"))
                {
                    Settings.TryParseFloat(e.Request.GetArguments["temperatureHeaterOffset"].ToString(), out tempValue);
                    settings.TemperatureHeaterOffset = tempValue;
                }
                if (e.Request.GetArguments.Contains("enableDHCP"))
                {
                    if (e.Request.GetArguments["enableDHCP"].ToString().ToLower().Equals("on"))
                    {
                        settings.EnableDHCP = true;
                    }
                    else
                    {
                        settings.EnableDHCP = false;
                    }
                }
                if (e.Request.GetArguments.Contains("staticIPAddress"))
                {
                    settings.StaticIPAddress = e.Request.GetArguments["staticIPAddress"].ToString();
                }
                if (e.Request.GetArguments.Contains("subnetMask"))
                {
                    settings.SubnetMask = e.Request.GetArguments["subnetMask"].ToString();
                }
                if (e.Request.GetArguments.Contains("defaultGateway"))
                {
                    settings.DefaultGateway = e.Request.GetArguments["defaultGateway"].ToString();
                }
                if (e.Request.GetArguments.Contains("primaryDNSAddress"))
                {
                    settings.PrimaryDNSAddress = e.Request.GetArguments["primaryDNSAddress"].ToString();
                }
                if (e.Request.GetArguments.Contains("secondaryDNSAddress"))
                {
                    settings.SecondaryDNSAddress = e.Request.GetArguments["secondaryDNSAddress"].ToString();
                }
                if (e.Request.GetArguments.Contains("voltageReference"))
                {
                    Settings.TryParseFloat(e.Request.GetArguments["voltageReference"].ToString(), out tempValue);
                    settings.VoltageReference = tempValue;
                }
                if (e.Request.GetArguments.Contains("padResistance"))
                {
                    Settings.TryParseFloat(e.Request.GetArguments["padResistance"].ToString(), out tempValue);
                    settings.PadResistance = tempValue;
                }
                if (e.Request.GetArguments.Contains("resistanceRT"))
                {
                    Settings.TryParseFloat(e.Request.GetArguments["resistanceRT"].ToString(), out tempValue);
                    settings.ResistanceRT = tempValue;
                }
                if (e.Request.GetArguments.Contains("coefficientA"))
                {
                    Settings.TryParseFloat(e.Request.GetArguments["coefficientA"].ToString(), out tempValue);
                    settings.CoefficientA = tempValue;
                }
                if (e.Request.GetArguments.Contains("coefficientB"))
                {
                    Settings.TryParseFloat(e.Request.GetArguments["coefficientB"].ToString(), out tempValue);
                    settings.CoefficientB = tempValue;
                }
                if (e.Request.GetArguments.Contains("coefficientC"))
                {
                    Settings.TryParseFloat(e.Request.GetArguments["coefficientC"].ToString(), out tempValue);
                    settings.CoefficientC = tempValue;
                }
                if (e.Request.GetArguments.Contains("coefficientD"))
                {
                    Settings.TryParseFloat(e.Request.GetArguments["coefficientD"].ToString(), out tempValue);
                    settings.CoefficientD = tempValue;
                }
                if (e.Request.GetArguments.Contains("kpValue"))
                {
                    Settings.TryParseFloat(e.Request.GetArguments["kpValue"].ToString(), out tempValue);
                    settings.PIDKp = tempValue;
                }
                if (e.Request.GetArguments.Contains("kiValue"))
                {
                    Settings.TryParseFloat(e.Request.GetArguments["kiValue"].ToString(), out tempValue);
                    settings.PIDKi = tempValue;
                }
                if (e.Request.GetArguments.Contains("kdValue"))
                {
                    Settings.TryParseFloat(e.Request.GetArguments["kdValue"].ToString(), out tempValue);
                    settings.PIDKd = tempValue;
                }

                // save the new device settings
                settings.saveSettings();
                // send back an ok response
                h.Add("OK");
                // spool up a thread that will sleep for 10 seconds and then reboot the Netduino
                var rebootThread = new Thread(new ThreadStart(delegate()
                {
                    Thread.Sleep(10000);
                    PowerState.RebootDevice(false, 30000);
                }));
                rebootThread.Start();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                h.Add("ERROR");
                h.Add(ex.Message);
            }

            return true;
        }