public IList<Thermostat> GetThermostatList()
        {
            List<Thermostat> thermostatList = new List<Thermostat>();

            XmlDocument document = GetXmlDocumentFromFhem("xmllist");
            XmlNodeList nodeList = document.SelectNodes("//FHT");

            foreach (XmlNode node in nodeList)
            {
                XmlNode nameNode = node.SelectSingleNode("./INT[@key='NAME']");
                XmlNode currentStateNode = node.SelectSingleNode("./STATE[@key='measured-temp']");
                XmlNode desiredStateNode = node.SelectSingleNode("./STATE[@key='desired-temp']");
                //XmlNode idNode = node.SelectSingleNode("./INT[@key='DEF']");

                Thermostat thermostat = new Thermostat()
                {
                    Name = nameNode.Attributes["value"].Value,
                    CurrentTemperature = currentStateNode == null
                        ? "Unavailable"
                        : currentStateNode.Attributes["value"].Value,
                    DesiredTemperature = desiredStateNode == null
                        ? "Unavailable"
                        : desiredStateNode.Attributes["value"].Value
                };

                thermostatList.Add(thermostat);
            }

            return thermostatList;
        }
 public static ThermostatViewModel DomainToViewModel(Thermostat input)
 {
     return new ThermostatViewModel
     {
         Name = input.Name,
         Actuator = new MeasurementViewModel<string>(input.Actuator.Value, input.Actuator.Timestamp),
         CurrentTemp = new MeasurementViewModel<string>(input.CurrentTemp.Value.ToString(), input.CurrentTemp.Timestamp),
         DesiredTemp = new MeasurementViewModel<float>(input.DesiredTemp.Value ?? 5, input.DesiredTemp.Timestamp),
         Mode = new MeasurementViewModel<string>(input.Mode.Value == ThermostatMode.Auto ? "Auto" : "Manu", input.Mode.Timestamp),
         DaySchedules = GetDaySchedules(input)
     };
 }
        private static DayScheduleViewModel[] GetDaySchedules(Thermostat input)
        {
            var result = new DayScheduleViewModel[7];
            for (int inputIndex = 0; inputIndex < input.Schedule.Length; inputIndex++)
            {
                var daySchedule = input.Schedule[inputIndex];

                var outputIndex = (inputIndex == 0 ? 6 : inputIndex - 1);
                result[outputIndex] = GetDayScheduleViewModel(inputIndex, daySchedule.Periods.ToList());
            }

            return result;
        }