public static bool GetTemperature(RequestReceivedEventArgs e, JsonArray h)
        {
            try
            {
                DateTime timeOfReading = DateTime.Now;

                JsonObject reading = new JsonObject();
                reading.Add("timeOfReading", timeOfReading.ToString());
                reading.Add("temperatureCelsius", PinManagement.temperatureCelsiusSensor.ToString("f2"));
                reading.Add("temperatureFahrenheit", PinManagement.currentTemperatureSensor.ToString("f2"));
                reading.Add("isHeating", PinManagement.isHeating.ToString());
                reading.Add("pidOutput", PinManagement.currentPIDOuput.ToString("f2"));
                reading.Add("setTemperature", PinManagement.setTemperature.ToString("f2"));

                if ((PinManagement.mashSteps != null) && (PinManagement.mashSteps.CurrentStep != null))
                {
                    reading.Add("currentMashStep", PinManagement.mashSteps.CurrentStep.StepNumber.ToString());
                    reading.Add("currentMashTemp", PinManagement.mashSteps.CurrentStep.Temperature.ToString("f2"));
                    TimeSpan timeInterval = DateTime.Now.Subtract(PinManagement.currentMashStepStartTime);
                    reading.Add("currentMashTime", timeInterval.Minutes);
                }

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

            return true;
        }
        public static bool UpdateMashProfile(RequestReceivedEventArgs e, JsonArray h)
        {
            try
            {
                string[] steps = null;
                string[] stepData = null;
                float tempValue = 0.0F;
                MashStep newMashStep = null;

                PinManagement.mashSteps = new MashSteps();
                PinManagement.mashSteps.Steps = new ArrayList();

                // mashProfile=0:122:15,1:135:15,2:148:60,3:170:15,4:225:90,

                if (e.Request.GetArguments.Contains("mashProfile"))
                {
                    string temp = e.Request.GetArguments["mashProfile"].ToString();
                    temp = temp.Replace("%3A", ":");
                    temp = temp.Replace("%2C", ",");

                    steps = temp.Split(',');

                    if (steps != null)
                    {
                        foreach (string step in steps)
                        {
                            stepData = step.Split(':');
                            if ((stepData != null) && (stepData.Length > 2))
                            {
                                newMashStep = new MashStep();
                                Settings.TryParseFloat(stepData[1], out tempValue);
                                newMashStep.StepNumber = Convert.ToInt32(stepData[0]); ;
                                newMashStep.Temperature = tempValue;
                                newMashStep.Time = Convert.ToInt32(stepData[2]);
                                PinManagement.mashSteps.Steps.Add(newMashStep);
                            }
                        }

                        PinManagement.mashSteps.CurrentStep = null;
                    }
                }

                // send back an ok response
                h.Add("OK");
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                h.Add("ERROR");
                h.Add(ex.Message);
            }

            return true;
        }
        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;
        }
示例#4
0
        /// <summary>
        /// Convert a value to JSON.
        /// </summary>
        /// <param name="o">The value to convert. Supported types are: Boolean, String, Byte, (U)Int16, (U)Int32, Float, Double, Decimal, JsonObject, JsonArray, Array, Object and null.</param>
        /// <returns>The JSON object as a string or null when the value type is not supported.</returns>
        /// <remarks>For objects, only public fields are converted.</remarks>
        public static string ToJson(object o)
        {
            if (o == null)
                return "null";

            Type type = o.GetType();
            switch (type.Name)
            {
                case "Boolean":
                    return (bool)o ? "true" : "false";
                case "String":
                    return "\"" + JsEncode((string)o) + "\"";
                case "Byte":
                case "Int16":
                case "UInt16":
                case "Int32":
                case "UInt32":
                case "Single":
                case "Double":
                case "Decimal":
                case "JsonObject":
                case "JsonArray":
                    return o.ToString();
            }

            if (type.IsArray)
            {
                JsonArray jsonArray = new JsonArray();
                foreach (object i in (Array)o)
                    jsonArray.Add(i);
                return jsonArray.ToString();
            }

            if (type.IsClass)
            {
                JsonObject jsonObject = new JsonObject();
                FieldInfo[] fields = type.GetFields();
                foreach (FieldInfo info in fields)
                    jsonObject.Add(info.Name, info.GetValue(o));
                return jsonObject.ToString();
            }

            return null;
        }
        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;
        }
 /// <summary>
 /// Returns the responses added to the webserver
 /// </summary>
 /// <param name="e"></param>
 /// <param name="h"></param>
 /// <returns></returns>
 private void ResponseListJSON(Request e, JsonArray j)
 {
     JsonObject o;
     foreach ( Object k in _Responses.Keys )
     {
         if ( _Responses[k] as JSONResponse != null )
         {
             o = new JsonObject( );
             o.Add("methodURL", k);
             o.Add("methodInternalName", ( (Response)_Responses[k] ).URL);
             j.Add(o);
         }
     }
 }
 public JSONResponse(string name, JSONResponseCheck method)
     : base(name)
 {
     this._CheckResponse = method;
     _Pairs = new JsonArray();
 }